diff --git a/api-description/web-api.swagger.yaml b/api-description/web-api.swagger.yaml index f21dc6c10..06360a957 100644 --- a/api-description/web-api.swagger.yaml +++ b/api-description/web-api.swagger.yaml @@ -3494,6 +3494,54 @@ paths: $ref: '#/definitions/experimentCreateExperimentRequest' tags: - experiment + patch: + summary: Update + description: Update an experiment. + operationId: web.v1.experiment.update + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/experimentUpdateExperimentResponse' + "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/experimentUpdateExperimentRequest' + tags: + - experiment /v1/experiments: get: summary: List @@ -5193,6 +5241,11 @@ definitions: properties: role: $ref: '#/definitions/AccountV2RoleOrganization' + UpdateExperimentRequestUpdatedStatus: + type: object + properties: + status: + $ref: '#/definitions/experimentExperimentStatus' UpdateFeatureTargetingRequestFrom: type: string enum: @@ -7091,8 +7144,45 @@ definitions: type: object experimentStopExperimentResponse: type: object + experimentUpdateExperimentRequest: + type: object + properties: + id: + type: string + changeExperimentPeriodCommand: + $ref: '#/definitions/experimentChangeExperimentPeriodCommand' + description: deprecated + changeNameCommand: + $ref: '#/definitions/experimentChangeExperimentNameCommand' + description: deprecated + changeDescriptionCommand: + $ref: '#/definitions/experimentChangeExperimentDescriptionCommand' + description: deprecated + environmentId: + type: string + name: + type: string + description: + type: string + startAt: + type: string + format: int64 + stopAt: + type: string + format: int64 + archived: + type: boolean + description: if true, the experiment will be archived + status: + $ref: '#/definitions/UpdateExperimentRequestUpdatedStatus' + required: + - id + - environmentId experimentUpdateExperimentResponse: type: object + properties: + experiment: + $ref: '#/definitions/experimentExperiment' experimentUpdateGoalRequest: type: object properties: diff --git a/manifests/bucketeer/charts/web/values.yaml b/manifests/bucketeer/charts/web/values.yaml index 745ad95e3..68954e9fb 100644 --- a/manifests/bucketeer/charts/web/values.yaml +++ b/manifests/bucketeer/charts/web/values.yaml @@ -37,6 +37,7 @@ env: experimentService: localhost:9001 featureService: localhost:9001 autoOpsService: localhost:9001 + coderefService: localhost:9001 healthCheckServicePort: 8000 accountServicePort: 9091 authServicePort: 9092 @@ -51,6 +52,7 @@ env: webConsoleServicePort: 9102 dashboardServicePort: 9103 tagServicePort: 9104 + coderefServicePort: 9105 metricsPort: 9002 timezone: UTC emailFilter: @@ -110,18 +112,18 @@ envoy: pushDescriptor: CuoCChhwcm90by9wdXNoL2NvbW1hbmQucHJvdG8SDmJ1Y2tldGVlci5wdXNoInEKEUNyZWF0ZVB1c2hDb21tYW5kEhIKBHRhZ3MYAiADKAlSBHRhZ3MSEgoEbmFtZRgDIAEoCVIEbmFtZRIuChNmY21fc2VydmljZV9hY2NvdW50GAQgASgMUhFmY21TZXJ2aWNlQWNjb3VudEoECAEQAiIoChJBZGRQdXNoVGFnc0NvbW1hbmQSEgoEdGFncxgBIAMoCVIEdGFncyIrChVEZWxldGVQdXNoVGFnc0NvbW1hbmQSEgoEdGFncxgBIAMoCVIEdGFncyITChFEZWxldGVQdXNoQ29tbWFuZCInChFSZW5hbWVQdXNoQ29tbWFuZBISCgRuYW1lGAEgASgJUgRuYW1lQi5aLGdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9wdXNoYgZwcm90bzMKnAMKFXByb3RvL3B1c2gvcHVzaC5wcm90bxIOYnVja2V0ZWVyLnB1c2giugIKBFB1c2gSDgoCaWQYASABKAlSAmlkEhIKBHRhZ3MYAyADKAlSBHRhZ3MSGAoHZGVsZXRlZBgEIAEoCFIHZGVsZXRlZBISCgRuYW1lGAUgASgJUgRuYW1lEh0KCmNyZWF0ZWRfYXQYBiABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAcgASgDUgl1cGRhdGVkQXQSLgoTZmNtX3NlcnZpY2VfYWNjb3VudBgIIAEoCVIRZmNtU2VydmljZUFjY291bnQSGgoIZGlzYWJsZWQYCSABKAhSCGRpc2FibGVkEiUKDmVudmlyb25tZW50X2lkGAogASgJUg1lbnZpcm9ubWVudElkEikKEGVudmlyb25tZW50X25hbWUYCyABKAlSD2Vudmlyb25tZW50TmFtZUoECAIQA0IuWixnaXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vcHVzaGIGcHJvdG8zCoYECh5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIjCgtEb3VibGVWYWx1ZRIUCgV2YWx1ZRgBIAEoAVIFdmFsdWUiIgoKRmxvYXRWYWx1ZRIUCgV2YWx1ZRgBIAEoAlIFdmFsdWUiIgoKSW50NjRWYWx1ZRIUCgV2YWx1ZRgBIAEoA1IFdmFsdWUiIwoLVUludDY0VmFsdWUSFAoFdmFsdWUYASABKARSBXZhbHVlIiIKCkludDMyVmFsdWUSFAoFdmFsdWUYASABKAVSBXZhbHVlIiMKC1VJbnQzMlZhbHVlEhQKBXZhbHVlGAEgASgNUgV2YWx1ZSIhCglCb29sVmFsdWUSFAoFdmFsdWUYASABKAhSBXZhbHVlIiMKC1N0cmluZ1ZhbHVlEhQKBXZhbHVlGAEgASgJUgV2YWx1ZSIiCgpCeXRlc1ZhbHVlEhQKBXZhbHVlGAEgASgMUgV2YWx1ZUKDAQoTY29tLmdvb2dsZS5wcm90b2J1ZkINV3JhcHBlcnNQcm90b1ABWjFnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi93cmFwcGVyc3Bi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzMKhwUKFWdvb2dsZS9hcGkvaHR0cC5wcm90bxIKZ29vZ2xlLmFwaSJ5CgRIdHRwEioKBXJ1bGVzGAEgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZVIFcnVsZXMSRQofZnVsbHlfZGVjb2RlX3Jlc2VydmVkX2V4cGFuc2lvbhgCIAEoCFIcZnVsbHlEZWNvZGVSZXNlcnZlZEV4cGFuc2lvbiK1AgoISHR0cFJ1bGUSGgoIc2VsZWN0b3IYASABKAlSCHNlbGVjdG9yEhIKA2dldBgCIAEoCUgAUgNnZXQSEgoDcHV0GAMgASgJSABSA3B1dBIUCgRwb3N0GAQgASgJSABSBHBvc3QSGAoGZGVsZXRlGAUgASgJSABSBmRlbGV0ZRIWCgVwYXRjaBgGIAEoCUgAUgVwYXRjaBI3CgZjdXN0b20YCCABKAsyHS5nb29nbGUuYXBpLkN1c3RvbUh0dHBQYXR0ZXJuSABSBmN1c3RvbRISCgRib2R5GAcgASgJUgRib2R5EkUKE2FkZGl0aW9uYWxfYmluZGluZ3MYCyADKAsyFC5nb29nbGUuYXBpLkh0dHBSdWxlUhJhZGRpdGlvbmFsQmluZGluZ3NCCQoHcGF0dGVybiI7ChFDdXN0b21IdHRwUGF0dGVybhISCgRraW5kGAEgASgJUgRraW5kEhIKBHBhdGgYAiABKAlSBHBhdGhCagoOY29tLmdvb2dsZS5hcGlCCUh0dHBQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc/gBAaICBEdBUEliBnByb3RvMwrhRgogZ29vZ2xlL3Byb3RvYnVmL2Rlc2NyaXB0b3IucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiJNChFGaWxlRGVzY3JpcHRvclNldBI4CgRmaWxlGAEgAygLMiQuZ29vZ2xlLnByb3RvYnVmLkZpbGVEZXNjcmlwdG9yUHJvdG9SBGZpbGUi/gQKE0ZpbGVEZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRIYCgdwYWNrYWdlGAIgASgJUgdwYWNrYWdlEh4KCmRlcGVuZGVuY3kYAyADKAlSCmRlcGVuZGVuY3kSKwoRcHVibGljX2RlcGVuZGVuY3kYCiADKAVSEHB1YmxpY0RlcGVuZGVuY3kSJwoPd2Vha19kZXBlbmRlbmN5GAsgAygFUg53ZWFrRGVwZW5kZW5jeRJDCgxtZXNzYWdlX3R5cGUYBCADKAsyIC5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvUgttZXNzYWdlVHlwZRJBCgllbnVtX3R5cGUYBSADKAsyJC5nb29nbGUucHJvdG9idWYuRW51bURlc2NyaXB0b3JQcm90b1IIZW51bVR5cGUSQQoHc2VydmljZRgGIAMoCzInLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlRGVzY3JpcHRvclByb3RvUgdzZXJ2aWNlEkMKCWV4dGVuc2lvbhgHIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90b1IJZXh0ZW5zaW9uEjYKB29wdGlvbnMYCCABKAsyHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnNSB29wdGlvbnMSSQoQc291cmNlX2NvZGVfaW5mbxgJIAEoCzIfLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb2RlSW5mb1IOc291cmNlQ29kZUluZm8SFgoGc3ludGF4GAwgASgJUgZzeW50YXgSGAoHZWRpdGlvbhgNIAEoCVIHZWRpdGlvbiK5BgoPRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSOwoFZmllbGQYAiADKAsyJS5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG9SBWZpZWxkEkMKCWV4dGVuc2lvbhgGIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90b1IJZXh0ZW5zaW9uEkEKC25lc3RlZF90eXBlGAMgAygLMiAuZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90b1IKbmVzdGVkVHlwZRJBCgllbnVtX3R5cGUYBCADKAsyJC5nb29nbGUucHJvdG9idWYuRW51bURlc2NyaXB0b3JQcm90b1IIZW51bVR5cGUSWAoPZXh0ZW5zaW9uX3JhbmdlGAUgAygLMi8uZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90by5FeHRlbnNpb25SYW5nZVIOZXh0ZW5zaW9uUmFuZ2USRAoKb25lb2ZfZGVjbBgIIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5PbmVvZkRlc2NyaXB0b3JQcm90b1IJb25lb2ZEZWNsEjkKB29wdGlvbnMYByABKAsyHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnNSB29wdGlvbnMSVQoOcmVzZXJ2ZWRfcmFuZ2UYCSADKAsyLi5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvLlJlc2VydmVkUmFuZ2VSDXJlc2VydmVkUmFuZ2USIwoNcmVzZXJ2ZWRfbmFtZRgKIAMoCVIMcmVzZXJ2ZWROYW1lGnoKDkV4dGVuc2lvblJhbmdlEhQKBXN0YXJ0GAEgASgFUgVzdGFydBIQCgNlbmQYAiABKAVSA2VuZBJACgdvcHRpb25zGAMgASgLMiYuZ29vZ2xlLnByb3RvYnVmLkV4dGVuc2lvblJhbmdlT3B0aW9uc1IHb3B0aW9ucxo3Cg1SZXNlcnZlZFJhbmdlEhQKBXN0YXJ0GAEgASgFUgVzdGFydBIQCgNlbmQYAiABKAVSA2VuZCKtBAoVRXh0ZW5zaW9uUmFuZ2VPcHRpb25zElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uElkKC2RlY2xhcmF0aW9uGAIgAygLMjIuZ29vZ2xlLnByb3RvYnVmLkV4dGVuc2lvblJhbmdlT3B0aW9ucy5EZWNsYXJhdGlvbkIDiAECUgtkZWNsYXJhdGlvbhJoCgx2ZXJpZmljYXRpb24YAyABKA4yOC5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2VPcHRpb25zLlZlcmlmaWNhdGlvblN0YXRlOgpVTlZFUklGSUVEUgx2ZXJpZmljYXRpb24aswEKC0RlY2xhcmF0aW9uEhYKBm51bWJlchgBIAEoBVIGbnVtYmVyEhsKCWZ1bGxfbmFtZRgCIAEoCVIIZnVsbE5hbWUSEgoEdHlwZRgDIAEoCVIEdHlwZRIjCgtpc19yZXBlYXRlZBgEIAEoCEICGAFSCmlzUmVwZWF0ZWQSGgoIcmVzZXJ2ZWQYBSABKAhSCHJlc2VydmVkEhoKCHJlcGVhdGVkGAYgASgIUghyZXBlYXRlZCI0ChFWZXJpZmljYXRpb25TdGF0ZRIPCgtERUNMQVJBVElPThAAEg4KClVOVkVSSUZJRUQQASoJCOgHEICAgIACIsEGChRGaWVsZERlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEhYKBm51bWJlchgDIAEoBVIGbnVtYmVyEkEKBWxhYmVsGAQgASgOMisuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLkxhYmVsUgVsYWJlbBI+CgR0eXBlGAUgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGVSBHR5cGUSGwoJdHlwZV9uYW1lGAYgASgJUgh0eXBlTmFtZRIaCghleHRlbmRlZRgCIAEoCVIIZXh0ZW5kZWUSIwoNZGVmYXVsdF92YWx1ZRgHIAEoCVIMZGVmYXVsdFZhbHVlEh8KC29uZW9mX2luZGV4GAkgASgFUgpvbmVvZkluZGV4EhsKCWpzb25fbmFtZRgKIAEoCVIIanNvbk5hbWUSNwoHb3B0aW9ucxgIIAEoCzIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnNSB29wdGlvbnMSJwoPcHJvdG8zX29wdGlvbmFsGBEgASgIUg5wcm90bzNPcHRpb25hbCK2AgoEVHlwZRIPCgtUWVBFX0RPVUJMRRABEg4KClRZUEVfRkxPQVQQAhIOCgpUWVBFX0lOVDY0EAMSDwoLVFlQRV9VSU5UNjQQBBIOCgpUWVBFX0lOVDMyEAUSEAoMVFlQRV9GSVhFRDY0EAYSEAoMVFlQRV9GSVhFRDMyEAcSDQoJVFlQRV9CT09MEAgSDwoLVFlQRV9TVFJJTkcQCRIOCgpUWVBFX0dST1VQEAoSEAoMVFlQRV9NRVNTQUdFEAsSDgoKVFlQRV9CWVRFUxAMEg8KC1RZUEVfVUlOVDMyEA0SDQoJVFlQRV9FTlVNEA4SEQoNVFlQRV9TRklYRUQzMhAPEhEKDVRZUEVfU0ZJWEVENjQQEBIPCgtUWVBFX1NJTlQzMhAREg8KC1RZUEVfU0lOVDY0EBIiQwoFTGFiZWwSEgoOTEFCRUxfT1BUSU9OQUwQARISCg5MQUJFTF9SRVFVSVJFRBACEhIKDkxBQkVMX1JFUEVBVEVEEAMiYwoUT25lb2ZEZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRI3CgdvcHRpb25zGAIgASgLMh0uZ29vZ2xlLnByb3RvYnVmLk9uZW9mT3B0aW9uc1IHb3B0aW9ucyLjAgoTRW51bURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEj8KBXZhbHVlGAIgAygLMikuZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZURlc2NyaXB0b3JQcm90b1IFdmFsdWUSNgoHb3B0aW9ucxgDIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5FbnVtT3B0aW9uc1IHb3B0aW9ucxJdCg5yZXNlcnZlZF9yYW5nZRgEIAMoCzI2Lmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvLkVudW1SZXNlcnZlZFJhbmdlUg1yZXNlcnZlZFJhbmdlEiMKDXJlc2VydmVkX25hbWUYBSADKAlSDHJlc2VydmVkTmFtZRo7ChFFbnVtUmVzZXJ2ZWRSYW5nZRIUCgVzdGFydBgBIAEoBVIFc3RhcnQSEAoDZW5kGAIgASgFUgNlbmQigwEKGEVudW1WYWx1ZURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEhYKBm51bWJlchgCIAEoBVIGbnVtYmVyEjsKB29wdGlvbnMYAyABKAsyIS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlT3B0aW9uc1IHb3B0aW9ucyKnAQoWU2VydmljZURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEj4KBm1ldGhvZBgCIAMoCzImLmdvb2dsZS5wcm90b2J1Zi5NZXRob2REZXNjcmlwdG9yUHJvdG9SBm1ldGhvZBI5CgdvcHRpb25zGAMgASgLMh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zUgdvcHRpb25zIokCChVNZXRob2REZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRIdCgppbnB1dF90eXBlGAIgASgJUglpbnB1dFR5cGUSHwoLb3V0cHV0X3R5cGUYAyABKAlSCm91dHB1dFR5cGUSOAoHb3B0aW9ucxgEIAEoCzIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zUgdvcHRpb25zEjAKEGNsaWVudF9zdHJlYW1pbmcYBSABKAg6BWZhbHNlUg9jbGllbnRTdHJlYW1pbmcSMAoQc2VydmVyX3N0cmVhbWluZxgGIAEoCDoFZmFsc2VSD3NlcnZlclN0cmVhbWluZyKRCQoLRmlsZU9wdGlvbnMSIQoMamF2YV9wYWNrYWdlGAEgASgJUgtqYXZhUGFja2FnZRIwChRqYXZhX291dGVyX2NsYXNzbmFtZRgIIAEoCVISamF2YU91dGVyQ2xhc3NuYW1lEjUKE2phdmFfbXVsdGlwbGVfZmlsZXMYCiABKAg6BWZhbHNlUhFqYXZhTXVsdGlwbGVGaWxlcxJECh1qYXZhX2dlbmVyYXRlX2VxdWFsc19hbmRfaGFzaBgUIAEoCEICGAFSGWphdmFHZW5lcmF0ZUVxdWFsc0FuZEhhc2gSOgoWamF2YV9zdHJpbmdfY2hlY2tfdXRmOBgbIAEoCDoFZmFsc2VSE2phdmFTdHJpbmdDaGVja1V0ZjgSUwoMb3B0aW1pemVfZm9yGAkgASgOMikuZ29vZ2xlLnByb3RvYnVmLkZpbGVPcHRpb25zLk9wdGltaXplTW9kZToFU1BFRURSC29wdGltaXplRm9yEh0KCmdvX3BhY2thZ2UYCyABKAlSCWdvUGFja2FnZRI1ChNjY19nZW5lcmljX3NlcnZpY2VzGBAgASgIOgVmYWxzZVIRY2NHZW5lcmljU2VydmljZXMSOQoVamF2YV9nZW5lcmljX3NlcnZpY2VzGBEgASgIOgVmYWxzZVITamF2YUdlbmVyaWNTZXJ2aWNlcxI1ChNweV9nZW5lcmljX3NlcnZpY2VzGBIgASgIOgVmYWxzZVIRcHlHZW5lcmljU2VydmljZXMSNwoUcGhwX2dlbmVyaWNfc2VydmljZXMYKiABKAg6BWZhbHNlUhJwaHBHZW5lcmljU2VydmljZXMSJQoKZGVwcmVjYXRlZBgXIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSLgoQY2NfZW5hYmxlX2FyZW5hcxgfIAEoCDoEdHJ1ZVIOY2NFbmFibGVBcmVuYXMSKgoRb2JqY19jbGFzc19wcmVmaXgYJCABKAlSD29iamNDbGFzc1ByZWZpeBIpChBjc2hhcnBfbmFtZXNwYWNlGCUgASgJUg9jc2hhcnBOYW1lc3BhY2USIQoMc3dpZnRfcHJlZml4GCcgASgJUgtzd2lmdFByZWZpeBIoChBwaHBfY2xhc3NfcHJlZml4GCggASgJUg5waHBDbGFzc1ByZWZpeBIjCg1waHBfbmFtZXNwYWNlGCkgASgJUgxwaHBOYW1lc3BhY2USNAoWcGhwX21ldGFkYXRhX25hbWVzcGFjZRgsIAEoCVIUcGhwTWV0YWRhdGFOYW1lc3BhY2USIQoMcnVieV9wYWNrYWdlGC0gASgJUgtydWJ5UGFja2FnZRJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiI6CgxPcHRpbWl6ZU1vZGUSCQoFU1BFRUQQARINCglDT0RFX1NJWkUQAhIQCgxMSVRFX1JVTlRJTUUQAyoJCOgHEICAgIACSgQIJhAnIrsDCg5NZXNzYWdlT3B0aW9ucxI8ChdtZXNzYWdlX3NldF93aXJlX2Zvcm1hdBgBIAEoCDoFZmFsc2VSFG1lc3NhZ2VTZXRXaXJlRm9ybWF0EkwKH25vX3N0YW5kYXJkX2Rlc2NyaXB0b3JfYWNjZXNzb3IYAiABKAg6BWZhbHNlUhxub1N0YW5kYXJkRGVzY3JpcHRvckFjY2Vzc29yEiUKCmRlcHJlY2F0ZWQYAyABKAg6BWZhbHNlUgpkZXByZWNhdGVkEhsKCW1hcF9lbnRyeRgHIAEoCFIIbWFwRW50cnkSVgomZGVwcmVjYXRlZF9sZWdhY3lfanNvbl9maWVsZF9jb25mbGljdHMYCyABKAhCAhgBUiJkZXByZWNhdGVkTGVnYWN5SnNvbkZpZWxkQ29uZmxpY3RzElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAJKBAgEEAVKBAgFEAZKBAgGEAdKBAgIEAlKBAgJEAoihQkKDEZpZWxkT3B0aW9ucxJBCgVjdHlwZRgBIAEoDjIjLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuQ1R5cGU6BlNUUklOR1IFY3R5cGUSFgoGcGFja2VkGAIgASgIUgZwYWNrZWQSRwoGanN0eXBlGAYgASgOMiQuZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5KU1R5cGU6CUpTX05PUk1BTFIGanN0eXBlEhkKBGxhenkYBSABKAg6BWZhbHNlUgRsYXp5Ei4KD3VudmVyaWZpZWRfbGF6eRgPIAEoCDoFZmFsc2VSDnVudmVyaWZpZWRMYXp5EiUKCmRlcHJlY2F0ZWQYAyABKAg6BWZhbHNlUgpkZXByZWNhdGVkEhkKBHdlYWsYCiABKAg6BWZhbHNlUgR3ZWFrEigKDGRlYnVnX3JlZGFjdBgQIAEoCDoFZmFsc2VSC2RlYnVnUmVkYWN0EksKCXJldGVudGlvbhgRIAEoDjItLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuT3B0aW9uUmV0ZW50aW9uUglyZXRlbnRpb24SSgoGdGFyZ2V0GBIgASgOMi4uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5PcHRpb25UYXJnZXRUeXBlQgIYAVIGdGFyZ2V0EkgKB3RhcmdldHMYEyADKA4yLi5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLk9wdGlvblRhcmdldFR5cGVSB3RhcmdldHMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24iLwoFQ1R5cGUSCgoGU1RSSU5HEAASCAoEQ09SRBABEhAKDFNUUklOR19QSUVDRRACIjUKBkpTVHlwZRINCglKU19OT1JNQUwQABINCglKU19TVFJJTkcQARINCglKU19OVU1CRVIQAiJVCg9PcHRpb25SZXRlbnRpb24SFQoRUkVURU5USU9OX1VOS05PV04QABIVChFSRVRFTlRJT05fUlVOVElNRRABEhQKEFJFVEVOVElPTl9TT1VSQ0UQAiKMAgoQT3B0aW9uVGFyZ2V0VHlwZRIXChNUQVJHRVRfVFlQRV9VTktOT1dOEAASFAoQVEFSR0VUX1RZUEVfRklMRRABEh8KG1RBUkdFVF9UWVBFX0VYVEVOU0lPTl9SQU5HRRACEhcKE1RBUkdFVF9UWVBFX01FU1NBR0UQAxIVChFUQVJHRVRfVFlQRV9GSUVMRBAEEhUKEVRBUkdFVF9UWVBFX09ORU9GEAUSFAoQVEFSR0VUX1RZUEVfRU5VTRAGEhoKFlRBUkdFVF9UWVBFX0VOVU1fRU5UUlkQBxIXChNUQVJHRVRfVFlQRV9TRVJWSUNFEAgSFgoSVEFSR0VUX1RZUEVfTUVUSE9EEAkqCQjoBxCAgICAAkoECAQQBSJzCgxPbmVvZk9wdGlvbnMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiKYAgoLRW51bU9wdGlvbnMSHwoLYWxsb3dfYWxpYXMYAiABKAhSCmFsbG93QWxpYXMSJQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSVgomZGVwcmVjYXRlZF9sZWdhY3lfanNvbl9maWVsZF9jb25mbGljdHMYBiABKAhCAhgBUiJkZXByZWNhdGVkTGVnYWN5SnNvbkZpZWxkQ29uZmxpY3RzElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAJKBAgFEAYingEKEEVudW1WYWx1ZU9wdGlvbnMSJQoKZGVwcmVjYXRlZBgBIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiKcAQoOU2VydmljZU9wdGlvbnMSJQoKZGVwcmVjYXRlZBghIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiLgAgoNTWV0aG9kT3B0aW9ucxIlCgpkZXByZWNhdGVkGCEgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJxChFpZGVtcG90ZW5jeV9sZXZlbBgiIAEoDjIvLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zLklkZW1wb3RlbmN5TGV2ZWw6E0lERU1QT1RFTkNZX1VOS05PV05SEGlkZW1wb3RlbmN5TGV2ZWwSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24iUAoQSWRlbXBvdGVuY3lMZXZlbBIXChNJREVNUE9URU5DWV9VTktOT1dOEAASEwoPTk9fU0lERV9FRkZFQ1RTEAESDgoKSURFTVBPVEVOVBACKgkI6AcQgICAgAIimgMKE1VuaW50ZXJwcmV0ZWRPcHRpb24SQQoEbmFtZRgCIAMoCzItLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uLk5hbWVQYXJ0UgRuYW1lEikKEGlkZW50aWZpZXJfdmFsdWUYAyABKAlSD2lkZW50aWZpZXJWYWx1ZRIsChJwb3NpdGl2ZV9pbnRfdmFsdWUYBCABKARSEHBvc2l0aXZlSW50VmFsdWUSLAoSbmVnYXRpdmVfaW50X3ZhbHVlGAUgASgDUhBuZWdhdGl2ZUludFZhbHVlEiEKDGRvdWJsZV92YWx1ZRgGIAEoAVILZG91YmxlVmFsdWUSIQoMc3RyaW5nX3ZhbHVlGAcgASgMUgtzdHJpbmdWYWx1ZRInCg9hZ2dyZWdhdGVfdmFsdWUYCCABKAlSDmFnZ3JlZ2F0ZVZhbHVlGkoKCE5hbWVQYXJ0EhsKCW5hbWVfcGFydBgBIAIoCVIIbmFtZVBhcnQSIQoMaXNfZXh0ZW5zaW9uGAIgAigIUgtpc0V4dGVuc2lvbiKnAgoOU291cmNlQ29kZUluZm8SRAoIbG9jYXRpb24YASADKAsyKC5nb29nbGUucHJvdG9idWYuU291cmNlQ29kZUluZm8uTG9jYXRpb25SCGxvY2F0aW9uGs4BCghMb2NhdGlvbhIWCgRwYXRoGAEgAygFQgIQAVIEcGF0aBIWCgRzcGFuGAIgAygFQgIQAVIEc3BhbhIpChBsZWFkaW5nX2NvbW1lbnRzGAMgASgJUg9sZWFkaW5nQ29tbWVudHMSKwoRdHJhaWxpbmdfY29tbWVudHMYBCABKAlSEHRyYWlsaW5nQ29tbWVudHMSOgoZbGVhZGluZ19kZXRhY2hlZF9jb21tZW50cxgGIAMoCVIXbGVhZGluZ0RldGFjaGVkQ29tbWVudHMi0AIKEUdlbmVyYXRlZENvZGVJbmZvEk0KCmFubm90YXRpb24YASADKAsyLS5nb29nbGUucHJvdG9idWYuR2VuZXJhdGVkQ29kZUluZm8uQW5ub3RhdGlvblIKYW5ub3RhdGlvbhrrAQoKQW5ub3RhdGlvbhIWCgRwYXRoGAEgAygFQgIQAVIEcGF0aBIfCgtzb3VyY2VfZmlsZRgCIAEoCVIKc291cmNlRmlsZRIUCgViZWdpbhgDIAEoBVIFYmVnaW4SEAoDZW5kGAQgASgFUgNlbmQSUgoIc2VtYW50aWMYBSABKA4yNi5nb29nbGUucHJvdG9idWYuR2VuZXJhdGVkQ29kZUluZm8uQW5ub3RhdGlvbi5TZW1hbnRpY1IIc2VtYW50aWMiKAoIU2VtYW50aWMSCAoETk9ORRAAEgcKA1NFVBABEgkKBUFMSUFTEAJCfgoTY29tLmdvb2dsZS5wcm90b2J1ZkIQRGVzY3JpcHRvclByb3Rvc0gBWi1nb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9kZXNjcmlwdG9ycGL4AQGiAgNHUEKqAhpHb29nbGUuUHJvdG9idWYuUmVmbGVjdGlvbgqoAgocZ29vZ2xlL2FwaS9hbm5vdGF0aW9ucy5wcm90bxIKZ29vZ2xlLmFwaRoVZ29vZ2xlL2FwaS9odHRwLnByb3RvGiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bzpLCgRodHRwEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYsMq8IiABKAsyFC5nb29nbGUuYXBpLkh0dHBSdWxlUgRodHRwQm4KDmNvbS5nb29nbGUuYXBpQhBBbm5vdGF0aW9uc1Byb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25zogIER0FQSWIGcHJvdG8zCugDCh9nb29nbGUvYXBpL2ZpZWxkX2JlaGF2aW9yLnByb3RvEgpnb29nbGUuYXBpGiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90byq2AQoNRmllbGRCZWhhdmlvchIeChpGSUVMRF9CRUhBVklPUl9VTlNQRUNJRklFRBAAEgwKCE9QVElPTkFMEAESDAoIUkVRVUlSRUQQAhIPCgtPVVRQVVRfT05MWRADEg4KCklOUFVUX09OTFkQBBINCglJTU1VVEFCTEUQBRISCg5VTk9SREVSRURfTElTVBAGEhUKEU5PTl9FTVBUWV9ERUZBVUxUEAcSDgoKSURFTlRJRklFUhAIOmQKDmZpZWxkX2JlaGF2aW9yEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxicCCADKA4yGS5nb29nbGUuYXBpLkZpZWxkQmVoYXZpb3JCAhAAUg1maWVsZEJlaGF2aW9yQnAKDmNvbS5nb29nbGUuYXBpQhJGaWVsZEJlaGF2aW9yUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzMK4gUKHGdvb2dsZS9wcm90b2J1Zi9zdHJ1Y3QucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiKYAQoGU3RydWN0EjsKBmZpZWxkcxgBIAMoCzIjLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QuRmllbGRzRW50cnlSBmZpZWxkcxpRCgtGaWVsZHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIrICCgVWYWx1ZRI7CgpudWxsX3ZhbHVlGAEgASgOMhouZ29vZ2xlLnByb3RvYnVmLk51bGxWYWx1ZUgAUgludWxsVmFsdWUSIwoMbnVtYmVyX3ZhbHVlGAIgASgBSABSC251bWJlclZhbHVlEiMKDHN0cmluZ192YWx1ZRgDIAEoCUgAUgtzdHJpbmdWYWx1ZRIfCgpib29sX3ZhbHVlGAQgASgISABSCWJvb2xWYWx1ZRI8CgxzdHJ1Y3RfdmFsdWUYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SABSC3N0cnVjdFZhbHVlEjsKCmxpc3RfdmFsdWUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuTGlzdFZhbHVlSABSCWxpc3RWYWx1ZUIGCgRraW5kIjsKCUxpc3RWYWx1ZRIuCgZ2YWx1ZXMYASADKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBnZhbHVlcyobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzMKpj4KLHByb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnMvb3BlbmFwaXYyLnByb3RvEilncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucxocZ29vZ2xlL3Byb3RvYnVmL3N0cnVjdC5wcm90byKzCAoHU3dhZ2dlchIYCgdzd2FnZ2VyGAEgASgJUgdzd2FnZ2VyEkMKBGluZm8YAiABKAsyLy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5JbmZvUgRpbmZvEhIKBGhvc3QYAyABKAlSBGhvc3QSGwoJYmFzZV9wYXRoGAQgASgJUghiYXNlUGF0aBJLCgdzY2hlbWVzGAUgAygOMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1lUgdzY2hlbWVzEhoKCGNvbnN1bWVzGAYgAygJUghjb25zdW1lcxIaCghwcm9kdWNlcxgHIAMoCVIIcHJvZHVjZXMSXwoJcmVzcG9uc2VzGAogAygLMkEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU3dhZ2dlci5SZXNwb25zZXNFbnRyeVIJcmVzcG9uc2VzEnEKFHNlY3VyaXR5X2RlZmluaXRpb25zGAsgASgLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlEZWZpbml0aW9uc1ITc2VjdXJpdHlEZWZpbml0aW9ucxJaCghzZWN1cml0eRgMIAMoCzI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnRSCHNlY3VyaXR5EkIKBHRhZ3MYDSADKAsyLi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5UYWdSBHRhZ3MSZQoNZXh0ZXJuYWxfZG9jcxgOIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEmIKCmV4dGVuc2lvbnMYDyADKAsyQi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Td2FnZ2VyLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpxCg5SZXNwb25zZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRJJCgV2YWx1ZRgCIAEoCzIzLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlUgV2YWx1ZToCOAEaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAFKBAgIEAlKBAgJEAoi1gcKCU9wZXJhdGlvbhISCgR0YWdzGAEgAygJUgR0YWdzEhgKB3N1bW1hcnkYAiABKAlSB3N1bW1hcnkSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEmUKDWV4dGVybmFsX2RvY3MYBCABKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5FeHRlcm5hbERvY3VtZW50YXRpb25SDGV4dGVybmFsRG9jcxIhCgxvcGVyYXRpb25faWQYBSABKAlSC29wZXJhdGlvbklkEhoKCGNvbnN1bWVzGAYgAygJUghjb25zdW1lcxIaCghwcm9kdWNlcxgHIAMoCVIIcHJvZHVjZXMSYQoJcmVzcG9uc2VzGAkgAygLMkMuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuT3BlcmF0aW9uLlJlc3BvbnNlc0VudHJ5UglyZXNwb25zZXMSSwoHc2NoZW1lcxgKIAMoDjIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjaGVtZVIHc2NoZW1lcxIeCgpkZXByZWNhdGVkGAsgASgIUgpkZXByZWNhdGVkEloKCHNlY3VyaXR5GAwgAygLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlSZXF1aXJlbWVudFIIc2VjdXJpdHkSZAoKZXh0ZW5zaW9ucxgNIAMoCzJELmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLk9wZXJhdGlvbi5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMSVQoKcGFyYW1ldGVycxgOIAEoCzI1LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlBhcmFtZXRlcnNSCnBhcmFtZXRlcnMacQoOUmVzcG9uc2VzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSSQoFdmFsdWUYAiABKAsyMy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZVIFdmFsdWU6AjgBGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBSgQICBAJImIKClBhcmFtZXRlcnMSVAoHaGVhZGVycxgBIAMoCzI6LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkhlYWRlclBhcmFtZXRlclIHaGVhZGVycyKjAgoPSGVhZGVyUGFyYW1ldGVyEhIKBG5hbWUYASABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uElMKBHR5cGUYAyABKA4yPy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5IZWFkZXJQYXJhbWV0ZXIuVHlwZVIEdHlwZRIWCgZmb3JtYXQYBCABKAlSBmZvcm1hdBIaCghyZXF1aXJlZBgFIAEoCFIIcmVxdWlyZWQiRQoEVHlwZRILCgdVTktOT1dOEAASCgoGU1RSSU5HEAESCgoGTlVNQkVSEAISCwoHSU5URUdFUhADEgsKB0JPT0xFQU4QBEoECAYQB0oECAcQCCLYAQoGSGVhZGVyEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbhISCgR0eXBlGAIgASgJUgR0eXBlEhYKBmZvcm1hdBgDIAEoCVIGZm9ybWF0EhgKB2RlZmF1bHQYBiABKAlSB2RlZmF1bHQSGAoHcGF0dGVybhgNIAEoCVIHcGF0dGVybkoECAQQBUoECAUQBkoECAcQCEoECAgQCUoECAkQCkoECAoQC0oECAsQDEoECAwQDUoECA4QD0oECA8QEEoECBAQEUoECBEQEkoECBIQEyKaBQoIUmVzcG9uc2USIAoLZGVzY3JpcHRpb24YASABKAlSC2Rlc2NyaXB0aW9uEkkKBnNjaGVtYRgCIAEoCzIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjaGVtYVIGc2NoZW1hEloKB2hlYWRlcnMYAyADKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZS5IZWFkZXJzRW50cnlSB2hlYWRlcnMSXQoIZXhhbXBsZXMYBCADKAsyQS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZS5FeGFtcGxlc0VudHJ5UghleGFtcGxlcxJjCgpleHRlbnNpb25zGAUgAygLMkMuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2UuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGm0KDEhlYWRlcnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRJHCgV2YWx1ZRgCIAEoCzIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkhlYWRlclIFdmFsdWU6AjgBGjsKDUV4YW1wbGVzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ARpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASLWAwoESW5mbxIUCgV0aXRsZRgBIAEoCVIFdGl0bGUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uEigKEHRlcm1zX29mX3NlcnZpY2UYAyABKAlSDnRlcm1zT2ZTZXJ2aWNlEkwKB2NvbnRhY3QYBCABKAsyMi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Db250YWN0Ugdjb250YWN0EkwKB2xpY2Vuc2UYBSABKAsyMi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5MaWNlbnNlUgdsaWNlbnNlEhgKB3ZlcnNpb24YBiABKAlSB3ZlcnNpb24SXwoKZXh0ZW5zaW9ucxgHIAMoCzI/LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkluZm8uRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIkUKB0NvbnRhY3QSEgoEbmFtZRgBIAEoCVIEbmFtZRIQCgN1cmwYAiABKAlSA3VybBIUCgVlbWFpbBgDIAEoCVIFZW1haWwiLwoHTGljZW5zZRISCgRuYW1lGAEgASgJUgRuYW1lEhAKA3VybBgCIAEoCVIDdXJsIksKFUV4dGVybmFsRG9jdW1lbnRhdGlvbhIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24SEAoDdXJsGAIgASgJUgN1cmwiqgIKBlNjaGVtYRJWCgtqc29uX3NjaGVtYRgBIAEoCzI1LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWFSCmpzb25TY2hlbWESJAoNZGlzY3JpbWluYXRvchgCIAEoCVINZGlzY3JpbWluYXRvchIbCglyZWFkX29ubHkYAyABKAhSCHJlYWRPbmx5EmUKDWV4dGVybmFsX2RvY3MYBSABKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5FeHRlcm5hbERvY3VtZW50YXRpb25SDGV4dGVybmFsRG9jcxIYCgdleGFtcGxlGAYgASgJUgdleGFtcGxlSgQIBBAFItcKCgpKU09OU2NoZW1hEhAKA3JlZhgDIAEoCVIDcmVmEhQKBXRpdGxlGAUgASgJUgV0aXRsZRIgCgtkZXNjcmlwdGlvbhgGIAEoCVILZGVzY3JpcHRpb24SGAoHZGVmYXVsdBgHIAEoCVIHZGVmYXVsdBIbCglyZWFkX29ubHkYCCABKAhSCHJlYWRPbmx5EhgKB2V4YW1wbGUYCSABKAlSB2V4YW1wbGUSHwoLbXVsdGlwbGVfb2YYCiABKAFSCm11bHRpcGxlT2YSGAoHbWF4aW11bRgLIAEoAVIHbWF4aW11bRIrChFleGNsdXNpdmVfbWF4aW11bRgMIAEoCFIQZXhjbHVzaXZlTWF4aW11bRIYCgdtaW5pbXVtGA0gASgBUgdtaW5pbXVtEisKEWV4Y2x1c2l2ZV9taW5pbXVtGA4gASgIUhBleGNsdXNpdmVNaW5pbXVtEh0KCm1heF9sZW5ndGgYDyABKARSCW1heExlbmd0aBIdCgptaW5fbGVuZ3RoGBAgASgEUgltaW5MZW5ndGgSGAoHcGF0dGVybhgRIAEoCVIHcGF0dGVybhIbCgltYXhfaXRlbXMYFCABKARSCG1heEl0ZW1zEhsKCW1pbl9pdGVtcxgVIAEoBFIIbWluSXRlbXMSIQoMdW5pcXVlX2l0ZW1zGBYgASgIUgt1bmlxdWVJdGVtcxIlCg5tYXhfcHJvcGVydGllcxgYIAEoBFINbWF4UHJvcGVydGllcxIlCg5taW5fcHJvcGVydGllcxgZIAEoBFINbWluUHJvcGVydGllcxIaCghyZXF1aXJlZBgaIAMoCVIIcmVxdWlyZWQSFAoFYXJyYXkYIiADKAlSBWFycmF5El8KBHR5cGUYIyADKA4ySy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hLkpTT05TY2hlbWFTaW1wbGVUeXBlc1IEdHlwZRIWCgZmb3JtYXQYJCABKAlSBmZvcm1hdBISCgRlbnVtGC4gAygJUgRlbnVtEnoKE2ZpZWxkX2NvbmZpZ3VyYXRpb24Y6QcgASgLMkguZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYS5GaWVsZENvbmZpZ3VyYXRpb25SEmZpZWxkQ29uZmlndXJhdGlvbhJlCgpleHRlbnNpb25zGDAgAygLMkUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYS5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaPAoSRmllbGRDb25maWd1cmF0aW9uEiYKD3BhdGhfcGFyYW1fbmFtZRgvIAEoCVINcGF0aFBhcmFtTmFtZRpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASJ3ChVKU09OU2NoZW1hU2ltcGxlVHlwZXMSCwoHVU5LTk9XThAAEgkKBUFSUkFZEAESCwoHQk9PTEVBThACEgsKB0lOVEVHRVIQAxIICgROVUxMEAQSCgoGTlVNQkVSEAUSCgoGT0JKRUNUEAYSCgoGU1RSSU5HEAdKBAgBEAJKBAgCEANKBAgEEAVKBAgSEBNKBAgTEBRKBAgXEBhKBAgbEBxKBAgcEB1KBAgdEB5KBAgeECJKBAglECpKBAgqECtKBAgrEC4i2QIKA1RhZxISCgRuYW1lGAEgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhJlCg1leHRlcm5hbF9kb2NzGAMgASgLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuRXh0ZXJuYWxEb2N1bWVudGF0aW9uUgxleHRlcm5hbERvY3MSXgoKZXh0ZW5zaW9ucxgEIAMoCzI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlRhZy5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEi9wEKE1NlY3VyaXR5RGVmaW5pdGlvbnMSaAoIc2VjdXJpdHkYASADKAsyTC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eURlZmluaXRpb25zLlNlY3VyaXR5RW50cnlSCHNlY3VyaXR5GnYKDVNlY3VyaXR5RW50cnkSEAoDa2V5GAEgASgJUgNrZXkSTwoFdmFsdWUYAiABKAsyOS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZVIFdmFsdWU6AjgBIv8GCg5TZWN1cml0eVNjaGVtZRJSCgR0eXBlGAEgASgOMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWUuVHlwZVIEdHlwZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SEgoEbmFtZRgDIAEoCVIEbmFtZRJMCgJpbhgEIAEoDjI8LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lLkluUgJpbhJSCgRmbG93GAUgASgOMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWUuRmxvd1IEZmxvdxIrChFhdXRob3JpemF0aW9uX3VybBgGIAEoCVIQYXV0aG9yaXphdGlvblVybBIbCgl0b2tlbl91cmwYByABKAlSCHRva2VuVXJsEkkKBnNjb3BlcxgIIAEoCzIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjb3Blc1IGc2NvcGVzEmkKCmV4dGVuc2lvbnMYCSADKAsySS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEiSwoEVHlwZRIQCgxUWVBFX0lOVkFMSUQQABIOCgpUWVBFX0JBU0lDEAESEAoMVFlQRV9BUElfS0VZEAISDwoLVFlQRV9PQVVUSDIQAyIxCgJJbhIOCgpJTl9JTlZBTElEEAASDAoISU5fUVVFUlkQARINCglJTl9IRUFERVIQAiJqCgRGbG93EhAKDEZMT1dfSU5WQUxJRBAAEhEKDUZMT1dfSU1QTElDSVQQARIRCg1GTE9XX1BBU1NXT1JEEAISFAoQRkxPV19BUFBMSUNBVElPThADEhQKEEZMT1dfQUNDRVNTX0NPREUQBCL2AgoTU2VjdXJpdHlSZXF1aXJlbWVudBKKAQoUc2VjdXJpdHlfcmVxdWlyZW1lbnQYASADKAsyVy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVJlcXVpcmVtZW50LlNlY3VyaXR5UmVxdWlyZW1lbnRFbnRyeVITc2VjdXJpdHlSZXF1aXJlbWVudBowChhTZWN1cml0eVJlcXVpcmVtZW50VmFsdWUSFAoFc2NvcGUYASADKAlSBXNjb3BlGp8BChhTZWN1cml0eVJlcXVpcmVtZW50RW50cnkSEAoDa2V5GAEgASgJUgNrZXkSbQoFdmFsdWUYAiABKAsyVy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVJlcXVpcmVtZW50LlNlY3VyaXR5UmVxdWlyZW1lbnRWYWx1ZVIFdmFsdWU6AjgBIpYBCgZTY29wZXMSUgoFc2NvcGUYASADKAsyPC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY29wZXMuU2NvcGVFbnRyeVIFc2NvcGUaOAoKU2NvcGVFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBKjsKBlNjaGVtZRILCgdVTktOT1dOEAASCAoESFRUUBABEgkKBUhUVFBTEAISBgoCV1MQAxIHCgNXU1MQBEJIWkZnaXRodWIuY29tL2dycGMtZWNvc3lzdGVtL2dycGMtZ2F0ZXdheS92Mi9wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zYgZwcm90bzMK/QYKLnByb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnMvYW5ub3RhdGlvbnMucHJvdG8SKWdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zGiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bxoscHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9vcGVuYXBpdjIucHJvdG86fgoRb3BlbmFwaXYyX3N3YWdnZXISHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMYkgggASgLMjIuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU3dhZ2dlclIQb3BlbmFwaXYyU3dhZ2dlcjqGAQoTb3BlbmFwaXYyX29wZXJhdGlvbhIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGJIIIAEoCzI0LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLk9wZXJhdGlvblISb3BlbmFwaXYyT3BlcmF0aW9uOn4KEG9wZW5hcGl2Ml9zY2hlbWESHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYkgggASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1hUg9vcGVuYXBpdjJTY2hlbWE6dQoNb3BlbmFwaXYyX3RhZxIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucxiSCCABKAsyLi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5UYWdSDG9wZW5hcGl2MlRhZzp+Cg9vcGVuYXBpdjJfZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGJIIIAEoCzI1LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWFSDm9wZW5hcGl2MkZpZWxkQkhaRmdpdGh1Yi5jb20vZ3JwYy1lY29zeXN0ZW0vZ3JwYy1nYXRld2F5L3YyL3Byb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnNiBnByb3RvMwrJIQoYcHJvdG8vcHVzaC9zZXJ2aWNlLnByb3RvEg5idWNrZXRlZXIucHVzaBoeZ29vZ2xlL3Byb3RvYnVmL3dyYXBwZXJzLnByb3RvGhxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvGh9nb29nbGUvYXBpL2ZpZWxkX2JlaGF2aW9yLnByb3RvGi5wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL2Fubm90YXRpb25zLnByb3RvGhVwcm90by9wdXNoL3B1c2gucHJvdG8aGHByb3RvL3B1c2gvY29tbWFuZC5wcm90byLZAQoRQ3JlYXRlUHVzaFJlcXVlc3QSPwoHY29tbWFuZBgCIAEoCzIhLmJ1Y2tldGVlci5wdXNoLkNyZWF0ZVB1c2hDb21tYW5kQgIYAVIHY29tbWFuZBISCgR0YWdzGAMgAygJUgR0YWdzEhIKBG5hbWUYBCABKAlSBG5hbWUSLgoTZmNtX3NlcnZpY2VfYWNjb3VudBgFIAEoDFIRZmNtU2VydmljZUFjY291bnQSJQoOZW52aXJvbm1lbnRfaWQYBiABKAlSDWVudmlyb25tZW50SWRKBAgBEAIiPgoSQ3JlYXRlUHVzaFJlc3BvbnNlEigKBHB1c2gYASABKAsyFC5idWNrZXRlZXIucHVzaC5QdXNoUgRwdXNoIqEEChFMaXN0UHVzaGVzUmVxdWVzdBIbCglwYWdlX3NpemUYAiABKANSCHBhZ2VTaXplEhYKBmN1cnNvchgDIAEoCVIGY3Vyc29yEkQKCG9yZGVyX2J5GAQgASgOMikuYnVja2V0ZWVyLnB1c2guTGlzdFB1c2hlc1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJZCg9vcmRlcl9kaXJlY3Rpb24YBSABKA4yMC5idWNrZXRlZXIucHVzaC5MaXN0UHVzaGVzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYBiABKAlSDXNlYXJjaEtleXdvcmQSJQoOZW52aXJvbm1lbnRfaWQYByABKAlSDWVudmlyb25tZW50SWQSJwoPb3JnYW5pemF0aW9uX2lkGAggASgJUg5vcmdhbml6YXRpb25JZBI2CghkaXNhYmxlZBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWVSCGRpc2FibGVkIlwKB09yZGVyQnkSCwoHREVGQVVMVBAAEggKBE5BTUUQARIOCgpDUkVBVEVEX0FUEAISDgoKVVBEQVRFRF9BVBADEg8KC0VOVklST05NRU5UEAQSCQoFU1RBVEUQBSIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAFKBAgBEAIiewoSTGlzdFB1c2hlc1Jlc3BvbnNlEiwKBnB1c2hlcxgBIAMoCzIULmJ1Y2tldGVlci5wdXNoLlB1c2hSBnB1c2hlcxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCKNAQoRRGVsZXRlUHVzaFJlcXVlc3QSDgoCaWQYAiABKAlSAmlkEjsKB2NvbW1hbmQYAyABKAsyIS5idWNrZXRlZXIucHVzaC5EZWxldGVQdXNoQ29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAEQAiIUChJEZWxldGVQdXNoUmVzcG9uc2Ui7gMKEVVwZGF0ZVB1c2hSZXF1ZXN0EhMKAmlkGAIgASgJQgPgQQJSAmlkElkKFWFkZF9wdXNoX3RhZ3NfY29tbWFuZBgDIAEoCzIiLmJ1Y2tldGVlci5wdXNoLkFkZFB1c2hUYWdzQ29tbWFuZEICGAFSEmFkZFB1c2hUYWdzQ29tbWFuZBJiChhkZWxldGVfcHVzaF90YWdzX2NvbW1hbmQYBCABKAsyJS5idWNrZXRlZXIucHVzaC5EZWxldGVQdXNoVGFnc0NvbW1hbmRCAhgBUhVkZWxldGVQdXNoVGFnc0NvbW1hbmQSVQoTcmVuYW1lX3B1c2hfY29tbWFuZBgFIAEoCzIhLmJ1Y2tldGVlci5wdXNoLlJlbmFtZVB1c2hDb21tYW5kQgIYAVIRcmVuYW1lUHVzaENvbW1hbmQSEgoEdGFncxgGIAMoCVIEdGFncxIwCgRuYW1lGAcgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgRuYW1lEioKDmVudmlyb25tZW50X2lkGAggASgJQgPgQQJSDWVudmlyb25tZW50SWQSNgoIZGlzYWJsZWQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUghkaXNhYmxlZEoECAEQAiI+ChJVcGRhdGVQdXNoUmVzcG9uc2USKAoEcHVzaBgBIAEoCzIULmJ1Y2tldGVlci5wdXNoLlB1c2hSBHB1c2giUQoOR2V0UHVzaFJlcXVlc3QSKgoOZW52aXJvbm1lbnRfaWQYASABKAlCA+BBAlINZW52aXJvbm1lbnRJZBITCgJpZBgCIAEoCUID4EECUgJpZCI7Cg9HZXRQdXNoUmVzcG9uc2USKAoEcHVzaBgBIAEoCzIULmJ1Y2tldGVlci5wdXNoLlB1c2hSBHB1c2gygBEKC1B1c2hTZXJ2aWNlEoQECgpMaXN0UHVzaGVzEiEuYnVja2V0ZWVyLnB1c2guTGlzdFB1c2hlc1JlcXVlc3QaIi5idWNrZXRlZXIucHVzaC5MaXN0UHVzaGVzUmVzcG9uc2UirgOSQZgDCgRwdXNoEgRMaXN0GgxMaXN0IHB1c2hlcy4qEHdlYi52MS5wdXNoLmxpc3RKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIMEgovdjEvcHVzaGVzEosECgpDcmVhdGVQdXNoEiEuYnVja2V0ZWVyLnB1c2guQ3JlYXRlUHVzaFJlcXVlc3QaIi5idWNrZXRlZXIucHVzaC5DcmVhdGVQdXNoUmVzcG9uc2UitQOSQZ4DCgRwdXNoEgZDcmVhdGUaDkNyZWF0ZSBhIHB1c2guKhJ3ZWIudjEucHVzaC5jcmVhdGVKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwINIggvdjEvcHVzaDoBKhKLBAoKVXBkYXRlUHVzaBIhLmJ1Y2tldGVlci5wdXNoLlVwZGF0ZVB1c2hSZXF1ZXN0GiIuYnVja2V0ZWVyLnB1c2guVXBkYXRlUHVzaFJlc3BvbnNlIrUDkkGeAwoEcHVzaBIGVXBkYXRlGg5VcGRhdGUgYSBwdXNoLioSd2ViLnYxLnB1c2gudXBkYXRlSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCDTIIL3YxL3B1c2g6ASoS9gMKB0dldFB1c2gSHi5idWNrZXRlZXIucHVzaC5HZXRQdXNoUmVxdWVzdBofLmJ1Y2tldGVlci5wdXNoLkdldFB1c2hSZXNwb25zZSKpA5JBlQMKBHB1c2gSA0dldBoLR2V0IGEgcHVzaC4qD3dlYi52MS5wdXNoLmdldEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAgoSCC92MS9wdXNoElUKCkRlbGV0ZVB1c2gSIS5idWNrZXRlZXIucHVzaC5EZWxldGVQdXNoUmVxdWVzdBoiLmJ1Y2tldGVlci5wdXNoLkRlbGV0ZVB1c2hSZXNwb25zZSIAQi5aLGdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9wdXNoYgZwcm90bzM= batchDescriptor: CvMFChlwcm90by9iYXRjaC9zZXJ2aWNlLnByb3RvEg9idWNrZXRlZXIuYmF0Y2giPgoPQmF0Y2hKb2JSZXF1ZXN0EisKA2pvYhgBIAEoDjIZLmJ1Y2tldGVlci5iYXRjaC5CYXRjaEpvYlIDam9iIhIKEEJhdGNoSm9iUmVzcG9uc2UqzQMKCEJhdGNoSm9iEhsKF0V4cGVyaW1lbnRTdGF0dXNVcGRhdGVyEAASHAoYRXhwZXJpbWVudFJ1bm5pbmdXYXRjaGVyEAESFwoTRmVhdHVyZVN0YWxlV2F0Y2hlchACEhMKD01hdUNvdW50V2F0Y2hlchADEhMKD0RhdGV0aW1lV2F0Y2hlchAEEhUKEUV2ZW50Q291bnRXYXRjaGVyEAUSFwoTRG9tYWluRXZlbnRJbmZvcm1lchAGEhcKE1JlZGlzQ291bnRlckRlbGV0ZXIQBxIdChlQcm9ncmVzc2l2ZVJvbGxvdXRXYXRjaGVyEAgSGAoURXhwZXJpbWVudENhbGN1bGF0b3IQCRIRCg1NYXVTdW1tYXJpemVyEAoSFwoTTWF1UGFydGl0aW9uRGVsZXRlchALEhcKE01hdVBhcnRpdGlvbkNyZWF0b3IQDBIVChFGZWF0dXJlRmxhZ0NhY2hlchANEhUKEVNlZ21lbnRVc2VyQ2FjaGVyEA4SEAoMQXBpS2V5Q2FjaGVyEA8SFgoSQXV0b09wc1J1bGVzQ2FjaGVyEBASFAoQRXhwZXJpbWVudENhY2hlchAREg4KClRhZ0RlbGV0ZXIQEjJoCgxCYXRjaFNlcnZpY2USWAoPRXhlY3V0ZUJhdGNoSm9iEiAuYnVja2V0ZWVyLmJhdGNoLkJhdGNoSm9iUmVxdWVzdBohLmJ1Y2tldGVlci5iYXRjaC5CYXRjaEpvYlJlc3BvbnNlIgBCL1otZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2JhdGNoYgZwcm90bzM= 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: CtYBCh1wcm90by9mZWF0dXJlL3ZhcmlhdGlvbi5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUiZwoJVmFyaWF0aW9uEg4KAmlkGAEgASgJUgJpZBIUCgV2YWx1ZRgCIAEoCVIFdmFsdWUSEgoEbmFtZRgDIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgEIAEoCVILZGVzY3JpcHRpb25CMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwq3CAohcHJvdG8vZXhwZXJpbWVudC9leHBlcmltZW50LnByb3RvEhRidWNrZXRlZXIuZXhwZXJpbWVudBodcHJvdG8vZmVhdHVyZS92YXJpYXRpb24ucHJvdG8iywYKCkV4cGVyaW1lbnQSDgoCaWQYASABKAlSAmlkEhsKB2dvYWxfaWQYAiABKAlCAhgBUgZnb2FsSWQSHQoKZmVhdHVyZV9pZBgDIAEoCVIJZmVhdHVyZUlkEicKD2ZlYXR1cmVfdmVyc2lvbhgEIAEoBVIOZmVhdHVyZVZlcnNpb24SPAoKdmFyaWF0aW9ucxgFIAMoCzIcLmJ1Y2tldGVlci5mZWF0dXJlLlZhcmlhdGlvblIKdmFyaWF0aW9ucxIZCghzdGFydF9hdBgGIAEoA1IHc3RhcnRBdBIXCgdzdG9wX2F0GAcgASgDUgZzdG9wQXQSHAoHc3RvcHBlZBgIIAEoCEICGAFSB3N0b3BwZWQSIQoKc3RvcHBlZF9hdBgJIAEoA0ICMAFSCXN0b3BwZWRBdBIdCgpjcmVhdGVkX2F0GAogASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgLIAEoA1IJdXBkYXRlZEF0EhgKB2RlbGV0ZWQYDCABKAhSB2RlbGV0ZWQSGQoIZ29hbF9pZHMYDSADKAlSB2dvYWxJZHMSEgoEbmFtZRgOIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgPIAEoCVILZGVzY3JpcHRpb24SKgoRYmFzZV92YXJpYXRpb25faWQYECABKAlSD2Jhc2VWYXJpYXRpb25JZBI/CgZzdGF0dXMYEiABKA4yJy5idWNrZXRlZXIuZXhwZXJpbWVudC5FeHBlcmltZW50LlN0YXR1c1IGc3RhdHVzEh4KCm1haW50YWluZXIYEyABKAlSCm1haW50YWluZXISGgoIYXJjaGl2ZWQYFCABKAhSCGFyY2hpdmVkEkQKBWdvYWxzGBUgAygLMi4uYnVja2V0ZWVyLmV4cGVyaW1lbnQuRXhwZXJpbWVudC5Hb2FsUmVmZXJlbmNlUgVnb2FscxozCg1Hb2FsUmVmZXJlbmNlEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lIkIKBlN0YXR1cxILCgdXQUlUSU5HEAASCwoHUlVOTklORxABEgsKB1NUT1BQRUQQAhIRCg1GT1JDRV9TVE9QUEVEEANKBAgREBIiUQoLRXhwZXJpbWVudHMSQgoLZXhwZXJpbWVudHMYASADKAsyIC5idWNrZXRlZXIuZXhwZXJpbWVudC5FeHBlcmltZW50UgtleHBlcmltZW50c0I0WjJnaXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZXhwZXJpbWVudGIGcHJvdG8zCuQBChlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiNgoDQW55EhkKCHR5cGVfdXJsGAEgASgJUgd0eXBlVXJsEhQKBXZhbHVlGAIgASgMUgV2YWx1ZUJ2ChNjb20uZ29vZ2xlLnByb3RvYnVmQghBbnlQcm90b1ABWixnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi9hbnlwYqICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IGcHJvdG8zCpoLChpwcm90by9hdXRvb3BzL2NsYXVzZS5wcm90bxIRYnVja2V0ZWVyLmF1dG9vcHMaGWdvb2dsZS9wcm90b2J1Zi9hbnkucHJvdG8ihgEKBkNsYXVzZRIOCgJpZBgBIAEoCVICaWQSLAoGY2xhdXNlGAIgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIGY2xhdXNlEj4KC2FjdGlvbl90eXBlGAMgASgOMh0uYnVja2V0ZWVyLmF1dG9vcHMuQWN0aW9uVHlwZVIKYWN0aW9uVHlwZSLfAgoST3BzRXZlbnRSYXRlQ2xhdXNlEiEKDHZhcmlhdGlvbl9pZBgCIAEoCVILdmFyaWF0aW9uSWQSFwoHZ29hbF9pZBgDIAEoCVIGZ29hbElkEhsKCW1pbl9jb3VudBgEIAEoA1IIbWluQ291bnQSKQoQdGhyZWFkc2hvbGRfcmF0ZRgFIAEoAVIPdGhyZWFkc2hvbGRSYXRlEkoKCG9wZXJhdG9yGAYgASgOMi4uYnVja2V0ZWVyLmF1dG9vcHMuT3BzRXZlbnRSYXRlQ2xhdXNlLk9wZXJhdG9yUghvcGVyYXRvchI+CgthY3Rpb25fdHlwZRgHIAEoDjIdLmJ1Y2tldGVlci5hdXRvb3BzLkFjdGlvblR5cGVSCmFjdGlvblR5cGUiMwoIT3BlcmF0b3ISFAoQR1JFQVRFUl9PUl9FUVVBTBAAEhEKDUxFU1NfT1JfRVFVQUwQAUoECAEQAiJkCg5EYXRldGltZUNsYXVzZRISCgR0aW1lGAEgASgDUgR0aW1lEj4KC2FjdGlvbl90eXBlGAIgASgOMh0uYnVja2V0ZWVyLmF1dG9vcHMuQWN0aW9uVHlwZVIKYWN0aW9uVHlwZSKXAQoaUHJvZ3Jlc3NpdmVSb2xsb3V0U2NoZWR1bGUSHwoLc2NoZWR1bGVfaWQYASABKAlSCnNjaGVkdWxlSWQSHQoKZXhlY3V0ZV9hdBgCIAEoA1IJZXhlY3V0ZUF0EhYKBndlaWdodBgDIAEoBVIGd2VpZ2h0EiEKDHRyaWdnZXJlZF9hdBgEIAEoA1ILdHJpZ2dlcmVkQXQimAEKJlByb2dyZXNzaXZlUm9sbG91dE1hbnVhbFNjaGVkdWxlQ2xhdXNlEksKCXNjaGVkdWxlcxgBIAMoCzItLmJ1Y2tldGVlci5hdXRvb3BzLlByb2dyZXNzaXZlUm9sbG91dFNjaGVkdWxlUglzY2hlZHVsZXMSIQoMdmFyaWF0aW9uX2lkGAIgASgJUgt2YXJpYXRpb25JZCLYAgooUHJvZ3Jlc3NpdmVSb2xsb3V0VGVtcGxhdGVTY2hlZHVsZUNsYXVzZRJLCglzY2hlZHVsZXMYASADKAsyLS5idWNrZXRlZXIuYXV0b29wcy5Qcm9ncmVzc2l2ZVJvbGxvdXRTY2hlZHVsZVIJc2NoZWR1bGVzEmAKCGludGVydmFsGAIgASgOMkQuYnVja2V0ZWVyLmF1dG9vcHMuUHJvZ3Jlc3NpdmVSb2xsb3V0VGVtcGxhdGVTY2hlZHVsZUNsYXVzZS5JbnRlcnZhbFIIaW50ZXJ2YWwSHgoKaW5jcmVtZW50cxgDIAEoA1IKaW5jcmVtZW50cxIhCgx2YXJpYXRpb25faWQYBCABKAlSC3ZhcmlhdGlvbklkIjoKCEludGVydmFsEgsKB1VOS05PV04QABIKCgZIT1VSTFkQARIJCgVEQUlMWRACEgoKBldFRUtMWRADKjIKCkFjdGlvblR5cGUSCwoHVU5LTk9XThAAEgoKBkVOQUJMRRABEgsKB0RJU0FCTEUQAkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vYXV0b29wc2IGcHJvdG8zCr0FCiFwcm90by9hdXRvb3BzL2F1dG9fb3BzX3J1bGUucHJvdG8SEWJ1Y2tldGVlci5hdXRvb3BzGhpwcm90by9hdXRvb3BzL2NsYXVzZS5wcm90byLQAgoLQXV0b09wc1J1bGUSDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBI1CghvcHNfdHlwZRgDIAEoDjIaLmJ1Y2tldGVlci5hdXRvb3BzLk9wc1R5cGVSB29wc1R5cGUSMwoHY2xhdXNlcxgEIAMoCzIZLmJ1Y2tldGVlci5hdXRvb3BzLkNsYXVzZVIHY2xhdXNlcxIdCgpjcmVhdGVkX2F0GAcgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgIIAEoA1IJdXBkYXRlZEF0EhgKB2RlbGV0ZWQYCSABKAhSB2RlbGV0ZWQSSAoPYXV0b19vcHNfc3RhdHVzGAogASgOMiAuYnVja2V0ZWVyLmF1dG9vcHMuQXV0b09wc1N0YXR1c1INYXV0b09wc1N0YXR1c0oECAYQByJUCgxBdXRvT3BzUnVsZXMSRAoOYXV0b19vcHNfcnVsZXMYASADKAsyHi5idWNrZXRlZXIuYXV0b29wcy5BdXRvT3BzUnVsZVIMYXV0b09wc1J1bGVzKj8KB09wc1R5cGUSEAoMVFlQRV9VTktOT1dOEAASDAoIU0NIRURVTEUQAhIOCgpFVkVOVF9SQVRFEAMiBAgBEAEqRAoNQXV0b09wc1N0YXR1cxILCgdXQUlUSU5HEAASCwoHUlVOTklORxABEgwKCEZJTklTSEVEEAISCwoHU1RPUFBFRBADQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9hdXRvb3BzYgZwcm90bzMKvwUKG3Byb3RvL2V4cGVyaW1lbnQvZ29hbC5wcm90bxIUYnVja2V0ZWVyLmV4cGVyaW1lbnQaIXByb3RvL2V4cGVyaW1lbnQvZXhwZXJpbWVudC5wcm90bxohcHJvdG8vYXV0b29wcy9hdXRvX29wc19ydWxlLnByb3RvIoUECgRHb2FsEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhIYCgdkZWxldGVkGAQgASgIUgdkZWxldGVkEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSJwoQaXNfaW5fdXNlX3N0YXR1cxgHIAEoCFINaXNJblVzZVN0YXR1cxIaCghhcmNoaXZlZBgIIAEoCFIIYXJjaGl2ZWQSUgoPY29ubmVjdGlvbl90eXBlGAkgASgOMikuYnVja2V0ZWVyLmV4cGVyaW1lbnQuR29hbC5Db25uZWN0aW9uVHlwZVIOY29ubmVjdGlvblR5cGUSQgoLZXhwZXJpbWVudHMYCiADKAsyIC5idWNrZXRlZXIuZXhwZXJpbWVudC5FeHBlcmltZW50UgtleHBlcmltZW50cxJECg5hdXRvX29wc19ydWxlcxgLIAMoCzIeLmJ1Y2tldGVlci5hdXRvb3BzLkF1dG9PcHNSdWxlUgxhdXRvT3BzUnVsZXMiPAoOQ29ubmVjdGlvblR5cGUSCwoHVU5LTk9XThAAEg4KCkVYUEVSSU1FTlQQARINCglPUEVSQVRJT04QAkI0WjJnaXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZXhwZXJpbWVudGIGcHJvdG8zCp4ICh5wcm90by9leHBlcmltZW50L2NvbW1hbmQucHJvdG8SFGJ1Y2tldGVlci5leHBlcmltZW50Ghtwcm90by9leHBlcmltZW50L2dvYWwucHJvdG8irQEKEUNyZWF0ZUdvYWxDb21tYW5kEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhJSCg9jb25uZWN0aW9uX3R5cGUYBCABKA4yKS5idWNrZXRlZXIuZXhwZXJpbWVudC5Hb2FsLkNvbm5lY3Rpb25UeXBlUg5jb25uZWN0aW9uVHlwZSInChFSZW5hbWVHb2FsQ29tbWFuZBISCgRuYW1lGAEgASgJUgRuYW1lIkAKHENoYW5nZURlc2NyaXB0aW9uR29hbENvbW1hbmQSIAoLZGVzY3JpcHRpb24YASABKAlSC2Rlc2NyaXB0aW9uIhQKEkFyY2hpdmVHb2FsQ29tbWFuZCITChFEZWxldGVHb2FsQ29tbWFuZCLvAQoXQ3JlYXRlRXhwZXJpbWVudENvbW1hbmQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhkKCHN0YXJ0X2F0GAMgASgDUgdzdGFydEF0EhcKB3N0b3BfYXQYBCABKANSBnN0b3BBdBIZCghnb2FsX2lkcxgFIAMoCVIHZ29hbElkcxISCgRuYW1lGAYgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAcgASgJUgtkZXNjcmlwdGlvbhIqChFiYXNlX3ZhcmlhdGlvbl9pZBgIIAEoCVIPYmFzZVZhcmlhdGlvbklkSgQIAhADIlMKHUNoYW5nZUV4cGVyaW1lbnRQZXJpb2RDb21tYW5kEhkKCHN0YXJ0X2F0GAEgASgDUgdzdGFydEF0EhcKB3N0b3BfYXQYAiABKANSBnN0b3BBdCIxChtDaGFuZ2VFeHBlcmltZW50TmFtZUNvbW1hbmQSEgoEbmFtZRgBIAEoCVIEbmFtZSJGCiJDaGFuZ2VFeHBlcmltZW50RGVzY3JpcHRpb25Db21tYW5kEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbiIXChVTdG9wRXhwZXJpbWVudENvbW1hbmQiGgoYQXJjaGl2ZUV4cGVyaW1lbnRDb21tYW5kIhkKF0RlbGV0ZUV4cGVyaW1lbnRDb21tYW5kIhgKFlN0YXJ0RXhwZXJpbWVudENvbW1hbmQiGQoXRmluaXNoRXhwZXJpbWVudENvbW1hbmRCNFoyZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2V4cGVyaW1lbnRiBnByb3RvMwqHBQoVZ29vZ2xlL2FwaS9odHRwLnByb3RvEgpnb29nbGUuYXBpInkKBEh0dHASKgoFcnVsZXMYASADKAsyFC5nb29nbGUuYXBpLkh0dHBSdWxlUgVydWxlcxJFCh9mdWxseV9kZWNvZGVfcmVzZXJ2ZWRfZXhwYW5zaW9uGAIgASgIUhxmdWxseURlY29kZVJlc2VydmVkRXhwYW5zaW9uIrUCCghIdHRwUnVsZRIaCghzZWxlY3RvchgBIAEoCVIIc2VsZWN0b3ISEgoDZ2V0GAIgASgJSABSA2dldBISCgNwdXQYAyABKAlIAFIDcHV0EhQKBHBvc3QYBCABKAlIAFIEcG9zdBIYCgZkZWxldGUYBSABKAlIAFIGZGVsZXRlEhYKBXBhdGNoGAYgASgJSABSBXBhdGNoEjcKBmN1c3RvbRgIIAEoCzIdLmdvb2dsZS5hcGkuQ3VzdG9tSHR0cFBhdHRlcm5IAFIGY3VzdG9tEhIKBGJvZHkYByABKAlSBGJvZHkSRQoTYWRkaXRpb25hbF9iaW5kaW5ncxgLIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSEmFkZGl0aW9uYWxCaW5kaW5nc0IJCgdwYXR0ZXJuIjsKEUN1c3RvbUh0dHBQYXR0ZXJuEhIKBGtpbmQYASABKAlSBGtpbmQSEgoEcGF0aBgCIAEoCVIEcGF0aEJqCg5jb20uZ29vZ2xlLmFwaUIJSHR0cFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25z+AEBogIER0FQSWIGcHJvdG8zCuFGCiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIk0KEUZpbGVEZXNjcmlwdG9yU2V0EjgKBGZpbGUYASADKAsyJC5nb29nbGUucHJvdG9idWYuRmlsZURlc2NyaXB0b3JQcm90b1IEZmlsZSL+BAoTRmlsZURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEhgKB3BhY2thZ2UYAiABKAlSB3BhY2thZ2USHgoKZGVwZW5kZW5jeRgDIAMoCVIKZGVwZW5kZW5jeRIrChFwdWJsaWNfZGVwZW5kZW5jeRgKIAMoBVIQcHVibGljRGVwZW5kZW5jeRInCg93ZWFrX2RlcGVuZGVuY3kYCyADKAVSDndlYWtEZXBlbmRlbmN5EkMKDG1lc3NhZ2VfdHlwZRgEIAMoCzIgLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG9SC21lc3NhZ2VUeXBlEkEKCWVudW1fdHlwZRgFIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvUghlbnVtVHlwZRJBCgdzZXJ2aWNlGAYgAygLMicuZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VEZXNjcmlwdG9yUHJvdG9SB3NlcnZpY2USQwoJZXh0ZW5zaW9uGAcgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvUglleHRlbnNpb24SNgoHb3B0aW9ucxgIIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9uc1IHb3B0aW9ucxJJChBzb3VyY2VfY29kZV9pbmZvGAkgASgLMh8uZ29vZ2xlLnByb3RvYnVmLlNvdXJjZUNvZGVJbmZvUg5zb3VyY2VDb2RlSW5mbxIWCgZzeW50YXgYDCABKAlSBnN5bnRheBIYCgdlZGl0aW9uGA0gASgJUgdlZGl0aW9uIrkGCg9EZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRI7CgVmaWVsZBgCIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90b1IFZmllbGQSQwoJZXh0ZW5zaW9uGAYgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvUglleHRlbnNpb24SQQoLbmVzdGVkX3R5cGUYAyADKAsyIC5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvUgpuZXN0ZWRUeXBlEkEKCWVudW1fdHlwZRgEIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvUghlbnVtVHlwZRJYCg9leHRlbnNpb25fcmFuZ2UYBSADKAsyLy5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvLkV4dGVuc2lvblJhbmdlUg5leHRlbnNpb25SYW5nZRJECgpvbmVvZl9kZWNsGAggAygLMiUuZ29vZ2xlLnByb3RvYnVmLk9uZW9mRGVzY3JpcHRvclByb3RvUglvbmVvZkRlY2wSOQoHb3B0aW9ucxgHIAEoCzIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9uc1IHb3B0aW9ucxJVCg5yZXNlcnZlZF9yYW5nZRgJIAMoCzIuLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG8uUmVzZXJ2ZWRSYW5nZVINcmVzZXJ2ZWRSYW5nZRIjCg1yZXNlcnZlZF9uYW1lGAogAygJUgxyZXNlcnZlZE5hbWUaegoORXh0ZW5zaW9uUmFuZ2USFAoFc3RhcnQYASABKAVSBXN0YXJ0EhAKA2VuZBgCIAEoBVIDZW5kEkAKB29wdGlvbnMYAyABKAsyJi5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2VPcHRpb25zUgdvcHRpb25zGjcKDVJlc2VydmVkUmFuZ2USFAoFc3RhcnQYASABKAVSBXN0YXJ0EhAKA2VuZBgCIAEoBVIDZW5kIq0EChVFeHRlbnNpb25SYW5nZU9wdGlvbnMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24SWQoLZGVjbGFyYXRpb24YAiADKAsyMi5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2VPcHRpb25zLkRlY2xhcmF0aW9uQgOIAQJSC2RlY2xhcmF0aW9uEmgKDHZlcmlmaWNhdGlvbhgDIAEoDjI4Lmdvb2dsZS5wcm90b2J1Zi5FeHRlbnNpb25SYW5nZU9wdGlvbnMuVmVyaWZpY2F0aW9uU3RhdGU6ClVOVkVSSUZJRURSDHZlcmlmaWNhdGlvbhqzAQoLRGVjbGFyYXRpb24SFgoGbnVtYmVyGAEgASgFUgZudW1iZXISGwoJZnVsbF9uYW1lGAIgASgJUghmdWxsTmFtZRISCgR0eXBlGAMgASgJUgR0eXBlEiMKC2lzX3JlcGVhdGVkGAQgASgIQgIYAVIKaXNSZXBlYXRlZBIaCghyZXNlcnZlZBgFIAEoCFIIcmVzZXJ2ZWQSGgoIcmVwZWF0ZWQYBiABKAhSCHJlcGVhdGVkIjQKEVZlcmlmaWNhdGlvblN0YXRlEg8KC0RFQ0xBUkFUSU9OEAASDgoKVU5WRVJJRklFRBABKgkI6AcQgICAgAIiwQYKFEZpZWxkRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSFgoGbnVtYmVyGAMgASgFUgZudW1iZXISQQoFbGFiZWwYBCABKA4yKy5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uTGFiZWxSBWxhYmVsEj4KBHR5cGUYBSABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZVIEdHlwZRIbCgl0eXBlX25hbWUYBiABKAlSCHR5cGVOYW1lEhoKCGV4dGVuZGVlGAIgASgJUghleHRlbmRlZRIjCg1kZWZhdWx0X3ZhbHVlGAcgASgJUgxkZWZhdWx0VmFsdWUSHwoLb25lb2ZfaW5kZXgYCSABKAVSCm9uZW9mSW5kZXgSGwoJanNvbl9uYW1lGAogASgJUghqc29uTmFtZRI3CgdvcHRpb25zGAggASgLMh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9uc1IHb3B0aW9ucxInCg9wcm90bzNfb3B0aW9uYWwYESABKAhSDnByb3RvM09wdGlvbmFsIrYCCgRUeXBlEg8KC1RZUEVfRE9VQkxFEAESDgoKVFlQRV9GTE9BVBACEg4KClRZUEVfSU5UNjQQAxIPCgtUWVBFX1VJTlQ2NBAEEg4KClRZUEVfSU5UMzIQBRIQCgxUWVBFX0ZJWEVENjQQBhIQCgxUWVBFX0ZJWEVEMzIQBxINCglUWVBFX0JPT0wQCBIPCgtUWVBFX1NUUklORxAJEg4KClRZUEVfR1JPVVAQChIQCgxUWVBFX01FU1NBR0UQCxIOCgpUWVBFX0JZVEVTEAwSDwoLVFlQRV9VSU5UMzIQDRINCglUWVBFX0VOVU0QDhIRCg1UWVBFX1NGSVhFRDMyEA8SEQoNVFlQRV9TRklYRUQ2NBAQEg8KC1RZUEVfU0lOVDMyEBESDwoLVFlQRV9TSU5UNjQQEiJDCgVMYWJlbBISCg5MQUJFTF9PUFRJT05BTBABEhIKDkxBQkVMX1JFUVVJUkVEEAISEgoOTEFCRUxfUkVQRUFURUQQAyJjChRPbmVvZkRlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEjcKB29wdGlvbnMYAiABKAsyHS5nb29nbGUucHJvdG9idWYuT25lb2ZPcHRpb25zUgdvcHRpb25zIuMCChNFbnVtRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSPwoFdmFsdWUYAiADKAsyKS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlRGVzY3JpcHRvclByb3RvUgV2YWx1ZRI2CgdvcHRpb25zGAMgASgLMhwuZ29vZ2xlLnByb3RvYnVmLkVudW1PcHRpb25zUgdvcHRpb25zEl0KDnJlc2VydmVkX3JhbmdlGAQgAygLMjYuZ29vZ2xlLnByb3RvYnVmLkVudW1EZXNjcmlwdG9yUHJvdG8uRW51bVJlc2VydmVkUmFuZ2VSDXJlc2VydmVkUmFuZ2USIwoNcmVzZXJ2ZWRfbmFtZRgFIAMoCVIMcmVzZXJ2ZWROYW1lGjsKEUVudW1SZXNlcnZlZFJhbmdlEhQKBXN0YXJ0GAEgASgFUgVzdGFydBIQCgNlbmQYAiABKAVSA2VuZCKDAQoYRW51bVZhbHVlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSFgoGbnVtYmVyGAIgASgFUgZudW1iZXISOwoHb3B0aW9ucxgDIAEoCzIhLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVPcHRpb25zUgdvcHRpb25zIqcBChZTZXJ2aWNlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSPgoGbWV0aG9kGAIgAygLMiYuZ29vZ2xlLnByb3RvYnVmLk1ldGhvZERlc2NyaXB0b3JQcm90b1IGbWV0aG9kEjkKB29wdGlvbnMYAyABKAsyHy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnNSB29wdGlvbnMiiQIKFU1ldGhvZERlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEh0KCmlucHV0X3R5cGUYAiABKAlSCWlucHV0VHlwZRIfCgtvdXRwdXRfdHlwZRgDIAEoCVIKb3V0cHV0VHlwZRI4CgdvcHRpb25zGAQgASgLMh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnNSB29wdGlvbnMSMAoQY2xpZW50X3N0cmVhbWluZxgFIAEoCDoFZmFsc2VSD2NsaWVudFN0cmVhbWluZxIwChBzZXJ2ZXJfc3RyZWFtaW5nGAYgASgIOgVmYWxzZVIPc2VydmVyU3RyZWFtaW5nIpEJCgtGaWxlT3B0aW9ucxIhCgxqYXZhX3BhY2thZ2UYASABKAlSC2phdmFQYWNrYWdlEjAKFGphdmFfb3V0ZXJfY2xhc3NuYW1lGAggASgJUhJqYXZhT3V0ZXJDbGFzc25hbWUSNQoTamF2YV9tdWx0aXBsZV9maWxlcxgKIAEoCDoFZmFsc2VSEWphdmFNdWx0aXBsZUZpbGVzEkQKHWphdmFfZ2VuZXJhdGVfZXF1YWxzX2FuZF9oYXNoGBQgASgIQgIYAVIZamF2YUdlbmVyYXRlRXF1YWxzQW5kSGFzaBI6ChZqYXZhX3N0cmluZ19jaGVja191dGY4GBsgASgIOgVmYWxzZVITamF2YVN0cmluZ0NoZWNrVXRmOBJTCgxvcHRpbWl6ZV9mb3IYCSABKA4yKS5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMuT3B0aW1pemVNb2RlOgVTUEVFRFILb3B0aW1pemVGb3ISHQoKZ29fcGFja2FnZRgLIAEoCVIJZ29QYWNrYWdlEjUKE2NjX2dlbmVyaWNfc2VydmljZXMYECABKAg6BWZhbHNlUhFjY0dlbmVyaWNTZXJ2aWNlcxI5ChVqYXZhX2dlbmVyaWNfc2VydmljZXMYESABKAg6BWZhbHNlUhNqYXZhR2VuZXJpY1NlcnZpY2VzEjUKE3B5X2dlbmVyaWNfc2VydmljZXMYEiABKAg6BWZhbHNlUhFweUdlbmVyaWNTZXJ2aWNlcxI3ChRwaHBfZ2VuZXJpY19zZXJ2aWNlcxgqIAEoCDoFZmFsc2VSEnBocEdlbmVyaWNTZXJ2aWNlcxIlCgpkZXByZWNhdGVkGBcgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBIuChBjY19lbmFibGVfYXJlbmFzGB8gASgIOgR0cnVlUg5jY0VuYWJsZUFyZW5hcxIqChFvYmpjX2NsYXNzX3ByZWZpeBgkIAEoCVIPb2JqY0NsYXNzUHJlZml4EikKEGNzaGFycF9uYW1lc3BhY2UYJSABKAlSD2NzaGFycE5hbWVzcGFjZRIhCgxzd2lmdF9wcmVmaXgYJyABKAlSC3N3aWZ0UHJlZml4EigKEHBocF9jbGFzc19wcmVmaXgYKCABKAlSDnBocENsYXNzUHJlZml4EiMKDXBocF9uYW1lc3BhY2UYKSABKAlSDHBocE5hbWVzcGFjZRI0ChZwaHBfbWV0YWRhdGFfbmFtZXNwYWNlGCwgASgJUhRwaHBNZXRhZGF0YU5hbWVzcGFjZRIhCgxydWJ5X3BhY2thZ2UYLSABKAlSC3J1YnlQYWNrYWdlElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uIjoKDE9wdGltaXplTW9kZRIJCgVTUEVFRBABEg0KCUNPREVfU0laRRACEhAKDExJVEVfUlVOVElNRRADKgkI6AcQgICAgAJKBAgmECciuwMKDk1lc3NhZ2VPcHRpb25zEjwKF21lc3NhZ2Vfc2V0X3dpcmVfZm9ybWF0GAEgASgIOgVmYWxzZVIUbWVzc2FnZVNldFdpcmVGb3JtYXQSTAofbm9fc3RhbmRhcmRfZGVzY3JpcHRvcl9hY2Nlc3NvchgCIAEoCDoFZmFsc2VSHG5vU3RhbmRhcmREZXNjcmlwdG9yQWNjZXNzb3ISJQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSGwoJbWFwX2VudHJ5GAcgASgIUghtYXBFbnRyeRJWCiZkZXByZWNhdGVkX2xlZ2FjeV9qc29uX2ZpZWxkX2NvbmZsaWN0cxgLIAEoCEICGAFSImRlcHJlY2F0ZWRMZWdhY3lKc29uRmllbGRDb25mbGljdHMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAkoECAQQBUoECAUQBkoECAYQB0oECAgQCUoECAkQCiKFCQoMRmllbGRPcHRpb25zEkEKBWN0eXBlGAEgASgOMiMuZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5DVHlwZToGU1RSSU5HUgVjdHlwZRIWCgZwYWNrZWQYAiABKAhSBnBhY2tlZBJHCgZqc3R5cGUYBiABKA4yJC5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLkpTVHlwZToJSlNfTk9STUFMUgZqc3R5cGUSGQoEbGF6eRgFIAEoCDoFZmFsc2VSBGxhenkSLgoPdW52ZXJpZmllZF9sYXp5GA8gASgIOgVmYWxzZVIOdW52ZXJpZmllZExhenkSJQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSGQoEd2VhaxgKIAEoCDoFZmFsc2VSBHdlYWsSKAoMZGVidWdfcmVkYWN0GBAgASgIOgVmYWxzZVILZGVidWdSZWRhY3QSSwoJcmV0ZW50aW9uGBEgASgOMi0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5PcHRpb25SZXRlbnRpb25SCXJldGVudGlvbhJKCgZ0YXJnZXQYEiABKA4yLi5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLk9wdGlvblRhcmdldFR5cGVCAhgBUgZ0YXJnZXQSSAoHdGFyZ2V0cxgTIAMoDjIuLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuT3B0aW9uVGFyZ2V0VHlwZVIHdGFyZ2V0cxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiIvCgVDVHlwZRIKCgZTVFJJTkcQABIICgRDT1JEEAESEAoMU1RSSU5HX1BJRUNFEAIiNQoGSlNUeXBlEg0KCUpTX05PUk1BTBAAEg0KCUpTX1NUUklORxABEg0KCUpTX05VTUJFUhACIlUKD09wdGlvblJldGVudGlvbhIVChFSRVRFTlRJT05fVU5LTk9XThAAEhUKEVJFVEVOVElPTl9SVU5USU1FEAESFAoQUkVURU5USU9OX1NPVVJDRRACIowCChBPcHRpb25UYXJnZXRUeXBlEhcKE1RBUkdFVF9UWVBFX1VOS05PV04QABIUChBUQVJHRVRfVFlQRV9GSUxFEAESHwobVEFSR0VUX1RZUEVfRVhURU5TSU9OX1JBTkdFEAISFwoTVEFSR0VUX1RZUEVfTUVTU0FHRRADEhUKEVRBUkdFVF9UWVBFX0ZJRUxEEAQSFQoRVEFSR0VUX1RZUEVfT05FT0YQBRIUChBUQVJHRVRfVFlQRV9FTlVNEAYSGgoWVEFSR0VUX1RZUEVfRU5VTV9FTlRSWRAHEhcKE1RBUkdFVF9UWVBFX1NFUlZJQ0UQCBIWChJUQVJHRVRfVFlQRV9NRVRIT0QQCSoJCOgHEICAgIACSgQIBBAFInMKDE9uZW9mT3B0aW9ucxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIpgCCgtFbnVtT3B0aW9ucxIfCgthbGxvd19hbGlhcxgCIAEoCFIKYWxsb3dBbGlhcxIlCgpkZXByZWNhdGVkGAMgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJWCiZkZXByZWNhdGVkX2xlZ2FjeV9qc29uX2ZpZWxkX2NvbmZsaWN0cxgGIAEoCEICGAFSImRlcHJlY2F0ZWRMZWdhY3lKc29uRmllbGRDb25mbGljdHMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAkoECAUQBiKeAQoQRW51bVZhbHVlT3B0aW9ucxIlCgpkZXByZWNhdGVkGAEgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIpwBCg5TZXJ2aWNlT3B0aW9ucxIlCgpkZXByZWNhdGVkGCEgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIuACCg1NZXRob2RPcHRpb25zEiUKCmRlcHJlY2F0ZWQYISABKAg6BWZhbHNlUgpkZXByZWNhdGVkEnEKEWlkZW1wb3RlbmN5X2xldmVsGCIgASgOMi8uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMuSWRlbXBvdGVuY3lMZXZlbDoTSURFTVBPVEVOQ1lfVU5LTk9XTlIQaWRlbXBvdGVuY3lMZXZlbBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiJQChBJZGVtcG90ZW5jeUxldmVsEhcKE0lERU1QT1RFTkNZX1VOS05PV04QABITCg9OT19TSURFX0VGRkVDVFMQARIOCgpJREVNUE9URU5UEAIqCQjoBxCAgICAAiKaAwoTVW5pbnRlcnByZXRlZE9wdGlvbhJBCgRuYW1lGAIgAygLMi0uZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb24uTmFtZVBhcnRSBG5hbWUSKQoQaWRlbnRpZmllcl92YWx1ZRgDIAEoCVIPaWRlbnRpZmllclZhbHVlEiwKEnBvc2l0aXZlX2ludF92YWx1ZRgEIAEoBFIQcG9zaXRpdmVJbnRWYWx1ZRIsChJuZWdhdGl2ZV9pbnRfdmFsdWUYBSABKANSEG5lZ2F0aXZlSW50VmFsdWUSIQoMZG91YmxlX3ZhbHVlGAYgASgBUgtkb3VibGVWYWx1ZRIhCgxzdHJpbmdfdmFsdWUYByABKAxSC3N0cmluZ1ZhbHVlEicKD2FnZ3JlZ2F0ZV92YWx1ZRgIIAEoCVIOYWdncmVnYXRlVmFsdWUaSgoITmFtZVBhcnQSGwoJbmFtZV9wYXJ0GAEgAigJUghuYW1lUGFydBIhCgxpc19leHRlbnNpb24YAiACKAhSC2lzRXh0ZW5zaW9uIqcCCg5Tb3VyY2VDb2RlSW5mbxJECghsb2NhdGlvbhgBIAMoCzIoLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb2RlSW5mby5Mb2NhdGlvblIIbG9jYXRpb24azgEKCExvY2F0aW9uEhYKBHBhdGgYASADKAVCAhABUgRwYXRoEhYKBHNwYW4YAiADKAVCAhABUgRzcGFuEikKEGxlYWRpbmdfY29tbWVudHMYAyABKAlSD2xlYWRpbmdDb21tZW50cxIrChF0cmFpbGluZ19jb21tZW50cxgEIAEoCVIQdHJhaWxpbmdDb21tZW50cxI6ChlsZWFkaW5nX2RldGFjaGVkX2NvbW1lbnRzGAYgAygJUhdsZWFkaW5nRGV0YWNoZWRDb21tZW50cyLQAgoRR2VuZXJhdGVkQ29kZUluZm8STQoKYW5ub3RhdGlvbhgBIAMoCzItLmdvb2dsZS5wcm90b2J1Zi5HZW5lcmF0ZWRDb2RlSW5mby5Bbm5vdGF0aW9uUgphbm5vdGF0aW9uGusBCgpBbm5vdGF0aW9uEhYKBHBhdGgYASADKAVCAhABUgRwYXRoEh8KC3NvdXJjZV9maWxlGAIgASgJUgpzb3VyY2VGaWxlEhQKBWJlZ2luGAMgASgFUgViZWdpbhIQCgNlbmQYBCABKAVSA2VuZBJSCghzZW1hbnRpYxgFIAEoDjI2Lmdvb2dsZS5wcm90b2J1Zi5HZW5lcmF0ZWRDb2RlSW5mby5Bbm5vdGF0aW9uLlNlbWFudGljUghzZW1hbnRpYyIoCghTZW1hbnRpYxIICgROT05FEAASBwoDU0VUEAESCQoFQUxJQVMQAkJ+ChNjb20uZ29vZ2xlLnByb3RvYnVmQhBEZXNjcmlwdG9yUHJvdG9zSAFaLWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2Rlc2NyaXB0b3JwYvgBAaICA0dQQqoCGkdvb2dsZS5Qcm90b2J1Zi5SZWZsZWN0aW9uCqgCChxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpGhVnb29nbGUvYXBpL2h0dHAucHJvdG8aIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCbgoOY29tLmdvb2dsZS5hcGlCEEFubm90YXRpb25zUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzMK6AMKH2dvb2dsZS9hcGkvZmllbGRfYmVoYXZpb3IucHJvdG8SCmdvb2dsZS5hcGkaIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvKrYBCg1GaWVsZEJlaGF2aW9yEh4KGkZJRUxEX0JFSEFWSU9SX1VOU1BFQ0lGSUVEEAASDAoIT1BUSU9OQUwQARIMCghSRVFVSVJFRBACEg8KC09VVFBVVF9PTkxZEAMSDgoKSU5QVVRfT05MWRAEEg0KCUlNTVVUQUJMRRAFEhIKDlVOT1JERVJFRF9MSVNUEAYSFQoRTk9OX0VNUFRZX0RFRkFVTFQQBxIOCgpJREVOVElGSUVSEAg6ZAoOZmllbGRfYmVoYXZpb3ISHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGJwIIAMoDjIZLmdvb2dsZS5hcGkuRmllbGRCZWhhdmlvckICEABSDWZpZWxkQmVoYXZpb3JCcAoOY29tLmdvb2dsZS5hcGlCEkZpZWxkQmVoYXZpb3JQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc6ICBEdBUEliBnByb3RvMwriBQocZ29vZ2xlL3Byb3RvYnVmL3N0cnVjdC5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIpgBCgZTdHJ1Y3QSOwoGZmllbGRzGAEgAygLMiMuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdC5GaWVsZHNFbnRyeVIGZmllbGRzGlEKC0ZpZWxkc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEisgIKBVZhbHVlEjsKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSABSCW51bGxWYWx1ZRIjCgxudW1iZXJfdmFsdWUYAiABKAFIAFILbnVtYmVyVmFsdWUSIwoMc3RyaW5nX3ZhbHVlGAMgASgJSABSC3N0cmluZ1ZhbHVlEh8KCmJvb2xfdmFsdWUYBCABKAhIAFIJYm9vbFZhbHVlEjwKDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAFILc3RydWN0VmFsdWUSOwoKbGlzdF92YWx1ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5MaXN0VmFsdWVIAFIJbGlzdFZhbHVlQgYKBGtpbmQiOwoJTGlzdFZhbHVlEi4KBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIGdmFsdWVzKhsKCU51bGxWYWx1ZRIOCgpOVUxMX1ZBTFVFEABCfwoTY29tLmdvb2dsZS5wcm90b2J1ZkILU3RydWN0UHJvdG9QAVovZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMva25vd24vc3RydWN0cGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMwqmPgoscHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9vcGVuYXBpdjIucHJvdG8SKWdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zGhxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvIrMICgdTd2FnZ2VyEhgKB3N3YWdnZXIYASABKAlSB3N3YWdnZXISQwoEaW5mbxgCIAEoCzIvLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkluZm9SBGluZm8SEgoEaG9zdBgDIAEoCVIEaG9zdBIbCgliYXNlX3BhdGgYBCABKAlSCGJhc2VQYXRoEksKB3NjaGVtZXMYBSADKA4yMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY2hlbWVSB3NjaGVtZXMSGgoIY29uc3VtZXMYBiADKAlSCGNvbnN1bWVzEhoKCHByb2R1Y2VzGAcgAygJUghwcm9kdWNlcxJfCglyZXNwb25zZXMYCiADKAsyQS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Td2FnZ2VyLlJlc3BvbnNlc0VudHJ5UglyZXNwb25zZXMScQoUc2VjdXJpdHlfZGVmaW5pdGlvbnMYCyABKAsyPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eURlZmluaXRpb25zUhNzZWN1cml0eURlZmluaXRpb25zEloKCHNlY3VyaXR5GAwgAygLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlSZXF1aXJlbWVudFIIc2VjdXJpdHkSQgoEdGFncxgNIAMoCzIuLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlRhZ1IEdGFncxJlCg1leHRlcm5hbF9kb2NzGA4gASgLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuRXh0ZXJuYWxEb2N1bWVudGF0aW9uUgxleHRlcm5hbERvY3MSYgoKZXh0ZW5zaW9ucxgPIAMoCzJCLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlN3YWdnZXIuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGnEKDlJlc3BvbnNlc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EkkKBXZhbHVlGAIgASgLMjMuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2VSBXZhbHVlOgI4ARpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4AUoECAgQCUoECAkQCiLWBwoJT3BlcmF0aW9uEhIKBHRhZ3MYASADKAlSBHRhZ3MSGAoHc3VtbWFyeRgCIAEoCVIHc3VtbWFyeRIgCgtkZXNjcmlwdGlvbhgDIAEoCVILZGVzY3JpcHRpb24SZQoNZXh0ZXJuYWxfZG9jcxgEIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEiEKDG9wZXJhdGlvbl9pZBgFIAEoCVILb3BlcmF0aW9uSWQSGgoIY29uc3VtZXMYBiADKAlSCGNvbnN1bWVzEhoKCHByb2R1Y2VzGAcgAygJUghwcm9kdWNlcxJhCglyZXNwb25zZXMYCSADKAsyQy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5PcGVyYXRpb24uUmVzcG9uc2VzRW50cnlSCXJlc3BvbnNlcxJLCgdzY2hlbWVzGAogAygOMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1lUgdzY2hlbWVzEh4KCmRlcHJlY2F0ZWQYCyABKAhSCmRlcHJlY2F0ZWQSWgoIc2VjdXJpdHkYDCADKAsyPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVJlcXVpcmVtZW50UghzZWN1cml0eRJkCgpleHRlbnNpb25zGA0gAygLMkQuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuT3BlcmF0aW9uLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxJVCgpwYXJhbWV0ZXJzGA4gASgLMjUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUGFyYW1ldGVyc1IKcGFyYW1ldGVycxpxCg5SZXNwb25zZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRJJCgV2YWx1ZRgCIAEoCzIzLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlUgV2YWx1ZToCOAEaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAFKBAgIEAkiYgoKUGFyYW1ldGVycxJUCgdoZWFkZXJzGAEgAygLMjouZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSGVhZGVyUGFyYW1ldGVyUgdoZWFkZXJzIqMCCg9IZWFkZXJQYXJhbWV0ZXISEgoEbmFtZRgBIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SUwoEdHlwZRgDIAEoDjI/LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkhlYWRlclBhcmFtZXRlci5UeXBlUgR0eXBlEhYKBmZvcm1hdBgEIAEoCVIGZm9ybWF0EhoKCHJlcXVpcmVkGAUgASgIUghyZXF1aXJlZCJFCgRUeXBlEgsKB1VOS05PV04QABIKCgZTVFJJTkcQARIKCgZOVU1CRVIQAhILCgdJTlRFR0VSEAMSCwoHQk9PTEVBThAESgQIBhAHSgQIBxAIItgBCgZIZWFkZXISIAoLZGVzY3JpcHRpb24YASABKAlSC2Rlc2NyaXB0aW9uEhIKBHR5cGUYAiABKAlSBHR5cGUSFgoGZm9ybWF0GAMgASgJUgZmb3JtYXQSGAoHZGVmYXVsdBgGIAEoCVIHZGVmYXVsdBIYCgdwYXR0ZXJuGA0gASgJUgdwYXR0ZXJuSgQIBBAFSgQIBRAGSgQIBxAISgQICBAJSgQICRAKSgQIChALSgQICxAMSgQIDBANSgQIDhAPSgQIDxAQSgQIEBARSgQIERASSgQIEhATIpoFCghSZXNwb25zZRIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24SSQoGc2NoZW1hGAIgASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1hUgZzY2hlbWESWgoHaGVhZGVycxgDIAMoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlLkhlYWRlcnNFbnRyeVIHaGVhZGVycxJdCghleGFtcGxlcxgEIAMoCzJBLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlLkV4YW1wbGVzRW50cnlSCGV4YW1wbGVzEmMKCmV4dGVuc2lvbnMYBSADKAsyQy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZS5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMabQoMSGVhZGVyc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EkcKBXZhbHVlGAIgASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSGVhZGVyUgV2YWx1ZToCOAEaOwoNRXhhbXBsZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBItYDCgRJbmZvEhQKBXRpdGxlGAEgASgJUgV0aXRsZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SKAoQdGVybXNfb2Zfc2VydmljZRgDIAEoCVIOdGVybXNPZlNlcnZpY2USTAoHY29udGFjdBgEIAEoCzIyLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkNvbnRhY3RSB2NvbnRhY3QSTAoHbGljZW5zZRgFIAEoCzIyLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkxpY2Vuc2VSB2xpY2Vuc2USGAoHdmVyc2lvbhgGIAEoCVIHdmVyc2lvbhJfCgpleHRlbnNpb25zGAcgAygLMj8uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSW5mby5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEiRQoHQ29udGFjdBISCgRuYW1lGAEgASgJUgRuYW1lEhAKA3VybBgCIAEoCVIDdXJsEhQKBWVtYWlsGAMgASgJUgVlbWFpbCIvCgdMaWNlbnNlEhIKBG5hbWUYASABKAlSBG5hbWUSEAoDdXJsGAIgASgJUgN1cmwiSwoVRXh0ZXJuYWxEb2N1bWVudGF0aW9uEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbhIQCgN1cmwYAiABKAlSA3VybCKqAgoGU2NoZW1hElYKC2pzb25fc2NoZW1hGAEgASgLMjUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYVIKanNvblNjaGVtYRIkCg1kaXNjcmltaW5hdG9yGAIgASgJUg1kaXNjcmltaW5hdG9yEhsKCXJlYWRfb25seRgDIAEoCFIIcmVhZE9ubHkSZQoNZXh0ZXJuYWxfZG9jcxgFIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEhgKB2V4YW1wbGUYBiABKAlSB2V4YW1wbGVKBAgEEAUi1woKCkpTT05TY2hlbWESEAoDcmVmGAMgASgJUgNyZWYSFAoFdGl0bGUYBSABKAlSBXRpdGxlEiAKC2Rlc2NyaXB0aW9uGAYgASgJUgtkZXNjcmlwdGlvbhIYCgdkZWZhdWx0GAcgASgJUgdkZWZhdWx0EhsKCXJlYWRfb25seRgIIAEoCFIIcmVhZE9ubHkSGAoHZXhhbXBsZRgJIAEoCVIHZXhhbXBsZRIfCgttdWx0aXBsZV9vZhgKIAEoAVIKbXVsdGlwbGVPZhIYCgdtYXhpbXVtGAsgASgBUgdtYXhpbXVtEisKEWV4Y2x1c2l2ZV9tYXhpbXVtGAwgASgIUhBleGNsdXNpdmVNYXhpbXVtEhgKB21pbmltdW0YDSABKAFSB21pbmltdW0SKwoRZXhjbHVzaXZlX21pbmltdW0YDiABKAhSEGV4Y2x1c2l2ZU1pbmltdW0SHQoKbWF4X2xlbmd0aBgPIAEoBFIJbWF4TGVuZ3RoEh0KCm1pbl9sZW5ndGgYECABKARSCW1pbkxlbmd0aBIYCgdwYXR0ZXJuGBEgASgJUgdwYXR0ZXJuEhsKCW1heF9pdGVtcxgUIAEoBFIIbWF4SXRlbXMSGwoJbWluX2l0ZW1zGBUgASgEUghtaW5JdGVtcxIhCgx1bmlxdWVfaXRlbXMYFiABKAhSC3VuaXF1ZUl0ZW1zEiUKDm1heF9wcm9wZXJ0aWVzGBggASgEUg1tYXhQcm9wZXJ0aWVzEiUKDm1pbl9wcm9wZXJ0aWVzGBkgASgEUg1taW5Qcm9wZXJ0aWVzEhoKCHJlcXVpcmVkGBogAygJUghyZXF1aXJlZBIUCgVhcnJheRgiIAMoCVIFYXJyYXkSXwoEdHlwZRgjIAMoDjJLLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWEuSlNPTlNjaGVtYVNpbXBsZVR5cGVzUgR0eXBlEhYKBmZvcm1hdBgkIAEoCVIGZm9ybWF0EhIKBGVudW0YLiADKAlSBGVudW0SegoTZmllbGRfY29uZmlndXJhdGlvbhjpByABKAsySC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hLkZpZWxkQ29uZmlndXJhdGlvblISZmllbGRDb25maWd1cmF0aW9uEmUKCmV4dGVuc2lvbnMYMCADKAsyRS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxo8ChJGaWVsZENvbmZpZ3VyYXRpb24SJgoPcGF0aF9wYXJhbV9uYW1lGC8gASgJUg1wYXRoUGFyYW1OYW1lGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIncKFUpTT05TY2hlbWFTaW1wbGVUeXBlcxILCgdVTktOT1dOEAASCQoFQVJSQVkQARILCgdCT09MRUFOEAISCwoHSU5URUdFUhADEggKBE5VTEwQBBIKCgZOVU1CRVIQBRIKCgZPQkpFQ1QQBhIKCgZTVFJJTkcQB0oECAEQAkoECAIQA0oECAQQBUoECBIQE0oECBMQFEoECBcQGEoECBsQHEoECBwQHUoECB0QHkoECB4QIkoECCUQKkoECCoQK0oECCsQLiLZAgoDVGFnEhIKBG5hbWUYASABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uEmUKDWV4dGVybmFsX2RvY3MYAyABKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5FeHRlcm5hbERvY3VtZW50YXRpb25SDGV4dGVybmFsRG9jcxJeCgpleHRlbnNpb25zGAQgAygLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuVGFnLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASL3AQoTU2VjdXJpdHlEZWZpbml0aW9ucxJoCghzZWN1cml0eRgBIAMoCzJMLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5RGVmaW5pdGlvbnMuU2VjdXJpdHlFbnRyeVIIc2VjdXJpdHkadgoNU2VjdXJpdHlFbnRyeRIQCgNrZXkYASABKAlSA2tleRJPCgV2YWx1ZRgCIAEoCzI5LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lUgV2YWx1ZToCOAEi/wYKDlNlY3VyaXR5U2NoZW1lElIKBHR5cGUYASABKA4yPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5UeXBlUgR0eXBlEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhISCgRuYW1lGAMgASgJUgRuYW1lEkwKAmluGAQgASgOMjwuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWUuSW5SAmluElIKBGZsb3cYBSABKA4yPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5GbG93UgRmbG93EisKEWF1dGhvcml6YXRpb25fdXJsGAYgASgJUhBhdXRob3JpemF0aW9uVXJsEhsKCXRva2VuX3VybBgHIAEoCVIIdG9rZW5VcmwSSQoGc2NvcGVzGAggASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NvcGVzUgZzY29wZXMSaQoKZXh0ZW5zaW9ucxgJIAMoCzJJLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASJLCgRUeXBlEhAKDFRZUEVfSU5WQUxJRBAAEg4KClRZUEVfQkFTSUMQARIQCgxUWVBFX0FQSV9LRVkQAhIPCgtUWVBFX09BVVRIMhADIjEKAkluEg4KCklOX0lOVkFMSUQQABIMCghJTl9RVUVSWRABEg0KCUlOX0hFQURFUhACImoKBEZsb3cSEAoMRkxPV19JTlZBTElEEAASEQoNRkxPV19JTVBMSUNJVBABEhEKDUZMT1dfUEFTU1dPUkQQAhIUChBGTE9XX0FQUExJQ0FUSU9OEAMSFAoQRkxPV19BQ0NFU1NfQ09ERRAEIvYCChNTZWN1cml0eVJlcXVpcmVtZW50EooBChRzZWN1cml0eV9yZXF1aXJlbWVudBgBIAMoCzJXLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnQuU2VjdXJpdHlSZXF1aXJlbWVudEVudHJ5UhNzZWN1cml0eVJlcXVpcmVtZW50GjAKGFNlY3VyaXR5UmVxdWlyZW1lbnRWYWx1ZRIUCgVzY29wZRgBIAMoCVIFc2NvcGUanwEKGFNlY3VyaXR5UmVxdWlyZW1lbnRFbnRyeRIQCgNrZXkYASABKAlSA2tleRJtCgV2YWx1ZRgCIAEoCzJXLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnQuU2VjdXJpdHlSZXF1aXJlbWVudFZhbHVlUgV2YWx1ZToCOAEilgEKBlNjb3BlcxJSCgVzY29wZRgBIAMoCzI8LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjb3Blcy5TY29wZUVudHJ5UgVzY29wZRo4CgpTY29wZUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEqOwoGU2NoZW1lEgsKB1VOS05PV04QABIICgRIVFRQEAESCQoFSFRUUFMQAhIGCgJXUxADEgcKA1dTUxAEQkhaRmdpdGh1Yi5jb20vZ3JwYy1lY29zeXN0ZW0vZ3JwYy1nYXRld2F5L3YyL3Byb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnNiBnByb3RvMwr9BgoucHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9hbm5vdGF0aW9ucy5wcm90bxIpZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMaIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvGixwcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL29wZW5hcGl2Mi5wcm90bzp+ChFvcGVuYXBpdjJfc3dhZ2dlchIcLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9ucxiSCCABKAsyMi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Td2FnZ2VyUhBvcGVuYXBpdjJTd2FnZ2VyOoYBChNvcGVuYXBpdjJfb3BlcmF0aW9uEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYkgggASgLMjQuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuT3BlcmF0aW9uUhJvcGVuYXBpdjJPcGVyYXRpb246fgoQb3BlbmFwaXYyX3NjaGVtYRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiSCCABKAsyMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY2hlbWFSD29wZW5hcGl2MlNjaGVtYTp1Cg1vcGVuYXBpdjJfdGFnEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJIIIAEoCzIuLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlRhZ1IMb3BlbmFwaXYyVGFnOn4KD29wZW5hcGl2Ml9maWVsZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYkgggASgLMjUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYVIOb3BlbmFwaXYyRmllbGRCSFpGZ2l0aHViLmNvbS9ncnBjLWVjb3N5c3RlbS9ncnBjLWdhdGV3YXkvdjIvcHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9uc2IGcHJvdG8zCoYECh5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIjCgtEb3VibGVWYWx1ZRIUCgV2YWx1ZRgBIAEoAVIFdmFsdWUiIgoKRmxvYXRWYWx1ZRIUCgV2YWx1ZRgBIAEoAlIFdmFsdWUiIgoKSW50NjRWYWx1ZRIUCgV2YWx1ZRgBIAEoA1IFdmFsdWUiIwoLVUludDY0VmFsdWUSFAoFdmFsdWUYASABKARSBXZhbHVlIiIKCkludDMyVmFsdWUSFAoFdmFsdWUYASABKAVSBXZhbHVlIiMKC1VJbnQzMlZhbHVlEhQKBXZhbHVlGAEgASgNUgV2YWx1ZSIhCglCb29sVmFsdWUSFAoFdmFsdWUYASABKAhSBXZhbHVlIiMKC1N0cmluZ1ZhbHVlEhQKBXZhbHVlGAEgASgJUgV2YWx1ZSIiCgpCeXRlc1ZhbHVlEhQKBXZhbHVlGAEgASgMUgV2YWx1ZUKDAQoTY29tLmdvb2dsZS5wcm90b2J1ZkINV3JhcHBlcnNQcm90b1ABWjFnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi93cmFwcGVyc3Bi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzMKvVYKHnByb3RvL2V4cGVyaW1lbnQvc2VydmljZS5wcm90bxIUYnVja2V0ZWVyLmV4cGVyaW1lbnQaHGdvb2dsZS9hcGkvYW5ub3RhdGlvbnMucHJvdG8aH2dvb2dsZS9hcGkvZmllbGRfYmVoYXZpb3IucHJvdG8aLnByb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnMvYW5ub3RhdGlvbnMucHJvdG8aHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxoecHJvdG8vZXhwZXJpbWVudC9jb21tYW5kLnByb3RvGhtwcm90by9leHBlcmltZW50L2dvYWwucHJvdG8aIXByb3RvL2V4cGVyaW1lbnQvZXhwZXJpbWVudC5wcm90byJXCg5HZXRHb2FsUmVxdWVzdBITCgJpZBgBIAEoCUID4EECUgJpZBIqCg5lbnZpcm9ubWVudF9pZBgDIAEoCUID4EECUg1lbnZpcm9ubWVudElkSgQIAhADIkEKD0dldEdvYWxSZXNwb25zZRIuCgRnb2FsGAEgASgLMhouYnVja2V0ZWVyLmV4cGVyaW1lbnQuR29hbFIEZ29hbCLEBAoQTGlzdEdvYWxzUmVxdWVzdBIbCglwYWdlX3NpemUYASABKANSCHBhZ2VTaXplEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEkkKCG9yZGVyX2J5GAQgASgOMi4uYnVja2V0ZWVyLmV4cGVyaW1lbnQuTGlzdEdvYWxzUmVxdWVzdC5PcmRlckJ5UgdvcmRlckJ5El4KD29yZGVyX2RpcmVjdGlvbhgFIAEoDjI1LmJ1Y2tldGVlci5leHBlcmltZW50Lkxpc3RHb2Fsc1JlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAYgASgJUg1zZWFyY2hLZXl3b3JkEkMKEGlzX2luX3VzZV9zdGF0dXMYByABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUg1pc0luVXNlU3RhdHVzEjYKCGFyY2hpdmVkGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIYXJjaGl2ZWQSKgoOZW52aXJvbm1lbnRfaWQYCSABKAlCA+BBAlINZW52aXJvbm1lbnRJZCJVCgdPcmRlckJ5EgsKB0RFRkFVTFQQABIICgROQU1FEAESDgoKQ1JFQVRFRF9BVBACEg4KClVQREFURURfQVQQAxITCg9DT05ORUNUSU9OX1RZUEUQBCIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAFKBAgDEAQifgoRTGlzdEdvYWxzUmVzcG9uc2USMAoFZ29hbHMYASADKAsyGi5idWNrZXRlZXIuZXhwZXJpbWVudC5Hb2FsUgVnb2FscxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCK/AgoRQ3JlYXRlR29hbFJlcXVlc3QSVAoHY29tbWFuZBgBIAEoCzInLmJ1Y2tldGVlci5leHBlcmltZW50LkNyZWF0ZUdvYWxDb21tYW5kQhEYAZJBDDIKZGVwcmVjYXRlZFIHY29tbWFuZBIqCg5lbnZpcm9ubWVudF9pZBgDIAEoCUID4EECUg1lbnZpcm9ubWVudElkEhMKAmlkGAQgASgJQgPgQQJSAmlkEhcKBG5hbWUYBSABKAlCA+BBAlIEbmFtZRIgCgtkZXNjcmlwdGlvbhgGIAEoCVILZGVzY3JpcHRpb24SUgoPY29ubmVjdGlvbl90eXBlGAcgASgOMikuYnVja2V0ZWVyLmV4cGVyaW1lbnQuR29hbC5Db25uZWN0aW9uVHlwZVIOY29ubmVjdGlvblR5cGVKBAgCEAMiRAoSQ3JlYXRlR29hbFJlc3BvbnNlEi4KBGdvYWwYASABKAsyGi5idWNrZXRlZXIuZXhwZXJpbWVudC5Hb2FsUgRnb2FsIpUBChJBcmNoaXZlR29hbFJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkIKB2NvbW1hbmQYAiABKAsyKC5idWNrZXRlZXIuZXhwZXJpbWVudC5BcmNoaXZlR29hbENvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFQoTQXJjaGl2ZUdvYWxSZXNwb25zZSKwAQoRRGVsZXRlR29hbFJlcXVlc3QSEwoCaWQYASABKAlCA+BBAlICaWQSVAoHY29tbWFuZBgCIAEoCzInLmJ1Y2tldGVlci5leHBlcmltZW50LkRlbGV0ZUdvYWxDb21tYW5kQhEYAZJBDDIKZGVwcmVjYXRlZFIHY29tbWFuZBIqCg5lbnZpcm9ubWVudF9pZBgEIAEoCUID4EECUg1lbnZpcm9ubWVudElkSgQIAxAEIhQKEkRlbGV0ZUdvYWxSZXNwb25zZSKWBAoRVXBkYXRlR29hbFJlcXVlc3QSEwoCaWQYASABKAlCA+BBAlICaWQSYQoOcmVuYW1lX2NvbW1hbmQYAiABKAsyJy5idWNrZXRlZXIuZXhwZXJpbWVudC5SZW5hbWVHb2FsQ29tbWFuZEIRGAGSQQwyCmRlcHJlY2F0ZWRSDXJlbmFtZUNvbW1hbmQSgwEKGmNoYW5nZV9kZXNjcmlwdGlvbl9jb21tYW5kGAMgASgLMjIuYnVja2V0ZWVyLmV4cGVyaW1lbnQuQ2hhbmdlRGVzY3JpcHRpb25Hb2FsQ29tbWFuZEIRGAGSQQwyCmRlcHJlY2F0ZWRSGGNoYW5nZURlc2NyaXB0aW9uQ29tbWFuZBIqCg5lbnZpcm9ubWVudF9pZBgFIAEoCUID4EECUg1lbnZpcm9ubWVudElkEjAKBG5hbWUYBiABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWVSBG5hbWUSPgoLZGVzY3JpcHRpb24YByABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWVSC2Rlc2NyaXB0aW9uEl8KCGFyY2hpdmVkGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZUInkkEkMiJpZiB0cnVlLCB0aGUgZ29hbCB3aWxsIGJlIGFyY2hpdmVkUghhcmNoaXZlZEoECAQQBSJEChJVcGRhdGVHb2FsUmVzcG9uc2USLgoEZ29hbBgBIAEoCzIaLmJ1Y2tldGVlci5leHBlcmltZW50LkdvYWxSBGdvYWwiUwoUR2V0RXhwZXJpbWVudFJlcXVlc3QSDgoCaWQYASABKAlSAmlkEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIlkKFUdldEV4cGVyaW1lbnRSZXNwb25zZRJACgpleHBlcmltZW50GAEgASgLMiAuYnVja2V0ZWVyLmV4cGVyaW1lbnQuRXhwZXJpbWVudFIKZXhwZXJpbWVudCKfBgoWTGlzdEV4cGVyaW1lbnRzUmVxdWVzdBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSRAoPZmVhdHVyZV92ZXJzaW9uGAIgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVSDmZlYXR1cmVWZXJzaW9uEhIKBGZyb20YAyABKANSBGZyb20SDgoCdG8YBCABKANSAnRvEhsKCXBhZ2Vfc2l6ZRgFIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAYgASgJUgZjdXJzb3ISMwoGc3RhdHVzGAggASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVSBnN0YXR1cxIeCgptYWludGFpbmVyGAkgASgJUgptYWludGFpbmVyEk8KCG9yZGVyX2J5GAogASgOMjQuYnVja2V0ZWVyLmV4cGVyaW1lbnQuTGlzdEV4cGVyaW1lbnRzUmVxdWVzdC5PcmRlckJ5UgdvcmRlckJ5EmQKD29yZGVyX2RpcmVjdGlvbhgLIAEoDjI7LmJ1Y2tldGVlci5leHBlcmltZW50Lkxpc3RFeHBlcmltZW50c1JlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAwgASgJUg1zZWFyY2hLZXl3b3JkEjYKCGFyY2hpdmVkGA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIYXJjaGl2ZWQSQwoIc3RhdHVzZXMYDiADKA4yJy5idWNrZXRlZXIuZXhwZXJpbWVudC5FeHBlcmltZW50LlN0YXR1c1IIc3RhdHVzZXMSKgoOZW52aXJvbm1lbnRfaWQYDyABKAlCA+BBAlINZW52aXJvbm1lbnRJZCJACgdPcmRlckJ5EgsKB0RFRkFVTFQQABIICgROQU1FEAESDgoKQ1JFQVRFRF9BVBACEg4KClVQREFURURfQVQQAyIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAFKBAgHEAgigwMKF0xpc3RFeHBlcmltZW50c1Jlc3BvbnNlEkIKC2V4cGVyaW1lbnRzGAEgAygLMiAuYnVja2V0ZWVyLmV4cGVyaW1lbnQuRXhwZXJpbWVudFILZXhwZXJpbWVudHMSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISHwoLdG90YWxfY291bnQYAyABKANSCnRvdGFsQ291bnQSTwoHc3VtbWFyeRgEIAEoCzI1LmJ1Y2tldGVlci5leHBlcmltZW50Lkxpc3RFeHBlcmltZW50c1Jlc3BvbnNlLlN1bW1hcnlSB3N1bW1hcnkamQEKB1N1bW1hcnkSLgoTdG90YWxfd2FpdGluZ19jb3VudBgBIAEoA1IRdG90YWxXYWl0aW5nQ291bnQSLgoTdG90YWxfcnVubmluZ19jb3VudBgCIAEoA1IRdG90YWxSdW5uaW5nQ291bnQSLgoTdG90YWxfc3RvcHBlZF9jb3VudBgDIAEoA1IRdG90YWxTdG9wcGVkQ291bnQilQMKF0NyZWF0ZUV4cGVyaW1lbnRSZXF1ZXN0EloKB2NvbW1hbmQYASABKAsyLS5idWNrZXRlZXIuZXhwZXJpbWVudC5DcmVhdGVFeHBlcmltZW50Q29tbWFuZEIRGAGSQQwyCmRlcHJlY2F0ZWRSB2NvbW1hbmQSKgoOZW52aXJvbm1lbnRfaWQYAyABKAlCA+BBAlINZW52aXJvbm1lbnRJZBIiCgpmZWF0dXJlX2lkGAQgASgJQgPgQQJSCWZlYXR1cmVJZBIeCghzdGFydF9hdBgFIAEoA0ID4EECUgdzdGFydEF0EhwKB3N0b3BfYXQYBiABKANCA+BBAlIGc3RvcEF0Eh4KCGdvYWxfaWRzGAcgAygJQgPgQQJSB2dvYWxJZHMSFwoEbmFtZRgIIAEoCUID4EECUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAkgASgJUgtkZXNjcmlwdGlvbhIvChFiYXNlX3ZhcmlhdGlvbl9pZBgKIAEoCUID4EECUg9iYXNlVmFyaWF0aW9uSWRKBAgCEAMiXAoYQ3JlYXRlRXhwZXJpbWVudFJlc3BvbnNlEkAKCmV4cGVyaW1lbnQYASABKAsyIC5idWNrZXRlZXIuZXhwZXJpbWVudC5FeHBlcmltZW50UgpleHBlcmltZW50IrsDChdVcGRhdGVFeHBlcmltZW50UmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSfAogY2hhbmdlX2V4cGVyaW1lbnRfcGVyaW9kX2NvbW1hbmQYBSABKAsyMy5idWNrZXRlZXIuZXhwZXJpbWVudC5DaGFuZ2VFeHBlcmltZW50UGVyaW9kQ29tbWFuZFIdY2hhbmdlRXhwZXJpbWVudFBlcmlvZENvbW1hbmQSYQoTY2hhbmdlX25hbWVfY29tbWFuZBgGIAEoCzIxLmJ1Y2tldGVlci5leHBlcmltZW50LkNoYW5nZUV4cGVyaW1lbnROYW1lQ29tbWFuZFIRY2hhbmdlTmFtZUNvbW1hbmQSdgoaY2hhbmdlX2Rlc2NyaXB0aW9uX2NvbW1hbmQYByABKAsyOC5idWNrZXRlZXIuZXhwZXJpbWVudC5DaGFuZ2VFeHBlcmltZW50RGVzY3JpcHRpb25Db21tYW5kUhhjaGFuZ2VEZXNjcmlwdGlvbkNvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYCCABKAlSDWVudmlyb25tZW50SWRKBAgCEANKBAgDEARKBAgEEAUiGgoYVXBkYXRlRXhwZXJpbWVudFJlc3BvbnNlIp0BChZTdGFydEV4cGVyaW1lbnRSZXF1ZXN0Eg4KAmlkGAIgASgJUgJpZBJGCgdjb21tYW5kGAMgASgLMiwuYnVja2V0ZWVyLmV4cGVyaW1lbnQuU3RhcnRFeHBlcmltZW50Q29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAEQAiIZChdTdGFydEV4cGVyaW1lbnRSZXNwb25zZSKfAQoXRmluaXNoRXhwZXJpbWVudFJlcXVlc3QSDgoCaWQYAiABKAlSAmlkEkcKB2NvbW1hbmQYAyABKAsyLS5idWNrZXRlZXIuZXhwZXJpbWVudC5GaW5pc2hFeHBlcmltZW50Q29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAEQAiIaChhGaW5pc2hFeHBlcmltZW50UmVzcG9uc2UimwEKFVN0b3BFeHBlcmltZW50UmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSRQoHY29tbWFuZBgCIAEoCzIrLmJ1Y2tldGVlci5leHBlcmltZW50LlN0b3BFeHBlcmltZW50Q29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIYChZTdG9wRXhwZXJpbWVudFJlc3BvbnNlIqEBChhBcmNoaXZlRXhwZXJpbWVudFJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkgKB2NvbW1hbmQYAiABKAsyLi5idWNrZXRlZXIuZXhwZXJpbWVudC5BcmNoaXZlRXhwZXJpbWVudENvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiGwoZQXJjaGl2ZUV4cGVyaW1lbnRSZXNwb25zZSKfAQoXRGVsZXRlRXhwZXJpbWVudFJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkcKB2NvbW1hbmQYAiABKAsyLS5idWNrZXRlZXIuZXhwZXJpbWVudC5EZWxldGVFeHBlcmltZW50Q29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIaChhEZWxldGVFeHBlcmltZW50UmVzcG9uc2UyvSgKEUV4cGVyaW1lbnRTZXJ2aWNlEoIECgdHZXRHb2FsEiQuYnVja2V0ZWVyLmV4cGVyaW1lbnQuR2V0R29hbFJlcXVlc3QaJS5idWNrZXRlZXIuZXhwZXJpbWVudC5HZXRHb2FsUmVzcG9uc2UiqQOSQZUDCgRnb2FsEgNHZXQaC0dldCBhIGdvYWwuKg93ZWIudjEuZ29hbC5nZXRKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIKEggvdjEvZ29hbBKMBAoJTGlzdEdvYWxzEiYuYnVja2V0ZWVyLmV4cGVyaW1lbnQuTGlzdEdvYWxzUmVxdWVzdBonLmJ1Y2tldGVlci5leHBlcmltZW50Lkxpc3RHb2Fsc1Jlc3BvbnNlIq0DkkGYAwoEZ29hbBIETGlzdBoLTGlzdCBnb2Fscy4qEXdlYi52MS5nb2Fscy5saXN0SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCCxIJL3YxL2dvYWxzEpcECgpDcmVhdGVHb2FsEicuYnVja2V0ZWVyLmV4cGVyaW1lbnQuQ3JlYXRlR29hbFJlcXVlc3QaKC5idWNrZXRlZXIuZXhwZXJpbWVudC5DcmVhdGVHb2FsUmVzcG9uc2UitQOSQZ4DCgRnb2FsEgZDcmVhdGUaDkNyZWF0ZSBhIGdvYWwuKhJ3ZWIudjEuZ29hbC5jcmVhdGVKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwINIggvdjEvZ29hbDoBKhKXBAoKVXBkYXRlR29hbBInLmJ1Y2tldGVlci5leHBlcmltZW50LlVwZGF0ZUdvYWxSZXF1ZXN0GiguYnVja2V0ZWVyLmV4cGVyaW1lbnQuVXBkYXRlR29hbFJlc3BvbnNlIrUDkkGeAwoEZ29hbBIGVXBkYXRlGg5VcGRhdGUgYSBnb2FsLioSd2ViLnYxLmdvYWwudXBkYXRlSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCDTIIL3YxL2dvYWw6ASoSZAoLQXJjaGl2ZUdvYWwSKC5idWNrZXRlZXIuZXhwZXJpbWVudC5BcmNoaXZlR29hbFJlcXVlc3QaKS5idWNrZXRlZXIuZXhwZXJpbWVudC5BcmNoaXZlR29hbFJlc3BvbnNlIgASlAQKCkRlbGV0ZUdvYWwSJy5idWNrZXRlZXIuZXhwZXJpbWVudC5EZWxldGVHb2FsUmVxdWVzdBooLmJ1Y2tldGVlci5leHBlcmltZW50LkRlbGV0ZUdvYWxSZXNwb25zZSKyA5JBngMKBGdvYWwSBkRlbGV0ZRoORGVsZXRlIGEgZ29hbC4qEndlYi52MS5nb2FsLmRlbGV0ZUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAgoqCC92MS9nb2FsEq0ECg1HZXRFeHBlcmltZW50EiouYnVja2V0ZWVyLmV4cGVyaW1lbnQuR2V0RXhwZXJpbWVudFJlcXVlc3QaKy5idWNrZXRlZXIuZXhwZXJpbWVudC5HZXRFeHBlcmltZW50UmVzcG9uc2UiwgOSQagDCgpleHBlcmltZW50EgNHZXQaEkdldCBhbiBleHBlcmltZW50LioVd2ViLnYxLmV4cGVyaW1lbnQuZ2V0SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCEBIOL3YxL2V4cGVyaW1lbnQStQQKD0xpc3RFeHBlcmltZW50cxIsLmJ1Y2tldGVlci5leHBlcmltZW50Lkxpc3RFeHBlcmltZW50c1JlcXVlc3QaLS5idWNrZXRlZXIuZXhwZXJpbWVudC5MaXN0RXhwZXJpbWVudHNSZXNwb25zZSLEA5JBqQMKCmV4cGVyaW1lbnQSBExpc3QaEUxpc3QgZXhwZXJpbWVudHMuKhZ3ZWIudjEuZXhwZXJpbWVudC5saXN0SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCERIPL3YxL2V4cGVyaW1lbnRzEsIEChBDcmVhdGVFeHBlcmltZW50Ei0uYnVja2V0ZWVyLmV4cGVyaW1lbnQuQ3JlYXRlRXhwZXJpbWVudFJlcXVlc3QaLi5idWNrZXRlZXIuZXhwZXJpbWVudC5DcmVhdGVFeHBlcmltZW50UmVzcG9uc2UizgOSQbEDCgpleHBlcmltZW50EgZDcmVhdGUaFUNyZWF0ZSBhbiBleHBlcmltZW50LioYd2ViLnYxLmV4cGVyaW1lbnQuY3JlYXRlSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCEyIOL3YxL2V4cGVyaW1lbnQ6ASoScwoQVXBkYXRlRXhwZXJpbWVudBItLmJ1Y2tldGVlci5leHBlcmltZW50LlVwZGF0ZUV4cGVyaW1lbnRSZXF1ZXN0Gi4uYnVja2V0ZWVyLmV4cGVyaW1lbnQuVXBkYXRlRXhwZXJpbWVudFJlc3BvbnNlIgAScAoPU3RhcnRFeHBlcmltZW50EiwuYnVja2V0ZWVyLmV4cGVyaW1lbnQuU3RhcnRFeHBlcmltZW50UmVxdWVzdBotLmJ1Y2tldGVlci5leHBlcmltZW50LlN0YXJ0RXhwZXJpbWVudFJlc3BvbnNlIgAScwoQRmluaXNoRXhwZXJpbWVudBItLmJ1Y2tldGVlci5leHBlcmltZW50LkZpbmlzaEV4cGVyaW1lbnRSZXF1ZXN0Gi4uYnVja2V0ZWVyLmV4cGVyaW1lbnQuRmluaXNoRXhwZXJpbWVudFJlc3BvbnNlIgASbQoOU3RvcEV4cGVyaW1lbnQSKy5idWNrZXRlZXIuZXhwZXJpbWVudC5TdG9wRXhwZXJpbWVudFJlcXVlc3QaLC5idWNrZXRlZXIuZXhwZXJpbWVudC5TdG9wRXhwZXJpbWVudFJlc3BvbnNlIgASdgoRQXJjaGl2ZUV4cGVyaW1lbnQSLi5idWNrZXRlZXIuZXhwZXJpbWVudC5BcmNoaXZlRXhwZXJpbWVudFJlcXVlc3QaLy5idWNrZXRlZXIuZXhwZXJpbWVudC5BcmNoaXZlRXhwZXJpbWVudFJlc3BvbnNlIgAScwoQRGVsZXRlRXhwZXJpbWVudBItLmJ1Y2tldGVlci5leHBlcmltZW50LkRlbGV0ZUV4cGVyaW1lbnRSZXF1ZXN0Gi4uYnVja2V0ZWVyLmV4cGVyaW1lbnQuRGVsZXRlRXhwZXJpbWVudFJlc3BvbnNlIgBCNFoyZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2V4cGVyaW1lbnRiBnByb3RvMw== + experimentDescriptor: CtYBCh1wcm90by9mZWF0dXJlL3ZhcmlhdGlvbi5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUiZwoJVmFyaWF0aW9uEg4KAmlkGAEgASgJUgJpZBIUCgV2YWx1ZRgCIAEoCVIFdmFsdWUSEgoEbmFtZRgDIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgEIAEoCVILZGVzY3JpcHRpb25CMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwq3CAohcHJvdG8vZXhwZXJpbWVudC9leHBlcmltZW50LnByb3RvEhRidWNrZXRlZXIuZXhwZXJpbWVudBodcHJvdG8vZmVhdHVyZS92YXJpYXRpb24ucHJvdG8iywYKCkV4cGVyaW1lbnQSDgoCaWQYASABKAlSAmlkEhsKB2dvYWxfaWQYAiABKAlCAhgBUgZnb2FsSWQSHQoKZmVhdHVyZV9pZBgDIAEoCVIJZmVhdHVyZUlkEicKD2ZlYXR1cmVfdmVyc2lvbhgEIAEoBVIOZmVhdHVyZVZlcnNpb24SPAoKdmFyaWF0aW9ucxgFIAMoCzIcLmJ1Y2tldGVlci5mZWF0dXJlLlZhcmlhdGlvblIKdmFyaWF0aW9ucxIZCghzdGFydF9hdBgGIAEoA1IHc3RhcnRBdBIXCgdzdG9wX2F0GAcgASgDUgZzdG9wQXQSHAoHc3RvcHBlZBgIIAEoCEICGAFSB3N0b3BwZWQSIQoKc3RvcHBlZF9hdBgJIAEoA0ICMAFSCXN0b3BwZWRBdBIdCgpjcmVhdGVkX2F0GAogASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgLIAEoA1IJdXBkYXRlZEF0EhgKB2RlbGV0ZWQYDCABKAhSB2RlbGV0ZWQSGQoIZ29hbF9pZHMYDSADKAlSB2dvYWxJZHMSEgoEbmFtZRgOIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgPIAEoCVILZGVzY3JpcHRpb24SKgoRYmFzZV92YXJpYXRpb25faWQYECABKAlSD2Jhc2VWYXJpYXRpb25JZBI/CgZzdGF0dXMYEiABKA4yJy5idWNrZXRlZXIuZXhwZXJpbWVudC5FeHBlcmltZW50LlN0YXR1c1IGc3RhdHVzEh4KCm1haW50YWluZXIYEyABKAlSCm1haW50YWluZXISGgoIYXJjaGl2ZWQYFCABKAhSCGFyY2hpdmVkEkQKBWdvYWxzGBUgAygLMi4uYnVja2V0ZWVyLmV4cGVyaW1lbnQuRXhwZXJpbWVudC5Hb2FsUmVmZXJlbmNlUgVnb2FscxozCg1Hb2FsUmVmZXJlbmNlEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lIkIKBlN0YXR1cxILCgdXQUlUSU5HEAASCwoHUlVOTklORxABEgsKB1NUT1BQRUQQAhIRCg1GT1JDRV9TVE9QUEVEEANKBAgREBIiUQoLRXhwZXJpbWVudHMSQgoLZXhwZXJpbWVudHMYASADKAsyIC5idWNrZXRlZXIuZXhwZXJpbWVudC5FeHBlcmltZW50UgtleHBlcmltZW50c0I0WjJnaXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZXhwZXJpbWVudGIGcHJvdG8zCuQBChlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiNgoDQW55EhkKCHR5cGVfdXJsGAEgASgJUgd0eXBlVXJsEhQKBXZhbHVlGAIgASgMUgV2YWx1ZUJ2ChNjb20uZ29vZ2xlLnByb3RvYnVmQghBbnlQcm90b1ABWixnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi9hbnlwYqICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IGcHJvdG8zCpoLChpwcm90by9hdXRvb3BzL2NsYXVzZS5wcm90bxIRYnVja2V0ZWVyLmF1dG9vcHMaGWdvb2dsZS9wcm90b2J1Zi9hbnkucHJvdG8ihgEKBkNsYXVzZRIOCgJpZBgBIAEoCVICaWQSLAoGY2xhdXNlGAIgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIGY2xhdXNlEj4KC2FjdGlvbl90eXBlGAMgASgOMh0uYnVja2V0ZWVyLmF1dG9vcHMuQWN0aW9uVHlwZVIKYWN0aW9uVHlwZSLfAgoST3BzRXZlbnRSYXRlQ2xhdXNlEiEKDHZhcmlhdGlvbl9pZBgCIAEoCVILdmFyaWF0aW9uSWQSFwoHZ29hbF9pZBgDIAEoCVIGZ29hbElkEhsKCW1pbl9jb3VudBgEIAEoA1IIbWluQ291bnQSKQoQdGhyZWFkc2hvbGRfcmF0ZRgFIAEoAVIPdGhyZWFkc2hvbGRSYXRlEkoKCG9wZXJhdG9yGAYgASgOMi4uYnVja2V0ZWVyLmF1dG9vcHMuT3BzRXZlbnRSYXRlQ2xhdXNlLk9wZXJhdG9yUghvcGVyYXRvchI+CgthY3Rpb25fdHlwZRgHIAEoDjIdLmJ1Y2tldGVlci5hdXRvb3BzLkFjdGlvblR5cGVSCmFjdGlvblR5cGUiMwoIT3BlcmF0b3ISFAoQR1JFQVRFUl9PUl9FUVVBTBAAEhEKDUxFU1NfT1JfRVFVQUwQAUoECAEQAiJkCg5EYXRldGltZUNsYXVzZRISCgR0aW1lGAEgASgDUgR0aW1lEj4KC2FjdGlvbl90eXBlGAIgASgOMh0uYnVja2V0ZWVyLmF1dG9vcHMuQWN0aW9uVHlwZVIKYWN0aW9uVHlwZSKXAQoaUHJvZ3Jlc3NpdmVSb2xsb3V0U2NoZWR1bGUSHwoLc2NoZWR1bGVfaWQYASABKAlSCnNjaGVkdWxlSWQSHQoKZXhlY3V0ZV9hdBgCIAEoA1IJZXhlY3V0ZUF0EhYKBndlaWdodBgDIAEoBVIGd2VpZ2h0EiEKDHRyaWdnZXJlZF9hdBgEIAEoA1ILdHJpZ2dlcmVkQXQimAEKJlByb2dyZXNzaXZlUm9sbG91dE1hbnVhbFNjaGVkdWxlQ2xhdXNlEksKCXNjaGVkdWxlcxgBIAMoCzItLmJ1Y2tldGVlci5hdXRvb3BzLlByb2dyZXNzaXZlUm9sbG91dFNjaGVkdWxlUglzY2hlZHVsZXMSIQoMdmFyaWF0aW9uX2lkGAIgASgJUgt2YXJpYXRpb25JZCLYAgooUHJvZ3Jlc3NpdmVSb2xsb3V0VGVtcGxhdGVTY2hlZHVsZUNsYXVzZRJLCglzY2hlZHVsZXMYASADKAsyLS5idWNrZXRlZXIuYXV0b29wcy5Qcm9ncmVzc2l2ZVJvbGxvdXRTY2hlZHVsZVIJc2NoZWR1bGVzEmAKCGludGVydmFsGAIgASgOMkQuYnVja2V0ZWVyLmF1dG9vcHMuUHJvZ3Jlc3NpdmVSb2xsb3V0VGVtcGxhdGVTY2hlZHVsZUNsYXVzZS5JbnRlcnZhbFIIaW50ZXJ2YWwSHgoKaW5jcmVtZW50cxgDIAEoA1IKaW5jcmVtZW50cxIhCgx2YXJpYXRpb25faWQYBCABKAlSC3ZhcmlhdGlvbklkIjoKCEludGVydmFsEgsKB1VOS05PV04QABIKCgZIT1VSTFkQARIJCgVEQUlMWRACEgoKBldFRUtMWRADKjIKCkFjdGlvblR5cGUSCwoHVU5LTk9XThAAEgoKBkVOQUJMRRABEgsKB0RJU0FCTEUQAkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vYXV0b29wc2IGcHJvdG8zCr0FCiFwcm90by9hdXRvb3BzL2F1dG9fb3BzX3J1bGUucHJvdG8SEWJ1Y2tldGVlci5hdXRvb3BzGhpwcm90by9hdXRvb3BzL2NsYXVzZS5wcm90byLQAgoLQXV0b09wc1J1bGUSDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBI1CghvcHNfdHlwZRgDIAEoDjIaLmJ1Y2tldGVlci5hdXRvb3BzLk9wc1R5cGVSB29wc1R5cGUSMwoHY2xhdXNlcxgEIAMoCzIZLmJ1Y2tldGVlci5hdXRvb3BzLkNsYXVzZVIHY2xhdXNlcxIdCgpjcmVhdGVkX2F0GAcgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgIIAEoA1IJdXBkYXRlZEF0EhgKB2RlbGV0ZWQYCSABKAhSB2RlbGV0ZWQSSAoPYXV0b19vcHNfc3RhdHVzGAogASgOMiAuYnVja2V0ZWVyLmF1dG9vcHMuQXV0b09wc1N0YXR1c1INYXV0b09wc1N0YXR1c0oECAYQByJUCgxBdXRvT3BzUnVsZXMSRAoOYXV0b19vcHNfcnVsZXMYASADKAsyHi5idWNrZXRlZXIuYXV0b29wcy5BdXRvT3BzUnVsZVIMYXV0b09wc1J1bGVzKj8KB09wc1R5cGUSEAoMVFlQRV9VTktOT1dOEAASDAoIU0NIRURVTEUQAhIOCgpFVkVOVF9SQVRFEAMiBAgBEAEqRAoNQXV0b09wc1N0YXR1cxILCgdXQUlUSU5HEAASCwoHUlVOTklORxABEgwKCEZJTklTSEVEEAISCwoHU1RPUFBFRBADQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9hdXRvb3BzYgZwcm90bzMKvwUKG3Byb3RvL2V4cGVyaW1lbnQvZ29hbC5wcm90bxIUYnVja2V0ZWVyLmV4cGVyaW1lbnQaIXByb3RvL2V4cGVyaW1lbnQvZXhwZXJpbWVudC5wcm90bxohcHJvdG8vYXV0b29wcy9hdXRvX29wc19ydWxlLnByb3RvIoUECgRHb2FsEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhIYCgdkZWxldGVkGAQgASgIUgdkZWxldGVkEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSJwoQaXNfaW5fdXNlX3N0YXR1cxgHIAEoCFINaXNJblVzZVN0YXR1cxIaCghhcmNoaXZlZBgIIAEoCFIIYXJjaGl2ZWQSUgoPY29ubmVjdGlvbl90eXBlGAkgASgOMikuYnVja2V0ZWVyLmV4cGVyaW1lbnQuR29hbC5Db25uZWN0aW9uVHlwZVIOY29ubmVjdGlvblR5cGUSQgoLZXhwZXJpbWVudHMYCiADKAsyIC5idWNrZXRlZXIuZXhwZXJpbWVudC5FeHBlcmltZW50UgtleHBlcmltZW50cxJECg5hdXRvX29wc19ydWxlcxgLIAMoCzIeLmJ1Y2tldGVlci5hdXRvb3BzLkF1dG9PcHNSdWxlUgxhdXRvT3BzUnVsZXMiPAoOQ29ubmVjdGlvblR5cGUSCwoHVU5LTk9XThAAEg4KCkVYUEVSSU1FTlQQARINCglPUEVSQVRJT04QAkI0WjJnaXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZXhwZXJpbWVudGIGcHJvdG8zCp4ICh5wcm90by9leHBlcmltZW50L2NvbW1hbmQucHJvdG8SFGJ1Y2tldGVlci5leHBlcmltZW50Ghtwcm90by9leHBlcmltZW50L2dvYWwucHJvdG8irQEKEUNyZWF0ZUdvYWxDb21tYW5kEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhJSCg9jb25uZWN0aW9uX3R5cGUYBCABKA4yKS5idWNrZXRlZXIuZXhwZXJpbWVudC5Hb2FsLkNvbm5lY3Rpb25UeXBlUg5jb25uZWN0aW9uVHlwZSInChFSZW5hbWVHb2FsQ29tbWFuZBISCgRuYW1lGAEgASgJUgRuYW1lIkAKHENoYW5nZURlc2NyaXB0aW9uR29hbENvbW1hbmQSIAoLZGVzY3JpcHRpb24YASABKAlSC2Rlc2NyaXB0aW9uIhQKEkFyY2hpdmVHb2FsQ29tbWFuZCITChFEZWxldGVHb2FsQ29tbWFuZCLvAQoXQ3JlYXRlRXhwZXJpbWVudENvbW1hbmQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhkKCHN0YXJ0X2F0GAMgASgDUgdzdGFydEF0EhcKB3N0b3BfYXQYBCABKANSBnN0b3BBdBIZCghnb2FsX2lkcxgFIAMoCVIHZ29hbElkcxISCgRuYW1lGAYgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAcgASgJUgtkZXNjcmlwdGlvbhIqChFiYXNlX3ZhcmlhdGlvbl9pZBgIIAEoCVIPYmFzZVZhcmlhdGlvbklkSgQIAhADIlMKHUNoYW5nZUV4cGVyaW1lbnRQZXJpb2RDb21tYW5kEhkKCHN0YXJ0X2F0GAEgASgDUgdzdGFydEF0EhcKB3N0b3BfYXQYAiABKANSBnN0b3BBdCIxChtDaGFuZ2VFeHBlcmltZW50TmFtZUNvbW1hbmQSEgoEbmFtZRgBIAEoCVIEbmFtZSJGCiJDaGFuZ2VFeHBlcmltZW50RGVzY3JpcHRpb25Db21tYW5kEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbiIXChVTdG9wRXhwZXJpbWVudENvbW1hbmQiGgoYQXJjaGl2ZUV4cGVyaW1lbnRDb21tYW5kIhkKF0RlbGV0ZUV4cGVyaW1lbnRDb21tYW5kIhgKFlN0YXJ0RXhwZXJpbWVudENvbW1hbmQiGQoXRmluaXNoRXhwZXJpbWVudENvbW1hbmRCNFoyZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2V4cGVyaW1lbnRiBnByb3RvMwqHBQoVZ29vZ2xlL2FwaS9odHRwLnByb3RvEgpnb29nbGUuYXBpInkKBEh0dHASKgoFcnVsZXMYASADKAsyFC5nb29nbGUuYXBpLkh0dHBSdWxlUgVydWxlcxJFCh9mdWxseV9kZWNvZGVfcmVzZXJ2ZWRfZXhwYW5zaW9uGAIgASgIUhxmdWxseURlY29kZVJlc2VydmVkRXhwYW5zaW9uIrUCCghIdHRwUnVsZRIaCghzZWxlY3RvchgBIAEoCVIIc2VsZWN0b3ISEgoDZ2V0GAIgASgJSABSA2dldBISCgNwdXQYAyABKAlIAFIDcHV0EhQKBHBvc3QYBCABKAlIAFIEcG9zdBIYCgZkZWxldGUYBSABKAlIAFIGZGVsZXRlEhYKBXBhdGNoGAYgASgJSABSBXBhdGNoEjcKBmN1c3RvbRgIIAEoCzIdLmdvb2dsZS5hcGkuQ3VzdG9tSHR0cFBhdHRlcm5IAFIGY3VzdG9tEhIKBGJvZHkYByABKAlSBGJvZHkSRQoTYWRkaXRpb25hbF9iaW5kaW5ncxgLIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSEmFkZGl0aW9uYWxCaW5kaW5nc0IJCgdwYXR0ZXJuIjsKEUN1c3RvbUh0dHBQYXR0ZXJuEhIKBGtpbmQYASABKAlSBGtpbmQSEgoEcGF0aBgCIAEoCVIEcGF0aEJqCg5jb20uZ29vZ2xlLmFwaUIJSHR0cFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25z+AEBogIER0FQSWIGcHJvdG8zCuFGCiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIk0KEUZpbGVEZXNjcmlwdG9yU2V0EjgKBGZpbGUYASADKAsyJC5nb29nbGUucHJvdG9idWYuRmlsZURlc2NyaXB0b3JQcm90b1IEZmlsZSL+BAoTRmlsZURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEhgKB3BhY2thZ2UYAiABKAlSB3BhY2thZ2USHgoKZGVwZW5kZW5jeRgDIAMoCVIKZGVwZW5kZW5jeRIrChFwdWJsaWNfZGVwZW5kZW5jeRgKIAMoBVIQcHVibGljRGVwZW5kZW5jeRInCg93ZWFrX2RlcGVuZGVuY3kYCyADKAVSDndlYWtEZXBlbmRlbmN5EkMKDG1lc3NhZ2VfdHlwZRgEIAMoCzIgLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG9SC21lc3NhZ2VUeXBlEkEKCWVudW1fdHlwZRgFIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvUghlbnVtVHlwZRJBCgdzZXJ2aWNlGAYgAygLMicuZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VEZXNjcmlwdG9yUHJvdG9SB3NlcnZpY2USQwoJZXh0ZW5zaW9uGAcgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvUglleHRlbnNpb24SNgoHb3B0aW9ucxgIIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9uc1IHb3B0aW9ucxJJChBzb3VyY2VfY29kZV9pbmZvGAkgASgLMh8uZ29vZ2xlLnByb3RvYnVmLlNvdXJjZUNvZGVJbmZvUg5zb3VyY2VDb2RlSW5mbxIWCgZzeW50YXgYDCABKAlSBnN5bnRheBIYCgdlZGl0aW9uGA0gASgJUgdlZGl0aW9uIrkGCg9EZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRI7CgVmaWVsZBgCIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90b1IFZmllbGQSQwoJZXh0ZW5zaW9uGAYgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvUglleHRlbnNpb24SQQoLbmVzdGVkX3R5cGUYAyADKAsyIC5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvUgpuZXN0ZWRUeXBlEkEKCWVudW1fdHlwZRgEIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvUghlbnVtVHlwZRJYCg9leHRlbnNpb25fcmFuZ2UYBSADKAsyLy5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvLkV4dGVuc2lvblJhbmdlUg5leHRlbnNpb25SYW5nZRJECgpvbmVvZl9kZWNsGAggAygLMiUuZ29vZ2xlLnByb3RvYnVmLk9uZW9mRGVzY3JpcHRvclByb3RvUglvbmVvZkRlY2wSOQoHb3B0aW9ucxgHIAEoCzIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9uc1IHb3B0aW9ucxJVCg5yZXNlcnZlZF9yYW5nZRgJIAMoCzIuLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG8uUmVzZXJ2ZWRSYW5nZVINcmVzZXJ2ZWRSYW5nZRIjCg1yZXNlcnZlZF9uYW1lGAogAygJUgxyZXNlcnZlZE5hbWUaegoORXh0ZW5zaW9uUmFuZ2USFAoFc3RhcnQYASABKAVSBXN0YXJ0EhAKA2VuZBgCIAEoBVIDZW5kEkAKB29wdGlvbnMYAyABKAsyJi5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2VPcHRpb25zUgdvcHRpb25zGjcKDVJlc2VydmVkUmFuZ2USFAoFc3RhcnQYASABKAVSBXN0YXJ0EhAKA2VuZBgCIAEoBVIDZW5kIq0EChVFeHRlbnNpb25SYW5nZU9wdGlvbnMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24SWQoLZGVjbGFyYXRpb24YAiADKAsyMi5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2VPcHRpb25zLkRlY2xhcmF0aW9uQgOIAQJSC2RlY2xhcmF0aW9uEmgKDHZlcmlmaWNhdGlvbhgDIAEoDjI4Lmdvb2dsZS5wcm90b2J1Zi5FeHRlbnNpb25SYW5nZU9wdGlvbnMuVmVyaWZpY2F0aW9uU3RhdGU6ClVOVkVSSUZJRURSDHZlcmlmaWNhdGlvbhqzAQoLRGVjbGFyYXRpb24SFgoGbnVtYmVyGAEgASgFUgZudW1iZXISGwoJZnVsbF9uYW1lGAIgASgJUghmdWxsTmFtZRISCgR0eXBlGAMgASgJUgR0eXBlEiMKC2lzX3JlcGVhdGVkGAQgASgIQgIYAVIKaXNSZXBlYXRlZBIaCghyZXNlcnZlZBgFIAEoCFIIcmVzZXJ2ZWQSGgoIcmVwZWF0ZWQYBiABKAhSCHJlcGVhdGVkIjQKEVZlcmlmaWNhdGlvblN0YXRlEg8KC0RFQ0xBUkFUSU9OEAASDgoKVU5WRVJJRklFRBABKgkI6AcQgICAgAIiwQYKFEZpZWxkRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSFgoGbnVtYmVyGAMgASgFUgZudW1iZXISQQoFbGFiZWwYBCABKA4yKy5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uTGFiZWxSBWxhYmVsEj4KBHR5cGUYBSABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZVIEdHlwZRIbCgl0eXBlX25hbWUYBiABKAlSCHR5cGVOYW1lEhoKCGV4dGVuZGVlGAIgASgJUghleHRlbmRlZRIjCg1kZWZhdWx0X3ZhbHVlGAcgASgJUgxkZWZhdWx0VmFsdWUSHwoLb25lb2ZfaW5kZXgYCSABKAVSCm9uZW9mSW5kZXgSGwoJanNvbl9uYW1lGAogASgJUghqc29uTmFtZRI3CgdvcHRpb25zGAggASgLMh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9uc1IHb3B0aW9ucxInCg9wcm90bzNfb3B0aW9uYWwYESABKAhSDnByb3RvM09wdGlvbmFsIrYCCgRUeXBlEg8KC1RZUEVfRE9VQkxFEAESDgoKVFlQRV9GTE9BVBACEg4KClRZUEVfSU5UNjQQAxIPCgtUWVBFX1VJTlQ2NBAEEg4KClRZUEVfSU5UMzIQBRIQCgxUWVBFX0ZJWEVENjQQBhIQCgxUWVBFX0ZJWEVEMzIQBxINCglUWVBFX0JPT0wQCBIPCgtUWVBFX1NUUklORxAJEg4KClRZUEVfR1JPVVAQChIQCgxUWVBFX01FU1NBR0UQCxIOCgpUWVBFX0JZVEVTEAwSDwoLVFlQRV9VSU5UMzIQDRINCglUWVBFX0VOVU0QDhIRCg1UWVBFX1NGSVhFRDMyEA8SEQoNVFlQRV9TRklYRUQ2NBAQEg8KC1RZUEVfU0lOVDMyEBESDwoLVFlQRV9TSU5UNjQQEiJDCgVMYWJlbBISCg5MQUJFTF9PUFRJT05BTBABEhIKDkxBQkVMX1JFUVVJUkVEEAISEgoOTEFCRUxfUkVQRUFURUQQAyJjChRPbmVvZkRlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEjcKB29wdGlvbnMYAiABKAsyHS5nb29nbGUucHJvdG9idWYuT25lb2ZPcHRpb25zUgdvcHRpb25zIuMCChNFbnVtRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSPwoFdmFsdWUYAiADKAsyKS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlRGVzY3JpcHRvclByb3RvUgV2YWx1ZRI2CgdvcHRpb25zGAMgASgLMhwuZ29vZ2xlLnByb3RvYnVmLkVudW1PcHRpb25zUgdvcHRpb25zEl0KDnJlc2VydmVkX3JhbmdlGAQgAygLMjYuZ29vZ2xlLnByb3RvYnVmLkVudW1EZXNjcmlwdG9yUHJvdG8uRW51bVJlc2VydmVkUmFuZ2VSDXJlc2VydmVkUmFuZ2USIwoNcmVzZXJ2ZWRfbmFtZRgFIAMoCVIMcmVzZXJ2ZWROYW1lGjsKEUVudW1SZXNlcnZlZFJhbmdlEhQKBXN0YXJ0GAEgASgFUgVzdGFydBIQCgNlbmQYAiABKAVSA2VuZCKDAQoYRW51bVZhbHVlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSFgoGbnVtYmVyGAIgASgFUgZudW1iZXISOwoHb3B0aW9ucxgDIAEoCzIhLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVPcHRpb25zUgdvcHRpb25zIqcBChZTZXJ2aWNlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSPgoGbWV0aG9kGAIgAygLMiYuZ29vZ2xlLnByb3RvYnVmLk1ldGhvZERlc2NyaXB0b3JQcm90b1IGbWV0aG9kEjkKB29wdGlvbnMYAyABKAsyHy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnNSB29wdGlvbnMiiQIKFU1ldGhvZERlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEh0KCmlucHV0X3R5cGUYAiABKAlSCWlucHV0VHlwZRIfCgtvdXRwdXRfdHlwZRgDIAEoCVIKb3V0cHV0VHlwZRI4CgdvcHRpb25zGAQgASgLMh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnNSB29wdGlvbnMSMAoQY2xpZW50X3N0cmVhbWluZxgFIAEoCDoFZmFsc2VSD2NsaWVudFN0cmVhbWluZxIwChBzZXJ2ZXJfc3RyZWFtaW5nGAYgASgIOgVmYWxzZVIPc2VydmVyU3RyZWFtaW5nIpEJCgtGaWxlT3B0aW9ucxIhCgxqYXZhX3BhY2thZ2UYASABKAlSC2phdmFQYWNrYWdlEjAKFGphdmFfb3V0ZXJfY2xhc3NuYW1lGAggASgJUhJqYXZhT3V0ZXJDbGFzc25hbWUSNQoTamF2YV9tdWx0aXBsZV9maWxlcxgKIAEoCDoFZmFsc2VSEWphdmFNdWx0aXBsZUZpbGVzEkQKHWphdmFfZ2VuZXJhdGVfZXF1YWxzX2FuZF9oYXNoGBQgASgIQgIYAVIZamF2YUdlbmVyYXRlRXF1YWxzQW5kSGFzaBI6ChZqYXZhX3N0cmluZ19jaGVja191dGY4GBsgASgIOgVmYWxzZVITamF2YVN0cmluZ0NoZWNrVXRmOBJTCgxvcHRpbWl6ZV9mb3IYCSABKA4yKS5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMuT3B0aW1pemVNb2RlOgVTUEVFRFILb3B0aW1pemVGb3ISHQoKZ29fcGFja2FnZRgLIAEoCVIJZ29QYWNrYWdlEjUKE2NjX2dlbmVyaWNfc2VydmljZXMYECABKAg6BWZhbHNlUhFjY0dlbmVyaWNTZXJ2aWNlcxI5ChVqYXZhX2dlbmVyaWNfc2VydmljZXMYESABKAg6BWZhbHNlUhNqYXZhR2VuZXJpY1NlcnZpY2VzEjUKE3B5X2dlbmVyaWNfc2VydmljZXMYEiABKAg6BWZhbHNlUhFweUdlbmVyaWNTZXJ2aWNlcxI3ChRwaHBfZ2VuZXJpY19zZXJ2aWNlcxgqIAEoCDoFZmFsc2VSEnBocEdlbmVyaWNTZXJ2aWNlcxIlCgpkZXByZWNhdGVkGBcgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBIuChBjY19lbmFibGVfYXJlbmFzGB8gASgIOgR0cnVlUg5jY0VuYWJsZUFyZW5hcxIqChFvYmpjX2NsYXNzX3ByZWZpeBgkIAEoCVIPb2JqY0NsYXNzUHJlZml4EikKEGNzaGFycF9uYW1lc3BhY2UYJSABKAlSD2NzaGFycE5hbWVzcGFjZRIhCgxzd2lmdF9wcmVmaXgYJyABKAlSC3N3aWZ0UHJlZml4EigKEHBocF9jbGFzc19wcmVmaXgYKCABKAlSDnBocENsYXNzUHJlZml4EiMKDXBocF9uYW1lc3BhY2UYKSABKAlSDHBocE5hbWVzcGFjZRI0ChZwaHBfbWV0YWRhdGFfbmFtZXNwYWNlGCwgASgJUhRwaHBNZXRhZGF0YU5hbWVzcGFjZRIhCgxydWJ5X3BhY2thZ2UYLSABKAlSC3J1YnlQYWNrYWdlElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uIjoKDE9wdGltaXplTW9kZRIJCgVTUEVFRBABEg0KCUNPREVfU0laRRACEhAKDExJVEVfUlVOVElNRRADKgkI6AcQgICAgAJKBAgmECciuwMKDk1lc3NhZ2VPcHRpb25zEjwKF21lc3NhZ2Vfc2V0X3dpcmVfZm9ybWF0GAEgASgIOgVmYWxzZVIUbWVzc2FnZVNldFdpcmVGb3JtYXQSTAofbm9fc3RhbmRhcmRfZGVzY3JpcHRvcl9hY2Nlc3NvchgCIAEoCDoFZmFsc2VSHG5vU3RhbmRhcmREZXNjcmlwdG9yQWNjZXNzb3ISJQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSGwoJbWFwX2VudHJ5GAcgASgIUghtYXBFbnRyeRJWCiZkZXByZWNhdGVkX2xlZ2FjeV9qc29uX2ZpZWxkX2NvbmZsaWN0cxgLIAEoCEICGAFSImRlcHJlY2F0ZWRMZWdhY3lKc29uRmllbGRDb25mbGljdHMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAkoECAQQBUoECAUQBkoECAYQB0oECAgQCUoECAkQCiKFCQoMRmllbGRPcHRpb25zEkEKBWN0eXBlGAEgASgOMiMuZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5DVHlwZToGU1RSSU5HUgVjdHlwZRIWCgZwYWNrZWQYAiABKAhSBnBhY2tlZBJHCgZqc3R5cGUYBiABKA4yJC5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLkpTVHlwZToJSlNfTk9STUFMUgZqc3R5cGUSGQoEbGF6eRgFIAEoCDoFZmFsc2VSBGxhenkSLgoPdW52ZXJpZmllZF9sYXp5GA8gASgIOgVmYWxzZVIOdW52ZXJpZmllZExhenkSJQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSGQoEd2VhaxgKIAEoCDoFZmFsc2VSBHdlYWsSKAoMZGVidWdfcmVkYWN0GBAgASgIOgVmYWxzZVILZGVidWdSZWRhY3QSSwoJcmV0ZW50aW9uGBEgASgOMi0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5PcHRpb25SZXRlbnRpb25SCXJldGVudGlvbhJKCgZ0YXJnZXQYEiABKA4yLi5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLk9wdGlvblRhcmdldFR5cGVCAhgBUgZ0YXJnZXQSSAoHdGFyZ2V0cxgTIAMoDjIuLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuT3B0aW9uVGFyZ2V0VHlwZVIHdGFyZ2V0cxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiIvCgVDVHlwZRIKCgZTVFJJTkcQABIICgRDT1JEEAESEAoMU1RSSU5HX1BJRUNFEAIiNQoGSlNUeXBlEg0KCUpTX05PUk1BTBAAEg0KCUpTX1NUUklORxABEg0KCUpTX05VTUJFUhACIlUKD09wdGlvblJldGVudGlvbhIVChFSRVRFTlRJT05fVU5LTk9XThAAEhUKEVJFVEVOVElPTl9SVU5USU1FEAESFAoQUkVURU5USU9OX1NPVVJDRRACIowCChBPcHRpb25UYXJnZXRUeXBlEhcKE1RBUkdFVF9UWVBFX1VOS05PV04QABIUChBUQVJHRVRfVFlQRV9GSUxFEAESHwobVEFSR0VUX1RZUEVfRVhURU5TSU9OX1JBTkdFEAISFwoTVEFSR0VUX1RZUEVfTUVTU0FHRRADEhUKEVRBUkdFVF9UWVBFX0ZJRUxEEAQSFQoRVEFSR0VUX1RZUEVfT05FT0YQBRIUChBUQVJHRVRfVFlQRV9FTlVNEAYSGgoWVEFSR0VUX1RZUEVfRU5VTV9FTlRSWRAHEhcKE1RBUkdFVF9UWVBFX1NFUlZJQ0UQCBIWChJUQVJHRVRfVFlQRV9NRVRIT0QQCSoJCOgHEICAgIACSgQIBBAFInMKDE9uZW9mT3B0aW9ucxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIpgCCgtFbnVtT3B0aW9ucxIfCgthbGxvd19hbGlhcxgCIAEoCFIKYWxsb3dBbGlhcxIlCgpkZXByZWNhdGVkGAMgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJWCiZkZXByZWNhdGVkX2xlZ2FjeV9qc29uX2ZpZWxkX2NvbmZsaWN0cxgGIAEoCEICGAFSImRlcHJlY2F0ZWRMZWdhY3lKc29uRmllbGRDb25mbGljdHMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAkoECAUQBiKeAQoQRW51bVZhbHVlT3B0aW9ucxIlCgpkZXByZWNhdGVkGAEgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIpwBCg5TZXJ2aWNlT3B0aW9ucxIlCgpkZXByZWNhdGVkGCEgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIuACCg1NZXRob2RPcHRpb25zEiUKCmRlcHJlY2F0ZWQYISABKAg6BWZhbHNlUgpkZXByZWNhdGVkEnEKEWlkZW1wb3RlbmN5X2xldmVsGCIgASgOMi8uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMuSWRlbXBvdGVuY3lMZXZlbDoTSURFTVBPVEVOQ1lfVU5LTk9XTlIQaWRlbXBvdGVuY3lMZXZlbBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiJQChBJZGVtcG90ZW5jeUxldmVsEhcKE0lERU1QT1RFTkNZX1VOS05PV04QABITCg9OT19TSURFX0VGRkVDVFMQARIOCgpJREVNUE9URU5UEAIqCQjoBxCAgICAAiKaAwoTVW5pbnRlcnByZXRlZE9wdGlvbhJBCgRuYW1lGAIgAygLMi0uZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb24uTmFtZVBhcnRSBG5hbWUSKQoQaWRlbnRpZmllcl92YWx1ZRgDIAEoCVIPaWRlbnRpZmllclZhbHVlEiwKEnBvc2l0aXZlX2ludF92YWx1ZRgEIAEoBFIQcG9zaXRpdmVJbnRWYWx1ZRIsChJuZWdhdGl2ZV9pbnRfdmFsdWUYBSABKANSEG5lZ2F0aXZlSW50VmFsdWUSIQoMZG91YmxlX3ZhbHVlGAYgASgBUgtkb3VibGVWYWx1ZRIhCgxzdHJpbmdfdmFsdWUYByABKAxSC3N0cmluZ1ZhbHVlEicKD2FnZ3JlZ2F0ZV92YWx1ZRgIIAEoCVIOYWdncmVnYXRlVmFsdWUaSgoITmFtZVBhcnQSGwoJbmFtZV9wYXJ0GAEgAigJUghuYW1lUGFydBIhCgxpc19leHRlbnNpb24YAiACKAhSC2lzRXh0ZW5zaW9uIqcCCg5Tb3VyY2VDb2RlSW5mbxJECghsb2NhdGlvbhgBIAMoCzIoLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb2RlSW5mby5Mb2NhdGlvblIIbG9jYXRpb24azgEKCExvY2F0aW9uEhYKBHBhdGgYASADKAVCAhABUgRwYXRoEhYKBHNwYW4YAiADKAVCAhABUgRzcGFuEikKEGxlYWRpbmdfY29tbWVudHMYAyABKAlSD2xlYWRpbmdDb21tZW50cxIrChF0cmFpbGluZ19jb21tZW50cxgEIAEoCVIQdHJhaWxpbmdDb21tZW50cxI6ChlsZWFkaW5nX2RldGFjaGVkX2NvbW1lbnRzGAYgAygJUhdsZWFkaW5nRGV0YWNoZWRDb21tZW50cyLQAgoRR2VuZXJhdGVkQ29kZUluZm8STQoKYW5ub3RhdGlvbhgBIAMoCzItLmdvb2dsZS5wcm90b2J1Zi5HZW5lcmF0ZWRDb2RlSW5mby5Bbm5vdGF0aW9uUgphbm5vdGF0aW9uGusBCgpBbm5vdGF0aW9uEhYKBHBhdGgYASADKAVCAhABUgRwYXRoEh8KC3NvdXJjZV9maWxlGAIgASgJUgpzb3VyY2VGaWxlEhQKBWJlZ2luGAMgASgFUgViZWdpbhIQCgNlbmQYBCABKAVSA2VuZBJSCghzZW1hbnRpYxgFIAEoDjI2Lmdvb2dsZS5wcm90b2J1Zi5HZW5lcmF0ZWRDb2RlSW5mby5Bbm5vdGF0aW9uLlNlbWFudGljUghzZW1hbnRpYyIoCghTZW1hbnRpYxIICgROT05FEAASBwoDU0VUEAESCQoFQUxJQVMQAkJ+ChNjb20uZ29vZ2xlLnByb3RvYnVmQhBEZXNjcmlwdG9yUHJvdG9zSAFaLWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2Rlc2NyaXB0b3JwYvgBAaICA0dQQqoCGkdvb2dsZS5Qcm90b2J1Zi5SZWZsZWN0aW9uCqgCChxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpGhVnb29nbGUvYXBpL2h0dHAucHJvdG8aIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCbgoOY29tLmdvb2dsZS5hcGlCEEFubm90YXRpb25zUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzMK6AMKH2dvb2dsZS9hcGkvZmllbGRfYmVoYXZpb3IucHJvdG8SCmdvb2dsZS5hcGkaIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvKrYBCg1GaWVsZEJlaGF2aW9yEh4KGkZJRUxEX0JFSEFWSU9SX1VOU1BFQ0lGSUVEEAASDAoIT1BUSU9OQUwQARIMCghSRVFVSVJFRBACEg8KC09VVFBVVF9PTkxZEAMSDgoKSU5QVVRfT05MWRAEEg0KCUlNTVVUQUJMRRAFEhIKDlVOT1JERVJFRF9MSVNUEAYSFQoRTk9OX0VNUFRZX0RFRkFVTFQQBxIOCgpJREVOVElGSUVSEAg6ZAoOZmllbGRfYmVoYXZpb3ISHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGJwIIAMoDjIZLmdvb2dsZS5hcGkuRmllbGRCZWhhdmlvckICEABSDWZpZWxkQmVoYXZpb3JCcAoOY29tLmdvb2dsZS5hcGlCEkZpZWxkQmVoYXZpb3JQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc6ICBEdBUEliBnByb3RvMwriBQocZ29vZ2xlL3Byb3RvYnVmL3N0cnVjdC5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIpgBCgZTdHJ1Y3QSOwoGZmllbGRzGAEgAygLMiMuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdC5GaWVsZHNFbnRyeVIGZmllbGRzGlEKC0ZpZWxkc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEisgIKBVZhbHVlEjsKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSABSCW51bGxWYWx1ZRIjCgxudW1iZXJfdmFsdWUYAiABKAFIAFILbnVtYmVyVmFsdWUSIwoMc3RyaW5nX3ZhbHVlGAMgASgJSABSC3N0cmluZ1ZhbHVlEh8KCmJvb2xfdmFsdWUYBCABKAhIAFIJYm9vbFZhbHVlEjwKDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAFILc3RydWN0VmFsdWUSOwoKbGlzdF92YWx1ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5MaXN0VmFsdWVIAFIJbGlzdFZhbHVlQgYKBGtpbmQiOwoJTGlzdFZhbHVlEi4KBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIGdmFsdWVzKhsKCU51bGxWYWx1ZRIOCgpOVUxMX1ZBTFVFEABCfwoTY29tLmdvb2dsZS5wcm90b2J1ZkILU3RydWN0UHJvdG9QAVovZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMva25vd24vc3RydWN0cGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMwqmPgoscHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9vcGVuYXBpdjIucHJvdG8SKWdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zGhxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvIrMICgdTd2FnZ2VyEhgKB3N3YWdnZXIYASABKAlSB3N3YWdnZXISQwoEaW5mbxgCIAEoCzIvLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkluZm9SBGluZm8SEgoEaG9zdBgDIAEoCVIEaG9zdBIbCgliYXNlX3BhdGgYBCABKAlSCGJhc2VQYXRoEksKB3NjaGVtZXMYBSADKA4yMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY2hlbWVSB3NjaGVtZXMSGgoIY29uc3VtZXMYBiADKAlSCGNvbnN1bWVzEhoKCHByb2R1Y2VzGAcgAygJUghwcm9kdWNlcxJfCglyZXNwb25zZXMYCiADKAsyQS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Td2FnZ2VyLlJlc3BvbnNlc0VudHJ5UglyZXNwb25zZXMScQoUc2VjdXJpdHlfZGVmaW5pdGlvbnMYCyABKAsyPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eURlZmluaXRpb25zUhNzZWN1cml0eURlZmluaXRpb25zEloKCHNlY3VyaXR5GAwgAygLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlSZXF1aXJlbWVudFIIc2VjdXJpdHkSQgoEdGFncxgNIAMoCzIuLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlRhZ1IEdGFncxJlCg1leHRlcm5hbF9kb2NzGA4gASgLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuRXh0ZXJuYWxEb2N1bWVudGF0aW9uUgxleHRlcm5hbERvY3MSYgoKZXh0ZW5zaW9ucxgPIAMoCzJCLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlN3YWdnZXIuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGnEKDlJlc3BvbnNlc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EkkKBXZhbHVlGAIgASgLMjMuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2VSBXZhbHVlOgI4ARpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4AUoECAgQCUoECAkQCiLWBwoJT3BlcmF0aW9uEhIKBHRhZ3MYASADKAlSBHRhZ3MSGAoHc3VtbWFyeRgCIAEoCVIHc3VtbWFyeRIgCgtkZXNjcmlwdGlvbhgDIAEoCVILZGVzY3JpcHRpb24SZQoNZXh0ZXJuYWxfZG9jcxgEIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEiEKDG9wZXJhdGlvbl9pZBgFIAEoCVILb3BlcmF0aW9uSWQSGgoIY29uc3VtZXMYBiADKAlSCGNvbnN1bWVzEhoKCHByb2R1Y2VzGAcgAygJUghwcm9kdWNlcxJhCglyZXNwb25zZXMYCSADKAsyQy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5PcGVyYXRpb24uUmVzcG9uc2VzRW50cnlSCXJlc3BvbnNlcxJLCgdzY2hlbWVzGAogAygOMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1lUgdzY2hlbWVzEh4KCmRlcHJlY2F0ZWQYCyABKAhSCmRlcHJlY2F0ZWQSWgoIc2VjdXJpdHkYDCADKAsyPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVJlcXVpcmVtZW50UghzZWN1cml0eRJkCgpleHRlbnNpb25zGA0gAygLMkQuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuT3BlcmF0aW9uLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxJVCgpwYXJhbWV0ZXJzGA4gASgLMjUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUGFyYW1ldGVyc1IKcGFyYW1ldGVycxpxCg5SZXNwb25zZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRJJCgV2YWx1ZRgCIAEoCzIzLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlUgV2YWx1ZToCOAEaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAFKBAgIEAkiYgoKUGFyYW1ldGVycxJUCgdoZWFkZXJzGAEgAygLMjouZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSGVhZGVyUGFyYW1ldGVyUgdoZWFkZXJzIqMCCg9IZWFkZXJQYXJhbWV0ZXISEgoEbmFtZRgBIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SUwoEdHlwZRgDIAEoDjI/LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkhlYWRlclBhcmFtZXRlci5UeXBlUgR0eXBlEhYKBmZvcm1hdBgEIAEoCVIGZm9ybWF0EhoKCHJlcXVpcmVkGAUgASgIUghyZXF1aXJlZCJFCgRUeXBlEgsKB1VOS05PV04QABIKCgZTVFJJTkcQARIKCgZOVU1CRVIQAhILCgdJTlRFR0VSEAMSCwoHQk9PTEVBThAESgQIBhAHSgQIBxAIItgBCgZIZWFkZXISIAoLZGVzY3JpcHRpb24YASABKAlSC2Rlc2NyaXB0aW9uEhIKBHR5cGUYAiABKAlSBHR5cGUSFgoGZm9ybWF0GAMgASgJUgZmb3JtYXQSGAoHZGVmYXVsdBgGIAEoCVIHZGVmYXVsdBIYCgdwYXR0ZXJuGA0gASgJUgdwYXR0ZXJuSgQIBBAFSgQIBRAGSgQIBxAISgQICBAJSgQICRAKSgQIChALSgQICxAMSgQIDBANSgQIDhAPSgQIDxAQSgQIEBARSgQIERASSgQIEhATIpoFCghSZXNwb25zZRIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24SSQoGc2NoZW1hGAIgASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1hUgZzY2hlbWESWgoHaGVhZGVycxgDIAMoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlLkhlYWRlcnNFbnRyeVIHaGVhZGVycxJdCghleGFtcGxlcxgEIAMoCzJBLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlLkV4YW1wbGVzRW50cnlSCGV4YW1wbGVzEmMKCmV4dGVuc2lvbnMYBSADKAsyQy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZS5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMabQoMSGVhZGVyc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EkcKBXZhbHVlGAIgASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSGVhZGVyUgV2YWx1ZToCOAEaOwoNRXhhbXBsZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBItYDCgRJbmZvEhQKBXRpdGxlGAEgASgJUgV0aXRsZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SKAoQdGVybXNfb2Zfc2VydmljZRgDIAEoCVIOdGVybXNPZlNlcnZpY2USTAoHY29udGFjdBgEIAEoCzIyLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkNvbnRhY3RSB2NvbnRhY3QSTAoHbGljZW5zZRgFIAEoCzIyLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkxpY2Vuc2VSB2xpY2Vuc2USGAoHdmVyc2lvbhgGIAEoCVIHdmVyc2lvbhJfCgpleHRlbnNpb25zGAcgAygLMj8uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSW5mby5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEiRQoHQ29udGFjdBISCgRuYW1lGAEgASgJUgRuYW1lEhAKA3VybBgCIAEoCVIDdXJsEhQKBWVtYWlsGAMgASgJUgVlbWFpbCIvCgdMaWNlbnNlEhIKBG5hbWUYASABKAlSBG5hbWUSEAoDdXJsGAIgASgJUgN1cmwiSwoVRXh0ZXJuYWxEb2N1bWVudGF0aW9uEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbhIQCgN1cmwYAiABKAlSA3VybCKqAgoGU2NoZW1hElYKC2pzb25fc2NoZW1hGAEgASgLMjUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYVIKanNvblNjaGVtYRIkCg1kaXNjcmltaW5hdG9yGAIgASgJUg1kaXNjcmltaW5hdG9yEhsKCXJlYWRfb25seRgDIAEoCFIIcmVhZE9ubHkSZQoNZXh0ZXJuYWxfZG9jcxgFIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEhgKB2V4YW1wbGUYBiABKAlSB2V4YW1wbGVKBAgEEAUi1woKCkpTT05TY2hlbWESEAoDcmVmGAMgASgJUgNyZWYSFAoFdGl0bGUYBSABKAlSBXRpdGxlEiAKC2Rlc2NyaXB0aW9uGAYgASgJUgtkZXNjcmlwdGlvbhIYCgdkZWZhdWx0GAcgASgJUgdkZWZhdWx0EhsKCXJlYWRfb25seRgIIAEoCFIIcmVhZE9ubHkSGAoHZXhhbXBsZRgJIAEoCVIHZXhhbXBsZRIfCgttdWx0aXBsZV9vZhgKIAEoAVIKbXVsdGlwbGVPZhIYCgdtYXhpbXVtGAsgASgBUgdtYXhpbXVtEisKEWV4Y2x1c2l2ZV9tYXhpbXVtGAwgASgIUhBleGNsdXNpdmVNYXhpbXVtEhgKB21pbmltdW0YDSABKAFSB21pbmltdW0SKwoRZXhjbHVzaXZlX21pbmltdW0YDiABKAhSEGV4Y2x1c2l2ZU1pbmltdW0SHQoKbWF4X2xlbmd0aBgPIAEoBFIJbWF4TGVuZ3RoEh0KCm1pbl9sZW5ndGgYECABKARSCW1pbkxlbmd0aBIYCgdwYXR0ZXJuGBEgASgJUgdwYXR0ZXJuEhsKCW1heF9pdGVtcxgUIAEoBFIIbWF4SXRlbXMSGwoJbWluX2l0ZW1zGBUgASgEUghtaW5JdGVtcxIhCgx1bmlxdWVfaXRlbXMYFiABKAhSC3VuaXF1ZUl0ZW1zEiUKDm1heF9wcm9wZXJ0aWVzGBggASgEUg1tYXhQcm9wZXJ0aWVzEiUKDm1pbl9wcm9wZXJ0aWVzGBkgASgEUg1taW5Qcm9wZXJ0aWVzEhoKCHJlcXVpcmVkGBogAygJUghyZXF1aXJlZBIUCgVhcnJheRgiIAMoCVIFYXJyYXkSXwoEdHlwZRgjIAMoDjJLLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWEuSlNPTlNjaGVtYVNpbXBsZVR5cGVzUgR0eXBlEhYKBmZvcm1hdBgkIAEoCVIGZm9ybWF0EhIKBGVudW0YLiADKAlSBGVudW0SegoTZmllbGRfY29uZmlndXJhdGlvbhjpByABKAsySC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hLkZpZWxkQ29uZmlndXJhdGlvblISZmllbGRDb25maWd1cmF0aW9uEmUKCmV4dGVuc2lvbnMYMCADKAsyRS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxo8ChJGaWVsZENvbmZpZ3VyYXRpb24SJgoPcGF0aF9wYXJhbV9uYW1lGC8gASgJUg1wYXRoUGFyYW1OYW1lGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIncKFUpTT05TY2hlbWFTaW1wbGVUeXBlcxILCgdVTktOT1dOEAASCQoFQVJSQVkQARILCgdCT09MRUFOEAISCwoHSU5URUdFUhADEggKBE5VTEwQBBIKCgZOVU1CRVIQBRIKCgZPQkpFQ1QQBhIKCgZTVFJJTkcQB0oECAEQAkoECAIQA0oECAQQBUoECBIQE0oECBMQFEoECBcQGEoECBsQHEoECBwQHUoECB0QHkoECB4QIkoECCUQKkoECCoQK0oECCsQLiLZAgoDVGFnEhIKBG5hbWUYASABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uEmUKDWV4dGVybmFsX2RvY3MYAyABKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5FeHRlcm5hbERvY3VtZW50YXRpb25SDGV4dGVybmFsRG9jcxJeCgpleHRlbnNpb25zGAQgAygLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuVGFnLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASL3AQoTU2VjdXJpdHlEZWZpbml0aW9ucxJoCghzZWN1cml0eRgBIAMoCzJMLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5RGVmaW5pdGlvbnMuU2VjdXJpdHlFbnRyeVIIc2VjdXJpdHkadgoNU2VjdXJpdHlFbnRyeRIQCgNrZXkYASABKAlSA2tleRJPCgV2YWx1ZRgCIAEoCzI5LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lUgV2YWx1ZToCOAEi/wYKDlNlY3VyaXR5U2NoZW1lElIKBHR5cGUYASABKA4yPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5UeXBlUgR0eXBlEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhISCgRuYW1lGAMgASgJUgRuYW1lEkwKAmluGAQgASgOMjwuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWUuSW5SAmluElIKBGZsb3cYBSABKA4yPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5GbG93UgRmbG93EisKEWF1dGhvcml6YXRpb25fdXJsGAYgASgJUhBhdXRob3JpemF0aW9uVXJsEhsKCXRva2VuX3VybBgHIAEoCVIIdG9rZW5VcmwSSQoGc2NvcGVzGAggASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NvcGVzUgZzY29wZXMSaQoKZXh0ZW5zaW9ucxgJIAMoCzJJLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASJLCgRUeXBlEhAKDFRZUEVfSU5WQUxJRBAAEg4KClRZUEVfQkFTSUMQARIQCgxUWVBFX0FQSV9LRVkQAhIPCgtUWVBFX09BVVRIMhADIjEKAkluEg4KCklOX0lOVkFMSUQQABIMCghJTl9RVUVSWRABEg0KCUlOX0hFQURFUhACImoKBEZsb3cSEAoMRkxPV19JTlZBTElEEAASEQoNRkxPV19JTVBMSUNJVBABEhEKDUZMT1dfUEFTU1dPUkQQAhIUChBGTE9XX0FQUExJQ0FUSU9OEAMSFAoQRkxPV19BQ0NFU1NfQ09ERRAEIvYCChNTZWN1cml0eVJlcXVpcmVtZW50EooBChRzZWN1cml0eV9yZXF1aXJlbWVudBgBIAMoCzJXLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnQuU2VjdXJpdHlSZXF1aXJlbWVudEVudHJ5UhNzZWN1cml0eVJlcXVpcmVtZW50GjAKGFNlY3VyaXR5UmVxdWlyZW1lbnRWYWx1ZRIUCgVzY29wZRgBIAMoCVIFc2NvcGUanwEKGFNlY3VyaXR5UmVxdWlyZW1lbnRFbnRyeRIQCgNrZXkYASABKAlSA2tleRJtCgV2YWx1ZRgCIAEoCzJXLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnQuU2VjdXJpdHlSZXF1aXJlbWVudFZhbHVlUgV2YWx1ZToCOAEilgEKBlNjb3BlcxJSCgVzY29wZRgBIAMoCzI8LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjb3Blcy5TY29wZUVudHJ5UgVzY29wZRo4CgpTY29wZUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEqOwoGU2NoZW1lEgsKB1VOS05PV04QABIICgRIVFRQEAESCQoFSFRUUFMQAhIGCgJXUxADEgcKA1dTUxAEQkhaRmdpdGh1Yi5jb20vZ3JwYy1lY29zeXN0ZW0vZ3JwYy1nYXRld2F5L3YyL3Byb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnNiBnByb3RvMwr9BgoucHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9hbm5vdGF0aW9ucy5wcm90bxIpZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMaIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvGixwcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL29wZW5hcGl2Mi5wcm90bzp+ChFvcGVuYXBpdjJfc3dhZ2dlchIcLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9ucxiSCCABKAsyMi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Td2FnZ2VyUhBvcGVuYXBpdjJTd2FnZ2VyOoYBChNvcGVuYXBpdjJfb3BlcmF0aW9uEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYkgggASgLMjQuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuT3BlcmF0aW9uUhJvcGVuYXBpdjJPcGVyYXRpb246fgoQb3BlbmFwaXYyX3NjaGVtYRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiSCCABKAsyMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY2hlbWFSD29wZW5hcGl2MlNjaGVtYTp1Cg1vcGVuYXBpdjJfdGFnEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJIIIAEoCzIuLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlRhZ1IMb3BlbmFwaXYyVGFnOn4KD29wZW5hcGl2Ml9maWVsZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYkgggASgLMjUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYVIOb3BlbmFwaXYyRmllbGRCSFpGZ2l0aHViLmNvbS9ncnBjLWVjb3N5c3RlbS9ncnBjLWdhdGV3YXkvdjIvcHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9uc2IGcHJvdG8zCoYECh5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIjCgtEb3VibGVWYWx1ZRIUCgV2YWx1ZRgBIAEoAVIFdmFsdWUiIgoKRmxvYXRWYWx1ZRIUCgV2YWx1ZRgBIAEoAlIFdmFsdWUiIgoKSW50NjRWYWx1ZRIUCgV2YWx1ZRgBIAEoA1IFdmFsdWUiIwoLVUludDY0VmFsdWUSFAoFdmFsdWUYASABKARSBXZhbHVlIiIKCkludDMyVmFsdWUSFAoFdmFsdWUYASABKAVSBXZhbHVlIiMKC1VJbnQzMlZhbHVlEhQKBXZhbHVlGAEgASgNUgV2YWx1ZSIhCglCb29sVmFsdWUSFAoFdmFsdWUYASABKAhSBXZhbHVlIiMKC1N0cmluZ1ZhbHVlEhQKBXZhbHVlGAEgASgJUgV2YWx1ZSIiCgpCeXRlc1ZhbHVlEhQKBXZhbHVlGAEgASgMUgV2YWx1ZUKDAQoTY29tLmdvb2dsZS5wcm90b2J1ZkINV3JhcHBlcnNQcm90b1ABWjFnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi93cmFwcGVyc3Bi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzMKgl8KHnByb3RvL2V4cGVyaW1lbnQvc2VydmljZS5wcm90bxIUYnVja2V0ZWVyLmV4cGVyaW1lbnQaHGdvb2dsZS9hcGkvYW5ub3RhdGlvbnMucHJvdG8aH2dvb2dsZS9hcGkvZmllbGRfYmVoYXZpb3IucHJvdG8aLnByb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnMvYW5ub3RhdGlvbnMucHJvdG8aHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxoecHJvdG8vZXhwZXJpbWVudC9jb21tYW5kLnByb3RvGhtwcm90by9leHBlcmltZW50L2dvYWwucHJvdG8aIXByb3RvL2V4cGVyaW1lbnQvZXhwZXJpbWVudC5wcm90byJXCg5HZXRHb2FsUmVxdWVzdBITCgJpZBgBIAEoCUID4EECUgJpZBIqCg5lbnZpcm9ubWVudF9pZBgDIAEoCUID4EECUg1lbnZpcm9ubWVudElkSgQIAhADIkEKD0dldEdvYWxSZXNwb25zZRIuCgRnb2FsGAEgASgLMhouYnVja2V0ZWVyLmV4cGVyaW1lbnQuR29hbFIEZ29hbCLEBAoQTGlzdEdvYWxzUmVxdWVzdBIbCglwYWdlX3NpemUYASABKANSCHBhZ2VTaXplEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEkkKCG9yZGVyX2J5GAQgASgOMi4uYnVja2V0ZWVyLmV4cGVyaW1lbnQuTGlzdEdvYWxzUmVxdWVzdC5PcmRlckJ5UgdvcmRlckJ5El4KD29yZGVyX2RpcmVjdGlvbhgFIAEoDjI1LmJ1Y2tldGVlci5leHBlcmltZW50Lkxpc3RHb2Fsc1JlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAYgASgJUg1zZWFyY2hLZXl3b3JkEkMKEGlzX2luX3VzZV9zdGF0dXMYByABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUg1pc0luVXNlU3RhdHVzEjYKCGFyY2hpdmVkGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIYXJjaGl2ZWQSKgoOZW52aXJvbm1lbnRfaWQYCSABKAlCA+BBAlINZW52aXJvbm1lbnRJZCJVCgdPcmRlckJ5EgsKB0RFRkFVTFQQABIICgROQU1FEAESDgoKQ1JFQVRFRF9BVBACEg4KClVQREFURURfQVQQAxITCg9DT05ORUNUSU9OX1RZUEUQBCIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAFKBAgDEAQifgoRTGlzdEdvYWxzUmVzcG9uc2USMAoFZ29hbHMYASADKAsyGi5idWNrZXRlZXIuZXhwZXJpbWVudC5Hb2FsUgVnb2FscxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCK/AgoRQ3JlYXRlR29hbFJlcXVlc3QSVAoHY29tbWFuZBgBIAEoCzInLmJ1Y2tldGVlci5leHBlcmltZW50LkNyZWF0ZUdvYWxDb21tYW5kQhEYAZJBDDIKZGVwcmVjYXRlZFIHY29tbWFuZBIqCg5lbnZpcm9ubWVudF9pZBgDIAEoCUID4EECUg1lbnZpcm9ubWVudElkEhMKAmlkGAQgASgJQgPgQQJSAmlkEhcKBG5hbWUYBSABKAlCA+BBAlIEbmFtZRIgCgtkZXNjcmlwdGlvbhgGIAEoCVILZGVzY3JpcHRpb24SUgoPY29ubmVjdGlvbl90eXBlGAcgASgOMikuYnVja2V0ZWVyLmV4cGVyaW1lbnQuR29hbC5Db25uZWN0aW9uVHlwZVIOY29ubmVjdGlvblR5cGVKBAgCEAMiRAoSQ3JlYXRlR29hbFJlc3BvbnNlEi4KBGdvYWwYASABKAsyGi5idWNrZXRlZXIuZXhwZXJpbWVudC5Hb2FsUgRnb2FsIpUBChJBcmNoaXZlR29hbFJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkIKB2NvbW1hbmQYAiABKAsyKC5idWNrZXRlZXIuZXhwZXJpbWVudC5BcmNoaXZlR29hbENvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFQoTQXJjaGl2ZUdvYWxSZXNwb25zZSKwAQoRRGVsZXRlR29hbFJlcXVlc3QSEwoCaWQYASABKAlCA+BBAlICaWQSVAoHY29tbWFuZBgCIAEoCzInLmJ1Y2tldGVlci5leHBlcmltZW50LkRlbGV0ZUdvYWxDb21tYW5kQhEYAZJBDDIKZGVwcmVjYXRlZFIHY29tbWFuZBIqCg5lbnZpcm9ubWVudF9pZBgEIAEoCUID4EECUg1lbnZpcm9ubWVudElkSgQIAxAEIhQKEkRlbGV0ZUdvYWxSZXNwb25zZSKWBAoRVXBkYXRlR29hbFJlcXVlc3QSEwoCaWQYASABKAlCA+BBAlICaWQSYQoOcmVuYW1lX2NvbW1hbmQYAiABKAsyJy5idWNrZXRlZXIuZXhwZXJpbWVudC5SZW5hbWVHb2FsQ29tbWFuZEIRGAGSQQwyCmRlcHJlY2F0ZWRSDXJlbmFtZUNvbW1hbmQSgwEKGmNoYW5nZV9kZXNjcmlwdGlvbl9jb21tYW5kGAMgASgLMjIuYnVja2V0ZWVyLmV4cGVyaW1lbnQuQ2hhbmdlRGVzY3JpcHRpb25Hb2FsQ29tbWFuZEIRGAGSQQwyCmRlcHJlY2F0ZWRSGGNoYW5nZURlc2NyaXB0aW9uQ29tbWFuZBIqCg5lbnZpcm9ubWVudF9pZBgFIAEoCUID4EECUg1lbnZpcm9ubWVudElkEjAKBG5hbWUYBiABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWVSBG5hbWUSPgoLZGVzY3JpcHRpb24YByABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWVSC2Rlc2NyaXB0aW9uEl8KCGFyY2hpdmVkGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZUInkkEkMiJpZiB0cnVlLCB0aGUgZ29hbCB3aWxsIGJlIGFyY2hpdmVkUghhcmNoaXZlZEoECAQQBSJEChJVcGRhdGVHb2FsUmVzcG9uc2USLgoEZ29hbBgBIAEoCzIaLmJ1Y2tldGVlci5leHBlcmltZW50LkdvYWxSBGdvYWwiUwoUR2V0RXhwZXJpbWVudFJlcXVlc3QSDgoCaWQYASABKAlSAmlkEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIlkKFUdldEV4cGVyaW1lbnRSZXNwb25zZRJACgpleHBlcmltZW50GAEgASgLMiAuYnVja2V0ZWVyLmV4cGVyaW1lbnQuRXhwZXJpbWVudFIKZXhwZXJpbWVudCKfBgoWTGlzdEV4cGVyaW1lbnRzUmVxdWVzdBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSRAoPZmVhdHVyZV92ZXJzaW9uGAIgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVSDmZlYXR1cmVWZXJzaW9uEhIKBGZyb20YAyABKANSBGZyb20SDgoCdG8YBCABKANSAnRvEhsKCXBhZ2Vfc2l6ZRgFIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAYgASgJUgZjdXJzb3ISMwoGc3RhdHVzGAggASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVSBnN0YXR1cxIeCgptYWludGFpbmVyGAkgASgJUgptYWludGFpbmVyEk8KCG9yZGVyX2J5GAogASgOMjQuYnVja2V0ZWVyLmV4cGVyaW1lbnQuTGlzdEV4cGVyaW1lbnRzUmVxdWVzdC5PcmRlckJ5UgdvcmRlckJ5EmQKD29yZGVyX2RpcmVjdGlvbhgLIAEoDjI7LmJ1Y2tldGVlci5leHBlcmltZW50Lkxpc3RFeHBlcmltZW50c1JlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAwgASgJUg1zZWFyY2hLZXl3b3JkEjYKCGFyY2hpdmVkGA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIYXJjaGl2ZWQSQwoIc3RhdHVzZXMYDiADKA4yJy5idWNrZXRlZXIuZXhwZXJpbWVudC5FeHBlcmltZW50LlN0YXR1c1IIc3RhdHVzZXMSKgoOZW52aXJvbm1lbnRfaWQYDyABKAlCA+BBAlINZW52aXJvbm1lbnRJZCJACgdPcmRlckJ5EgsKB0RFRkFVTFQQABIICgROQU1FEAESDgoKQ1JFQVRFRF9BVBACEg4KClVQREFURURfQVQQAyIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAFKBAgHEAgigwMKF0xpc3RFeHBlcmltZW50c1Jlc3BvbnNlEkIKC2V4cGVyaW1lbnRzGAEgAygLMiAuYnVja2V0ZWVyLmV4cGVyaW1lbnQuRXhwZXJpbWVudFILZXhwZXJpbWVudHMSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISHwoLdG90YWxfY291bnQYAyABKANSCnRvdGFsQ291bnQSTwoHc3VtbWFyeRgEIAEoCzI1LmJ1Y2tldGVlci5leHBlcmltZW50Lkxpc3RFeHBlcmltZW50c1Jlc3BvbnNlLlN1bW1hcnlSB3N1bW1hcnkamQEKB1N1bW1hcnkSLgoTdG90YWxfd2FpdGluZ19jb3VudBgBIAEoA1IRdG90YWxXYWl0aW5nQ291bnQSLgoTdG90YWxfcnVubmluZ19jb3VudBgCIAEoA1IRdG90YWxSdW5uaW5nQ291bnQSLgoTdG90YWxfc3RvcHBlZF9jb3VudBgDIAEoA1IRdG90YWxTdG9wcGVkQ291bnQilQMKF0NyZWF0ZUV4cGVyaW1lbnRSZXF1ZXN0EloKB2NvbW1hbmQYASABKAsyLS5idWNrZXRlZXIuZXhwZXJpbWVudC5DcmVhdGVFeHBlcmltZW50Q29tbWFuZEIRGAGSQQwyCmRlcHJlY2F0ZWRSB2NvbW1hbmQSKgoOZW52aXJvbm1lbnRfaWQYAyABKAlCA+BBAlINZW52aXJvbm1lbnRJZBIiCgpmZWF0dXJlX2lkGAQgASgJQgPgQQJSCWZlYXR1cmVJZBIeCghzdGFydF9hdBgFIAEoA0ID4EECUgdzdGFydEF0EhwKB3N0b3BfYXQYBiABKANCA+BBAlIGc3RvcEF0Eh4KCGdvYWxfaWRzGAcgAygJQgPgQQJSB2dvYWxJZHMSFwoEbmFtZRgIIAEoCUID4EECUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAkgASgJUgtkZXNjcmlwdGlvbhIvChFiYXNlX3ZhcmlhdGlvbl9pZBgKIAEoCUID4EECUg9iYXNlVmFyaWF0aW9uSWRKBAgCEAMiXAoYQ3JlYXRlRXhwZXJpbWVudFJlc3BvbnNlEkAKCmV4cGVyaW1lbnQYASABKAsyIC5idWNrZXRlZXIuZXhwZXJpbWVudC5FeHBlcmltZW50UgpleHBlcmltZW50Iu4HChdVcGRhdGVFeHBlcmltZW50UmVxdWVzdBITCgJpZBgBIAEoCUID4EECUgJpZBKPAQogY2hhbmdlX2V4cGVyaW1lbnRfcGVyaW9kX2NvbW1hbmQYBSABKAsyMy5idWNrZXRlZXIuZXhwZXJpbWVudC5DaGFuZ2VFeHBlcmltZW50UGVyaW9kQ29tbWFuZEIRGAGSQQwyCmRlcHJlY2F0ZWRSHWNoYW5nZUV4cGVyaW1lbnRQZXJpb2RDb21tYW5kEnQKE2NoYW5nZV9uYW1lX2NvbW1hbmQYBiABKAsyMS5idWNrZXRlZXIuZXhwZXJpbWVudC5DaGFuZ2VFeHBlcmltZW50TmFtZUNvbW1hbmRCERgBkkEMMgpkZXByZWNhdGVkUhFjaGFuZ2VOYW1lQ29tbWFuZBKJAQoaY2hhbmdlX2Rlc2NyaXB0aW9uX2NvbW1hbmQYByABKAsyOC5idWNrZXRlZXIuZXhwZXJpbWVudC5DaGFuZ2VFeHBlcmltZW50RGVzY3JpcHRpb25Db21tYW5kQhEYAZJBDDIKZGVwcmVjYXRlZFIYY2hhbmdlRGVzY3JpcHRpb25Db21tYW5kEioKDmVudmlyb25tZW50X2lkGAggASgJQgPgQQJSDWVudmlyb25tZW50SWQSMAoEbmFtZRgJIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIEbmFtZRI+CgtkZXNjcmlwdGlvbhgKIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVILZGVzY3JpcHRpb24SNgoIc3RhcnRfYXQYCyABKAsyGy5nb29nbGUucHJvdG9idWYuSW50NjRWYWx1ZVIHc3RhcnRBdBI0CgdzdG9wX2F0GAwgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDY0VmFsdWVSBnN0b3BBdBJlCghhcmNoaXZlZBgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWVCLZJBKjIoaWYgdHJ1ZSwgdGhlIGV4cGVyaW1lbnQgd2lsbCBiZSBhcmNoaXZlZFIIYXJjaGl2ZWQSUwoGc3RhdHVzGA4gASgLMjsuYnVja2V0ZWVyLmV4cGVyaW1lbnQuVXBkYXRlRXhwZXJpbWVudFJlcXVlc3QuVXBkYXRlZFN0YXR1c1IGc3RhdHVzGlAKDVVwZGF0ZWRTdGF0dXMSPwoGc3RhdHVzGAEgASgOMicuYnVja2V0ZWVyLmV4cGVyaW1lbnQuRXhwZXJpbWVudC5TdGF0dXNSBnN0YXR1c0oECAIQA0oECAMQBEoECAQQBSJcChhVcGRhdGVFeHBlcmltZW50UmVzcG9uc2USQAoKZXhwZXJpbWVudBgBIAEoCzIgLmJ1Y2tldGVlci5leHBlcmltZW50LkV4cGVyaW1lbnRSCmV4cGVyaW1lbnQinQEKFlN0YXJ0RXhwZXJpbWVudFJlcXVlc3QSDgoCaWQYAiABKAlSAmlkEkYKB2NvbW1hbmQYAyABKAsyLC5idWNrZXRlZXIuZXhwZXJpbWVudC5TdGFydEV4cGVyaW1lbnRDb21tYW5kUgdjb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIARACIhkKF1N0YXJ0RXhwZXJpbWVudFJlc3BvbnNlIp8BChdGaW5pc2hFeHBlcmltZW50UmVxdWVzdBIOCgJpZBgCIAEoCVICaWQSRwoHY29tbWFuZBgDIAEoCzItLmJ1Y2tldGVlci5leHBlcmltZW50LkZpbmlzaEV4cGVyaW1lbnRDb21tYW5kUgdjb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIARACIhoKGEZpbmlzaEV4cGVyaW1lbnRSZXNwb25zZSKbAQoVU3RvcEV4cGVyaW1lbnRSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJFCgdjb21tYW5kGAIgASgLMisuYnVja2V0ZWVyLmV4cGVyaW1lbnQuU3RvcEV4cGVyaW1lbnRDb21tYW5kUgdjb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEIhgKFlN0b3BFeHBlcmltZW50UmVzcG9uc2UioQEKGEFyY2hpdmVFeHBlcmltZW50UmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSSAoHY29tbWFuZBgCIAEoCzIuLmJ1Y2tldGVlci5leHBlcmltZW50LkFyY2hpdmVFeHBlcmltZW50Q29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIbChlBcmNoaXZlRXhwZXJpbWVudFJlc3BvbnNlIp8BChdEZWxldGVFeHBlcmltZW50UmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSRwoHY29tbWFuZBgCIAEoCzItLmJ1Y2tldGVlci5leHBlcmltZW50LkRlbGV0ZUV4cGVyaW1lbnRDb21tYW5kUgdjb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEIhoKGERlbGV0ZUV4cGVyaW1lbnRSZXNwb25zZTKNLAoRRXhwZXJpbWVudFNlcnZpY2USggQKB0dldEdvYWwSJC5idWNrZXRlZXIuZXhwZXJpbWVudC5HZXRHb2FsUmVxdWVzdBolLmJ1Y2tldGVlci5leHBlcmltZW50LkdldEdvYWxSZXNwb25zZSKpA5JBlQMKBGdvYWwSA0dldBoLR2V0IGEgZ29hbC4qD3dlYi52MS5nb2FsLmdldEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAgoSCC92MS9nb2FsEowECglMaXN0R29hbHMSJi5idWNrZXRlZXIuZXhwZXJpbWVudC5MaXN0R29hbHNSZXF1ZXN0GicuYnVja2V0ZWVyLmV4cGVyaW1lbnQuTGlzdEdvYWxzUmVzcG9uc2UirQOSQZgDCgRnb2FsEgRMaXN0GgtMaXN0IGdvYWxzLioRd2ViLnYxLmdvYWxzLmxpc3RKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwILEgkvdjEvZ29hbHMSlwQKCkNyZWF0ZUdvYWwSJy5idWNrZXRlZXIuZXhwZXJpbWVudC5DcmVhdGVHb2FsUmVxdWVzdBooLmJ1Y2tldGVlci5leHBlcmltZW50LkNyZWF0ZUdvYWxSZXNwb25zZSK1A5JBngMKBGdvYWwSBkNyZWF0ZRoOQ3JlYXRlIGEgZ29hbC4qEndlYi52MS5nb2FsLmNyZWF0ZUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAg0iCC92MS9nb2FsOgEqEpcECgpVcGRhdGVHb2FsEicuYnVja2V0ZWVyLmV4cGVyaW1lbnQuVXBkYXRlR29hbFJlcXVlc3QaKC5idWNrZXRlZXIuZXhwZXJpbWVudC5VcGRhdGVHb2FsUmVzcG9uc2UitQOSQZ4DCgRnb2FsEgZVcGRhdGUaDlVwZGF0ZSBhIGdvYWwuKhJ3ZWIudjEuZ29hbC51cGRhdGVKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwINMggvdjEvZ29hbDoBKhJkCgtBcmNoaXZlR29hbBIoLmJ1Y2tldGVlci5leHBlcmltZW50LkFyY2hpdmVHb2FsUmVxdWVzdBopLmJ1Y2tldGVlci5leHBlcmltZW50LkFyY2hpdmVHb2FsUmVzcG9uc2UiABKUBAoKRGVsZXRlR29hbBInLmJ1Y2tldGVlci5leHBlcmltZW50LkRlbGV0ZUdvYWxSZXF1ZXN0GiguYnVja2V0ZWVyLmV4cGVyaW1lbnQuRGVsZXRlR29hbFJlc3BvbnNlIrIDkkGeAwoEZ29hbBIGRGVsZXRlGg5EZWxldGUgYSBnb2FsLioSd2ViLnYxLmdvYWwuZGVsZXRlSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCCioIL3YxL2dvYWwSrQQKDUdldEV4cGVyaW1lbnQSKi5idWNrZXRlZXIuZXhwZXJpbWVudC5HZXRFeHBlcmltZW50UmVxdWVzdBorLmJ1Y2tldGVlci5leHBlcmltZW50LkdldEV4cGVyaW1lbnRSZXNwb25zZSLCA5JBqAMKCmV4cGVyaW1lbnQSA0dldBoSR2V0IGFuIGV4cGVyaW1lbnQuKhV3ZWIudjEuZXhwZXJpbWVudC5nZXRKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIQEg4vdjEvZXhwZXJpbWVudBK1BAoPTGlzdEV4cGVyaW1lbnRzEiwuYnVja2V0ZWVyLmV4cGVyaW1lbnQuTGlzdEV4cGVyaW1lbnRzUmVxdWVzdBotLmJ1Y2tldGVlci5leHBlcmltZW50Lkxpc3RFeHBlcmltZW50c1Jlc3BvbnNlIsQDkkGpAwoKZXhwZXJpbWVudBIETGlzdBoRTGlzdCBleHBlcmltZW50cy4qFndlYi52MS5leHBlcmltZW50Lmxpc3RKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIREg8vdjEvZXhwZXJpbWVudHMSwgQKEENyZWF0ZUV4cGVyaW1lbnQSLS5idWNrZXRlZXIuZXhwZXJpbWVudC5DcmVhdGVFeHBlcmltZW50UmVxdWVzdBouLmJ1Y2tldGVlci5leHBlcmltZW50LkNyZWF0ZUV4cGVyaW1lbnRSZXNwb25zZSLOA5JBsQMKCmV4cGVyaW1lbnQSBkNyZWF0ZRoVQ3JlYXRlIGFuIGV4cGVyaW1lbnQuKhh3ZWIudjEuZXhwZXJpbWVudC5jcmVhdGVKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwITIg4vdjEvZXhwZXJpbWVudDoBKhLCBAoQVXBkYXRlRXhwZXJpbWVudBItLmJ1Y2tldGVlci5leHBlcmltZW50LlVwZGF0ZUV4cGVyaW1lbnRSZXF1ZXN0Gi4uYnVja2V0ZWVyLmV4cGVyaW1lbnQuVXBkYXRlRXhwZXJpbWVudFJlc3BvbnNlIs4DkkGxAwoKZXhwZXJpbWVudBIGVXBkYXRlGhVVcGRhdGUgYW4gZXhwZXJpbWVudC4qGHdlYi52MS5leHBlcmltZW50LnVwZGF0ZUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhMyDi92MS9leHBlcmltZW50OgEqEnAKD1N0YXJ0RXhwZXJpbWVudBIsLmJ1Y2tldGVlci5leHBlcmltZW50LlN0YXJ0RXhwZXJpbWVudFJlcXVlc3QaLS5idWNrZXRlZXIuZXhwZXJpbWVudC5TdGFydEV4cGVyaW1lbnRSZXNwb25zZSIAEnMKEEZpbmlzaEV4cGVyaW1lbnQSLS5idWNrZXRlZXIuZXhwZXJpbWVudC5GaW5pc2hFeHBlcmltZW50UmVxdWVzdBouLmJ1Y2tldGVlci5leHBlcmltZW50LkZpbmlzaEV4cGVyaW1lbnRSZXNwb25zZSIAEm0KDlN0b3BFeHBlcmltZW50EisuYnVja2V0ZWVyLmV4cGVyaW1lbnQuU3RvcEV4cGVyaW1lbnRSZXF1ZXN0GiwuYnVja2V0ZWVyLmV4cGVyaW1lbnQuU3RvcEV4cGVyaW1lbnRSZXNwb25zZSIAEnYKEUFyY2hpdmVFeHBlcmltZW50Ei4uYnVja2V0ZWVyLmV4cGVyaW1lbnQuQXJjaGl2ZUV4cGVyaW1lbnRSZXF1ZXN0Gi8uYnVja2V0ZWVyLmV4cGVyaW1lbnQuQXJjaGl2ZUV4cGVyaW1lbnRSZXNwb25zZSIAEnMKEERlbGV0ZUV4cGVyaW1lbnQSLS5idWNrZXRlZXIuZXhwZXJpbWVudC5EZWxldGVFeHBlcmltZW50UmVxdWVzdBouLmJ1Y2tldGVlci5leHBlcmltZW50LkRlbGV0ZUV4cGVyaW1lbnRSZXNwb25zZSIAQjRaMmdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9leHBlcmltZW50YgZwcm90bzM= featureDescriptor: CscDChpwcm90by9mZWF0dXJlL2NsYXVzZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUi2gIKBkNsYXVzZRIOCgJpZBgBIAEoCVICaWQSHAoJYXR0cmlidXRlGAIgASgJUglhdHRyaWJ1dGUSPgoIb3BlcmF0b3IYAyABKA4yIi5idWNrZXRlZXIuZmVhdHVyZS5DbGF1c2UuT3BlcmF0b3JSCG9wZXJhdG9yEhYKBnZhbHVlcxgEIAMoCVIGdmFsdWVzIskBCghPcGVyYXRvchIKCgZFUVVBTFMQABIGCgJJThABEg0KCUVORFNfV0lUSBACEg8KC1NUQVJUU19XSVRIEAMSCwoHU0VHTUVOVBAEEgsKB0dSRUFURVIQBRIUChBHUkVBVEVSX09SX0VRVUFMEAYSCAoETEVTUxAHEhEKDUxFU1NfT1JfRVFVQUwQCBIKCgZCRUZPUkUQCRIJCgVBRlRFUhAKEhAKDEZFQVRVUkVfRkxBRxALEhMKD1BBUlRJQUxMWV9NQVRDSBAMQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMK5AEKGWdvb2dsZS9wcm90b2J1Zi9hbnkucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiI2CgNBbnkSGQoIdHlwZV91cmwYASABKAlSB3R5cGVVcmwSFAoFdmFsdWUYAiABKAxSBXZhbHVlQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzMKhgQKHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIiMKC0RvdWJsZVZhbHVlEhQKBXZhbHVlGAEgASgBUgV2YWx1ZSIiCgpGbG9hdFZhbHVlEhQKBXZhbHVlGAEgASgCUgV2YWx1ZSIiCgpJbnQ2NFZhbHVlEhQKBXZhbHVlGAEgASgDUgV2YWx1ZSIjCgtVSW50NjRWYWx1ZRIUCgV2YWx1ZRgBIAEoBFIFdmFsdWUiIgoKSW50MzJWYWx1ZRIUCgV2YWx1ZRgBIAEoBVIFdmFsdWUiIwoLVUludDMyVmFsdWUSFAoFdmFsdWUYASABKA1SBXZhbHVlIiEKCUJvb2xWYWx1ZRIUCgV2YWx1ZRgBIAEoCFIFdmFsdWUiIwoLU3RyaW5nVmFsdWUSFAoFdmFsdWUYASABKAlSBXZhbHVlIiIKCkJ5dGVzVmFsdWUSFAoFdmFsdWUYASABKAxSBXZhbHVlQoMBChNjb20uZ29vZ2xlLnByb3RvYnVmQg1XcmFwcGVyc1Byb3RvUAFaMWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3dyYXBwZXJzcGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMwq7BAoccHJvdG8vZmVhdHVyZS9zdHJhdGVneS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUiLQoNRml4ZWRTdHJhdGVneRIcCgl2YXJpYXRpb24YASABKAlSCXZhcmlhdGlvbiKiAQoPUm9sbG91dFN0cmF0ZWd5EkwKCnZhcmlhdGlvbnMYASADKAsyLC5idWNrZXRlZXIuZmVhdHVyZS5Sb2xsb3V0U3RyYXRlZ3kuVmFyaWF0aW9uUgp2YXJpYXRpb25zGkEKCVZhcmlhdGlvbhIcCgl2YXJpYXRpb24YASABKAlSCXZhcmlhdGlvbhIWCgZ3ZWlnaHQYAiABKAVSBndlaWdodCL4AQoIU3RyYXRlZ3kSNAoEdHlwZRgBIAEoDjIgLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5LlR5cGVSBHR5cGUSRwoOZml4ZWRfc3RyYXRlZ3kYAiABKAsyIC5idWNrZXRlZXIuZmVhdHVyZS5GaXhlZFN0cmF0ZWd5Ug1maXhlZFN0cmF0ZWd5Ek0KEHJvbGxvdXRfc3RyYXRlZ3kYAyABKAsyIi5idWNrZXRlZXIuZmVhdHVyZS5Sb2xsb3V0U3RyYXRlZ3lSD3JvbGxvdXRTdHJhdGVneSIeCgRUeXBlEgkKBUZJWEVEEAASCwoHUk9MTE9VVBABQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKqQIKGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGnByb3RvL2ZlYXR1cmUvY2xhdXNlLnByb3RvGhxwcm90by9mZWF0dXJlL3N0cmF0ZWd5LnByb3RvIoQBCgRSdWxlEg4KAmlkGAEgASgJUgJpZBI3CghzdHJhdGVneRgCIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5UghzdHJhdGVneRIzCgdjbGF1c2VzGAMgAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlUgdjbGF1c2VzQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKqAEKGnByb3RvL2ZlYXR1cmUvdGFyZ2V0LnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSI8CgZUYXJnZXQSHAoJdmFyaWF0aW9uGAEgASgJUgl2YXJpYXRpb24SFAoFdXNlcnMYAiADKAlSBXVzZXJzQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMK1gEKHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSJnCglWYXJpYXRpb24SDgoCaWQYASABKAlSAmlkEhQKBXZhbHVlGAIgASgJUgV2YWx1ZRISCgRuYW1lGAMgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCvQCCipwcm90by9mZWF0dXJlL2ZlYXR1cmVfbGFzdF91c2VkX2luZm8ucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlIvcBChNGZWF0dXJlTGFzdFVzZWRJbmZvEh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIYCgd2ZXJzaW9uGAIgASgFUgd2ZXJzaW9uEiAKDGxhc3RfdXNlZF9hdBgDIAEoA1IKbGFzdFVzZWRBdBIdCgpjcmVhdGVkX2F0GAQgASgDUgljcmVhdGVkQXQSMgoVY2xpZW50X29sZGVzdF92ZXJzaW9uGAUgASgJUhNjbGllbnRPbGRlc3RWZXJzaW9uEjIKFWNsaWVudF9sYXRlc3RfdmVyc2lvbhgGIAEoCVITY2xpZW50TGF0ZXN0VmVyc2lvbkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCsIBCiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUiUAoMUHJlcmVxdWlzaXRlEh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIhCgx2YXJpYXRpb25faWQYAiABKAlSC3ZhcmlhdGlvbklkQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKswwKG3Byb3RvL2ZlYXR1cmUvZmVhdHVyZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxoacHJvdG8vZmVhdHVyZS90YXJnZXQucHJvdG8aHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvGhxwcm90by9mZWF0dXJlL3N0cmF0ZWd5LnByb3RvGipwcm90by9mZWF0dXJlL2ZlYXR1cmVfbGFzdF91c2VkX2luZm8ucHJvdG8aIHByb3RvL2ZlYXR1cmUvcHJlcmVxdWlzaXRlLnByb3RvItIHCgdGZWF0dXJlEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhIYCgdlbmFibGVkGAQgASgIUgdlbmFibGVkEhgKB2RlbGV0ZWQYBSABKAhSB2RlbGV0ZWQSOQoWZXZhbHVhdGlvbl91bmRlbGF5YWJsZRgGIAEoCEICGAFSFWV2YWx1YXRpb25VbmRlbGF5YWJsZRIQCgN0dGwYByABKAVSA3R0bBIYCgd2ZXJzaW9uGAggASgFUgd2ZXJzaW9uEh0KCmNyZWF0ZWRfYXQYCSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAogASgDUgl1cGRhdGVkQXQSPAoKdmFyaWF0aW9ucxgLIAMoCzIcLmJ1Y2tldGVlci5mZWF0dXJlLlZhcmlhdGlvblIKdmFyaWF0aW9ucxIzCgd0YXJnZXRzGAwgAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuVGFyZ2V0Ugd0YXJnZXRzEi0KBXJ1bGVzGA0gAygLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIFcnVsZXMSRgoQZGVmYXVsdF9zdHJhdGVneRgOIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5Ug9kZWZhdWx0U3RyYXRlZ3kSIwoNb2ZmX3ZhcmlhdGlvbhgPIAEoCVIMb2ZmVmFyaWF0aW9uEhIKBHRhZ3MYECADKAlSBHRhZ3MSTAoObGFzdF91c2VkX2luZm8YESABKAsyJi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlTGFzdFVzZWRJbmZvUgxsYXN0VXNlZEluZm8SHgoKbWFpbnRhaW5lchgSIAEoCVIKbWFpbnRhaW5lchJPCg52YXJpYXRpb25fdHlwZRgTIAEoDjIoLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmUuVmFyaWF0aW9uVHlwZVINdmFyaWF0aW9uVHlwZRIaCghhcmNoaXZlZBgUIAEoCFIIYXJjaGl2ZWQSRQoNcHJlcmVxdWlzaXRlcxgVIAMoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVINcHJlcmVxdWlzaXRlcxIjCg1zYW1wbGluZ19zZWVkGBYgASgJUgxzYW1wbGluZ1NlZWQiPgoNVmFyaWF0aW9uVHlwZRIKCgZTVFJJTkcQABILCgdCT09MRUFOEAESCgoGTlVNQkVSEAISCAoESlNPThADIlIKCEZlYXR1cmVzEjYKCGZlYXR1cmVzGAEgAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIIZmVhdHVyZXMSDgoCaWQYAiABKAlSAmlkInMKEkVudmlyb25tZW50RmVhdHVyZRIlCg5lbnZpcm9ubWVudF9pZBgBIAEoCVINZW52aXJvbm1lbnRJZBI2CghmZWF0dXJlcxgCIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzImcKA1RhZxIOCgJpZBgBIAEoCVICaWQSHQoKY3JlYXRlZF9hdBgCIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYAyABKANSCXVwZGF0ZWRBdBISCgRuYW1lGAQgASgJUgRuYW1lQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKtQgKG3Byb3RvL2ZlYXR1cmUvc2VnbWVudC5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxobcHJvdG8vZmVhdHVyZS9mZWF0dXJlLnByb3RvIrQECgdTZWdtZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhItCgVydWxlcxgEIAMoCzIXLmJ1Y2tldGVlci5mZWF0dXJlLlJ1bGVSBXJ1bGVzEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSHAoHdmVyc2lvbhgHIAEoA0ICGAFSB3ZlcnNpb24SGAoHZGVsZXRlZBgIIAEoCFIHZGVsZXRlZBIuChNpbmNsdWRlZF91c2VyX2NvdW50GAkgASgDUhFpbmNsdWRlZFVzZXJDb3VudBIyChNleGNsdWRlZF91c2VyX2NvdW50GAogASgDQgIYAVIRZXhjbHVkZWRVc2VyQ291bnQSOQoGc3RhdHVzGAsgASgOMiEuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudC5TdGF0dXNSBnN0YXR1cxInChBpc19pbl91c2Vfc3RhdHVzGAwgASgIUg1pc0luVXNlU3RhdHVzEjYKCGZlYXR1cmVzGA0gAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIIZmVhdHVyZXMiPgoGU3RhdHVzEgsKB0lOSVRJQUwQABINCglVUExPQURJTkcQARIMCghTVUNFRURFRBACEgoKBkZBSUxFRBADItQBCgtTZWdtZW50VXNlchIOCgJpZBgBIAEoCVICaWQSHQoKc2VnbWVudF9pZBgCIAEoCVIJc2VnbWVudElkEhcKB3VzZXJfaWQYAyABKAlSBnVzZXJJZBI6CgVzdGF0ZRgEIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZRIYCgdkZWxldGVkGAUgASgIUgdkZWxldGVkIicKBVN0YXRlEgwKCElOQ0xVREVEEAASEAoIRVhDTFVERUQQARoCCAEiggEKDFNlZ21lbnRVc2VycxIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSNAoFdXNlcnMYAiADKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlclIFdXNlcnMSHQoKdXBkYXRlZF9hdBgDIAEoA1IJdXBkYXRlZEF0QjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKoAUKIHByb3RvL2ZlYXR1cmUvZmxhZ190cmlnZ2VyLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSKtBAoLRmxhZ1RyaWdnZXISDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBI3CgR0eXBlGAQgASgOMiMuYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXIuVHlwZVIEdHlwZRI9CgZhY3Rpb24YBSABKA4yJS5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlci5BY3Rpb25SBmFjdGlvbhIgCgtkZXNjcmlwdGlvbhgGIAEoCVILZGVzY3JpcHRpb24SIwoNdHJpZ2dlcl9jb3VudBgHIAEoBVIMdHJpZ2dlckNvdW50EioKEWxhc3RfdHJpZ2dlcmVkX2F0GAggASgDUg9sYXN0VHJpZ2dlcmVkQXQSFAoFdG9rZW4YCSABKAlSBXRva2VuEhoKCGRpc2FibGVkGAogASgIUghkaXNhYmxlZBIdCgpjcmVhdGVkX2F0GAsgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgMIAEoA1IJdXBkYXRlZEF0EiUKDmVudmlyb25tZW50X2lkGA0gASgJUg1lbnZpcm9ubWVudElkIioKBFR5cGUSEAoMVHlwZV9VTktOT1dOEAASEAoMVHlwZV9XRUJIT09LEAEiOwoGQWN0aW9uEhIKDkFjdGlvbl9VTktOT1dOEAASDQoJQWN0aW9uX09OEAESDgoKQWN0aW9uX09GRhACSgQIAxAEQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKwCMKG3Byb3RvL2ZlYXR1cmUvY29tbWFuZC5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGWdvb2dsZS9wcm90b2J1Zi9hbnkucHJvdG8aHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxoacHJvdG8vZmVhdHVyZS9jbGF1c2UucHJvdG8aG3Byb3RvL2ZlYXR1cmUvZmVhdHVyZS5wcm90bxoYcHJvdG8vZmVhdHVyZS9ydWxlLnByb3RvGh1wcm90by9mZWF0dXJlL3ZhcmlhdGlvbi5wcm90bxoccHJvdG8vZmVhdHVyZS9zdHJhdGVneS5wcm90bxobcHJvdG8vZmVhdHVyZS9zZWdtZW50LnByb3RvGiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90bxogcHJvdG8vZmVhdHVyZS9mbGFnX3RyaWdnZXIucHJvdG8iOQoHQ29tbWFuZBIuCgdjb21tYW5kGAEgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIHY29tbWFuZCK1AwoUQ3JlYXRlRmVhdHVyZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEjwKCnZhcmlhdGlvbnMYBCADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSEgoEdGFncxgFIAMoCVIEdGFncxJYChpkZWZhdWx0X29uX3ZhcmlhdGlvbl9pbmRleBgGIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlUhdkZWZhdWx0T25WYXJpYXRpb25JbmRleBJaChtkZWZhdWx0X29mZl92YXJpYXRpb25faW5kZXgYByABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIYZGVmYXVsdE9mZlZhcmlhdGlvbkluZGV4Ek8KDnZhcmlhdGlvbl90eXBlGAggASgOMiguYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZS5WYXJpYXRpb25UeXBlUg12YXJpYXRpb25UeXBlIhcKFUFyY2hpdmVGZWF0dXJlQ29tbWFuZCIZChdVbmFyY2hpdmVGZWF0dXJlQ29tbWFuZCIWChREZWxldGVGZWF0dXJlQ29tbWFuZCIqChRSZW5hbWVGZWF0dXJlQ29tbWFuZBISCgRuYW1lGAEgASgJUgRuYW1lIjwKGENoYW5nZURlc2NyaXB0aW9uQ29tbWFuZBIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24iuAEKKUNoYW5nZUJ1bGtVcGxvYWRTZWdtZW50VXNlcnNTdGF0dXNDb21tYW5kEjkKBnN0YXR1cxgBIAEoDjIhLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnQuU3RhdHVzUgZzdGF0dXMSOgoFc3RhdGUYAiABKA4yJC5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlci5TdGF0ZVIFc3RhdGUSFAoFY291bnQYAyABKANSBWNvdW50IiEKDUFkZFRhZ0NvbW1hbmQSEAoDdGFnGAEgASgJUgN0YWciJAoQUmVtb3ZlVGFnQ29tbWFuZBIQCgN0YWcYASABKAlSA3RhZyIWChRFbmFibGVGZWF0dXJlQ29tbWFuZCIXChVEaXNhYmxlRmVhdHVyZUNvbW1hbmQiYQoTQWRkVmFyaWF0aW9uQ29tbWFuZBIUCgV2YWx1ZRgBIAEoCVIFdmFsdWUSEgoEbmFtZRgCIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgDIAEoCVILZGVzY3JpcHRpb24iKAoWUmVtb3ZlVmFyaWF0aW9uQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQiQwobQ2hhbmdlVmFyaWF0aW9uVmFsdWVDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIUCgV2YWx1ZRgCIAEoCVIFdmFsdWUiQAoaQ2hhbmdlVmFyaWF0aW9uTmFtZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiVQohQ2hhbmdlVmFyaWF0aW9uRGVzY3JpcHRpb25Db21tYW5kEg4KAmlkGAEgASgJUgJpZBIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24iKwoZQ2hhbmdlT2ZmVmFyaWF0aW9uQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQiPwoZQWRkVXNlclRvVmFyaWF0aW9uQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQSEgoEdXNlchgCIAEoCVIEdXNlciJECh5SZW1vdmVVc2VyRnJvbVZhcmlhdGlvbkNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhIKBHVzZXIYAiABKAlSBHVzZXIiVwocQ2hhbmdlRGVmYXVsdFN0cmF0ZWd5Q29tbWFuZBI3CghzdHJhdGVneRgBIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5UghzdHJhdGVneSI9Cg5BZGRSdWxlQ29tbWFuZBIrCgRydWxlGAEgASgLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIEcnVsZSJ9ChlDaGFuZ2VSdWxlU3RyYXRlZ3lDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSNwoIc3RyYXRlZ3kYAyABKAsyGy5idWNrZXRlZXIuZmVhdHVyZS5TdHJhdGVneVIIc3RyYXRlZ3kiNAoXQ2hhbmdlUnVsZXNPcmRlckNvbW1hbmQSGQoIcnVsZV9pZHMYAiADKAlSB3J1bGVJZHMiIwoRRGVsZXRlUnVsZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkIl4KEEFkZENsYXVzZUNvbW1hbmQSFwoHcnVsZV9pZBgBIAEoCVIGcnVsZUlkEjEKBmNsYXVzZRgCIAEoCzIZLmJ1Y2tldGVlci5mZWF0dXJlLkNsYXVzZVIGY2xhdXNlIj4KE0RlbGV0ZUNsYXVzZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZCJlChxDaGFuZ2VDbGF1c2VBdHRyaWJ1dGVDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSHAoJYXR0cmlidXRlGAMgASgJUglhdHRyaWJ1dGUihgEKG0NoYW5nZUNsYXVzZU9wZXJhdG9yQ29tbWFuZBIOCgJpZBgBIAEoCVICaWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEj4KCG9wZXJhdG9yGAMgASgOMiIuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlLk9wZXJhdG9yUghvcGVyYXRvciJWChVBZGRDbGF1c2VWYWx1ZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIUCgV2YWx1ZRgDIAEoCVIFdmFsdWUiWQoYUmVtb3ZlQ2xhdXNlVmFsdWVDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSFAoFdmFsdWUYAyABKAlSBXZhbHVlIoMBChpDaGFuZ2VGaXhlZFN0cmF0ZWd5Q29tbWFuZBIOCgJpZBgBIAEoCVICaWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEjwKCHN0cmF0ZWd5GAMgASgLMiAuYnVja2V0ZWVyLmZlYXR1cmUuRml4ZWRTdHJhdGVneVIIc3RyYXRlZ3kihwEKHENoYW5nZVJvbGxvdXRTdHJhdGVneUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBI+CghzdHJhdGVneRgDIAEoCzIiLmJ1Y2tldGVlci5mZWF0dXJlLlJvbGxvdXRTdHJhdGVneVIIc3RyYXRlZ3kiTAoUQ3JlYXRlU2VnbWVudENvbW1hbmQSEgoEbmFtZRgBIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24iFgoURGVsZXRlU2VnbWVudENvbW1hbmQiLgoYQ2hhbmdlU2VnbWVudE5hbWVDb21tYW5kEhIKBG5hbWUYASABKAlSBG5hbWUiQwofQ2hhbmdlU2VnbWVudERlc2NyaXB0aW9uQ29tbWFuZBIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24ibgoVQWRkU2VnbWVudFVzZXJDb21tYW5kEhkKCHVzZXJfaWRzGAEgAygJUgd1c2VySWRzEjoKBXN0YXRlGAIgASgOMiQuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXIuU3RhdGVSBXN0YXRlInEKGERlbGV0ZVNlZ21lbnRVc2VyQ29tbWFuZBIZCgh1c2VyX2lkcxgBIAMoCVIHdXNlcklkcxI6CgVzdGF0ZRgCIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZSJvCh1CdWxrVXBsb2FkU2VnbWVudFVzZXJzQ29tbWFuZBISCgRkYXRhGAEgASgMUgRkYXRhEjoKBXN0YXRlGAIgASgOMiQuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXIuU3RhdGVSBXN0YXRlIiAKHkluY3JlbWVudEZlYXR1cmVWZXJzaW9uQ29tbWFuZCJCChNDbG9uZUZlYXR1cmVDb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAIgASgJUg1lbnZpcm9ubWVudElkSgQIARACIhoKGFJlc2V0U2FtcGxpbmdTZWVkQ29tbWFuZCJdChZBZGRQcmVyZXF1aXNpdGVDb21tYW5kEkMKDHByZXJlcXVpc2l0ZRgBIAEoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVIMcHJlcmVxdWlzaXRlIjoKGVJlbW92ZVByZXJlcXVpc2l0ZUNvbW1hbmQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkImkKIkNoYW5nZVByZXJlcXVpc2l0ZVZhcmlhdGlvbkNvbW1hbmQSQwoMcHJlcmVxdWlzaXRlGAEgASgLMh8uYnVja2V0ZWVyLmZlYXR1cmUuUHJlcmVxdWlzaXRlUgxwcmVyZXF1aXNpdGUi0wEKGENyZWF0ZUZsYWdUcmlnZ2VyQ29tbWFuZBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSNwoEdHlwZRgCIAEoDjIjLmJ1Y2tldGVlci5mZWF0dXJlLkZsYWdUcmlnZ2VyLlR5cGVSBHR5cGUSPQoGYWN0aW9uGAMgASgOMiUuYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXIuQWN0aW9uUgZhY3Rpb24SIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uIhkKF1Jlc2V0RmxhZ1RyaWdnZXJDb21tYW5kIkcKI0NoYW5nZUZsYWdUcmlnZ2VyRGVzY3JpcHRpb25Db21tYW5kEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbiIaChhFbmFibGVGbGFnVHJpZ2dlckNvbW1hbmQiGwoZRGlzYWJsZUZsYWdUcmlnZ2VyQ29tbWFuZCIaChhEZWxldGVGbGFnVHJpZ2dlckNvbW1hbmQiHwodVXBkYXRlRmxhZ1RyaWdnZXJVc2FnZUNvbW1hbmRCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwqeAgoacHJvdG8vZmVhdHVyZS9yZWFzb24ucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlIrEBCgZSZWFzb24SMgoEdHlwZRgBIAEoDjIeLmJ1Y2tldGVlci5mZWF0dXJlLlJlYXNvbi5UeXBlUgR0eXBlEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZCJaCgRUeXBlEgoKBlRBUkdFVBAAEggKBFJVTEUQARILCgdERUZBVUxUEAMSCgoGQ0xJRU5UEAQSEQoNT0ZGX1ZBUklBVElPThAFEhAKDFBSRVJFUVVJU0lURRAGQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKmAYKHnByb3RvL2ZlYXR1cmUvZXZhbHVhdGlvbi5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvGhpwcm90by9mZWF0dXJlL3JlYXNvbi5wcm90byLjAgoKRXZhbHVhdGlvbhIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEicKD2ZlYXR1cmVfdmVyc2lvbhgDIAEoBVIOZmVhdHVyZVZlcnNpb24SFwoHdXNlcl9pZBgEIAEoCVIGdXNlcklkEiEKDHZhcmlhdGlvbl9pZBgFIAEoCVILdmFyaWF0aW9uSWQSPgoJdmFyaWF0aW9uGAYgASgLMhwuYnVja2V0ZWVyLmZlYXR1cmUuVmFyaWF0aW9uQgIYAVIJdmFyaWF0aW9uEjEKBnJlYXNvbhgHIAEoCzIZLmJ1Y2tldGVlci5mZWF0dXJlLlJlYXNvblIGcmVhc29uEicKD3ZhcmlhdGlvbl92YWx1ZRgIIAEoCVIOdmFyaWF0aW9uVmFsdWUSJQoOdmFyaWF0aW9uX25hbWUYCSABKAlSDXZhcmlhdGlvbk5hbWUihgIKD1VzZXJFdmFsdWF0aW9ucxISCgJpZBgBIAEoCUICGAFSAmlkEj8KC2V2YWx1YXRpb25zGAIgAygLMh0uYnVja2V0ZWVyLmZlYXR1cmUuRXZhbHVhdGlvblILZXZhbHVhdGlvbnMSHQoKY3JlYXRlZF9hdBgDIAEoA1IJY3JlYXRlZEF0EjAKFGFyY2hpdmVkX2ZlYXR1cmVfaWRzGAQgAygJUhJhcmNoaXZlZEZlYXR1cmVJZHMSIQoMZm9yY2VfdXBkYXRlGAUgASgIUgtmb3JjZVVwZGF0ZSIqCgVTdGF0ZRIKCgZRVUVVRUQQABILCgdQQVJUSUFMEAESCAoERlVMTBACQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKhwUKFWdvb2dsZS9hcGkvaHR0cC5wcm90bxIKZ29vZ2xlLmFwaSJ5CgRIdHRwEioKBXJ1bGVzGAEgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZVIFcnVsZXMSRQofZnVsbHlfZGVjb2RlX3Jlc2VydmVkX2V4cGFuc2lvbhgCIAEoCFIcZnVsbHlEZWNvZGVSZXNlcnZlZEV4cGFuc2lvbiK1AgoISHR0cFJ1bGUSGgoIc2VsZWN0b3IYASABKAlSCHNlbGVjdG9yEhIKA2dldBgCIAEoCUgAUgNnZXQSEgoDcHV0GAMgASgJSABSA3B1dBIUCgRwb3N0GAQgASgJSABSBHBvc3QSGAoGZGVsZXRlGAUgASgJSABSBmRlbGV0ZRIWCgVwYXRjaBgGIAEoCUgAUgVwYXRjaBI3CgZjdXN0b20YCCABKAsyHS5nb29nbGUuYXBpLkN1c3RvbUh0dHBQYXR0ZXJuSABSBmN1c3RvbRISCgRib2R5GAcgASgJUgRib2R5EkUKE2FkZGl0aW9uYWxfYmluZGluZ3MYCyADKAsyFC5nb29nbGUuYXBpLkh0dHBSdWxlUhJhZGRpdGlvbmFsQmluZGluZ3NCCQoHcGF0dGVybiI7ChFDdXN0b21IdHRwUGF0dGVybhISCgRraW5kGAEgASgJUgRraW5kEhIKBHBhdGgYAiABKAlSBHBhdGhCagoOY29tLmdvb2dsZS5hcGlCCUh0dHBQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc/gBAaICBEdBUEliBnByb3RvMwrhRgogZ29vZ2xlL3Byb3RvYnVmL2Rlc2NyaXB0b3IucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiJNChFGaWxlRGVzY3JpcHRvclNldBI4CgRmaWxlGAEgAygLMiQuZ29vZ2xlLnByb3RvYnVmLkZpbGVEZXNjcmlwdG9yUHJvdG9SBGZpbGUi/gQKE0ZpbGVEZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRIYCgdwYWNrYWdlGAIgASgJUgdwYWNrYWdlEh4KCmRlcGVuZGVuY3kYAyADKAlSCmRlcGVuZGVuY3kSKwoRcHVibGljX2RlcGVuZGVuY3kYCiADKAVSEHB1YmxpY0RlcGVuZGVuY3kSJwoPd2Vha19kZXBlbmRlbmN5GAsgAygFUg53ZWFrRGVwZW5kZW5jeRJDCgxtZXNzYWdlX3R5cGUYBCADKAsyIC5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvUgttZXNzYWdlVHlwZRJBCgllbnVtX3R5cGUYBSADKAsyJC5nb29nbGUucHJvdG9idWYuRW51bURlc2NyaXB0b3JQcm90b1IIZW51bVR5cGUSQQoHc2VydmljZRgGIAMoCzInLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlRGVzY3JpcHRvclByb3RvUgdzZXJ2aWNlEkMKCWV4dGVuc2lvbhgHIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90b1IJZXh0ZW5zaW9uEjYKB29wdGlvbnMYCCABKAsyHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnNSB29wdGlvbnMSSQoQc291cmNlX2NvZGVfaW5mbxgJIAEoCzIfLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb2RlSW5mb1IOc291cmNlQ29kZUluZm8SFgoGc3ludGF4GAwgASgJUgZzeW50YXgSGAoHZWRpdGlvbhgNIAEoCVIHZWRpdGlvbiK5BgoPRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSOwoFZmllbGQYAiADKAsyJS5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG9SBWZpZWxkEkMKCWV4dGVuc2lvbhgGIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90b1IJZXh0ZW5zaW9uEkEKC25lc3RlZF90eXBlGAMgAygLMiAuZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90b1IKbmVzdGVkVHlwZRJBCgllbnVtX3R5cGUYBCADKAsyJC5nb29nbGUucHJvdG9idWYuRW51bURlc2NyaXB0b3JQcm90b1IIZW51bVR5cGUSWAoPZXh0ZW5zaW9uX3JhbmdlGAUgAygLMi8uZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90by5FeHRlbnNpb25SYW5nZVIOZXh0ZW5zaW9uUmFuZ2USRAoKb25lb2ZfZGVjbBgIIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5PbmVvZkRlc2NyaXB0b3JQcm90b1IJb25lb2ZEZWNsEjkKB29wdGlvbnMYByABKAsyHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnNSB29wdGlvbnMSVQoOcmVzZXJ2ZWRfcmFuZ2UYCSADKAsyLi5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvLlJlc2VydmVkUmFuZ2VSDXJlc2VydmVkUmFuZ2USIwoNcmVzZXJ2ZWRfbmFtZRgKIAMoCVIMcmVzZXJ2ZWROYW1lGnoKDkV4dGVuc2lvblJhbmdlEhQKBXN0YXJ0GAEgASgFUgVzdGFydBIQCgNlbmQYAiABKAVSA2VuZBJACgdvcHRpb25zGAMgASgLMiYuZ29vZ2xlLnByb3RvYnVmLkV4dGVuc2lvblJhbmdlT3B0aW9uc1IHb3B0aW9ucxo3Cg1SZXNlcnZlZFJhbmdlEhQKBXN0YXJ0GAEgASgFUgVzdGFydBIQCgNlbmQYAiABKAVSA2VuZCKtBAoVRXh0ZW5zaW9uUmFuZ2VPcHRpb25zElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uElkKC2RlY2xhcmF0aW9uGAIgAygLMjIuZ29vZ2xlLnByb3RvYnVmLkV4dGVuc2lvblJhbmdlT3B0aW9ucy5EZWNsYXJhdGlvbkIDiAECUgtkZWNsYXJhdGlvbhJoCgx2ZXJpZmljYXRpb24YAyABKA4yOC5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2VPcHRpb25zLlZlcmlmaWNhdGlvblN0YXRlOgpVTlZFUklGSUVEUgx2ZXJpZmljYXRpb24aswEKC0RlY2xhcmF0aW9uEhYKBm51bWJlchgBIAEoBVIGbnVtYmVyEhsKCWZ1bGxfbmFtZRgCIAEoCVIIZnVsbE5hbWUSEgoEdHlwZRgDIAEoCVIEdHlwZRIjCgtpc19yZXBlYXRlZBgEIAEoCEICGAFSCmlzUmVwZWF0ZWQSGgoIcmVzZXJ2ZWQYBSABKAhSCHJlc2VydmVkEhoKCHJlcGVhdGVkGAYgASgIUghyZXBlYXRlZCI0ChFWZXJpZmljYXRpb25TdGF0ZRIPCgtERUNMQVJBVElPThAAEg4KClVOVkVSSUZJRUQQASoJCOgHEICAgIACIsEGChRGaWVsZERlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEhYKBm51bWJlchgDIAEoBVIGbnVtYmVyEkEKBWxhYmVsGAQgASgOMisuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLkxhYmVsUgVsYWJlbBI+CgR0eXBlGAUgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGVSBHR5cGUSGwoJdHlwZV9uYW1lGAYgASgJUgh0eXBlTmFtZRIaCghleHRlbmRlZRgCIAEoCVIIZXh0ZW5kZWUSIwoNZGVmYXVsdF92YWx1ZRgHIAEoCVIMZGVmYXVsdFZhbHVlEh8KC29uZW9mX2luZGV4GAkgASgFUgpvbmVvZkluZGV4EhsKCWpzb25fbmFtZRgKIAEoCVIIanNvbk5hbWUSNwoHb3B0aW9ucxgIIAEoCzIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnNSB29wdGlvbnMSJwoPcHJvdG8zX29wdGlvbmFsGBEgASgIUg5wcm90bzNPcHRpb25hbCK2AgoEVHlwZRIPCgtUWVBFX0RPVUJMRRABEg4KClRZUEVfRkxPQVQQAhIOCgpUWVBFX0lOVDY0EAMSDwoLVFlQRV9VSU5UNjQQBBIOCgpUWVBFX0lOVDMyEAUSEAoMVFlQRV9GSVhFRDY0EAYSEAoMVFlQRV9GSVhFRDMyEAcSDQoJVFlQRV9CT09MEAgSDwoLVFlQRV9TVFJJTkcQCRIOCgpUWVBFX0dST1VQEAoSEAoMVFlQRV9NRVNTQUdFEAsSDgoKVFlQRV9CWVRFUxAMEg8KC1RZUEVfVUlOVDMyEA0SDQoJVFlQRV9FTlVNEA4SEQoNVFlQRV9TRklYRUQzMhAPEhEKDVRZUEVfU0ZJWEVENjQQEBIPCgtUWVBFX1NJTlQzMhAREg8KC1RZUEVfU0lOVDY0EBIiQwoFTGFiZWwSEgoOTEFCRUxfT1BUSU9OQUwQARISCg5MQUJFTF9SRVFVSVJFRBACEhIKDkxBQkVMX1JFUEVBVEVEEAMiYwoUT25lb2ZEZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRI3CgdvcHRpb25zGAIgASgLMh0uZ29vZ2xlLnByb3RvYnVmLk9uZW9mT3B0aW9uc1IHb3B0aW9ucyLjAgoTRW51bURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEj8KBXZhbHVlGAIgAygLMikuZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZURlc2NyaXB0b3JQcm90b1IFdmFsdWUSNgoHb3B0aW9ucxgDIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5FbnVtT3B0aW9uc1IHb3B0aW9ucxJdCg5yZXNlcnZlZF9yYW5nZRgEIAMoCzI2Lmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvLkVudW1SZXNlcnZlZFJhbmdlUg1yZXNlcnZlZFJhbmdlEiMKDXJlc2VydmVkX25hbWUYBSADKAlSDHJlc2VydmVkTmFtZRo7ChFFbnVtUmVzZXJ2ZWRSYW5nZRIUCgVzdGFydBgBIAEoBVIFc3RhcnQSEAoDZW5kGAIgASgFUgNlbmQigwEKGEVudW1WYWx1ZURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEhYKBm51bWJlchgCIAEoBVIGbnVtYmVyEjsKB29wdGlvbnMYAyABKAsyIS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlT3B0aW9uc1IHb3B0aW9ucyKnAQoWU2VydmljZURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEj4KBm1ldGhvZBgCIAMoCzImLmdvb2dsZS5wcm90b2J1Zi5NZXRob2REZXNjcmlwdG9yUHJvdG9SBm1ldGhvZBI5CgdvcHRpb25zGAMgASgLMh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zUgdvcHRpb25zIokCChVNZXRob2REZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRIdCgppbnB1dF90eXBlGAIgASgJUglpbnB1dFR5cGUSHwoLb3V0cHV0X3R5cGUYAyABKAlSCm91dHB1dFR5cGUSOAoHb3B0aW9ucxgEIAEoCzIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zUgdvcHRpb25zEjAKEGNsaWVudF9zdHJlYW1pbmcYBSABKAg6BWZhbHNlUg9jbGllbnRTdHJlYW1pbmcSMAoQc2VydmVyX3N0cmVhbWluZxgGIAEoCDoFZmFsc2VSD3NlcnZlclN0cmVhbWluZyKRCQoLRmlsZU9wdGlvbnMSIQoMamF2YV9wYWNrYWdlGAEgASgJUgtqYXZhUGFja2FnZRIwChRqYXZhX291dGVyX2NsYXNzbmFtZRgIIAEoCVISamF2YU91dGVyQ2xhc3NuYW1lEjUKE2phdmFfbXVsdGlwbGVfZmlsZXMYCiABKAg6BWZhbHNlUhFqYXZhTXVsdGlwbGVGaWxlcxJECh1qYXZhX2dlbmVyYXRlX2VxdWFsc19hbmRfaGFzaBgUIAEoCEICGAFSGWphdmFHZW5lcmF0ZUVxdWFsc0FuZEhhc2gSOgoWamF2YV9zdHJpbmdfY2hlY2tfdXRmOBgbIAEoCDoFZmFsc2VSE2phdmFTdHJpbmdDaGVja1V0ZjgSUwoMb3B0aW1pemVfZm9yGAkgASgOMikuZ29vZ2xlLnByb3RvYnVmLkZpbGVPcHRpb25zLk9wdGltaXplTW9kZToFU1BFRURSC29wdGltaXplRm9yEh0KCmdvX3BhY2thZ2UYCyABKAlSCWdvUGFja2FnZRI1ChNjY19nZW5lcmljX3NlcnZpY2VzGBAgASgIOgVmYWxzZVIRY2NHZW5lcmljU2VydmljZXMSOQoVamF2YV9nZW5lcmljX3NlcnZpY2VzGBEgASgIOgVmYWxzZVITamF2YUdlbmVyaWNTZXJ2aWNlcxI1ChNweV9nZW5lcmljX3NlcnZpY2VzGBIgASgIOgVmYWxzZVIRcHlHZW5lcmljU2VydmljZXMSNwoUcGhwX2dlbmVyaWNfc2VydmljZXMYKiABKAg6BWZhbHNlUhJwaHBHZW5lcmljU2VydmljZXMSJQoKZGVwcmVjYXRlZBgXIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSLgoQY2NfZW5hYmxlX2FyZW5hcxgfIAEoCDoEdHJ1ZVIOY2NFbmFibGVBcmVuYXMSKgoRb2JqY19jbGFzc19wcmVmaXgYJCABKAlSD29iamNDbGFzc1ByZWZpeBIpChBjc2hhcnBfbmFtZXNwYWNlGCUgASgJUg9jc2hhcnBOYW1lc3BhY2USIQoMc3dpZnRfcHJlZml4GCcgASgJUgtzd2lmdFByZWZpeBIoChBwaHBfY2xhc3NfcHJlZml4GCggASgJUg5waHBDbGFzc1ByZWZpeBIjCg1waHBfbmFtZXNwYWNlGCkgASgJUgxwaHBOYW1lc3BhY2USNAoWcGhwX21ldGFkYXRhX25hbWVzcGFjZRgsIAEoCVIUcGhwTWV0YWRhdGFOYW1lc3BhY2USIQoMcnVieV9wYWNrYWdlGC0gASgJUgtydWJ5UGFja2FnZRJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiI6CgxPcHRpbWl6ZU1vZGUSCQoFU1BFRUQQARINCglDT0RFX1NJWkUQAhIQCgxMSVRFX1JVTlRJTUUQAyoJCOgHEICAgIACSgQIJhAnIrsDCg5NZXNzYWdlT3B0aW9ucxI8ChdtZXNzYWdlX3NldF93aXJlX2Zvcm1hdBgBIAEoCDoFZmFsc2VSFG1lc3NhZ2VTZXRXaXJlRm9ybWF0EkwKH25vX3N0YW5kYXJkX2Rlc2NyaXB0b3JfYWNjZXNzb3IYAiABKAg6BWZhbHNlUhxub1N0YW5kYXJkRGVzY3JpcHRvckFjY2Vzc29yEiUKCmRlcHJlY2F0ZWQYAyABKAg6BWZhbHNlUgpkZXByZWNhdGVkEhsKCW1hcF9lbnRyeRgHIAEoCFIIbWFwRW50cnkSVgomZGVwcmVjYXRlZF9sZWdhY3lfanNvbl9maWVsZF9jb25mbGljdHMYCyABKAhCAhgBUiJkZXByZWNhdGVkTGVnYWN5SnNvbkZpZWxkQ29uZmxpY3RzElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAJKBAgEEAVKBAgFEAZKBAgGEAdKBAgIEAlKBAgJEAoihQkKDEZpZWxkT3B0aW9ucxJBCgVjdHlwZRgBIAEoDjIjLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuQ1R5cGU6BlNUUklOR1IFY3R5cGUSFgoGcGFja2VkGAIgASgIUgZwYWNrZWQSRwoGanN0eXBlGAYgASgOMiQuZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5KU1R5cGU6CUpTX05PUk1BTFIGanN0eXBlEhkKBGxhenkYBSABKAg6BWZhbHNlUgRsYXp5Ei4KD3VudmVyaWZpZWRfbGF6eRgPIAEoCDoFZmFsc2VSDnVudmVyaWZpZWRMYXp5EiUKCmRlcHJlY2F0ZWQYAyABKAg6BWZhbHNlUgpkZXByZWNhdGVkEhkKBHdlYWsYCiABKAg6BWZhbHNlUgR3ZWFrEigKDGRlYnVnX3JlZGFjdBgQIAEoCDoFZmFsc2VSC2RlYnVnUmVkYWN0EksKCXJldGVudGlvbhgRIAEoDjItLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuT3B0aW9uUmV0ZW50aW9uUglyZXRlbnRpb24SSgoGdGFyZ2V0GBIgASgOMi4uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5PcHRpb25UYXJnZXRUeXBlQgIYAVIGdGFyZ2V0EkgKB3RhcmdldHMYEyADKA4yLi5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLk9wdGlvblRhcmdldFR5cGVSB3RhcmdldHMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24iLwoFQ1R5cGUSCgoGU1RSSU5HEAASCAoEQ09SRBABEhAKDFNUUklOR19QSUVDRRACIjUKBkpTVHlwZRINCglKU19OT1JNQUwQABINCglKU19TVFJJTkcQARINCglKU19OVU1CRVIQAiJVCg9PcHRpb25SZXRlbnRpb24SFQoRUkVURU5USU9OX1VOS05PV04QABIVChFSRVRFTlRJT05fUlVOVElNRRABEhQKEFJFVEVOVElPTl9TT1VSQ0UQAiKMAgoQT3B0aW9uVGFyZ2V0VHlwZRIXChNUQVJHRVRfVFlQRV9VTktOT1dOEAASFAoQVEFSR0VUX1RZUEVfRklMRRABEh8KG1RBUkdFVF9UWVBFX0VYVEVOU0lPTl9SQU5HRRACEhcKE1RBUkdFVF9UWVBFX01FU1NBR0UQAxIVChFUQVJHRVRfVFlQRV9GSUVMRBAEEhUKEVRBUkdFVF9UWVBFX09ORU9GEAUSFAoQVEFSR0VUX1RZUEVfRU5VTRAGEhoKFlRBUkdFVF9UWVBFX0VOVU1fRU5UUlkQBxIXChNUQVJHRVRfVFlQRV9TRVJWSUNFEAgSFgoSVEFSR0VUX1RZUEVfTUVUSE9EEAkqCQjoBxCAgICAAkoECAQQBSJzCgxPbmVvZk9wdGlvbnMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiKYAgoLRW51bU9wdGlvbnMSHwoLYWxsb3dfYWxpYXMYAiABKAhSCmFsbG93QWxpYXMSJQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSVgomZGVwcmVjYXRlZF9sZWdhY3lfanNvbl9maWVsZF9jb25mbGljdHMYBiABKAhCAhgBUiJkZXByZWNhdGVkTGVnYWN5SnNvbkZpZWxkQ29uZmxpY3RzElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAJKBAgFEAYingEKEEVudW1WYWx1ZU9wdGlvbnMSJQoKZGVwcmVjYXRlZBgBIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiKcAQoOU2VydmljZU9wdGlvbnMSJQoKZGVwcmVjYXRlZBghIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiLgAgoNTWV0aG9kT3B0aW9ucxIlCgpkZXByZWNhdGVkGCEgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJxChFpZGVtcG90ZW5jeV9sZXZlbBgiIAEoDjIvLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zLklkZW1wb3RlbmN5TGV2ZWw6E0lERU1QT1RFTkNZX1VOS05PV05SEGlkZW1wb3RlbmN5TGV2ZWwSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24iUAoQSWRlbXBvdGVuY3lMZXZlbBIXChNJREVNUE9URU5DWV9VTktOT1dOEAASEwoPTk9fU0lERV9FRkZFQ1RTEAESDgoKSURFTVBPVEVOVBACKgkI6AcQgICAgAIimgMKE1VuaW50ZXJwcmV0ZWRPcHRpb24SQQoEbmFtZRgCIAMoCzItLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uLk5hbWVQYXJ0UgRuYW1lEikKEGlkZW50aWZpZXJfdmFsdWUYAyABKAlSD2lkZW50aWZpZXJWYWx1ZRIsChJwb3NpdGl2ZV9pbnRfdmFsdWUYBCABKARSEHBvc2l0aXZlSW50VmFsdWUSLAoSbmVnYXRpdmVfaW50X3ZhbHVlGAUgASgDUhBuZWdhdGl2ZUludFZhbHVlEiEKDGRvdWJsZV92YWx1ZRgGIAEoAVILZG91YmxlVmFsdWUSIQoMc3RyaW5nX3ZhbHVlGAcgASgMUgtzdHJpbmdWYWx1ZRInCg9hZ2dyZWdhdGVfdmFsdWUYCCABKAlSDmFnZ3JlZ2F0ZVZhbHVlGkoKCE5hbWVQYXJ0EhsKCW5hbWVfcGFydBgBIAIoCVIIbmFtZVBhcnQSIQoMaXNfZXh0ZW5zaW9uGAIgAigIUgtpc0V4dGVuc2lvbiKnAgoOU291cmNlQ29kZUluZm8SRAoIbG9jYXRpb24YASADKAsyKC5nb29nbGUucHJvdG9idWYuU291cmNlQ29kZUluZm8uTG9jYXRpb25SCGxvY2F0aW9uGs4BCghMb2NhdGlvbhIWCgRwYXRoGAEgAygFQgIQAVIEcGF0aBIWCgRzcGFuGAIgAygFQgIQAVIEc3BhbhIpChBsZWFkaW5nX2NvbW1lbnRzGAMgASgJUg9sZWFkaW5nQ29tbWVudHMSKwoRdHJhaWxpbmdfY29tbWVudHMYBCABKAlSEHRyYWlsaW5nQ29tbWVudHMSOgoZbGVhZGluZ19kZXRhY2hlZF9jb21tZW50cxgGIAMoCVIXbGVhZGluZ0RldGFjaGVkQ29tbWVudHMi0AIKEUdlbmVyYXRlZENvZGVJbmZvEk0KCmFubm90YXRpb24YASADKAsyLS5nb29nbGUucHJvdG9idWYuR2VuZXJhdGVkQ29kZUluZm8uQW5ub3RhdGlvblIKYW5ub3RhdGlvbhrrAQoKQW5ub3RhdGlvbhIWCgRwYXRoGAEgAygFQgIQAVIEcGF0aBIfCgtzb3VyY2VfZmlsZRgCIAEoCVIKc291cmNlRmlsZRIUCgViZWdpbhgDIAEoBVIFYmVnaW4SEAoDZW5kGAQgASgFUgNlbmQSUgoIc2VtYW50aWMYBSABKA4yNi5nb29nbGUucHJvdG9idWYuR2VuZXJhdGVkQ29kZUluZm8uQW5ub3RhdGlvbi5TZW1hbnRpY1IIc2VtYW50aWMiKAoIU2VtYW50aWMSCAoETk9ORRAAEgcKA1NFVBABEgkKBUFMSUFTEAJCfgoTY29tLmdvb2dsZS5wcm90b2J1ZkIQRGVzY3JpcHRvclByb3Rvc0gBWi1nb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9kZXNjcmlwdG9ycGL4AQGiAgNHUEKqAhpHb29nbGUuUHJvdG9idWYuUmVmbGVjdGlvbgqoAgocZ29vZ2xlL2FwaS9hbm5vdGF0aW9ucy5wcm90bxIKZ29vZ2xlLmFwaRoVZ29vZ2xlL2FwaS9odHRwLnByb3RvGiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bzpLCgRodHRwEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYsMq8IiABKAsyFC5nb29nbGUuYXBpLkh0dHBSdWxlUgRodHRwQm4KDmNvbS5nb29nbGUuYXBpQhBBbm5vdGF0aW9uc1Byb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25zogIER0FQSWIGcHJvdG8zCugDCh9nb29nbGUvYXBpL2ZpZWxkX2JlaGF2aW9yLnByb3RvEgpnb29nbGUuYXBpGiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90byq2AQoNRmllbGRCZWhhdmlvchIeChpGSUVMRF9CRUhBVklPUl9VTlNQRUNJRklFRBAAEgwKCE9QVElPTkFMEAESDAoIUkVRVUlSRUQQAhIPCgtPVVRQVVRfT05MWRADEg4KCklOUFVUX09OTFkQBBINCglJTU1VVEFCTEUQBRISCg5VTk9SREVSRURfTElTVBAGEhUKEU5PTl9FTVBUWV9ERUZBVUxUEAcSDgoKSURFTlRJRklFUhAIOmQKDmZpZWxkX2JlaGF2aW9yEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxicCCADKA4yGS5nb29nbGUuYXBpLkZpZWxkQmVoYXZpb3JCAhAAUg1maWVsZEJlaGF2aW9yQnAKDmNvbS5nb29nbGUuYXBpQhJGaWVsZEJlaGF2aW9yUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzMK4gUKHGdvb2dsZS9wcm90b2J1Zi9zdHJ1Y3QucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiKYAQoGU3RydWN0EjsKBmZpZWxkcxgBIAMoCzIjLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QuRmllbGRzRW50cnlSBmZpZWxkcxpRCgtGaWVsZHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIrICCgVWYWx1ZRI7CgpudWxsX3ZhbHVlGAEgASgOMhouZ29vZ2xlLnByb3RvYnVmLk51bGxWYWx1ZUgAUgludWxsVmFsdWUSIwoMbnVtYmVyX3ZhbHVlGAIgASgBSABSC251bWJlclZhbHVlEiMKDHN0cmluZ192YWx1ZRgDIAEoCUgAUgtzdHJpbmdWYWx1ZRIfCgpib29sX3ZhbHVlGAQgASgISABSCWJvb2xWYWx1ZRI8CgxzdHJ1Y3RfdmFsdWUYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SABSC3N0cnVjdFZhbHVlEjsKCmxpc3RfdmFsdWUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuTGlzdFZhbHVlSABSCWxpc3RWYWx1ZUIGCgRraW5kIjsKCUxpc3RWYWx1ZRIuCgZ2YWx1ZXMYASADKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBnZhbHVlcyobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzMKpj4KLHByb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnMvb3BlbmFwaXYyLnByb3RvEilncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucxocZ29vZ2xlL3Byb3RvYnVmL3N0cnVjdC5wcm90byKzCAoHU3dhZ2dlchIYCgdzd2FnZ2VyGAEgASgJUgdzd2FnZ2VyEkMKBGluZm8YAiABKAsyLy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5JbmZvUgRpbmZvEhIKBGhvc3QYAyABKAlSBGhvc3QSGwoJYmFzZV9wYXRoGAQgASgJUghiYXNlUGF0aBJLCgdzY2hlbWVzGAUgAygOMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1lUgdzY2hlbWVzEhoKCGNvbnN1bWVzGAYgAygJUghjb25zdW1lcxIaCghwcm9kdWNlcxgHIAMoCVIIcHJvZHVjZXMSXwoJcmVzcG9uc2VzGAogAygLMkEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU3dhZ2dlci5SZXNwb25zZXNFbnRyeVIJcmVzcG9uc2VzEnEKFHNlY3VyaXR5X2RlZmluaXRpb25zGAsgASgLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlEZWZpbml0aW9uc1ITc2VjdXJpdHlEZWZpbml0aW9ucxJaCghzZWN1cml0eRgMIAMoCzI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnRSCHNlY3VyaXR5EkIKBHRhZ3MYDSADKAsyLi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5UYWdSBHRhZ3MSZQoNZXh0ZXJuYWxfZG9jcxgOIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEmIKCmV4dGVuc2lvbnMYDyADKAsyQi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Td2FnZ2VyLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpxCg5SZXNwb25zZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRJJCgV2YWx1ZRgCIAEoCzIzLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlUgV2YWx1ZToCOAEaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAFKBAgIEAlKBAgJEAoi1gcKCU9wZXJhdGlvbhISCgR0YWdzGAEgAygJUgR0YWdzEhgKB3N1bW1hcnkYAiABKAlSB3N1bW1hcnkSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEmUKDWV4dGVybmFsX2RvY3MYBCABKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5FeHRlcm5hbERvY3VtZW50YXRpb25SDGV4dGVybmFsRG9jcxIhCgxvcGVyYXRpb25faWQYBSABKAlSC29wZXJhdGlvbklkEhoKCGNvbnN1bWVzGAYgAygJUghjb25zdW1lcxIaCghwcm9kdWNlcxgHIAMoCVIIcHJvZHVjZXMSYQoJcmVzcG9uc2VzGAkgAygLMkMuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuT3BlcmF0aW9uLlJlc3BvbnNlc0VudHJ5UglyZXNwb25zZXMSSwoHc2NoZW1lcxgKIAMoDjIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjaGVtZVIHc2NoZW1lcxIeCgpkZXByZWNhdGVkGAsgASgIUgpkZXByZWNhdGVkEloKCHNlY3VyaXR5GAwgAygLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlSZXF1aXJlbWVudFIIc2VjdXJpdHkSZAoKZXh0ZW5zaW9ucxgNIAMoCzJELmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLk9wZXJhdGlvbi5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMSVQoKcGFyYW1ldGVycxgOIAEoCzI1LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlBhcmFtZXRlcnNSCnBhcmFtZXRlcnMacQoOUmVzcG9uc2VzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSSQoFdmFsdWUYAiABKAsyMy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZVIFdmFsdWU6AjgBGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBSgQICBAJImIKClBhcmFtZXRlcnMSVAoHaGVhZGVycxgBIAMoCzI6LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkhlYWRlclBhcmFtZXRlclIHaGVhZGVycyKjAgoPSGVhZGVyUGFyYW1ldGVyEhIKBG5hbWUYASABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uElMKBHR5cGUYAyABKA4yPy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5IZWFkZXJQYXJhbWV0ZXIuVHlwZVIEdHlwZRIWCgZmb3JtYXQYBCABKAlSBmZvcm1hdBIaCghyZXF1aXJlZBgFIAEoCFIIcmVxdWlyZWQiRQoEVHlwZRILCgdVTktOT1dOEAASCgoGU1RSSU5HEAESCgoGTlVNQkVSEAISCwoHSU5URUdFUhADEgsKB0JPT0xFQU4QBEoECAYQB0oECAcQCCLYAQoGSGVhZGVyEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbhISCgR0eXBlGAIgASgJUgR0eXBlEhYKBmZvcm1hdBgDIAEoCVIGZm9ybWF0EhgKB2RlZmF1bHQYBiABKAlSB2RlZmF1bHQSGAoHcGF0dGVybhgNIAEoCVIHcGF0dGVybkoECAQQBUoECAUQBkoECAcQCEoECAgQCUoECAkQCkoECAoQC0oECAsQDEoECAwQDUoECA4QD0oECA8QEEoECBAQEUoECBEQEkoECBIQEyKaBQoIUmVzcG9uc2USIAoLZGVzY3JpcHRpb24YASABKAlSC2Rlc2NyaXB0aW9uEkkKBnNjaGVtYRgCIAEoCzIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjaGVtYVIGc2NoZW1hEloKB2hlYWRlcnMYAyADKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZS5IZWFkZXJzRW50cnlSB2hlYWRlcnMSXQoIZXhhbXBsZXMYBCADKAsyQS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZS5FeGFtcGxlc0VudHJ5UghleGFtcGxlcxJjCgpleHRlbnNpb25zGAUgAygLMkMuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2UuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGm0KDEhlYWRlcnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRJHCgV2YWx1ZRgCIAEoCzIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkhlYWRlclIFdmFsdWU6AjgBGjsKDUV4YW1wbGVzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ARpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASLWAwoESW5mbxIUCgV0aXRsZRgBIAEoCVIFdGl0bGUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uEigKEHRlcm1zX29mX3NlcnZpY2UYAyABKAlSDnRlcm1zT2ZTZXJ2aWNlEkwKB2NvbnRhY3QYBCABKAsyMi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Db250YWN0Ugdjb250YWN0EkwKB2xpY2Vuc2UYBSABKAsyMi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5MaWNlbnNlUgdsaWNlbnNlEhgKB3ZlcnNpb24YBiABKAlSB3ZlcnNpb24SXwoKZXh0ZW5zaW9ucxgHIAMoCzI/LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkluZm8uRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIkUKB0NvbnRhY3QSEgoEbmFtZRgBIAEoCVIEbmFtZRIQCgN1cmwYAiABKAlSA3VybBIUCgVlbWFpbBgDIAEoCVIFZW1haWwiLwoHTGljZW5zZRISCgRuYW1lGAEgASgJUgRuYW1lEhAKA3VybBgCIAEoCVIDdXJsIksKFUV4dGVybmFsRG9jdW1lbnRhdGlvbhIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24SEAoDdXJsGAIgASgJUgN1cmwiqgIKBlNjaGVtYRJWCgtqc29uX3NjaGVtYRgBIAEoCzI1LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWFSCmpzb25TY2hlbWESJAoNZGlzY3JpbWluYXRvchgCIAEoCVINZGlzY3JpbWluYXRvchIbCglyZWFkX29ubHkYAyABKAhSCHJlYWRPbmx5EmUKDWV4dGVybmFsX2RvY3MYBSABKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5FeHRlcm5hbERvY3VtZW50YXRpb25SDGV4dGVybmFsRG9jcxIYCgdleGFtcGxlGAYgASgJUgdleGFtcGxlSgQIBBAFItcKCgpKU09OU2NoZW1hEhAKA3JlZhgDIAEoCVIDcmVmEhQKBXRpdGxlGAUgASgJUgV0aXRsZRIgCgtkZXNjcmlwdGlvbhgGIAEoCVILZGVzY3JpcHRpb24SGAoHZGVmYXVsdBgHIAEoCVIHZGVmYXVsdBIbCglyZWFkX29ubHkYCCABKAhSCHJlYWRPbmx5EhgKB2V4YW1wbGUYCSABKAlSB2V4YW1wbGUSHwoLbXVsdGlwbGVfb2YYCiABKAFSCm11bHRpcGxlT2YSGAoHbWF4aW11bRgLIAEoAVIHbWF4aW11bRIrChFleGNsdXNpdmVfbWF4aW11bRgMIAEoCFIQZXhjbHVzaXZlTWF4aW11bRIYCgdtaW5pbXVtGA0gASgBUgdtaW5pbXVtEisKEWV4Y2x1c2l2ZV9taW5pbXVtGA4gASgIUhBleGNsdXNpdmVNaW5pbXVtEh0KCm1heF9sZW5ndGgYDyABKARSCW1heExlbmd0aBIdCgptaW5fbGVuZ3RoGBAgASgEUgltaW5MZW5ndGgSGAoHcGF0dGVybhgRIAEoCVIHcGF0dGVybhIbCgltYXhfaXRlbXMYFCABKARSCG1heEl0ZW1zEhsKCW1pbl9pdGVtcxgVIAEoBFIIbWluSXRlbXMSIQoMdW5pcXVlX2l0ZW1zGBYgASgIUgt1bmlxdWVJdGVtcxIlCg5tYXhfcHJvcGVydGllcxgYIAEoBFINbWF4UHJvcGVydGllcxIlCg5taW5fcHJvcGVydGllcxgZIAEoBFINbWluUHJvcGVydGllcxIaCghyZXF1aXJlZBgaIAMoCVIIcmVxdWlyZWQSFAoFYXJyYXkYIiADKAlSBWFycmF5El8KBHR5cGUYIyADKA4ySy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hLkpTT05TY2hlbWFTaW1wbGVUeXBlc1IEdHlwZRIWCgZmb3JtYXQYJCABKAlSBmZvcm1hdBISCgRlbnVtGC4gAygJUgRlbnVtEnoKE2ZpZWxkX2NvbmZpZ3VyYXRpb24Y6QcgASgLMkguZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYS5GaWVsZENvbmZpZ3VyYXRpb25SEmZpZWxkQ29uZmlndXJhdGlvbhJlCgpleHRlbnNpb25zGDAgAygLMkUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYS5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaPAoSRmllbGRDb25maWd1cmF0aW9uEiYKD3BhdGhfcGFyYW1fbmFtZRgvIAEoCVINcGF0aFBhcmFtTmFtZRpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASJ3ChVKU09OU2NoZW1hU2ltcGxlVHlwZXMSCwoHVU5LTk9XThAAEgkKBUFSUkFZEAESCwoHQk9PTEVBThACEgsKB0lOVEVHRVIQAxIICgROVUxMEAQSCgoGTlVNQkVSEAUSCgoGT0JKRUNUEAYSCgoGU1RSSU5HEAdKBAgBEAJKBAgCEANKBAgEEAVKBAgSEBNKBAgTEBRKBAgXEBhKBAgbEBxKBAgcEB1KBAgdEB5KBAgeECJKBAglECpKBAgqECtKBAgrEC4i2QIKA1RhZxISCgRuYW1lGAEgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhJlCg1leHRlcm5hbF9kb2NzGAMgASgLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuRXh0ZXJuYWxEb2N1bWVudGF0aW9uUgxleHRlcm5hbERvY3MSXgoKZXh0ZW5zaW9ucxgEIAMoCzI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlRhZy5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEi9wEKE1NlY3VyaXR5RGVmaW5pdGlvbnMSaAoIc2VjdXJpdHkYASADKAsyTC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eURlZmluaXRpb25zLlNlY3VyaXR5RW50cnlSCHNlY3VyaXR5GnYKDVNlY3VyaXR5RW50cnkSEAoDa2V5GAEgASgJUgNrZXkSTwoFdmFsdWUYAiABKAsyOS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZVIFdmFsdWU6AjgBIv8GCg5TZWN1cml0eVNjaGVtZRJSCgR0eXBlGAEgASgOMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWUuVHlwZVIEdHlwZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SEgoEbmFtZRgDIAEoCVIEbmFtZRJMCgJpbhgEIAEoDjI8LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lLkluUgJpbhJSCgRmbG93GAUgASgOMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWUuRmxvd1IEZmxvdxIrChFhdXRob3JpemF0aW9uX3VybBgGIAEoCVIQYXV0aG9yaXphdGlvblVybBIbCgl0b2tlbl91cmwYByABKAlSCHRva2VuVXJsEkkKBnNjb3BlcxgIIAEoCzIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjb3Blc1IGc2NvcGVzEmkKCmV4dGVuc2lvbnMYCSADKAsySS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEiSwoEVHlwZRIQCgxUWVBFX0lOVkFMSUQQABIOCgpUWVBFX0JBU0lDEAESEAoMVFlQRV9BUElfS0VZEAISDwoLVFlQRV9PQVVUSDIQAyIxCgJJbhIOCgpJTl9JTlZBTElEEAASDAoISU5fUVVFUlkQARINCglJTl9IRUFERVIQAiJqCgRGbG93EhAKDEZMT1dfSU5WQUxJRBAAEhEKDUZMT1dfSU1QTElDSVQQARIRCg1GTE9XX1BBU1NXT1JEEAISFAoQRkxPV19BUFBMSUNBVElPThADEhQKEEZMT1dfQUNDRVNTX0NPREUQBCL2AgoTU2VjdXJpdHlSZXF1aXJlbWVudBKKAQoUc2VjdXJpdHlfcmVxdWlyZW1lbnQYASADKAsyVy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVJlcXVpcmVtZW50LlNlY3VyaXR5UmVxdWlyZW1lbnRFbnRyeVITc2VjdXJpdHlSZXF1aXJlbWVudBowChhTZWN1cml0eVJlcXVpcmVtZW50VmFsdWUSFAoFc2NvcGUYASADKAlSBXNjb3BlGp8BChhTZWN1cml0eVJlcXVpcmVtZW50RW50cnkSEAoDa2V5GAEgASgJUgNrZXkSbQoFdmFsdWUYAiABKAsyVy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVJlcXVpcmVtZW50LlNlY3VyaXR5UmVxdWlyZW1lbnRWYWx1ZVIFdmFsdWU6AjgBIpYBCgZTY29wZXMSUgoFc2NvcGUYASADKAsyPC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY29wZXMuU2NvcGVFbnRyeVIFc2NvcGUaOAoKU2NvcGVFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBKjsKBlNjaGVtZRILCgdVTktOT1dOEAASCAoESFRUUBABEgkKBUhUVFBTEAISBgoCV1MQAxIHCgNXU1MQBEJIWkZnaXRodWIuY29tL2dycGMtZWNvc3lzdGVtL2dycGMtZ2F0ZXdheS92Mi9wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zYgZwcm90bzMK/QYKLnByb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnMvYW5ub3RhdGlvbnMucHJvdG8SKWdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zGiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bxoscHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9vcGVuYXBpdjIucHJvdG86fgoRb3BlbmFwaXYyX3N3YWdnZXISHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMYkgggASgLMjIuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU3dhZ2dlclIQb3BlbmFwaXYyU3dhZ2dlcjqGAQoTb3BlbmFwaXYyX29wZXJhdGlvbhIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGJIIIAEoCzI0LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLk9wZXJhdGlvblISb3BlbmFwaXYyT3BlcmF0aW9uOn4KEG9wZW5hcGl2Ml9zY2hlbWESHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYkgggASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1hUg9vcGVuYXBpdjJTY2hlbWE6dQoNb3BlbmFwaXYyX3RhZxIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucxiSCCABKAsyLi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5UYWdSDG9wZW5hcGl2MlRhZzp+Cg9vcGVuYXBpdjJfZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGJIIIAEoCzI1LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWFSDm9wZW5hcGl2MkZpZWxkQkhaRmdpdGh1Yi5jb20vZ3JwYy1lY29zeXN0ZW0vZ3JwYy1nYXRld2F5L3YyL3Byb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnNiBnByb3RvMwrABAoVcHJvdG8vdXNlci91c2VyLnByb3RvEg5idWNrZXRlZXIudXNlciLeAwoEVXNlchIOCgJpZBgBIAEoCVICaWQSMgoEZGF0YRgCIAMoCzIeLmJ1Y2tldGVlci51c2VyLlVzZXIuRGF0YUVudHJ5UgRkYXRhEkUKC3RhZ2dlZF9kYXRhGAMgAygLMiQuYnVja2V0ZWVyLnVzZXIuVXNlci5UYWdnZWREYXRhRW50cnlSCnRhZ2dlZERhdGESGwoJbGFzdF9zZWVuGAQgASgDUghsYXN0U2VlbhIdCgpjcmVhdGVkX2F0GAUgASgDUgljcmVhdGVkQXQafAoERGF0YRI6CgV2YWx1ZRgBIAMoCzIkLmJ1Y2tldGVlci51c2VyLlVzZXIuRGF0YS5WYWx1ZUVudHJ5UgV2YWx1ZRo4CgpWYWx1ZUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEaNwoJRGF0YUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEaWAoPVGFnZ2VkRGF0YUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5Ei8KBXZhbHVlGAIgASgLMhkuYnVja2V0ZWVyLnVzZXIuVXNlci5EYXRhUgV2YWx1ZToCOAFCLlosZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL3VzZXJiBnByb3RvMwqslwEKG3Byb3RvL2ZlYXR1cmUvc2VydmljZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaHGdvb2dsZS9hcGkvYW5ub3RhdGlvbnMucHJvdG8aH2dvb2dsZS9hcGkvZmllbGRfYmVoYXZpb3IucHJvdG8aHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxoucHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9hbm5vdGF0aW9ucy5wcm90bxobcHJvdG8vZmVhdHVyZS9jb21tYW5kLnByb3RvGhtwcm90by9mZWF0dXJlL2ZlYXR1cmUucHJvdG8aHnByb3RvL2ZlYXR1cmUvZXZhbHVhdGlvbi5wcm90bxoVcHJvdG8vdXNlci91c2VyLnByb3RvGhtwcm90by9mZWF0dXJlL3NlZ21lbnQucHJvdG8aIHByb3RvL2ZlYXR1cmUvZmxhZ190cmlnZ2VyLnByb3RvGh1wcm90by9mZWF0dXJlL3ZhcmlhdGlvbi5wcm90bxogcHJvdG8vZmVhdHVyZS9wcmVyZXF1aXNpdGUucHJvdG8aGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxoccHJvdG8vZmVhdHVyZS9zdHJhdGVneS5wcm90bxoacHJvdG8vZmVhdHVyZS90YXJnZXQucHJvdG8iUAoRR2V0RmVhdHVyZVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIkoKEkdldEZlYXR1cmVSZXNwb25zZRI0CgdmZWF0dXJlGAEgASgLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIHZmVhdHVyZSJTChJHZXRGZWF0dXJlc1JlcXVlc3QSEAoDaWRzGAIgAygJUgNpZHMSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWRKBAgBEAIiTQoTR2V0RmVhdHVyZXNSZXNwb25zZRI2CghmZWF0dXJlcxgBIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzIvUFChNMaXN0RmVhdHVyZXNSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISEgoEdGFncxgDIAMoCVIEdGFncxJJCghvcmRlcl9ieRgEIAEoDjIuLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RGZWF0dXJlc1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJeCg9vcmRlcl9kaXJlY3Rpb24YBSABKA4yNS5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmVhdHVyZXNSZXF1ZXN0Lk9yZGVyRGlyZWN0aW9uUg5vcmRlckRpcmVjdGlvbhIeCgptYWludGFpbmVyGAcgASgJUgptYWludGFpbmVyEjQKB2VuYWJsZWQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUgdlbmFibGVkEkEKDmhhc19leHBlcmltZW50GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVINaGFzRXhwZXJpbWVudBIlCg5zZWFyY2hfa2V5d29yZBgKIAEoCVINc2VhcmNoS2V5d29yZBI2CghhcmNoaXZlZBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWVSCGFyY2hpdmVkEkcKEWhhc19wcmVyZXF1aXNpdGVzGAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIQaGFzUHJlcmVxdWlzaXRlcxIlCg5lbnZpcm9ubWVudF9pZBgNIAEoCVINZW52aXJvbm1lbnRJZCJXCgdPcmRlckJ5EgsKB0RFRkFVTFQQABIICgROQU1FEAESDgoKQ1JFQVRFRF9BVBACEg4KClVQREFURURfQVQQAxIICgRUQUdTEAQSCwoHRU5BQkxFRBAFIiMKDk9yZGVyRGlyZWN0aW9uEgcKA0FTQxAAEggKBERFU0MQAUoECAYQByKHAQoUTGlzdEZlYXR1cmVzUmVzcG9uc2USNgoIZmVhdHVyZXMYASADKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUghmZWF0dXJlcxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCKSAQoaTGlzdEVuYWJsZWRGZWF0dXJlc1JlcXVlc3QSGwoJcGFnZV9zaXplGAEgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchISCgR0YWdzGAMgAygJUgR0YWdzEiUKDmVudmlyb25tZW50X2lkGAUgASgJUg1lbnZpcm9ubWVudElkSgQIBBAFIm0KG0xpc3RFbmFibGVkRmVhdHVyZXNSZXNwb25zZRI2CghmZWF0dXJlcxgBIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yIoYBChRDcmVhdGVGZWF0dXJlUmVxdWVzdBJBCgdjb21tYW5kGAEgASgLMicuYnVja2V0ZWVyLmZlYXR1cmUuQ3JlYXRlRmVhdHVyZUNvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWRKBAgCEAMiTQoVQ3JlYXRlRmVhdHVyZVJlc3BvbnNlEjQKB2ZlYXR1cmUYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUgdmZWF0dXJlIs8FChRVcGRhdGVGZWF0dXJlUmVxdWVzdBIYCgdjb21tZW50GAEgASgJUgdjb21tZW50EiUKDmVudmlyb25tZW50X2lkGAIgASgJUg1lbnZpcm9ubWVudElkEg4KAmlkGAMgASgJUgJpZBIwCgRuYW1lGAQgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgRuYW1lEj4KC2Rlc2NyaXB0aW9uGAUgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgtkZXNjcmlwdGlvbhISCgR0YWdzGAYgAygJUgR0YWdzEjQKB2VuYWJsZWQYByABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUgdlbmFibGVkEjYKCGFyY2hpdmVkGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIYXJjaGl2ZWQSPAoKdmFyaWF0aW9ucxgJIAMoCzIcLmJ1Y2tldGVlci5mZWF0dXJlLlZhcmlhdGlvblIKdmFyaWF0aW9ucxJFCg1wcmVyZXF1aXNpdGVzGAogAygLMh8uYnVja2V0ZWVyLmZlYXR1cmUuUHJlcmVxdWlzaXRlUg1wcmVyZXF1aXNpdGVzEjMKB3RhcmdldHMYCyADKAsyGS5idWNrZXRlZXIuZmVhdHVyZS5UYXJnZXRSB3RhcmdldHMSLQoFcnVsZXMYDCADKAsyFy5idWNrZXRlZXIuZmVhdHVyZS5SdWxlUgVydWxlcxJGChBkZWZhdWx0X3N0cmF0ZWd5GA0gASgLMhsuYnVja2V0ZWVyLmZlYXR1cmUuU3RyYXRlZ3lSD2RlZmF1bHRTdHJhdGVneRJBCg1vZmZfdmFyaWF0aW9uGA4gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgxvZmZWYXJpYXRpb24iTQoVVXBkYXRlRmVhdHVyZVJlc3BvbnNlEjQKB2ZlYXR1cmUYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlUgdmZWF0dXJlIrABChRFbmFibGVGZWF0dXJlUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSQQoHY29tbWFuZBgCIAEoCzInLmJ1Y2tldGVlci5mZWF0dXJlLkVuYWJsZUZlYXR1cmVDb21tYW5kUgdjb21tYW5kEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFwoVRW5hYmxlRmVhdHVyZVJlc3BvbnNlIrIBChVEaXNhYmxlRmVhdHVyZVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkIKB2NvbW1hbmQYAiABKAsyKC5idWNrZXRlZXIuZmVhdHVyZS5EaXNhYmxlRmVhdHVyZUNvbW1hbmRSB2NvbW1hbmQSGAoHY29tbWVudBgEIAEoCVIHY29tbWVudBIlCg5lbnZpcm9ubWVudF9pZBgFIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIYChZEaXNhYmxlRmVhdHVyZVJlc3BvbnNlIrIBChVBcmNoaXZlRmVhdHVyZVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkIKB2NvbW1hbmQYAiABKAsyKC5idWNrZXRlZXIuZmVhdHVyZS5BcmNoaXZlRmVhdHVyZUNvbW1hbmRSB2NvbW1hbmQSGAoHY29tbWVudBgEIAEoCVIHY29tbWVudBIlCg5lbnZpcm9ubWVudF9pZBgFIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIYChZBcmNoaXZlRmVhdHVyZVJlc3BvbnNlIrYBChdVbmFyY2hpdmVGZWF0dXJlUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSRAoHY29tbWFuZBgCIAEoCzIqLmJ1Y2tldGVlci5mZWF0dXJlLlVuYXJjaGl2ZUZlYXR1cmVDb21tYW5kUgdjb21tYW5kEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiGgoYVW5hcmNoaXZlRmVhdHVyZVJlc3BvbnNlIrABChREZWxldGVGZWF0dXJlUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSQQoHY29tbWFuZBgCIAEoCzInLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZUZlYXR1cmVDb21tYW5kUgdjb21tYW5kEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFwoVRGVsZXRlRmVhdHVyZVJlc3BvbnNlIt8DChtVcGRhdGVGZWF0dXJlRGV0YWlsc1JlcXVlc3QSDgoCaWQYASABKAlSAmlkEl0KFnJlbmFtZV9mZWF0dXJlX2NvbW1hbmQYAiABKAsyJy5idWNrZXRlZXIuZmVhdHVyZS5SZW5hbWVGZWF0dXJlQ29tbWFuZFIUcmVuYW1lRmVhdHVyZUNvbW1hbmQSaQoaY2hhbmdlX2Rlc2NyaXB0aW9uX2NvbW1hbmQYAyABKAsyKy5idWNrZXRlZXIuZmVhdHVyZS5DaGFuZ2VEZXNjcmlwdGlvbkNvbW1hbmRSGGNoYW5nZURlc2NyaXB0aW9uQ29tbWFuZBJKChBhZGRfdGFnX2NvbW1hbmRzGAQgAygLMiAuYnVja2V0ZWVyLmZlYXR1cmUuQWRkVGFnQ29tbWFuZFIOYWRkVGFnQ29tbWFuZHMSUwoTcmVtb3ZlX3RhZ19jb21tYW5kcxgFIAMoCzIjLmJ1Y2tldGVlci5mZWF0dXJlLlJlbW92ZVRhZ0NvbW1hbmRSEXJlbW92ZVRhZ0NvbW1hbmRzEhgKB2NvbW1lbnQYByABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYCCABKAlSDWVudmlyb25tZW50SWRKBAgGEAciHgocVXBkYXRlRmVhdHVyZURldGFpbHNSZXNwb25zZSKvAQoeVXBkYXRlRmVhdHVyZVZhcmlhdGlvbnNSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBI2Cghjb21tYW5kcxgCIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkNvbW1hbmRSCGNvbW1hbmRzEhgKB2NvbW1lbnQYBCABKAlSB2NvbW1lbnQSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiIQofVXBkYXRlRmVhdHVyZVZhcmlhdGlvbnNSZXNwb25zZSKhAgodVXBkYXRlRmVhdHVyZVRhcmdldGluZ1JlcXVlc3QSDgoCaWQYASABKAlSAmlkEjYKCGNvbW1hbmRzGAIgAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuQ29tbWFuZFIIY29tbWFuZHMSGAoHY29tbWVudBgEIAEoCVIHY29tbWVudBJJCgRmcm9tGAUgASgOMjUuYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmVhdHVyZVRhcmdldGluZ1JlcXVlc3QuRnJvbVIEZnJvbRIlCg5lbnZpcm9ubWVudF9pZBgGIAEoCVINZW52aXJvbm1lbnRJZCImCgRGcm9tEgsKB1VOS05PV04QABIICgRVU0VSEAESBwoDT1BTEAJKBAgDEAQiIAoeVXBkYXRlRmVhdHVyZVRhcmdldGluZ1Jlc3BvbnNlIpQBChNDbG9uZUZlYXR1cmVSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJACgdjb21tYW5kGAIgASgLMiYuYnVja2V0ZWVyLmZlYXR1cmUuQ2xvbmVGZWF0dXJlQ29tbWFuZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCIWChRDbG9uZUZlYXR1cmVSZXNwb25zZSLZAQoUQ3JlYXRlU2VnbWVudFJlcXVlc3QSVAoHY29tbWFuZBgBIAEoCzInLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZVNlZ21lbnRDb21tYW5kQhEYAZJBDDIKZGVwcmVjYXRlZFIHY29tbWFuZBIXCgRuYW1lGAMgASgJQgPgQQJSBG5hbWUSKgoOZW52aXJvbm1lbnRfaWQYBCABKAlCA+BBAlINZW52aXJvbm1lbnRJZBIgCgtkZXNjcmlwdGlvbhgFIAEoCVILZGVzY3JpcHRpb25KBAgCEAMiTQoVQ3JlYXRlU2VnbWVudFJlc3BvbnNlEjQKB3NlZ21lbnQYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50UgdzZWdtZW50IloKEUdldFNlZ21lbnRSZXF1ZXN0EhMKAmlkGAEgASgJQgPgQQJSAmlkEioKDmVudmlyb25tZW50X2lkGAMgASgJQgPgQQJSDWVudmlyb25tZW50SWRKBAgCEAMiSgoSR2V0U2VnbWVudFJlc3BvbnNlEjQKB3NlZ21lbnQYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50UgdzZWdtZW50IssEChNMaXN0U2VnbWVudHNSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISSQoIb3JkZXJfYnkYBCABKA4yLi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0U2VnbWVudHNSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSXgoPb3JkZXJfZGlyZWN0aW9uGAUgASgOMjUuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdFNlZ21lbnRzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYBiABKAlSDXNlYXJjaEtleXdvcmQSMwoGc3RhdHVzGAcgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVSBnN0YXR1cxJDChBpc19pbl91c2Vfc3RhdHVzGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVINaXNJblVzZVN0YXR1cxIqCg5lbnZpcm9ubWVudF9pZBgJIAEoCUID4EECUg1lbnZpcm9ubWVudElkIlwKB09yZGVyQnkSCwoHREVGQVVMVBAAEggKBE5BTUUQARIOCgpDUkVBVEVEX0FUEAISDgoKVVBEQVRFRF9BVBADEg8KC0NPTk5FQ1RJT05TEAQSCQoFVVNFUlMQBSIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAFKBAgDEAQihwEKFExpc3RTZWdtZW50c1Jlc3BvbnNlEjYKCHNlZ21lbnRzGAEgAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFIIc2VnbWVudHMSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISHwoLdG90YWxfY291bnQYAyABKANSCnRvdGFsQ291bnQiqQEKFERlbGV0ZVNlZ21lbnRSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJUCgdjb21tYW5kGAIgASgLMicuYnVja2V0ZWVyLmZlYXR1cmUuRGVsZXRlU2VnbWVudENvbW1hbmRCERgBkkEMMgpkZXByZWNhdGVkUgdjb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEIhcKFURlbGV0ZVNlZ21lbnRSZXNwb25zZSKVAgoUVXBkYXRlU2VnbWVudFJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkkKCGNvbW1hbmRzGAIgAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuQ29tbWFuZEIRGAGSQQwyCmRlcHJlY2F0ZWRSCGNvbW1hbmRzEioKDmVudmlyb25tZW50X2lkGAQgASgJQgPgQQJSDWVudmlyb25tZW50SWQSMAoEbmFtZRgFIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIEbmFtZRI+CgtkZXNjcmlwdGlvbhgGIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVILZGVzY3JpcHRpb25KBAgDEAQiTQoVVXBkYXRlU2VnbWVudFJlc3BvbnNlEjQKB3NlZ21lbnQYASABKAsyGi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50UgdzZWdtZW50IpgBChVBZGRTZWdtZW50VXNlclJlcXVlc3QSDgoCaWQYASABKAlSAmlkEkIKB2NvbW1hbmQYAiABKAsyKC5idWNrZXRlZXIuZmVhdHVyZS5BZGRTZWdtZW50VXNlckNvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiGAoWQWRkU2VnbWVudFVzZXJSZXNwb25zZSKeAQoYRGVsZXRlU2VnbWVudFVzZXJSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJFCgdjb21tYW5kGAIgASgLMisuYnVja2V0ZWVyLmZlYXR1cmUuRGVsZXRlU2VnbWVudFVzZXJDb21tYW5kUgdjb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEIhsKGURlbGV0ZVNlZ21lbnRVc2VyUmVzcG9uc2UiuAEKFUdldFNlZ21lbnRVc2VyUmVxdWVzdBIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSFwoHdXNlcl9pZBgCIAEoCVIGdXNlcklkEjoKBXN0YXRlGAMgASgOMiQuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXIuU3RhdGVSBXN0YXRlEiUKDmVudmlyb25tZW50X2lkGAUgASgJUg1lbnZpcm9ubWVudElkSgQIBBAFIkwKFkdldFNlZ21lbnRVc2VyUmVzcG9uc2USMgoEdXNlchgBIAEoCzIeLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyUgR1c2VyIuYBChdMaXN0U2VnbWVudFVzZXJzUmVxdWVzdBIbCglwYWdlX3NpemUYASABKANSCHBhZ2VTaXplEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEh0KCnNlZ21lbnRfaWQYAyABKAlSCXNlZ21lbnRJZBIxCgVzdGF0ZRgEIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlUgVzdGF0ZRIXCgd1c2VyX2lkGAUgASgJUgZ1c2VySWQSJQoOZW52aXJvbm1lbnRfaWQYByABKAlSDWVudmlyb25tZW50SWRKBAgGEAciaAoYTGlzdFNlZ21lbnRVc2Vyc1Jlc3BvbnNlEjQKBXVzZXJzGAEgAygLMh4uYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXJSBXVzZXJzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yItACCh1CdWxrVXBsb2FkU2VnbWVudFVzZXJzUmVxdWVzdBIdCgpzZWdtZW50X2lkGAIgASgJUglzZWdtZW50SWQSXQoHY29tbWFuZBgDIAEoCzIwLmJ1Y2tldGVlci5mZWF0dXJlLkJ1bGtVcGxvYWRTZWdtZW50VXNlcnNDb21tYW5kQhEYAZJBDDIKZGVwcmVjYXRlZFIHY29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZBJICgRkYXRhGAUgASgMQjSSQTEyL3NlZ21lbnQgdXNlciBpZHMgc2VwYXJhdGVkIGJ5IGNvbW1hIG9yIG5ldyBsaW5lUgRkYXRhEjoKBXN0YXRlGAYgASgOMiQuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXIuU3RhdGVSBXN0YXRlSgQIARACIiAKHkJ1bGtVcGxvYWRTZWdtZW50VXNlcnNSZXNwb25zZSKzAQofQnVsa0Rvd25sb2FkU2VnbWVudFVzZXJzUmVxdWVzdBIiCgpzZWdtZW50X2lkGAIgASgJQgPgQQJSCXNlZ21lbnRJZBI6CgVzdGF0ZRgDIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZRIqCg5lbnZpcm9ubWVudF9pZBgEIAEoCUID4EECUg1lbnZpcm9ubWVudElkSgQIARACIjYKIEJ1bGtEb3dubG9hZFNlZ21lbnRVc2Vyc1Jlc3BvbnNlEhIKBGRhdGEYASABKAxSBGRhdGEioQEKF0V2YWx1YXRlRmVhdHVyZXNSZXF1ZXN0EigKBHVzZXIYASABKAsyFC5idWNrZXRlZXIudXNlci5Vc2VyUgR1c2VyEhAKA3RhZxgDIAEoCVIDdGFnEh0KCmZlYXR1cmVfaWQYBCABKAlSCWZlYXR1cmVJZBIlCg5lbnZpcm9ubWVudF9pZBgFIAEoCVINZW52aXJvbm1lbnRJZEoECAIQAyJpChhFdmFsdWF0ZUZlYXR1cmVzUmVzcG9uc2USTQoQdXNlcl9ldmFsdWF0aW9ucxgBIAEoCzIiLmJ1Y2tldGVlci5mZWF0dXJlLlVzZXJFdmFsdWF0aW9uc1IPdXNlckV2YWx1YXRpb25zIqwDCg9MaXN0VGFnc1JlcXVlc3QSGwoJcGFnZV9zaXplGAIgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAyABKAlSBmN1cnNvchJFCghvcmRlcl9ieRgEIAEoDjIqLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RUYWdzUmVxdWVzdC5PcmRlckJ5UgdvcmRlckJ5EloKD29yZGVyX2RpcmVjdGlvbhgFIAEoDjIxLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RUYWdzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYBiABKAlSDXNlYXJjaEtleXdvcmQSJQoOZW52aXJvbm1lbnRfaWQYByABKAlSDWVudmlyb25tZW50SWQiSAoHT3JkZXJCeRILCgdERUZBVUxUEAASBgoCSUQQARIOCgpDUkVBVEVEX0FUEAISDgoKVVBEQVRFRF9BVBADEggKBE5BTUUQBCIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAFKBAgBEAIidwoQTGlzdFRhZ3NSZXNwb25zZRIqCgR0YWdzGAEgAygLMhYuYnVja2V0ZWVyLmZlYXR1cmUuVGFnUgR0YWdzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEh8KC3RvdGFsX2NvdW50GAMgASgDUgp0b3RhbENvdW50IrMBChhDcmVhdGVGbGFnVHJpZ2dlclJlcXVlc3QSagobY3JlYXRlX2ZsYWdfdHJpZ2dlcl9jb21tYW5kGAIgASgLMisuYnVja2V0ZWVyLmZlYXR1cmUuQ3JlYXRlRmxhZ1RyaWdnZXJDb21tYW5kUhhjcmVhdGVGbGFnVHJpZ2dlckNvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWRKBAgBEAIicAoZQ3JlYXRlRmxhZ1RyaWdnZXJSZXNwb25zZRJBCgxmbGFnX3RyaWdnZXIYASABKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlclILZmxhZ1RyaWdnZXISEAoDdXJsGAIgASgJUgN1cmwiwwEKGERlbGV0ZUZsYWdUcmlnZ2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSagobZGVsZXRlX2ZsYWdfdHJpZ2dlcl9jb21tYW5kGAMgASgLMisuYnVja2V0ZWVyLmZlYXR1cmUuRGVsZXRlRmxhZ1RyaWdnZXJDb21tYW5kUhhkZWxldGVGbGFnVHJpZ2dlckNvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgCEAMiGwoZRGVsZXRlRmxhZ1RyaWdnZXJSZXNwb25zZSLmAQoYVXBkYXRlRmxhZ1RyaWdnZXJSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBKMAQonY2hhbmdlX2ZsYWdfdHJpZ2dlcl9kZXNjcmlwdGlvbl9jb21tYW5kGAMgASgLMjYuYnVja2V0ZWVyLmZlYXR1cmUuQ2hhbmdlRmxhZ1RyaWdnZXJEZXNjcmlwdGlvbkNvbW1hbmRSI2NoYW5nZUZsYWdUcmlnZ2VyRGVzY3JpcHRpb25Db21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIhsKGVVwZGF0ZUZsYWdUcmlnZ2VyUmVzcG9uc2UiwwEKGEVuYWJsZUZsYWdUcmlnZ2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSagobZW5hYmxlX2ZsYWdfdHJpZ2dlcl9jb21tYW5kGAMgASgLMisuYnVja2V0ZWVyLmZlYXR1cmUuRW5hYmxlRmxhZ1RyaWdnZXJDb21tYW5kUhhlbmFibGVGbGFnVHJpZ2dlckNvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgCEAMiGwoZRW5hYmxlRmxhZ1RyaWdnZXJSZXNwb25zZSLHAQoZRGlzYWJsZUZsYWdUcmlnZ2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSbQocZGlzYWJsZV9mbGFnX3RyaWdnZXJfY29tbWFuZBgDIAEoCzIsLmJ1Y2tldGVlci5mZWF0dXJlLkRpc2FibGVGbGFnVHJpZ2dlckNvbW1hbmRSGWRpc2FibGVGbGFnVHJpZ2dlckNvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgCEAMiHAoaRGlzYWJsZUZsYWdUcmlnZ2VyUmVzcG9uc2UivwEKF1Jlc2V0RmxhZ1RyaWdnZXJSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJnChpyZXNldF9mbGFnX3RyaWdnZXJfY29tbWFuZBgDIAEoCzIqLmJ1Y2tldGVlci5mZWF0dXJlLlJlc2V0RmxhZ1RyaWdnZXJDb21tYW5kUhdyZXNldEZsYWdUcmlnZ2VyQ29tbWFuZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAIQAyJvChhSZXNldEZsYWdUcmlnZ2VyUmVzcG9uc2USQQoMZmxhZ190cmlnZ2VyGAEgASgLMh4uYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXJSC2ZsYWdUcmlnZ2VyEhAKA3VybBgCIAEoCVIDdXJsIlQKFUdldEZsYWdUcmlnZ2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWRKBAgCEAMibQoWR2V0RmxhZ1RyaWdnZXJSZXNwb25zZRJBCgxmbGFnX3RyaWdnZXIYASABKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlclILZmxhZ1RyaWdnZXISEAoDdXJsGAIgASgJUgN1cmwiqgMKF0xpc3RGbGFnVHJpZ2dlcnNSZXF1ZXN0Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIWCgZjdXJzb3IYAyABKAlSBmN1cnNvchIbCglwYWdlX3NpemUYBCABKAVSCHBhZ2VTaXplEk0KCG9yZGVyX2J5GAUgASgOMjIuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdEZsYWdUcmlnZ2Vyc1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJiCg9vcmRlcl9kaXJlY3Rpb24YBiABKA4yOS5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmxhZ1RyaWdnZXJzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOZW52aXJvbm1lbnRfaWQYByABKAlSDWVudmlyb25tZW50SWQiNgoHT3JkZXJCeRILCgdERUZBVUxUEAASDgoKQ1JFQVRFRF9BVBABEg4KClVQREFURURfQVQQAiIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAFKBAgCEAMiowIKGExpc3RGbGFnVHJpZ2dlcnNSZXNwb25zZRJjCg1mbGFnX3RyaWdnZXJzGAEgAygLMj4uYnVja2V0ZWVyLmZlYXR1cmUuTGlzdEZsYWdUcmlnZ2Vyc1Jlc3BvbnNlLkZsYWdUcmlnZ2VyV2l0aFVybFIMZmxhZ1RyaWdnZXJzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEh8KC3RvdGFsX2NvdW50GAMgASgDUgp0b3RhbENvdW50GmkKEkZsYWdUcmlnZ2VyV2l0aFVybBJBCgxmbGFnX3RyaWdnZXIYASABKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlclILZmxhZ1RyaWdnZXISEAoDdXJsGAIgASgJUgN1cmwiMQoZRmxhZ1RyaWdnZXJXZWJob29rUmVxdWVzdBIUCgV0b2tlbhgBIAEoCVIFdG9rZW4iHAoaRmxhZ1RyaWdnZXJXZWJob29rUmVzcG9uc2UymjkKDkZlYXR1cmVTZXJ2aWNlElsKCkdldEZlYXR1cmUSJC5idWNrZXRlZXIuZmVhdHVyZS5HZXRGZWF0dXJlUmVxdWVzdBolLmJ1Y2tldGVlci5mZWF0dXJlLkdldEZlYXR1cmVSZXNwb25zZSIAEl4KC0dldEZlYXR1cmVzEiUuYnVja2V0ZWVyLmZlYXR1cmUuR2V0RmVhdHVyZXNSZXF1ZXN0GiYuYnVja2V0ZWVyLmZlYXR1cmUuR2V0RmVhdHVyZXNSZXNwb25zZSIAEmEKDExpc3RGZWF0dXJlcxImLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RGZWF0dXJlc1JlcXVlc3QaJy5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmVhdHVyZXNSZXNwb25zZSIAEnYKE0xpc3RFbmFibGVkRmVhdHVyZXMSLS5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RW5hYmxlZEZlYXR1cmVzUmVxdWVzdBouLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RFbmFibGVkRmVhdHVyZXNSZXNwb25zZSIAEmQKDUNyZWF0ZUZlYXR1cmUSJy5idWNrZXRlZXIuZmVhdHVyZS5DcmVhdGVGZWF0dXJlUmVxdWVzdBooLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZUZlYXR1cmVSZXNwb25zZSIAEmQKDVVwZGF0ZUZlYXR1cmUSJy5idWNrZXRlZXIuZmVhdHVyZS5VcGRhdGVGZWF0dXJlUmVxdWVzdBooLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZlYXR1cmVSZXNwb25zZSIAEmcKDUVuYWJsZUZlYXR1cmUSJy5idWNrZXRlZXIuZmVhdHVyZS5FbmFibGVGZWF0dXJlUmVxdWVzdBooLmJ1Y2tldGVlci5mZWF0dXJlLkVuYWJsZUZlYXR1cmVSZXNwb25zZSIDiAIBEmoKDkRpc2FibGVGZWF0dXJlEiguYnVja2V0ZWVyLmZlYXR1cmUuRGlzYWJsZUZlYXR1cmVSZXF1ZXN0GikuYnVja2V0ZWVyLmZlYXR1cmUuRGlzYWJsZUZlYXR1cmVSZXNwb25zZSIDiAIBEmcKDkFyY2hpdmVGZWF0dXJlEiguYnVja2V0ZWVyLmZlYXR1cmUuQXJjaGl2ZUZlYXR1cmVSZXF1ZXN0GikuYnVja2V0ZWVyLmZlYXR1cmUuQXJjaGl2ZUZlYXR1cmVSZXNwb25zZSIAEm0KEFVuYXJjaGl2ZUZlYXR1cmUSKi5idWNrZXRlZXIuZmVhdHVyZS5VbmFyY2hpdmVGZWF0dXJlUmVxdWVzdBorLmJ1Y2tldGVlci5mZWF0dXJlLlVuYXJjaGl2ZUZlYXR1cmVSZXNwb25zZSIAEmQKDURlbGV0ZUZlYXR1cmUSJy5idWNrZXRlZXIuZmVhdHVyZS5EZWxldGVGZWF0dXJlUmVxdWVzdBooLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZUZlYXR1cmVSZXNwb25zZSIAEnkKFFVwZGF0ZUZlYXR1cmVEZXRhaWxzEi4uYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmVhdHVyZURldGFpbHNSZXF1ZXN0Gi8uYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmVhdHVyZURldGFpbHNSZXNwb25zZSIAEoIBChdVcGRhdGVGZWF0dXJlVmFyaWF0aW9ucxIxLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZlYXR1cmVWYXJpYXRpb25zUmVxdWVzdBoyLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZUZlYXR1cmVWYXJpYXRpb25zUmVzcG9uc2UiABJ/ChZVcGRhdGVGZWF0dXJlVGFyZ2V0aW5nEjAuYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmVhdHVyZVRhcmdldGluZ1JlcXVlc3QaMS5idWNrZXRlZXIuZmVhdHVyZS5VcGRhdGVGZWF0dXJlVGFyZ2V0aW5nUmVzcG9uc2UiABJhCgxDbG9uZUZlYXR1cmUSJi5idWNrZXRlZXIuZmVhdHVyZS5DbG9uZUZlYXR1cmVSZXF1ZXN0GicuYnVja2V0ZWVyLmZlYXR1cmUuQ2xvbmVGZWF0dXJlUmVzcG9uc2UiABKmBAoNQ3JlYXRlU2VnbWVudBInLmJ1Y2tldGVlci5mZWF0dXJlLkNyZWF0ZVNlZ21lbnRSZXF1ZXN0GiguYnVja2V0ZWVyLmZlYXR1cmUuQ3JlYXRlU2VnbWVudFJlc3BvbnNlIsEDkkGnAwoHc2VnbWVudBIGQ3JlYXRlGhFDcmVhdGUgYSBzZWdtZW50LioVd2ViLnYxLnNlZ21lbnQuY3JlYXRlSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCECILL3YxL3NlZ21lbnQ6ASoSkQQKCkdldFNlZ21lbnQSJC5idWNrZXRlZXIuZmVhdHVyZS5HZXRTZWdtZW50UmVxdWVzdBolLmJ1Y2tldGVlci5mZWF0dXJlLkdldFNlZ21lbnRSZXNwb25zZSK1A5JBngMKB3NlZ21lbnQSA0dldBoOR2V0IGEgc2VnbWVudC4qEndlYi52MS5zZWdtZW50LmdldEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAg0SCy92MS9zZWdtZW50EpoECgxMaXN0U2VnbWVudHMSJi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0U2VnbWVudHNSZXF1ZXN0GicuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdFNlZ21lbnRzUmVzcG9uc2UiuAOSQaADCgdzZWdtZW50EgRMaXN0Gg5MaXN0IHNlZ21lbnRzLioTd2ViLnYxLnNlZ21lbnQubGlzdEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAg4SDC92MS9zZWdtZW50cxKjBAoNRGVsZXRlU2VnbWVudBInLmJ1Y2tldGVlci5mZWF0dXJlLkRlbGV0ZVNlZ21lbnRSZXF1ZXN0GiguYnVja2V0ZWVyLmZlYXR1cmUuRGVsZXRlU2VnbWVudFJlc3BvbnNlIr4DkkGnAwoHc2VnbWVudBIGRGVsZXRlGhFEZWxldGUgYSBzZWdtZW50LioVd2ViLnYxLnNlZ21lbnQuZGVsZXRlSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCDSoLL3YxL3NlZ21lbnQSpgQKDVVwZGF0ZVNlZ21lbnQSJy5idWNrZXRlZXIuZmVhdHVyZS5VcGRhdGVTZWdtZW50UmVxdWVzdBooLmJ1Y2tldGVlci5mZWF0dXJlLlVwZGF0ZVNlZ21lbnRSZXNwb25zZSLBA5JBpwMKB3NlZ21lbnQSBlVwZGF0ZRoRVXBkYXRlIGEgc2VnbWVudC4qFXdlYi52MS5zZWdtZW50LnVwZGF0ZUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhAyCy92MS9zZWdtZW50OgEqEmoKDkFkZFNlZ21lbnRVc2VyEiguYnVja2V0ZWVyLmZlYXR1cmUuQWRkU2VnbWVudFVzZXJSZXF1ZXN0GikuYnVja2V0ZWVyLmZlYXR1cmUuQWRkU2VnbWVudFVzZXJSZXNwb25zZSIDiAIBEnMKEURlbGV0ZVNlZ21lbnRVc2VyEisuYnVja2V0ZWVyLmZlYXR1cmUuRGVsZXRlU2VnbWVudFVzZXJSZXF1ZXN0GiwuYnVja2V0ZWVyLmZlYXR1cmUuRGVsZXRlU2VnbWVudFVzZXJSZXNwb25zZSIDiAIBEmoKDkdldFNlZ21lbnRVc2VyEiguYnVja2V0ZWVyLmZlYXR1cmUuR2V0U2VnbWVudFVzZXJSZXF1ZXN0GikuYnVja2V0ZWVyLmZlYXR1cmUuR2V0U2VnbWVudFVzZXJSZXNwb25zZSIDiAIBEm0KEExpc3RTZWdtZW50VXNlcnMSKi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0U2VnbWVudFVzZXJzUmVxdWVzdBorLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RTZWdtZW50VXNlcnNSZXNwb25zZSIAEuwEChZCdWxrVXBsb2FkU2VnbWVudFVzZXJzEjAuYnVja2V0ZWVyLmZlYXR1cmUuQnVsa1VwbG9hZFNlZ21lbnRVc2Vyc1JlcXVlc3QaMS5idWNrZXRlZXIuZmVhdHVyZS5CdWxrVXBsb2FkU2VnbWVudFVzZXJzUmVzcG9uc2Ui7AOSQcADCgdzZWdtZW50EgtCdWxrIHVwbG9hZBoaQnVsayB1cGxvYWQgc2VnbWVudCB1c2Vycy4qIHdlYi52MS5zZWdtZW50X3VzZXJzLmJ1bGtfdXBsb2FkSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCIiIdL3YxL3NlZ21lbnRfdXNlcnMvYnVsa191cGxvYWQ6ASoS9wQKGEJ1bGtEb3dubG9hZFNlZ21lbnRVc2VycxIyLmJ1Y2tldGVlci5mZWF0dXJlLkJ1bGtEb3dubG9hZFNlZ21lbnRVc2Vyc1JlcXVlc3QaMy5idWNrZXRlZXIuZmVhdHVyZS5CdWxrRG93bmxvYWRTZWdtZW50VXNlcnNSZXNwb25zZSLxA5JBxgMKB3NlZ21lbnQSDUJ1bGsgZG93bmxvYWQaHEJ1bGsgZG93bmxvYWQgc2VnbWVudCB1c2Vycy4qIndlYi52MS5zZWdtZW50X3VzZXJzLmJ1bGtfZG93bmxvYWRKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIhEh8vdjEvc2VnbWVudF91c2Vycy9idWxrX2Rvd25sb2FkEm0KEEV2YWx1YXRlRmVhdHVyZXMSKi5idWNrZXRlZXIuZmVhdHVyZS5FdmFsdWF0ZUZlYXR1cmVzUmVxdWVzdBorLmJ1Y2tldGVlci5mZWF0dXJlLkV2YWx1YXRlRmVhdHVyZXNSZXNwb25zZSIAElUKCExpc3RUYWdzEiIuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdFRhZ3NSZXF1ZXN0GiMuYnVja2V0ZWVyLmZlYXR1cmUuTGlzdFRhZ3NSZXNwb25zZSIAEnAKEUNyZWF0ZUZsYWdUcmlnZ2VyEisuYnVja2V0ZWVyLmZlYXR1cmUuQ3JlYXRlRmxhZ1RyaWdnZXJSZXF1ZXN0GiwuYnVja2V0ZWVyLmZlYXR1cmUuQ3JlYXRlRmxhZ1RyaWdnZXJSZXNwb25zZSIAEnAKEVVwZGF0ZUZsYWdUcmlnZ2VyEisuYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmxhZ1RyaWdnZXJSZXF1ZXN0GiwuYnVja2V0ZWVyLmZlYXR1cmUuVXBkYXRlRmxhZ1RyaWdnZXJSZXNwb25zZSIAEnAKEUVuYWJsZUZsYWdUcmlnZ2VyEisuYnVja2V0ZWVyLmZlYXR1cmUuRW5hYmxlRmxhZ1RyaWdnZXJSZXF1ZXN0GiwuYnVja2V0ZWVyLmZlYXR1cmUuRW5hYmxlRmxhZ1RyaWdnZXJSZXNwb25zZSIAEnMKEkRpc2FibGVGbGFnVHJpZ2dlchIsLmJ1Y2tldGVlci5mZWF0dXJlLkRpc2FibGVGbGFnVHJpZ2dlclJlcXVlc3QaLS5idWNrZXRlZXIuZmVhdHVyZS5EaXNhYmxlRmxhZ1RyaWdnZXJSZXNwb25zZSIAEm0KEFJlc2V0RmxhZ1RyaWdnZXISKi5idWNrZXRlZXIuZmVhdHVyZS5SZXNldEZsYWdUcmlnZ2VyUmVxdWVzdBorLmJ1Y2tldGVlci5mZWF0dXJlLlJlc2V0RmxhZ1RyaWdnZXJSZXNwb25zZSIAEnAKEURlbGV0ZUZsYWdUcmlnZ2VyEisuYnVja2V0ZWVyLmZlYXR1cmUuRGVsZXRlRmxhZ1RyaWdnZXJSZXF1ZXN0GiwuYnVja2V0ZWVyLmZlYXR1cmUuRGVsZXRlRmxhZ1RyaWdnZXJSZXNwb25zZSIAEmcKDkdldEZsYWdUcmlnZ2VyEiguYnVja2V0ZWVyLmZlYXR1cmUuR2V0RmxhZ1RyaWdnZXJSZXF1ZXN0GikuYnVja2V0ZWVyLmZlYXR1cmUuR2V0RmxhZ1RyaWdnZXJSZXNwb25zZSIAEm0KEExpc3RGbGFnVHJpZ2dlcnMSKi5idWNrZXRlZXIuZmVhdHVyZS5MaXN0RmxhZ1RyaWdnZXJzUmVxdWVzdBorLmJ1Y2tldGVlci5mZWF0dXJlLkxpc3RGbGFnVHJpZ2dlcnNSZXNwb25zZSIAEpQBChJGbGFnVHJpZ2dlcldlYmhvb2sSLC5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlcldlYmhvb2tSZXF1ZXN0Gi0uYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXJXZWJob29rUmVzcG9uc2UiIYLT5JMCGyIZL3dlYmhvb2svdHJpZ2dlcnMve3Rva2VufUIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8z accountDescriptor: CucDCiNwcm90by9lbnZpcm9ubWVudC9lbnZpcm9ubWVudC5wcm90bxIVYnVja2V0ZWVyLmVudmlyb25tZW50IukCCg1FbnZpcm9ubWVudFYyEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEhkKCHVybF9jb2RlGAMgASgJUgd1cmxDb2RlEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbhIdCgpwcm9qZWN0X2lkGAUgASgJUglwcm9qZWN0SWQSGgoIYXJjaGl2ZWQYBiABKAhSCGFyY2hpdmVkEh0KCmNyZWF0ZWRfYXQYByABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAggASgDUgl1cGRhdGVkQXQSJwoPb3JnYW5pemF0aW9uX2lkGAkgASgJUg5vcmdhbml6YXRpb25JZBInCg9yZXF1aXJlX2NvbW1lbnQYCiABKAhSDnJlcXVpcmVDb21tZW50EiwKEmZlYXR1cmVfZmxhZ19jb3VudBgLIAEoBVIQZmVhdHVyZUZsYWdDb3VudEI1WjNnaXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZW52aXJvbm1lbnRiBnByb3RvMwr9AwofcHJvdG8vZW52aXJvbm1lbnQvcHJvamVjdC5wcm90bxIVYnVja2V0ZWVyLmVudmlyb25tZW50IoMDCgdQcm9qZWN0Eg4KAmlkGAEgASgJUgJpZBIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SGgoIZGlzYWJsZWQYAyABKAhSCGRpc2FibGVkEhQKBXRyaWFsGAQgASgIUgV0cmlhbBIjCg1jcmVhdG9yX2VtYWlsGAUgASgJUgxjcmVhdG9yRW1haWwSHQoKY3JlYXRlZF9hdBgGIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYByABKANSCXVwZGF0ZWRBdBISCgRuYW1lGAggASgJUgRuYW1lEhkKCHVybF9jb2RlGAkgASgJUgd1cmxDb2RlEicKD29yZ2FuaXphdGlvbl9pZBgKIAEoCVIOb3JnYW5pemF0aW9uSWQSKwoRZW52aXJvbm1lbnRfY291bnQYCyABKAVSEGVudmlyb25tZW50Q291bnQSLAoSZmVhdHVyZV9mbGFnX2NvdW50GAwgASgFUhBmZWF0dXJlRmxhZ0NvdW50QjVaM2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9lbnZpcm9ubWVudGIGcHJvdG8zCq8ECiRwcm90by9lbnZpcm9ubWVudC9vcmdhbml6YXRpb24ucHJvdG8SFWJ1Y2tldGVlci5lbnZpcm9ubWVudCKwAwoMT3JnYW5pemF0aW9uEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEhkKCHVybF9jb2RlGAMgASgJUgd1cmxDb2RlEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbhIaCghkaXNhYmxlZBgFIAEoCFIIZGlzYWJsZWQSGgoIYXJjaGl2ZWQYBiABKAhSCGFyY2hpdmVkEhQKBXRyaWFsGAcgASgIUgV0cmlhbBIdCgpjcmVhdGVkX2F0GAggASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgJIAEoA1IJdXBkYXRlZEF0EiEKDHN5c3RlbV9hZG1pbhgKIAEoCFILc3lzdGVtQWRtaW4SIwoNcHJvamVjdF9jb3VudBgLIAEoBVIMcHJvamVjdENvdW50EisKEWVudmlyb25tZW50X2NvdW50GAwgASgFUhBlbnZpcm9ubWVudENvdW50Eh0KCnVzZXJfY291bnQYDSABKAVSCXVzZXJDb3VudBIfCgtvd25lcl9lbWFpbBgOIAEoCVIKb3duZXJFbWFpbEI1WjNnaXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZW52aXJvbm1lbnRiBnByb3RvMwqQAwohcHJvdG8vYWNjb3VudC9zZWFyY2hfZmlsdGVyLnByb3RvEhFidWNrZXRlZXIuYWNjb3VudCLpAQoMU2VhcmNoRmlsdGVyEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEhQKBXF1ZXJ5GAMgASgJUgVxdWVyeRJRChJmaWx0ZXJfdGFyZ2V0X3R5cGUYBCABKA4yIy5idWNrZXRlZXIuYWNjb3VudC5GaWx0ZXJUYXJnZXRUeXBlUhBmaWx0ZXJUYXJnZXRUeXBlEiUKDmVudmlyb25tZW50X2lkGAUgASgJUg1lbnZpcm9ubWVudElkEiUKDmRlZmF1bHRfZmlsdGVyGAYgASgIUg1kZWZhdWx0RmlsdGVyKjEKEEZpbHRlclRhcmdldFR5cGUSCwoHVU5LTk9XThAAEhAKDEZFQVRVUkVfRkxBRxABQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9hY2NvdW50YgZwcm90bzMK1BMKG3Byb3RvL2FjY291bnQvYWNjb3VudC5wcm90bxIRYnVja2V0ZWVyLmFjY291bnQaI3Byb3RvL2Vudmlyb25tZW50L2Vudmlyb25tZW50LnByb3RvGh9wcm90by9lbnZpcm9ubWVudC9wcm9qZWN0LnByb3RvGiRwcm90by9lbnZpcm9ubWVudC9vcmdhbml6YXRpb24ucHJvdG8aIXByb3RvL2FjY291bnQvc2VhcmNoX2ZpbHRlci5wcm90byKrAgoHQWNjb3VudBIOCgJpZBgBIAEoCVICaWQSFAoFZW1haWwYAiABKAlSBWVtYWlsEhIKBG5hbWUYAyABKAlSBG5hbWUSMwoEcm9sZRgEIAEoDjIfLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnQuUm9sZVIEcm9sZRIaCghkaXNhYmxlZBgFIAEoCFIIZGlzYWJsZWQSHQoKY3JlYXRlZF9hdBgGIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYByABKANSCXVwZGF0ZWRBdBIYCgdkZWxldGVkGAggASgIUgdkZWxldGVkIjkKBFJvbGUSCgoGVklFV0VSEAASCgoGRURJVE9SEAESCQoFT1dORVIQAhIOCgpVTkFTU0lHTkVEEGM6AhgBIrwICglBY2NvdW50VjISFAoFZW1haWwYASABKAlSBWVtYWlsEhIKBG5hbWUYAiABKAlSBG5hbWUSKAoQYXZhdGFyX2ltYWdlX3VybBgDIAEoCVIOYXZhdGFySW1hZ2VVcmwSJwoPb3JnYW5pemF0aW9uX2lkGAQgASgJUg5vcmdhbml6YXRpb25JZBJbChFvcmdhbml6YXRpb25fcm9sZRgFIAEoDjIuLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5Sb2xlLk9yZ2FuaXphdGlvblIQb3JnYW5pemF0aW9uUm9sZRJZChFlbnZpcm9ubWVudF9yb2xlcxgGIAMoCzIsLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5FbnZpcm9ubWVudFJvbGVSEGVudmlyb25tZW50Um9sZXMSGgoIZGlzYWJsZWQYByABKAhSCGRpc2FibGVkEh0KCmNyZWF0ZWRfYXQYCCABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAkgASgDUgl1cGRhdGVkQXQSRgoOc2VhcmNoX2ZpbHRlcnMYCiADKAsyHy5idWNrZXRlZXIuYWNjb3VudC5TZWFyY2hGaWx0ZXJSDXNlYXJjaEZpbHRlcnMSHQoKZmlyc3RfbmFtZRgLIAEoCVIJZmlyc3ROYW1lEhsKCWxhc3RfbmFtZRgMIAEoCVIIbGFzdE5hbWUSGgoIbGFuZ3VhZ2UYDSABKAlSCGxhbmd1YWdlEhsKCWxhc3Rfc2VlbhgOIAEoA1IIbGFzdFNlZW4SKAoQYXZhdGFyX2ZpbGVfdHlwZRgPIAEoCVIOYXZhdGFyRmlsZVR5cGUSIQoMYXZhdGFyX2ltYWdlGBAgASgMUgthdmF0YXJJbWFnZRIrChFlbnZpcm9ubWVudF9jb3VudBgRIAEoBVIQZW52aXJvbm1lbnRDb3VudBISCgR0YWdzGBIgAygJUgR0YWdzGtcBCgRSb2xlIlkKC0Vudmlyb25tZW50EhoKFkVudmlyb25tZW50X1VOQVNTSUdORUQQABIWChJFbnZpcm9ubWVudF9WSUVXRVIQARIWChJFbnZpcm9ubWVudF9FRElUT1IQAiJ0CgxPcmdhbml6YXRpb24SGwoXT3JnYW5pemF0aW9uX1VOQVNTSUdORUQQABIXChNPcmdhbml6YXRpb25fTUVNQkVSEAESFgoST3JnYW5pemF0aW9uX0FETUlOEAISFgoST3JnYW5pemF0aW9uX09XTkVSEAMaewoPRW52aXJvbm1lbnRSb2xlEiUKDmVudmlyb25tZW50X2lkGAEgASgJUg1lbnZpcm9ubWVudElkEkEKBHJvbGUYAiABKA4yLS5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5FbnZpcm9ubWVudFIEcm9sZSLqBgoOQ29uc29sZUFjY291bnQSFAoFZW1haWwYASABKAlSBWVtYWlsEhIKBG5hbWUYAiABKAlSBG5hbWUSHQoKYXZhdGFyX3VybBgDIAEoCVIJYXZhdGFyVXJsEiYKD2lzX3N5c3RlbV9hZG1pbhgEIAEoCFINaXNTeXN0ZW1BZG1pbhJHCgxvcmdhbml6YXRpb24YBSABKAsyIy5idWNrZXRlZXIuZW52aXJvbm1lbnQuT3JnYW5pemF0aW9uUgxvcmdhbml6YXRpb24SWwoRb3JnYW5pemF0aW9uX3JvbGUYBiABKA4yLi5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5Pcmdhbml6YXRpb25SEG9yZ2FuaXphdGlvblJvbGUSXgoRZW52aXJvbm1lbnRfcm9sZXMYByADKAsyMS5idWNrZXRlZXIuYWNjb3VudC5Db25zb2xlQWNjb3VudC5FbnZpcm9ubWVudFJvbGVSEGVudmlyb25tZW50Um9sZXMSRgoOc2VhcmNoX2ZpbHRlcnMYCCADKAsyHy5idWNrZXRlZXIuYWNjb3VudC5TZWFyY2hGaWx0ZXJSDXNlYXJjaEZpbHRlcnMSHQoKZmlyc3RfbmFtZRgJIAEoCVIJZmlyc3ROYW1lEhsKCWxhc3RfbmFtZRgKIAEoCVIIbGFzdE5hbWUSGgoIbGFuZ3VhZ2UYCyABKAlSCGxhbmd1YWdlEigKEGF2YXRhcl9maWxlX3R5cGUYDCABKAlSDmF2YXRhckZpbGVUeXBlEiEKDGF2YXRhcl9pbWFnZRgNIAEoDFILYXZhdGFySW1hZ2USGwoJbGFzdF9zZWVuGA4gASgDUghsYXN0U2VlbhrWAQoPRW52aXJvbm1lbnRSb2xlEkYKC2Vudmlyb25tZW50GAEgASgLMiQuYnVja2V0ZWVyLmVudmlyb25tZW50LkVudmlyb25tZW50VjJSC2Vudmlyb25tZW50EjgKB3Byb2plY3QYAiABKAsyHi5idWNrZXRlZXIuZW52aXJvbm1lbnQuUHJvamVjdFIHcHJvamVjdBJBCgRyb2xlGAMgASgOMi0uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLlJvbGUuRW52aXJvbm1lbnRSBHJvbGVCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwrmBgobcHJvdG8vYWNjb3VudC9hcGlfa2V5LnByb3RvEhFidWNrZXRlZXIuYWNjb3VudBojcHJvdG8vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQucHJvdG8iuwMKBkFQSUtleRIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIyCgRyb2xlGAMgASgOMh4uYnVja2V0ZWVyLmFjY291bnQuQVBJS2V5LlJvbGVSBHJvbGUSGgoIZGlzYWJsZWQYBCABKAhSCGRpc2FibGVkEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSHgoKbWFpbnRhaW5lchgHIAEoCVIKbWFpbnRhaW5lchIXCgdhcGlfa2V5GAggASgJUgZhcGlLZXkSIAoLZGVzY3JpcHRpb24YCSABKAlSC2Rlc2NyaXB0aW9uEikKEGVudmlyb25tZW50X25hbWUYCiABKAlSD2Vudmlyb25tZW50TmFtZSJ5CgRSb2xlEgsKB1VOS05PV04QABIOCgpTREtfQ0xJRU5UEAESDgoKU0RLX1NFUlZFUhACEhgKFFBVQkxJQ19BUElfUkVBRF9PTkxZEAMSFAoQUFVCTElDX0FQSV9XUklURRAEEhQKEFBVQkxJQ19BUElfQURNSU4QBSKVAgoRRW52aXJvbm1lbnRBUElLZXkSMgoHYXBpX2tleRgCIAEoCzIZLmJ1Y2tldGVlci5hY2NvdW50LkFQSUtleVIGYXBpS2V5EjEKFGVudmlyb25tZW50X2Rpc2FibGVkGAMgASgIUhNlbnZpcm9ubWVudERpc2FibGVkEiEKCnByb2plY3RfaWQYBCABKAlCAhgBUglwcm9qZWN0SWQSRgoLZW52aXJvbm1lbnQYBSABKAsyJC5idWNrZXRlZXIuZW52aXJvbm1lbnQuRW52aXJvbm1lbnRWMlILZW52aXJvbm1lbnQSKAoQcHJvamVjdF91cmxfY29kZRgGIAEoCVIOcHJvamVjdFVybENvZGVKBAgBEAJCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwqcEgobcHJvdG8vYWNjb3VudC9jb21tYW5kLnByb3RvEhFidWNrZXRlZXIuYWNjb3VudBobcHJvdG8vYWNjb3VudC9hY2NvdW50LnByb3RvGhtwcm90by9hY2NvdW50L2FwaV9rZXkucHJvdG8aIXByb3RvL2FjY291bnQvc2VhcmNoX2ZpbHRlci5wcm90byKQAwoWQ3JlYXRlQWNjb3VudFYyQ29tbWFuZBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSEgoEbmFtZRgCIAEoCVIEbmFtZRIoChBhdmF0YXJfaW1hZ2VfdXJsGAMgASgJUg5hdmF0YXJJbWFnZVVybBJbChFvcmdhbml6YXRpb25fcm9sZRgEIAEoDjIuLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5Sb2xlLk9yZ2FuaXphdGlvblIQb3JnYW5pemF0aW9uUm9sZRJZChFlbnZpcm9ubWVudF9yb2xlcxgFIAMoCzIsLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5FbnZpcm9ubWVudFJvbGVSEGVudmlyb25tZW50Um9sZXMSHQoKZmlyc3RfbmFtZRgGIAEoCVIJZmlyc3ROYW1lEhsKCWxhc3RfbmFtZRgHIAEoCVIIbGFzdE5hbWUSGgoIbGFuZ3VhZ2UYCCABKAlSCGxhbmd1YWdlEhIKBHRhZ3MYCSADKAlSBHRhZ3MiMAoaQ2hhbmdlQWNjb3VudFYyTmFtZUNvbW1hbmQSEgoEbmFtZRgBIAEoCVIEbmFtZSJACh9DaGFuZ2VBY2NvdW50VjJGaXJzdE5hbWVDb21tYW5kEh0KCmZpcnN0X25hbWUYASABKAlSCWZpcnN0TmFtZSI9Ch5DaGFuZ2VBY2NvdW50VjJMYXN0TmFtZUNvbW1hbmQSGwoJbGFzdF9uYW1lGAEgASgJUghsYXN0TmFtZSI8Ch5DaGFuZ2VBY2NvdW50VjJMYW5ndWFnZUNvbW1hbmQSGgoIbGFuZ3VhZ2UYASABKAlSCGxhbmd1YWdlIlAKJENoYW5nZUFjY291bnRWMkF2YXRhckltYWdlVXJsQ29tbWFuZBIoChBhdmF0YXJfaW1hZ2VfdXJsGAEgASgJUg5hdmF0YXJJbWFnZVVybCJrChxDaGFuZ2VBY2NvdW50VjJBdmF0YXJDb21tYW5kEiEKDGF2YXRhcl9pbWFnZRgBIAEoDFILYXZhdGFySW1hZ2USKAoQYXZhdGFyX2ZpbGVfdHlwZRgCIAEoCVIOYXZhdGFyRmlsZVR5cGUiMAoaQ2hhbmdlQWNjb3VudFYyVGFnc0NvbW1hbmQSEgoEdGFncxgBIAMoCVIEdGFncyI9Ch5DaGFuZ2VBY2NvdW50VjJMYXN0U2VlbkNvbW1hbmQSGwoJbGFzdF9zZWVuGAEgASgDUghsYXN0U2VlbiJsCiZDaGFuZ2VBY2NvdW50VjJPcmdhbml6YXRpb25Sb2xlQ29tbWFuZBJCCgRyb2xlGAEgASgOMi4uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLlJvbGUuT3JnYW5pemF0aW9uUgRyb2xlIqUCCiZDaGFuZ2VBY2NvdW50VjJFbnZpcm9ubWVudFJvbGVzQ29tbWFuZBJCCgVyb2xlcxgBIAMoCzIsLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5FbnZpcm9ubWVudFJvbGVSBXJvbGVzEmIKCndyaXRlX3R5cGUYAiABKA4yQy5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VBY2NvdW50VjJFbnZpcm9ubWVudFJvbGVzQ29tbWFuZC5Xcml0ZVR5cGVSCXdyaXRlVHlwZSJTCglXcml0ZVR5cGUSGQoVV3JpdGVUeXBlX1VOU1BFQ0lGSUVEEAASFgoSV3JpdGVUeXBlX09WRVJSSURFEAESEwoPV3JpdGVUeXBlX1BBVENIEAIiGAoWRW5hYmxlQWNjb3VudFYyQ29tbWFuZCIZChdEaXNhYmxlQWNjb3VudFYyQ29tbWFuZCIYChZEZWxldGVBY2NvdW50VjJDb21tYW5kIl0KE0NyZWF0ZUFQSUtleUNvbW1hbmQSEgoEbmFtZRgBIAEoCVIEbmFtZRIyCgRyb2xlGAIgASgOMh4uYnVja2V0ZWVyLmFjY291bnQuQVBJS2V5LlJvbGVSBHJvbGUiLQoXQ2hhbmdlQVBJS2V5TmFtZUNvbW1hbmQSEgoEbmFtZRgBIAEoCVIEbmFtZSIVChNFbmFibGVBUElLZXlDb21tYW5kIhYKFERpc2FibGVBUElLZXlDb21tYW5kIuYBChlDcmVhdGVTZWFyY2hGaWx0ZXJDb21tYW5kEhIKBG5hbWUYASABKAlSBG5hbWUSFAoFcXVlcnkYAiABKAlSBXF1ZXJ5ElEKEmZpbHRlcl90YXJnZXRfdHlwZRgDIAEoDjIjLmJ1Y2tldGVlci5hY2NvdW50LkZpbHRlclRhcmdldFR5cGVSEGZpbHRlclRhcmdldFR5cGUSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWQSJQoOZGVmYXVsdF9maWx0ZXIYBSABKAhSDWRlZmF1bHRGaWx0ZXIiQwodQ2hhbmdlU2VhcmNoRmlsdGVyTmFtZUNvbW1hbmQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiRgoeQ2hhbmdlU2VhcmNoRmlsdGVyUXVlcnlDb21tYW5kEg4KAmlkGAEgASgJUgJpZBIUCgVxdWVyeRgCIAEoCVIFcXVlcnkiWQogQ2hhbmdlRGVmYXVsdFNlYXJjaEZpbHRlckNvbW1hbmQSDgoCaWQYASABKAlSAmlkEiUKDmRlZmF1bHRfZmlsdGVyGAIgASgIUg1kZWZhdWx0RmlsdGVyIisKGURlbGV0ZVNlYXJjaEZpbHRlckNvbW1hbmQSDgoCaWQYASABKAlSAmlkQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9hY2NvdW50YgZwcm90bzMKhgQKHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIiMKC0RvdWJsZVZhbHVlEhQKBXZhbHVlGAEgASgBUgV2YWx1ZSIiCgpGbG9hdFZhbHVlEhQKBXZhbHVlGAEgASgCUgV2YWx1ZSIiCgpJbnQ2NFZhbHVlEhQKBXZhbHVlGAEgASgDUgV2YWx1ZSIjCgtVSW50NjRWYWx1ZRIUCgV2YWx1ZRgBIAEoBFIFdmFsdWUiIgoKSW50MzJWYWx1ZRIUCgV2YWx1ZRgBIAEoBVIFdmFsdWUiIwoLVUludDMyVmFsdWUSFAoFdmFsdWUYASABKA1SBXZhbHVlIiEKCUJvb2xWYWx1ZRIUCgV2YWx1ZRgBIAEoCFIFdmFsdWUiIwoLU3RyaW5nVmFsdWUSFAoFdmFsdWUYASABKAlSBXZhbHVlIiIKCkJ5dGVzVmFsdWUSFAoFdmFsdWUYASABKAxSBXZhbHVlQoMBChNjb20uZ29vZ2xlLnByb3RvYnVmQg1XcmFwcGVyc1Byb3RvUAFaMWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3dyYXBwZXJzcGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMwqHBQoVZ29vZ2xlL2FwaS9odHRwLnByb3RvEgpnb29nbGUuYXBpInkKBEh0dHASKgoFcnVsZXMYASADKAsyFC5nb29nbGUuYXBpLkh0dHBSdWxlUgVydWxlcxJFCh9mdWxseV9kZWNvZGVfcmVzZXJ2ZWRfZXhwYW5zaW9uGAIgASgIUhxmdWxseURlY29kZVJlc2VydmVkRXhwYW5zaW9uIrUCCghIdHRwUnVsZRIaCghzZWxlY3RvchgBIAEoCVIIc2VsZWN0b3ISEgoDZ2V0GAIgASgJSABSA2dldBISCgNwdXQYAyABKAlIAFIDcHV0EhQKBHBvc3QYBCABKAlIAFIEcG9zdBIYCgZkZWxldGUYBSABKAlIAFIGZGVsZXRlEhYKBXBhdGNoGAYgASgJSABSBXBhdGNoEjcKBmN1c3RvbRgIIAEoCzIdLmdvb2dsZS5hcGkuQ3VzdG9tSHR0cFBhdHRlcm5IAFIGY3VzdG9tEhIKBGJvZHkYByABKAlSBGJvZHkSRQoTYWRkaXRpb25hbF9iaW5kaW5ncxgLIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSEmFkZGl0aW9uYWxCaW5kaW5nc0IJCgdwYXR0ZXJuIjsKEUN1c3RvbUh0dHBQYXR0ZXJuEhIKBGtpbmQYASABKAlSBGtpbmQSEgoEcGF0aBgCIAEoCVIEcGF0aEJqCg5jb20uZ29vZ2xlLmFwaUIJSHR0cFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25z+AEBogIER0FQSWIGcHJvdG8zCuFGCiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIk0KEUZpbGVEZXNjcmlwdG9yU2V0EjgKBGZpbGUYASADKAsyJC5nb29nbGUucHJvdG9idWYuRmlsZURlc2NyaXB0b3JQcm90b1IEZmlsZSL+BAoTRmlsZURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEhgKB3BhY2thZ2UYAiABKAlSB3BhY2thZ2USHgoKZGVwZW5kZW5jeRgDIAMoCVIKZGVwZW5kZW5jeRIrChFwdWJsaWNfZGVwZW5kZW5jeRgKIAMoBVIQcHVibGljRGVwZW5kZW5jeRInCg93ZWFrX2RlcGVuZGVuY3kYCyADKAVSDndlYWtEZXBlbmRlbmN5EkMKDG1lc3NhZ2VfdHlwZRgEIAMoCzIgLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG9SC21lc3NhZ2VUeXBlEkEKCWVudW1fdHlwZRgFIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvUghlbnVtVHlwZRJBCgdzZXJ2aWNlGAYgAygLMicuZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VEZXNjcmlwdG9yUHJvdG9SB3NlcnZpY2USQwoJZXh0ZW5zaW9uGAcgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvUglleHRlbnNpb24SNgoHb3B0aW9ucxgIIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9uc1IHb3B0aW9ucxJJChBzb3VyY2VfY29kZV9pbmZvGAkgASgLMh8uZ29vZ2xlLnByb3RvYnVmLlNvdXJjZUNvZGVJbmZvUg5zb3VyY2VDb2RlSW5mbxIWCgZzeW50YXgYDCABKAlSBnN5bnRheBIYCgdlZGl0aW9uGA0gASgJUgdlZGl0aW9uIrkGCg9EZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRI7CgVmaWVsZBgCIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90b1IFZmllbGQSQwoJZXh0ZW5zaW9uGAYgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvUglleHRlbnNpb24SQQoLbmVzdGVkX3R5cGUYAyADKAsyIC5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvUgpuZXN0ZWRUeXBlEkEKCWVudW1fdHlwZRgEIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvUghlbnVtVHlwZRJYCg9leHRlbnNpb25fcmFuZ2UYBSADKAsyLy5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvLkV4dGVuc2lvblJhbmdlUg5leHRlbnNpb25SYW5nZRJECgpvbmVvZl9kZWNsGAggAygLMiUuZ29vZ2xlLnByb3RvYnVmLk9uZW9mRGVzY3JpcHRvclByb3RvUglvbmVvZkRlY2wSOQoHb3B0aW9ucxgHIAEoCzIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9uc1IHb3B0aW9ucxJVCg5yZXNlcnZlZF9yYW5nZRgJIAMoCzIuLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG8uUmVzZXJ2ZWRSYW5nZVINcmVzZXJ2ZWRSYW5nZRIjCg1yZXNlcnZlZF9uYW1lGAogAygJUgxyZXNlcnZlZE5hbWUaegoORXh0ZW5zaW9uUmFuZ2USFAoFc3RhcnQYASABKAVSBXN0YXJ0EhAKA2VuZBgCIAEoBVIDZW5kEkAKB29wdGlvbnMYAyABKAsyJi5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2VPcHRpb25zUgdvcHRpb25zGjcKDVJlc2VydmVkUmFuZ2USFAoFc3RhcnQYASABKAVSBXN0YXJ0EhAKA2VuZBgCIAEoBVIDZW5kIq0EChVFeHRlbnNpb25SYW5nZU9wdGlvbnMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24SWQoLZGVjbGFyYXRpb24YAiADKAsyMi5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2VPcHRpb25zLkRlY2xhcmF0aW9uQgOIAQJSC2RlY2xhcmF0aW9uEmgKDHZlcmlmaWNhdGlvbhgDIAEoDjI4Lmdvb2dsZS5wcm90b2J1Zi5FeHRlbnNpb25SYW5nZU9wdGlvbnMuVmVyaWZpY2F0aW9uU3RhdGU6ClVOVkVSSUZJRURSDHZlcmlmaWNhdGlvbhqzAQoLRGVjbGFyYXRpb24SFgoGbnVtYmVyGAEgASgFUgZudW1iZXISGwoJZnVsbF9uYW1lGAIgASgJUghmdWxsTmFtZRISCgR0eXBlGAMgASgJUgR0eXBlEiMKC2lzX3JlcGVhdGVkGAQgASgIQgIYAVIKaXNSZXBlYXRlZBIaCghyZXNlcnZlZBgFIAEoCFIIcmVzZXJ2ZWQSGgoIcmVwZWF0ZWQYBiABKAhSCHJlcGVhdGVkIjQKEVZlcmlmaWNhdGlvblN0YXRlEg8KC0RFQ0xBUkFUSU9OEAASDgoKVU5WRVJJRklFRBABKgkI6AcQgICAgAIiwQYKFEZpZWxkRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSFgoGbnVtYmVyGAMgASgFUgZudW1iZXISQQoFbGFiZWwYBCABKA4yKy5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uTGFiZWxSBWxhYmVsEj4KBHR5cGUYBSABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZVIEdHlwZRIbCgl0eXBlX25hbWUYBiABKAlSCHR5cGVOYW1lEhoKCGV4dGVuZGVlGAIgASgJUghleHRlbmRlZRIjCg1kZWZhdWx0X3ZhbHVlGAcgASgJUgxkZWZhdWx0VmFsdWUSHwoLb25lb2ZfaW5kZXgYCSABKAVSCm9uZW9mSW5kZXgSGwoJanNvbl9uYW1lGAogASgJUghqc29uTmFtZRI3CgdvcHRpb25zGAggASgLMh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9uc1IHb3B0aW9ucxInCg9wcm90bzNfb3B0aW9uYWwYESABKAhSDnByb3RvM09wdGlvbmFsIrYCCgRUeXBlEg8KC1RZUEVfRE9VQkxFEAESDgoKVFlQRV9GTE9BVBACEg4KClRZUEVfSU5UNjQQAxIPCgtUWVBFX1VJTlQ2NBAEEg4KClRZUEVfSU5UMzIQBRIQCgxUWVBFX0ZJWEVENjQQBhIQCgxUWVBFX0ZJWEVEMzIQBxINCglUWVBFX0JPT0wQCBIPCgtUWVBFX1NUUklORxAJEg4KClRZUEVfR1JPVVAQChIQCgxUWVBFX01FU1NBR0UQCxIOCgpUWVBFX0JZVEVTEAwSDwoLVFlQRV9VSU5UMzIQDRINCglUWVBFX0VOVU0QDhIRCg1UWVBFX1NGSVhFRDMyEA8SEQoNVFlQRV9TRklYRUQ2NBAQEg8KC1RZUEVfU0lOVDMyEBESDwoLVFlQRV9TSU5UNjQQEiJDCgVMYWJlbBISCg5MQUJFTF9PUFRJT05BTBABEhIKDkxBQkVMX1JFUVVJUkVEEAISEgoOTEFCRUxfUkVQRUFURUQQAyJjChRPbmVvZkRlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEjcKB29wdGlvbnMYAiABKAsyHS5nb29nbGUucHJvdG9idWYuT25lb2ZPcHRpb25zUgdvcHRpb25zIuMCChNFbnVtRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSPwoFdmFsdWUYAiADKAsyKS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlRGVzY3JpcHRvclByb3RvUgV2YWx1ZRI2CgdvcHRpb25zGAMgASgLMhwuZ29vZ2xlLnByb3RvYnVmLkVudW1PcHRpb25zUgdvcHRpb25zEl0KDnJlc2VydmVkX3JhbmdlGAQgAygLMjYuZ29vZ2xlLnByb3RvYnVmLkVudW1EZXNjcmlwdG9yUHJvdG8uRW51bVJlc2VydmVkUmFuZ2VSDXJlc2VydmVkUmFuZ2USIwoNcmVzZXJ2ZWRfbmFtZRgFIAMoCVIMcmVzZXJ2ZWROYW1lGjsKEUVudW1SZXNlcnZlZFJhbmdlEhQKBXN0YXJ0GAEgASgFUgVzdGFydBIQCgNlbmQYAiABKAVSA2VuZCKDAQoYRW51bVZhbHVlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSFgoGbnVtYmVyGAIgASgFUgZudW1iZXISOwoHb3B0aW9ucxgDIAEoCzIhLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVPcHRpb25zUgdvcHRpb25zIqcBChZTZXJ2aWNlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSPgoGbWV0aG9kGAIgAygLMiYuZ29vZ2xlLnByb3RvYnVmLk1ldGhvZERlc2NyaXB0b3JQcm90b1IGbWV0aG9kEjkKB29wdGlvbnMYAyABKAsyHy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnNSB29wdGlvbnMiiQIKFU1ldGhvZERlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEh0KCmlucHV0X3R5cGUYAiABKAlSCWlucHV0VHlwZRIfCgtvdXRwdXRfdHlwZRgDIAEoCVIKb3V0cHV0VHlwZRI4CgdvcHRpb25zGAQgASgLMh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnNSB29wdGlvbnMSMAoQY2xpZW50X3N0cmVhbWluZxgFIAEoCDoFZmFsc2VSD2NsaWVudFN0cmVhbWluZxIwChBzZXJ2ZXJfc3RyZWFtaW5nGAYgASgIOgVmYWxzZVIPc2VydmVyU3RyZWFtaW5nIpEJCgtGaWxlT3B0aW9ucxIhCgxqYXZhX3BhY2thZ2UYASABKAlSC2phdmFQYWNrYWdlEjAKFGphdmFfb3V0ZXJfY2xhc3NuYW1lGAggASgJUhJqYXZhT3V0ZXJDbGFzc25hbWUSNQoTamF2YV9tdWx0aXBsZV9maWxlcxgKIAEoCDoFZmFsc2VSEWphdmFNdWx0aXBsZUZpbGVzEkQKHWphdmFfZ2VuZXJhdGVfZXF1YWxzX2FuZF9oYXNoGBQgASgIQgIYAVIZamF2YUdlbmVyYXRlRXF1YWxzQW5kSGFzaBI6ChZqYXZhX3N0cmluZ19jaGVja191dGY4GBsgASgIOgVmYWxzZVITamF2YVN0cmluZ0NoZWNrVXRmOBJTCgxvcHRpbWl6ZV9mb3IYCSABKA4yKS5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMuT3B0aW1pemVNb2RlOgVTUEVFRFILb3B0aW1pemVGb3ISHQoKZ29fcGFja2FnZRgLIAEoCVIJZ29QYWNrYWdlEjUKE2NjX2dlbmVyaWNfc2VydmljZXMYECABKAg6BWZhbHNlUhFjY0dlbmVyaWNTZXJ2aWNlcxI5ChVqYXZhX2dlbmVyaWNfc2VydmljZXMYESABKAg6BWZhbHNlUhNqYXZhR2VuZXJpY1NlcnZpY2VzEjUKE3B5X2dlbmVyaWNfc2VydmljZXMYEiABKAg6BWZhbHNlUhFweUdlbmVyaWNTZXJ2aWNlcxI3ChRwaHBfZ2VuZXJpY19zZXJ2aWNlcxgqIAEoCDoFZmFsc2VSEnBocEdlbmVyaWNTZXJ2aWNlcxIlCgpkZXByZWNhdGVkGBcgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBIuChBjY19lbmFibGVfYXJlbmFzGB8gASgIOgR0cnVlUg5jY0VuYWJsZUFyZW5hcxIqChFvYmpjX2NsYXNzX3ByZWZpeBgkIAEoCVIPb2JqY0NsYXNzUHJlZml4EikKEGNzaGFycF9uYW1lc3BhY2UYJSABKAlSD2NzaGFycE5hbWVzcGFjZRIhCgxzd2lmdF9wcmVmaXgYJyABKAlSC3N3aWZ0UHJlZml4EigKEHBocF9jbGFzc19wcmVmaXgYKCABKAlSDnBocENsYXNzUHJlZml4EiMKDXBocF9uYW1lc3BhY2UYKSABKAlSDHBocE5hbWVzcGFjZRI0ChZwaHBfbWV0YWRhdGFfbmFtZXNwYWNlGCwgASgJUhRwaHBNZXRhZGF0YU5hbWVzcGFjZRIhCgxydWJ5X3BhY2thZ2UYLSABKAlSC3J1YnlQYWNrYWdlElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uIjoKDE9wdGltaXplTW9kZRIJCgVTUEVFRBABEg0KCUNPREVfU0laRRACEhAKDExJVEVfUlVOVElNRRADKgkI6AcQgICAgAJKBAgmECciuwMKDk1lc3NhZ2VPcHRpb25zEjwKF21lc3NhZ2Vfc2V0X3dpcmVfZm9ybWF0GAEgASgIOgVmYWxzZVIUbWVzc2FnZVNldFdpcmVGb3JtYXQSTAofbm9fc3RhbmRhcmRfZGVzY3JpcHRvcl9hY2Nlc3NvchgCIAEoCDoFZmFsc2VSHG5vU3RhbmRhcmREZXNjcmlwdG9yQWNjZXNzb3ISJQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSGwoJbWFwX2VudHJ5GAcgASgIUghtYXBFbnRyeRJWCiZkZXByZWNhdGVkX2xlZ2FjeV9qc29uX2ZpZWxkX2NvbmZsaWN0cxgLIAEoCEICGAFSImRlcHJlY2F0ZWRMZWdhY3lKc29uRmllbGRDb25mbGljdHMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAkoECAQQBUoECAUQBkoECAYQB0oECAgQCUoECAkQCiKFCQoMRmllbGRPcHRpb25zEkEKBWN0eXBlGAEgASgOMiMuZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5DVHlwZToGU1RSSU5HUgVjdHlwZRIWCgZwYWNrZWQYAiABKAhSBnBhY2tlZBJHCgZqc3R5cGUYBiABKA4yJC5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLkpTVHlwZToJSlNfTk9STUFMUgZqc3R5cGUSGQoEbGF6eRgFIAEoCDoFZmFsc2VSBGxhenkSLgoPdW52ZXJpZmllZF9sYXp5GA8gASgIOgVmYWxzZVIOdW52ZXJpZmllZExhenkSJQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSGQoEd2VhaxgKIAEoCDoFZmFsc2VSBHdlYWsSKAoMZGVidWdfcmVkYWN0GBAgASgIOgVmYWxzZVILZGVidWdSZWRhY3QSSwoJcmV0ZW50aW9uGBEgASgOMi0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5PcHRpb25SZXRlbnRpb25SCXJldGVudGlvbhJKCgZ0YXJnZXQYEiABKA4yLi5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLk9wdGlvblRhcmdldFR5cGVCAhgBUgZ0YXJnZXQSSAoHdGFyZ2V0cxgTIAMoDjIuLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuT3B0aW9uVGFyZ2V0VHlwZVIHdGFyZ2V0cxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiIvCgVDVHlwZRIKCgZTVFJJTkcQABIICgRDT1JEEAESEAoMU1RSSU5HX1BJRUNFEAIiNQoGSlNUeXBlEg0KCUpTX05PUk1BTBAAEg0KCUpTX1NUUklORxABEg0KCUpTX05VTUJFUhACIlUKD09wdGlvblJldGVudGlvbhIVChFSRVRFTlRJT05fVU5LTk9XThAAEhUKEVJFVEVOVElPTl9SVU5USU1FEAESFAoQUkVURU5USU9OX1NPVVJDRRACIowCChBPcHRpb25UYXJnZXRUeXBlEhcKE1RBUkdFVF9UWVBFX1VOS05PV04QABIUChBUQVJHRVRfVFlQRV9GSUxFEAESHwobVEFSR0VUX1RZUEVfRVhURU5TSU9OX1JBTkdFEAISFwoTVEFSR0VUX1RZUEVfTUVTU0FHRRADEhUKEVRBUkdFVF9UWVBFX0ZJRUxEEAQSFQoRVEFSR0VUX1RZUEVfT05FT0YQBRIUChBUQVJHRVRfVFlQRV9FTlVNEAYSGgoWVEFSR0VUX1RZUEVfRU5VTV9FTlRSWRAHEhcKE1RBUkdFVF9UWVBFX1NFUlZJQ0UQCBIWChJUQVJHRVRfVFlQRV9NRVRIT0QQCSoJCOgHEICAgIACSgQIBBAFInMKDE9uZW9mT3B0aW9ucxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIpgCCgtFbnVtT3B0aW9ucxIfCgthbGxvd19hbGlhcxgCIAEoCFIKYWxsb3dBbGlhcxIlCgpkZXByZWNhdGVkGAMgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJWCiZkZXByZWNhdGVkX2xlZ2FjeV9qc29uX2ZpZWxkX2NvbmZsaWN0cxgGIAEoCEICGAFSImRlcHJlY2F0ZWRMZWdhY3lKc29uRmllbGRDb25mbGljdHMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAkoECAUQBiKeAQoQRW51bVZhbHVlT3B0aW9ucxIlCgpkZXByZWNhdGVkGAEgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIpwBCg5TZXJ2aWNlT3B0aW9ucxIlCgpkZXByZWNhdGVkGCEgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIuACCg1NZXRob2RPcHRpb25zEiUKCmRlcHJlY2F0ZWQYISABKAg6BWZhbHNlUgpkZXByZWNhdGVkEnEKEWlkZW1wb3RlbmN5X2xldmVsGCIgASgOMi8uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMuSWRlbXBvdGVuY3lMZXZlbDoTSURFTVBPVEVOQ1lfVU5LTk9XTlIQaWRlbXBvdGVuY3lMZXZlbBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiJQChBJZGVtcG90ZW5jeUxldmVsEhcKE0lERU1QT1RFTkNZX1VOS05PV04QABITCg9OT19TSURFX0VGRkVDVFMQARIOCgpJREVNUE9URU5UEAIqCQjoBxCAgICAAiKaAwoTVW5pbnRlcnByZXRlZE9wdGlvbhJBCgRuYW1lGAIgAygLMi0uZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb24uTmFtZVBhcnRSBG5hbWUSKQoQaWRlbnRpZmllcl92YWx1ZRgDIAEoCVIPaWRlbnRpZmllclZhbHVlEiwKEnBvc2l0aXZlX2ludF92YWx1ZRgEIAEoBFIQcG9zaXRpdmVJbnRWYWx1ZRIsChJuZWdhdGl2ZV9pbnRfdmFsdWUYBSABKANSEG5lZ2F0aXZlSW50VmFsdWUSIQoMZG91YmxlX3ZhbHVlGAYgASgBUgtkb3VibGVWYWx1ZRIhCgxzdHJpbmdfdmFsdWUYByABKAxSC3N0cmluZ1ZhbHVlEicKD2FnZ3JlZ2F0ZV92YWx1ZRgIIAEoCVIOYWdncmVnYXRlVmFsdWUaSgoITmFtZVBhcnQSGwoJbmFtZV9wYXJ0GAEgAigJUghuYW1lUGFydBIhCgxpc19leHRlbnNpb24YAiACKAhSC2lzRXh0ZW5zaW9uIqcCCg5Tb3VyY2VDb2RlSW5mbxJECghsb2NhdGlvbhgBIAMoCzIoLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb2RlSW5mby5Mb2NhdGlvblIIbG9jYXRpb24azgEKCExvY2F0aW9uEhYKBHBhdGgYASADKAVCAhABUgRwYXRoEhYKBHNwYW4YAiADKAVCAhABUgRzcGFuEikKEGxlYWRpbmdfY29tbWVudHMYAyABKAlSD2xlYWRpbmdDb21tZW50cxIrChF0cmFpbGluZ19jb21tZW50cxgEIAEoCVIQdHJhaWxpbmdDb21tZW50cxI6ChlsZWFkaW5nX2RldGFjaGVkX2NvbW1lbnRzGAYgAygJUhdsZWFkaW5nRGV0YWNoZWRDb21tZW50cyLQAgoRR2VuZXJhdGVkQ29kZUluZm8STQoKYW5ub3RhdGlvbhgBIAMoCzItLmdvb2dsZS5wcm90b2J1Zi5HZW5lcmF0ZWRDb2RlSW5mby5Bbm5vdGF0aW9uUgphbm5vdGF0aW9uGusBCgpBbm5vdGF0aW9uEhYKBHBhdGgYASADKAVCAhABUgRwYXRoEh8KC3NvdXJjZV9maWxlGAIgASgJUgpzb3VyY2VGaWxlEhQKBWJlZ2luGAMgASgFUgViZWdpbhIQCgNlbmQYBCABKAVSA2VuZBJSCghzZW1hbnRpYxgFIAEoDjI2Lmdvb2dsZS5wcm90b2J1Zi5HZW5lcmF0ZWRDb2RlSW5mby5Bbm5vdGF0aW9uLlNlbWFudGljUghzZW1hbnRpYyIoCghTZW1hbnRpYxIICgROT05FEAASBwoDU0VUEAESCQoFQUxJQVMQAkJ+ChNjb20uZ29vZ2xlLnByb3RvYnVmQhBEZXNjcmlwdG9yUHJvdG9zSAFaLWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2Rlc2NyaXB0b3JwYvgBAaICA0dQQqoCGkdvb2dsZS5Qcm90b2J1Zi5SZWZsZWN0aW9uCqgCChxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpGhVnb29nbGUvYXBpL2h0dHAucHJvdG8aIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCbgoOY29tLmdvb2dsZS5hcGlCEEFubm90YXRpb25zUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzMK6AMKH2dvb2dsZS9hcGkvZmllbGRfYmVoYXZpb3IucHJvdG8SCmdvb2dsZS5hcGkaIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvKrYBCg1GaWVsZEJlaGF2aW9yEh4KGkZJRUxEX0JFSEFWSU9SX1VOU1BFQ0lGSUVEEAASDAoIT1BUSU9OQUwQARIMCghSRVFVSVJFRBACEg8KC09VVFBVVF9PTkxZEAMSDgoKSU5QVVRfT05MWRAEEg0KCUlNTVVUQUJMRRAFEhIKDlVOT1JERVJFRF9MSVNUEAYSFQoRTk9OX0VNUFRZX0RFRkFVTFQQBxIOCgpJREVOVElGSUVSEAg6ZAoOZmllbGRfYmVoYXZpb3ISHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGJwIIAMoDjIZLmdvb2dsZS5hcGkuRmllbGRCZWhhdmlvckICEABSDWZpZWxkQmVoYXZpb3JCcAoOY29tLmdvb2dsZS5hcGlCEkZpZWxkQmVoYXZpb3JQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc6ICBEdBUEliBnByb3RvMwriBQocZ29vZ2xlL3Byb3RvYnVmL3N0cnVjdC5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIpgBCgZTdHJ1Y3QSOwoGZmllbGRzGAEgAygLMiMuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdC5GaWVsZHNFbnRyeVIGZmllbGRzGlEKC0ZpZWxkc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEisgIKBVZhbHVlEjsKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSABSCW51bGxWYWx1ZRIjCgxudW1iZXJfdmFsdWUYAiABKAFIAFILbnVtYmVyVmFsdWUSIwoMc3RyaW5nX3ZhbHVlGAMgASgJSABSC3N0cmluZ1ZhbHVlEh8KCmJvb2xfdmFsdWUYBCABKAhIAFIJYm9vbFZhbHVlEjwKDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAFILc3RydWN0VmFsdWUSOwoKbGlzdF92YWx1ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5MaXN0VmFsdWVIAFIJbGlzdFZhbHVlQgYKBGtpbmQiOwoJTGlzdFZhbHVlEi4KBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIGdmFsdWVzKhsKCU51bGxWYWx1ZRIOCgpOVUxMX1ZBTFVFEABCfwoTY29tLmdvb2dsZS5wcm90b2J1ZkILU3RydWN0UHJvdG9QAVovZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMva25vd24vc3RydWN0cGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMwqmPgoscHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9vcGVuYXBpdjIucHJvdG8SKWdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zGhxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvIrMICgdTd2FnZ2VyEhgKB3N3YWdnZXIYASABKAlSB3N3YWdnZXISQwoEaW5mbxgCIAEoCzIvLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkluZm9SBGluZm8SEgoEaG9zdBgDIAEoCVIEaG9zdBIbCgliYXNlX3BhdGgYBCABKAlSCGJhc2VQYXRoEksKB3NjaGVtZXMYBSADKA4yMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY2hlbWVSB3NjaGVtZXMSGgoIY29uc3VtZXMYBiADKAlSCGNvbnN1bWVzEhoKCHByb2R1Y2VzGAcgAygJUghwcm9kdWNlcxJfCglyZXNwb25zZXMYCiADKAsyQS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Td2FnZ2VyLlJlc3BvbnNlc0VudHJ5UglyZXNwb25zZXMScQoUc2VjdXJpdHlfZGVmaW5pdGlvbnMYCyABKAsyPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eURlZmluaXRpb25zUhNzZWN1cml0eURlZmluaXRpb25zEloKCHNlY3VyaXR5GAwgAygLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlSZXF1aXJlbWVudFIIc2VjdXJpdHkSQgoEdGFncxgNIAMoCzIuLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlRhZ1IEdGFncxJlCg1leHRlcm5hbF9kb2NzGA4gASgLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuRXh0ZXJuYWxEb2N1bWVudGF0aW9uUgxleHRlcm5hbERvY3MSYgoKZXh0ZW5zaW9ucxgPIAMoCzJCLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlN3YWdnZXIuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGnEKDlJlc3BvbnNlc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EkkKBXZhbHVlGAIgASgLMjMuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2VSBXZhbHVlOgI4ARpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4AUoECAgQCUoECAkQCiLWBwoJT3BlcmF0aW9uEhIKBHRhZ3MYASADKAlSBHRhZ3MSGAoHc3VtbWFyeRgCIAEoCVIHc3VtbWFyeRIgCgtkZXNjcmlwdGlvbhgDIAEoCVILZGVzY3JpcHRpb24SZQoNZXh0ZXJuYWxfZG9jcxgEIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEiEKDG9wZXJhdGlvbl9pZBgFIAEoCVILb3BlcmF0aW9uSWQSGgoIY29uc3VtZXMYBiADKAlSCGNvbnN1bWVzEhoKCHByb2R1Y2VzGAcgAygJUghwcm9kdWNlcxJhCglyZXNwb25zZXMYCSADKAsyQy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5PcGVyYXRpb24uUmVzcG9uc2VzRW50cnlSCXJlc3BvbnNlcxJLCgdzY2hlbWVzGAogAygOMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1lUgdzY2hlbWVzEh4KCmRlcHJlY2F0ZWQYCyABKAhSCmRlcHJlY2F0ZWQSWgoIc2VjdXJpdHkYDCADKAsyPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVJlcXVpcmVtZW50UghzZWN1cml0eRJkCgpleHRlbnNpb25zGA0gAygLMkQuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuT3BlcmF0aW9uLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxJVCgpwYXJhbWV0ZXJzGA4gASgLMjUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUGFyYW1ldGVyc1IKcGFyYW1ldGVycxpxCg5SZXNwb25zZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRJJCgV2YWx1ZRgCIAEoCzIzLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlUgV2YWx1ZToCOAEaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAFKBAgIEAkiYgoKUGFyYW1ldGVycxJUCgdoZWFkZXJzGAEgAygLMjouZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSGVhZGVyUGFyYW1ldGVyUgdoZWFkZXJzIqMCCg9IZWFkZXJQYXJhbWV0ZXISEgoEbmFtZRgBIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SUwoEdHlwZRgDIAEoDjI/LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkhlYWRlclBhcmFtZXRlci5UeXBlUgR0eXBlEhYKBmZvcm1hdBgEIAEoCVIGZm9ybWF0EhoKCHJlcXVpcmVkGAUgASgIUghyZXF1aXJlZCJFCgRUeXBlEgsKB1VOS05PV04QABIKCgZTVFJJTkcQARIKCgZOVU1CRVIQAhILCgdJTlRFR0VSEAMSCwoHQk9PTEVBThAESgQIBhAHSgQIBxAIItgBCgZIZWFkZXISIAoLZGVzY3JpcHRpb24YASABKAlSC2Rlc2NyaXB0aW9uEhIKBHR5cGUYAiABKAlSBHR5cGUSFgoGZm9ybWF0GAMgASgJUgZmb3JtYXQSGAoHZGVmYXVsdBgGIAEoCVIHZGVmYXVsdBIYCgdwYXR0ZXJuGA0gASgJUgdwYXR0ZXJuSgQIBBAFSgQIBRAGSgQIBxAISgQICBAJSgQICRAKSgQIChALSgQICxAMSgQIDBANSgQIDhAPSgQIDxAQSgQIEBARSgQIERASSgQIEhATIpoFCghSZXNwb25zZRIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24SSQoGc2NoZW1hGAIgASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1hUgZzY2hlbWESWgoHaGVhZGVycxgDIAMoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlLkhlYWRlcnNFbnRyeVIHaGVhZGVycxJdCghleGFtcGxlcxgEIAMoCzJBLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlLkV4YW1wbGVzRW50cnlSCGV4YW1wbGVzEmMKCmV4dGVuc2lvbnMYBSADKAsyQy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZS5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMabQoMSGVhZGVyc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EkcKBXZhbHVlGAIgASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSGVhZGVyUgV2YWx1ZToCOAEaOwoNRXhhbXBsZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBItYDCgRJbmZvEhQKBXRpdGxlGAEgASgJUgV0aXRsZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SKAoQdGVybXNfb2Zfc2VydmljZRgDIAEoCVIOdGVybXNPZlNlcnZpY2USTAoHY29udGFjdBgEIAEoCzIyLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkNvbnRhY3RSB2NvbnRhY3QSTAoHbGljZW5zZRgFIAEoCzIyLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkxpY2Vuc2VSB2xpY2Vuc2USGAoHdmVyc2lvbhgGIAEoCVIHdmVyc2lvbhJfCgpleHRlbnNpb25zGAcgAygLMj8uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSW5mby5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEiRQoHQ29udGFjdBISCgRuYW1lGAEgASgJUgRuYW1lEhAKA3VybBgCIAEoCVIDdXJsEhQKBWVtYWlsGAMgASgJUgVlbWFpbCIvCgdMaWNlbnNlEhIKBG5hbWUYASABKAlSBG5hbWUSEAoDdXJsGAIgASgJUgN1cmwiSwoVRXh0ZXJuYWxEb2N1bWVudGF0aW9uEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbhIQCgN1cmwYAiABKAlSA3VybCKqAgoGU2NoZW1hElYKC2pzb25fc2NoZW1hGAEgASgLMjUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYVIKanNvblNjaGVtYRIkCg1kaXNjcmltaW5hdG9yGAIgASgJUg1kaXNjcmltaW5hdG9yEhsKCXJlYWRfb25seRgDIAEoCFIIcmVhZE9ubHkSZQoNZXh0ZXJuYWxfZG9jcxgFIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEhgKB2V4YW1wbGUYBiABKAlSB2V4YW1wbGVKBAgEEAUi1woKCkpTT05TY2hlbWESEAoDcmVmGAMgASgJUgNyZWYSFAoFdGl0bGUYBSABKAlSBXRpdGxlEiAKC2Rlc2NyaXB0aW9uGAYgASgJUgtkZXNjcmlwdGlvbhIYCgdkZWZhdWx0GAcgASgJUgdkZWZhdWx0EhsKCXJlYWRfb25seRgIIAEoCFIIcmVhZE9ubHkSGAoHZXhhbXBsZRgJIAEoCVIHZXhhbXBsZRIfCgttdWx0aXBsZV9vZhgKIAEoAVIKbXVsdGlwbGVPZhIYCgdtYXhpbXVtGAsgASgBUgdtYXhpbXVtEisKEWV4Y2x1c2l2ZV9tYXhpbXVtGAwgASgIUhBleGNsdXNpdmVNYXhpbXVtEhgKB21pbmltdW0YDSABKAFSB21pbmltdW0SKwoRZXhjbHVzaXZlX21pbmltdW0YDiABKAhSEGV4Y2x1c2l2ZU1pbmltdW0SHQoKbWF4X2xlbmd0aBgPIAEoBFIJbWF4TGVuZ3RoEh0KCm1pbl9sZW5ndGgYECABKARSCW1pbkxlbmd0aBIYCgdwYXR0ZXJuGBEgASgJUgdwYXR0ZXJuEhsKCW1heF9pdGVtcxgUIAEoBFIIbWF4SXRlbXMSGwoJbWluX2l0ZW1zGBUgASgEUghtaW5JdGVtcxIhCgx1bmlxdWVfaXRlbXMYFiABKAhSC3VuaXF1ZUl0ZW1zEiUKDm1heF9wcm9wZXJ0aWVzGBggASgEUg1tYXhQcm9wZXJ0aWVzEiUKDm1pbl9wcm9wZXJ0aWVzGBkgASgEUg1taW5Qcm9wZXJ0aWVzEhoKCHJlcXVpcmVkGBogAygJUghyZXF1aXJlZBIUCgVhcnJheRgiIAMoCVIFYXJyYXkSXwoEdHlwZRgjIAMoDjJLLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWEuSlNPTlNjaGVtYVNpbXBsZVR5cGVzUgR0eXBlEhYKBmZvcm1hdBgkIAEoCVIGZm9ybWF0EhIKBGVudW0YLiADKAlSBGVudW0SegoTZmllbGRfY29uZmlndXJhdGlvbhjpByABKAsySC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hLkZpZWxkQ29uZmlndXJhdGlvblISZmllbGRDb25maWd1cmF0aW9uEmUKCmV4dGVuc2lvbnMYMCADKAsyRS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxo8ChJGaWVsZENvbmZpZ3VyYXRpb24SJgoPcGF0aF9wYXJhbV9uYW1lGC8gASgJUg1wYXRoUGFyYW1OYW1lGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIncKFUpTT05TY2hlbWFTaW1wbGVUeXBlcxILCgdVTktOT1dOEAASCQoFQVJSQVkQARILCgdCT09MRUFOEAISCwoHSU5URUdFUhADEggKBE5VTEwQBBIKCgZOVU1CRVIQBRIKCgZPQkpFQ1QQBhIKCgZTVFJJTkcQB0oECAEQAkoECAIQA0oECAQQBUoECBIQE0oECBMQFEoECBcQGEoECBsQHEoECBwQHUoECB0QHkoECB4QIkoECCUQKkoECCoQK0oECCsQLiLZAgoDVGFnEhIKBG5hbWUYASABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uEmUKDWV4dGVybmFsX2RvY3MYAyABKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5FeHRlcm5hbERvY3VtZW50YXRpb25SDGV4dGVybmFsRG9jcxJeCgpleHRlbnNpb25zGAQgAygLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuVGFnLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASL3AQoTU2VjdXJpdHlEZWZpbml0aW9ucxJoCghzZWN1cml0eRgBIAMoCzJMLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5RGVmaW5pdGlvbnMuU2VjdXJpdHlFbnRyeVIIc2VjdXJpdHkadgoNU2VjdXJpdHlFbnRyeRIQCgNrZXkYASABKAlSA2tleRJPCgV2YWx1ZRgCIAEoCzI5LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lUgV2YWx1ZToCOAEi/wYKDlNlY3VyaXR5U2NoZW1lElIKBHR5cGUYASABKA4yPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5UeXBlUgR0eXBlEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhISCgRuYW1lGAMgASgJUgRuYW1lEkwKAmluGAQgASgOMjwuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWUuSW5SAmluElIKBGZsb3cYBSABKA4yPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5GbG93UgRmbG93EisKEWF1dGhvcml6YXRpb25fdXJsGAYgASgJUhBhdXRob3JpemF0aW9uVXJsEhsKCXRva2VuX3VybBgHIAEoCVIIdG9rZW5VcmwSSQoGc2NvcGVzGAggASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NvcGVzUgZzY29wZXMSaQoKZXh0ZW5zaW9ucxgJIAMoCzJJLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASJLCgRUeXBlEhAKDFRZUEVfSU5WQUxJRBAAEg4KClRZUEVfQkFTSUMQARIQCgxUWVBFX0FQSV9LRVkQAhIPCgtUWVBFX09BVVRIMhADIjEKAkluEg4KCklOX0lOVkFMSUQQABIMCghJTl9RVUVSWRABEg0KCUlOX0hFQURFUhACImoKBEZsb3cSEAoMRkxPV19JTlZBTElEEAASEQoNRkxPV19JTVBMSUNJVBABEhEKDUZMT1dfUEFTU1dPUkQQAhIUChBGTE9XX0FQUExJQ0FUSU9OEAMSFAoQRkxPV19BQ0NFU1NfQ09ERRAEIvYCChNTZWN1cml0eVJlcXVpcmVtZW50EooBChRzZWN1cml0eV9yZXF1aXJlbWVudBgBIAMoCzJXLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnQuU2VjdXJpdHlSZXF1aXJlbWVudEVudHJ5UhNzZWN1cml0eVJlcXVpcmVtZW50GjAKGFNlY3VyaXR5UmVxdWlyZW1lbnRWYWx1ZRIUCgVzY29wZRgBIAMoCVIFc2NvcGUanwEKGFNlY3VyaXR5UmVxdWlyZW1lbnRFbnRyeRIQCgNrZXkYASABKAlSA2tleRJtCgV2YWx1ZRgCIAEoCzJXLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnQuU2VjdXJpdHlSZXF1aXJlbWVudFZhbHVlUgV2YWx1ZToCOAEilgEKBlNjb3BlcxJSCgVzY29wZRgBIAMoCzI8LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjb3Blcy5TY29wZUVudHJ5UgVzY29wZRo4CgpTY29wZUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEqOwoGU2NoZW1lEgsKB1VOS05PV04QABIICgRIVFRQEAESCQoFSFRUUFMQAhIGCgJXUxADEgcKA1dTUxAEQkhaRmdpdGh1Yi5jb20vZ3JwYy1lY29zeXN0ZW0vZ3JwYy1nYXRld2F5L3YyL3Byb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnNiBnByb3RvMwr9BgoucHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9hbm5vdGF0aW9ucy5wcm90bxIpZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMaIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvGixwcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL29wZW5hcGl2Mi5wcm90bzp+ChFvcGVuYXBpdjJfc3dhZ2dlchIcLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9ucxiSCCABKAsyMi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Td2FnZ2VyUhBvcGVuYXBpdjJTd2FnZ2VyOoYBChNvcGVuYXBpdjJfb3BlcmF0aW9uEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYkgggASgLMjQuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuT3BlcmF0aW9uUhJvcGVuYXBpdjJPcGVyYXRpb246fgoQb3BlbmFwaXYyX3NjaGVtYRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiSCCABKAsyMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY2hlbWFSD29wZW5hcGl2MlNjaGVtYTp1Cg1vcGVuYXBpdjJfdGFnEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJIIIAEoCzIuLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlRhZ1IMb3BlbmFwaXYyVGFnOn4KD29wZW5hcGl2Ml9maWVsZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYkgggASgLMjUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYVIOb3BlbmFwaXYyRmllbGRCSFpGZ2l0aHViLmNvbS9ncnBjLWVjb3N5c3RlbS9ncnBjLWdhdGV3YXkvdjIvcHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9uc2IGcHJvdG8zCta/AQobcHJvdG8vYWNjb3VudC9zZXJ2aWNlLnByb3RvEhFidWNrZXRlZXIuYWNjb3VudBoeZ29vZ2xlL3Byb3RvYnVmL3dyYXBwZXJzLnByb3RvGhxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvGh9nb29nbGUvYXBpL2ZpZWxkX2JlaGF2aW9yLnByb3RvGi5wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL2Fubm90YXRpb25zLnByb3RvGhtwcm90by9hY2NvdW50L2FjY291bnQucHJvdG8aG3Byb3RvL2FjY291bnQvYXBpX2tleS5wcm90bxobcHJvdG8vYWNjb3VudC9jb21tYW5kLnByb3RvGiRwcm90by9lbnZpcm9ubWVudC9vcmdhbml6YXRpb24ucHJvdG8iNwoMR2V0TWVSZXF1ZXN0EicKD29yZ2FuaXphdGlvbl9pZBgBIAEoCVIOb3JnYW5pemF0aW9uSWQiTAoNR2V0TWVSZXNwb25zZRI7CgdhY2NvdW50GAEgASgLMiEuYnVja2V0ZWVyLmFjY291bnQuQ29uc29sZUFjY291bnRSB2FjY291bnQiGwoZR2V0TXlPcmdhbml6YXRpb25zUmVxdWVzdCI4CiBHZXRNeU9yZ2FuaXphdGlvbnNCeUVtYWlsUmVxdWVzdBIUCgVlbWFpbBgBIAEoCVIFZW1haWwiZwoaR2V0TXlPcmdhbml6YXRpb25zUmVzcG9uc2USSQoNb3JnYW5pemF0aW9ucxgBIAMoCzIjLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5Pcmdhbml6YXRpb25SDW9yZ2FuaXphdGlvbnMiggQKFkNyZWF0ZUFjY291bnRWMlJlcXVlc3QSJwoPb3JnYW5pemF0aW9uX2lkGAEgASgJUg5vcmdhbml6YXRpb25JZBJHCgdjb21tYW5kGAIgASgLMikuYnVja2V0ZWVyLmFjY291bnQuQ3JlYXRlQWNjb3VudFYyQ29tbWFuZEICGAFSB2NvbW1hbmQSFAoFZW1haWwYAyABKAlSBWVtYWlsEhIKBG5hbWUYBCABKAlSBG5hbWUSKAoQYXZhdGFyX2ltYWdlX3VybBgFIAEoCVIOYXZhdGFySW1hZ2VVcmwSWwoRb3JnYW5pemF0aW9uX3JvbGUYBiABKA4yLi5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5Pcmdhbml6YXRpb25SEG9yZ2FuaXphdGlvblJvbGUSWQoRZW52aXJvbm1lbnRfcm9sZXMYByADKAsyLC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuRW52aXJvbm1lbnRSb2xlUhBlbnZpcm9ubWVudFJvbGVzEh0KCmZpcnN0X25hbWUYCCABKAlSCWZpcnN0TmFtZRIbCglsYXN0X25hbWUYCSABKAlSCGxhc3ROYW1lEhoKCGxhbmd1YWdlGAogASgJUghsYW5ndWFnZRISCgR0YWdzGAsgAygJUgR0YWdzIlEKF0NyZWF0ZUFjY291bnRWMlJlc3BvbnNlEjYKB2FjY291bnQYASABKAsyHC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjJSB2FjY291bnQioAEKFkVuYWJsZUFjY291bnRWMlJlcXVlc3QSFAoFZW1haWwYASABKAlSBWVtYWlsEicKD29yZ2FuaXphdGlvbl9pZBgCIAEoCVIOb3JnYW5pemF0aW9uSWQSRwoHY29tbWFuZBgDIAEoCzIpLmJ1Y2tldGVlci5hY2NvdW50LkVuYWJsZUFjY291bnRWMkNvbW1hbmRCAhgBUgdjb21tYW5kIlEKF0VuYWJsZUFjY291bnRWMlJlc3BvbnNlEjYKB2FjY291bnQYASABKAsyHC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjJSB2FjY291bnQiogEKF0Rpc2FibGVBY2NvdW50VjJSZXF1ZXN0EhQKBWVtYWlsGAEgASgJUgVlbWFpbBInCg9vcmdhbml6YXRpb25faWQYAiABKAlSDm9yZ2FuaXphdGlvbklkEkgKB2NvbW1hbmQYAyABKAsyKi5idWNrZXRlZXIuYWNjb3VudC5EaXNhYmxlQWNjb3VudFYyQ29tbWFuZEICGAFSB2NvbW1hbmQiUgoYRGlzYWJsZUFjY291bnRWMlJlc3BvbnNlEjYKB2FjY291bnQYASABKAsyHC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjJSB2FjY291bnQioAEKFkRlbGV0ZUFjY291bnRWMlJlcXVlc3QSFAoFZW1haWwYASABKAlSBWVtYWlsEicKD29yZ2FuaXphdGlvbl9pZBgCIAEoCVIOb3JnYW5pemF0aW9uSWQSRwoHY29tbWFuZBgDIAEoCzIpLmJ1Y2tldGVlci5hY2NvdW50LkRlbGV0ZUFjY291bnRWMkNvbW1hbmRCAhgBUgdjb21tYW5kIhkKF0RlbGV0ZUFjY291bnRWMlJlc3BvbnNlIt0QChZVcGRhdGVBY2NvdW50VjJSZXF1ZXN0EhQKBWVtYWlsGAEgASgJUgVlbWFpbBInCg9vcmdhbml6YXRpb25faWQYAiABKAlSDm9yZ2FuaXphdGlvbklkEmEKE2NoYW5nZV9uYW1lX2NvbW1hbmQYAyABKAsyLS5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VBY2NvdW50VjJOYW1lQ29tbWFuZEICGAFSEWNoYW5nZU5hbWVDb21tYW5kEnYKGWNoYW5nZV9hdmF0YXJfdXJsX2NvbW1hbmQYBCABKAsyNy5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VBY2NvdW50VjJBdmF0YXJJbWFnZVVybENvbW1hbmRCAhgBUhZjaGFuZ2VBdmF0YXJVcmxDb21tYW5kEoYBCiBjaGFuZ2Vfb3JnYW5pemF0aW9uX3JvbGVfY29tbWFuZBgFIAEoCzI5LmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFjY291bnRWMk9yZ2FuaXphdGlvblJvbGVDb21tYW5kQgIYAVIdY2hhbmdlT3JnYW5pemF0aW9uUm9sZUNvbW1hbmQShgEKIGNoYW5nZV9lbnZpcm9ubWVudF9yb2xlc19jb21tYW5kGAYgASgLMjkuYnVja2V0ZWVyLmFjY291bnQuQ2hhbmdlQWNjb3VudFYyRW52aXJvbm1lbnRSb2xlc0NvbW1hbmRCAhgBUh1jaGFuZ2VFbnZpcm9ubWVudFJvbGVzQ29tbWFuZBJxChljaGFuZ2VfZmlyc3RfbmFtZV9jb21tYW5kGAcgASgLMjIuYnVja2V0ZWVyLmFjY291bnQuQ2hhbmdlQWNjb3VudFYyRmlyc3ROYW1lQ29tbWFuZEICGAFSFmNoYW5nZUZpcnN0TmFtZUNvbW1hbmQSbgoYY2hhbmdlX2xhc3RfbmFtZV9jb21tYW5kGAggASgLMjEuYnVja2V0ZWVyLmFjY291bnQuQ2hhbmdlQWNjb3VudFYyTGFzdE5hbWVDb21tYW5kQgIYAVIVY2hhbmdlTGFzdE5hbWVDb21tYW5kEm0KF2NoYW5nZV9sYW5ndWFnZV9jb21tYW5kGAkgASgLMjEuYnVja2V0ZWVyLmFjY291bnQuQ2hhbmdlQWNjb3VudFYyTGFuZ3VhZ2VDb21tYW5kQgIYAVIVY2hhbmdlTGFuZ3VhZ2VDb21tYW5kEm4KGGNoYW5nZV9sYXN0X3NlZW5fY29tbWFuZBgKIAEoCzIxLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFjY291bnRWMkxhc3RTZWVuQ29tbWFuZEICGAFSFWNoYW5nZUxhc3RTZWVuQ29tbWFuZBJnChVjaGFuZ2VfYXZhdGFyX2NvbW1hbmQYCyABKAsyLy5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VBY2NvdW50VjJBdmF0YXJDb21tYW5kQgIYAVITY2hhbmdlQXZhdGFyQ29tbWFuZBIwCgRuYW1lGAwgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgRuYW1lEkYKEGF2YXRhcl9pbWFnZV91cmwYDSABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWVSDmF2YXRhckltYWdlVXJsEmwKEW9yZ2FuaXphdGlvbl9yb2xlGA4gASgLMj8uYnVja2V0ZWVyLmFjY291bnQuVXBkYXRlQWNjb3VudFYyUmVxdWVzdC5Pcmdhbml6YXRpb25Sb2xlVmFsdWVSEG9yZ2FuaXphdGlvblJvbGUSWQoRZW52aXJvbm1lbnRfcm9sZXMYDyADKAsyLC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuRW52aXJvbm1lbnRSb2xlUhBlbnZpcm9ubWVudFJvbGVzEjsKCmZpcnN0X25hbWUYECABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWVSCWZpcnN0TmFtZRI5CglsYXN0X25hbWUYESABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWVSCGxhc3ROYW1lEjgKCGxhbmd1YWdlGBIgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUghsYW5ndWFnZRI4CglsYXN0X3NlZW4YEyABKAsyGy5nb29nbGUucHJvdG9idWYuSW50NjRWYWx1ZVIIbGFzdFNlZW4SUQoGYXZhdGFyGBQgASgLMjkuYnVja2V0ZWVyLmFjY291bnQuVXBkYXRlQWNjb3VudFYyUmVxdWVzdC5BY2NvdW50VjJBdmF0YXJSBmF2YXRhchI2CghkaXNhYmxlZBgVIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWVSCGRpc2FibGVkEhIKBHRhZ3MYFiADKAlSBHRhZ3MSYQoTY2hhbmdlX3RhZ3NfY29tbWFuZBgXIAEoCzItLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFjY291bnRWMlRhZ3NDb21tYW5kQgIYAVIRY2hhbmdlVGFnc0NvbW1hbmQaXgoPQWNjb3VudFYyQXZhdGFyEiEKDGF2YXRhcl9pbWFnZRgBIAEoDFILYXZhdGFySW1hZ2USKAoQYXZhdGFyX2ZpbGVfdHlwZRgCIAEoCVIOYXZhdGFyRmlsZVR5cGUaWwoVT3JnYW5pemF0aW9uUm9sZVZhbHVlEkIKBHJvbGUYASABKA4yLi5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5Pcmdhbml6YXRpb25SBHJvbGUiUQoXVXBkYXRlQWNjb3VudFYyUmVzcG9uc2USNgoHYWNjb3VudBgBIAEoCzIcLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMlIHYWNjb3VudCJUChNHZXRBY2NvdW50VjJSZXF1ZXN0EhQKBWVtYWlsGAEgASgJUgVlbWFpbBInCg9vcmdhbml6YXRpb25faWQYAiABKAlSDm9yZ2FuaXphdGlvbklkIk4KFEdldEFjY291bnRWMlJlc3BvbnNlEjYKB2FjY291bnQYASABKAsyHC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjJSB2FjY291bnQiYQoiR2V0QWNjb3VudFYyQnlFbnZpcm9ubWVudElEUmVxdWVzdBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSJQoOZW52aXJvbm1lbnRfaWQYAiABKAlSDWVudmlyb25tZW50SWQiXQojR2V0QWNjb3VudFYyQnlFbnZpcm9ubWVudElEUmVzcG9uc2USNgoHYWNjb3VudBgBIAEoCzIcLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMlIHYWNjb3VudCKpBgoVTGlzdEFjY291bnRzVjJSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISJwoPb3JnYW5pemF0aW9uX2lkGAMgASgJUg5vcmdhbml6YXRpb25JZBJLCghvcmRlcl9ieRgEIAEoDjIwLmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBY2NvdW50c1YyUmVxdWVzdC5PcmRlckJ5UgdvcmRlckJ5EmAKD29yZGVyX2RpcmVjdGlvbhgFIAEoDjI3LmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBY2NvdW50c1YyUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYBiABKAlSDXNlYXJjaEtleXdvcmQSNgoIZGlzYWJsZWQYByABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlUghkaXNhYmxlZBJIChFvcmdhbml6YXRpb25fcm9sZRgIIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlUhBvcmdhbml6YXRpb25Sb2xlEkMKDmVudmlyb25tZW50X2lkGAkgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUg1lbnZpcm9ubWVudElkEkYKEGVudmlyb25tZW50X3JvbGUYCiABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIPZW52aXJvbm1lbnRSb2xlEhIKBHRhZ3MYCyADKAlSBHRhZ3MikwEKB09yZGVyQnkSCwoHREVGQVVMVBAAEgkKBUVNQUlMEAESDgoKQ1JFQVRFRF9BVBACEg4KClVQREFURURfQVQQAxIVChFPUkdBTklaQVRJT05fUk9MRRAEEhUKEUVOVklST05NRU5UX0NPVU5UEAUSDQoJTEFTVF9TRUVOEAYSCQoFU1RBVEUQBxIICgRUQUdTEAgiIwoOT3JkZXJEaXJlY3Rpb24SBwoDQVNDEAASCAoEREVTQxABIosBChZMaXN0QWNjb3VudHNWMlJlc3BvbnNlEjgKCGFjY291bnRzGAEgAygLMhwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyUghhY2NvdW50cxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCKSAgoTQ3JlYXRlQVBJS2V5UmVxdWVzdBJECgdjb21tYW5kGAEgASgLMiYuYnVja2V0ZWVyLmFjY291bnQuQ3JlYXRlQVBJS2V5Q29tbWFuZEICGAFSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYAyABKAlSDWVudmlyb25tZW50SWQSEgoEbmFtZRgEIAEoCVIEbmFtZRIyCgRyb2xlGAUgASgOMh4uYnVja2V0ZWVyLmFjY291bnQuQVBJS2V5LlJvbGVSBHJvbGUSHgoKbWFpbnRhaW5lchgGIAEoCVIKbWFpbnRhaW5lchIgCgtkZXNjcmlwdGlvbhgHIAEoCVILZGVzY3JpcHRpb25KBAgCEAMiSgoUQ3JlYXRlQVBJS2V5UmVzcG9uc2USMgoHYXBpX2tleRgBIAEoCzIZLmJ1Y2tldGVlci5hY2NvdW50LkFQSUtleVIGYXBpS2V5IpwBChdDaGFuZ2VBUElLZXlOYW1lUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSRAoHY29tbWFuZBgCIAEoCzIqLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFQSUtleU5hbWVDb21tYW5kUgdjb21tYW5kEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEIhoKGENoYW5nZUFQSUtleU5hbWVSZXNwb25zZSKUAQoTRW5hYmxlQVBJS2V5UmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSQAoHY29tbWFuZBgCIAEoCzImLmJ1Y2tldGVlci5hY2NvdW50LkVuYWJsZUFQSUtleUNvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFgoURW5hYmxlQVBJS2V5UmVzcG9uc2UilgEKFERpc2FibGVBUElLZXlSZXF1ZXN0Eg4KAmlkGAEgASgJUgJpZBJBCgdjb21tYW5kGAIgASgLMicuYnVja2V0ZWVyLmFjY291bnQuRGlzYWJsZUFQSUtleUNvbW1hbmRSB2NvbW1hbmQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiFwoVRGlzYWJsZUFQSUtleVJlc3BvbnNlIk8KEEdldEFQSUtleVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkSgQIAhADIkcKEUdldEFQSUtleVJlc3BvbnNlEjIKB2FwaV9rZXkYASABKAsyGS5idWNrZXRlZXIuYWNjb3VudC5BUElLZXlSBmFwaUtleSLmBAoSTGlzdEFQSUtleXNSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISSAoIb3JkZXJfYnkYBCABKA4yLS5idWNrZXRlZXIuYWNjb3VudC5MaXN0QVBJS2V5c1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJdCg9vcmRlcl9kaXJlY3Rpb24YBSABKA4yNC5idWNrZXRlZXIuYWNjb3VudC5MaXN0QVBJS2V5c1JlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAYgASgJUg1zZWFyY2hLZXl3b3JkEjYKCGRpc2FibGVkGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIZGlzYWJsZWQSKQoOZW52aXJvbm1lbnRfaWQYCCABKAlCAhgBUg1lbnZpcm9ubWVudElkEicKD2Vudmlyb25tZW50X2lkcxgJIAMoCVIOZW52aXJvbm1lbnRJZHMSLAoPb3JnYW5pemF0aW9uX2lkGAogASgJQgPgQQJSDm9yZ2FuaXphdGlvbklkImYKB09yZGVyQnkSCwoHREVGQVVMVBAAEggKBE5BTUUQARIOCgpDUkVBVEVEX0FUEAISDgoKVVBEQVRFRF9BVBADEggKBFJPTEUQBBIPCgtFTlZJUk9OTUVOVBAFEgkKBVNUQVRFEAYiIwoOT3JkZXJEaXJlY3Rpb24SBwoDQVNDEAASCAoEREVTQxABSgQIAxAEIoQBChNMaXN0QVBJS2V5c1Jlc3BvbnNlEjQKCGFwaV9rZXlzGAEgAygLMhkuYnVja2V0ZWVyLmFjY291bnQuQVBJS2V5UgdhcGlLZXlzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEh8KC3RvdGFsX2NvdW50GAMgASgDUgp0b3RhbENvdW50IjYKG0dldEVudmlyb25tZW50QVBJS2V5UmVxdWVzdBIXCgdhcGlfa2V5GAIgASgJUgZhcGlLZXkidAocR2V0RW52aXJvbm1lbnRBUElLZXlSZXNwb25zZRJUChNlbnZpcm9ubWVudF9hcGlfa2V5GAEgASgLMiQuYnVja2V0ZWVyLmFjY291bnQuRW52aXJvbm1lbnRBUElLZXlSEWVudmlyb25tZW50QXBpS2V5IskBChlDcmVhdGVTZWFyY2hGaWx0ZXJSZXF1ZXN0EhQKBWVtYWlsGAEgASgJUgVlbWFpbBInCg9vcmdhbml6YXRpb25faWQYAiABKAlSDm9yZ2FuaXphdGlvbklkEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkEkYKB2NvbW1hbmQYBCABKAsyLC5idWNrZXRlZXIuYWNjb3VudC5DcmVhdGVTZWFyY2hGaWx0ZXJDb21tYW5kUgdjb21tYW5kIhwKGkNyZWF0ZVNlYXJjaEZpbHRlclJlc3BvbnNlIsADChlVcGRhdGVTZWFyY2hGaWx0ZXJSZXF1ZXN0EhQKBWVtYWlsGAEgASgJUgVlbWFpbBInCg9vcmdhbml6YXRpb25faWQYAiABKAlSDm9yZ2FuaXphdGlvbklkEiUKDmVudmlyb25tZW50X2lkGAMgASgJUg1lbnZpcm9ubWVudElkEmAKE2NoYW5nZV9uYW1lX2NvbW1hbmQYBCABKAsyMC5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VTZWFyY2hGaWx0ZXJOYW1lQ29tbWFuZFIRY2hhbmdlTmFtZUNvbW1hbmQSYwoUY2hhbmdlX3F1ZXJ5X2NvbW1hbmQYBSABKAsyMS5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VTZWFyY2hGaWx0ZXJRdWVyeUNvbW1hbmRSEmNoYW5nZVF1ZXJ5Q29tbWFuZBJ2Ch1jaGFuZ2VfZGVmYXVsdF9maWx0ZXJfY29tbWFuZBgGIAEoCzIzLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZURlZmF1bHRTZWFyY2hGaWx0ZXJDb21tYW5kUhpjaGFuZ2VEZWZhdWx0RmlsdGVyQ29tbWFuZCIcChpVcGRhdGVTZWFyY2hGaWx0ZXJSZXNwb25zZSLJAQoZRGVsZXRlU2VhcmNoRmlsdGVyUmVxdWVzdBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSJwoPb3JnYW5pemF0aW9uX2lkGAIgASgJUg5vcmdhbml6YXRpb25JZBIlCg5lbnZpcm9ubWVudF9pZBgDIAEoCVINZW52aXJvbm1lbnRJZBJGCgdjb21tYW5kGAQgASgLMiwuYnVja2V0ZWVyLmFjY291bnQuRGVsZXRlU2VhcmNoRmlsdGVyQ29tbWFuZFIHY29tbWFuZCIcChpEZWxldGVTZWFyY2hGaWx0ZXJSZXNwb25zZSLoAgoTVXBkYXRlQVBJS2V5UmVxdWVzdBIOCgJpZBgBIAEoCVICaWQSJQoOZW52aXJvbm1lbnRfaWQYAiABKAlSDWVudmlyb25tZW50SWQSMAoEbmFtZRgDIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIEbmFtZRI+CgtkZXNjcmlwdGlvbhgEIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVILZGVzY3JpcHRpb24SMgoEcm9sZRgFIAEoDjIeLmJ1Y2tldGVlci5hY2NvdW50LkFQSUtleS5Sb2xlUgRyb2xlEjYKCGRpc2FibGVkGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIZGlzYWJsZWQSPAoKbWFpbnRhaW5lchgHIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIKbWFpbnRhaW5lciIWChRVcGRhdGVBUElLZXlSZXNwb25zZTLOegoOQWNjb3VudFNlcnZpY2USngQKBUdldE1lEh8uYnVja2V0ZWVyLmFjY291bnQuR2V0TWVSZXF1ZXN0GiAuYnVja2V0ZWVyLmFjY291bnQuR2V0TWVSZXNwb25zZSLRA5JBswMKB0FjY291bnQSBkdldCBNZRodR2V0IHRoZSB1c2VyIGNvbnNvbGUgYWNjb3VudC4qFXdlYi52MS5hY2NvdW50LmdldF9tZUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhQSEi92MS9hY2NvdW50L2dldF9tZRL4BAoSR2V0TXlPcmdhbml6YXRpb25zEiwuYnVja2V0ZWVyLmFjY291bnQuR2V0TXlPcmdhbml6YXRpb25zUmVxdWVzdBotLmJ1Y2tldGVlci5hY2NvdW50LkdldE15T3JnYW5pemF0aW9uc1Jlc3BvbnNlIoQEkkHcAwoHQWNjb3VudBIUR2V0IE15IE9yZ2FuaXphdGlvbnMaLkdldCBhbGwgdGhlIG9yZ2FuaXphdGlvbnMgZm9yIGEgc3BlY2lmaWMgdXNlci4qH3dlYi52MS5hY2NvdW50Lm15X29yZ2FuaXphdGlvbnNKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIeEhwvdjEvYWNjb3VudC9teV9vcmdhbml6YXRpb25zEpYFChlHZXRNeU9yZ2FuaXphdGlvbnNCeUVtYWlsEjMuYnVja2V0ZWVyLmFjY291bnQuR2V0TXlPcmdhbml6YXRpb25zQnlFbWFpbFJlcXVlc3QaLS5idWNrZXRlZXIuYWNjb3VudC5HZXRNeU9yZ2FuaXphdGlvbnNSZXNwb25zZSKUBJJB4wMKB0FjY291bnQSHUdldCBNeSBPcmdhbml6YXRpb25zIEJ5IEVtYWlsGiNHZXQgYWxsIHRoZSBvcmdhbml6YXRpb25zIGJ5IGVtYWlsLiood2ViLnYxLmFjY291bnQubXlfb3JnYW5pemF0aW9uc19ieV9lbWFpbEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAicSJS92MS9hY2NvdW50L215X29yZ2FuaXphdGlvbnNfYnlfZW1haWwSugYKD0NyZWF0ZUFjY291bnRWMhIpLmJ1Y2tldGVlci5hY2NvdW50LkNyZWF0ZUFjY291bnRWMlJlcXVlc3QaKi5idWNrZXRlZXIuYWNjb3VudC5DcmVhdGVBY2NvdW50VjJSZXNwb25zZSLPBZJBpgUKB0FjY291bnQSBkNyZWF0ZRpcQ3JlYXRlIGFuIGFjY291bnQgdG8gaGF2ZSBhY2Nlc3MgdG8gdGhlIGNvbnNvbGUuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBBRE1JTmAgcm9sZS4qHXdlYi52MS5hY2NvdW50LmNyZWF0ZV9hY2NvdW50SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAh8iGi92MS9hY2NvdW50L2NyZWF0ZV9hY2NvdW50OgEqEs4DCg9FbmFibGVBY2NvdW50VjISKS5idWNrZXRlZXIuYWNjb3VudC5FbmFibGVBY2NvdW50VjJSZXF1ZXN0GiouYnVja2V0ZWVyLmFjY291bnQuRW5hYmxlQWNjb3VudFYyUmVzcG9uc2Ui4wKSQboCCgdBY2NvdW50EgZFbmFibGUaXEVuYWJsZSBhbiBhY2NvdW50IHRvIGhhdmUgYWNjZXNzIHRvIHRoZSBjb25zb2xlLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgQURNSU5gIHJvbGUuKh13ZWIudjEuYWNjb3VudC5lbmFibGVfYWNjb3VudEqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAh8iGi92MS9hY2NvdW50L2VuYWJsZV9hY2NvdW50OgEqEsIGChBEaXNhYmxlQWNjb3VudFYyEiouYnVja2V0ZWVyLmFjY291bnQuRGlzYWJsZUFjY291bnRWMlJlcXVlc3QaKy5idWNrZXRlZXIuYWNjb3VudC5EaXNhYmxlQWNjb3VudFYyUmVzcG9uc2Ui1AWSQaoFCgdBY2NvdW50EgdEaXNhYmxlGl5EaXNhYmxlIGFuIGFjY291bnQgdG8gYmxvY2sgYWNjZXNzIHRvIHRoZSBjb25zb2xlLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgQURNSU5gIHJvbGUuKh53ZWIudjEuYWNjb3VudC5kaXNhYmxlX2FjY291bnRKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCICIbL3YxL2FjY291bnQvZGlzYWJsZV9hY2NvdW50OgEqEpwGCg9VcGRhdGVBY2NvdW50VjISKS5idWNrZXRlZXIuYWNjb3VudC5VcGRhdGVBY2NvdW50VjJSZXF1ZXN0GiouYnVja2V0ZWVyLmFjY291bnQuVXBkYXRlQWNjb3VudFYyUmVzcG9uc2UisQWSQYgFCgdBY2NvdW50EgZVcGRhdGUaPlVwZGF0ZSBhbiBhY2NvdW50LiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgQURNSU5gIHJvbGUuKh13ZWIudjEuYWNjb3VudC51cGRhdGVfYWNjb3VudEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIfIhovdjEvYWNjb3VudC91cGRhdGVfYWNjb3VudDoBKhKcBgoPRGVsZXRlQWNjb3VudFYyEikuYnVja2V0ZWVyLmFjY291bnQuRGVsZXRlQWNjb3VudFYyUmVxdWVzdBoqLmJ1Y2tldGVlci5hY2NvdW50LkRlbGV0ZUFjY291bnRWMlJlc3BvbnNlIrEFkkGIBQoHQWNjb3VudBIGRGVsZXRlGj5EZWxldGUgYW4gYWNjb3VudC4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYW4gYEFETUlOYCByb2xlLiodd2ViLnYxLmFjY291bnQuZGVsZXRlX2FjY291bnRKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCHyIaL3YxL2FjY291bnQvZGVsZXRlX2FjY291bnQ6ASoSrAQKDEdldEFjY291bnRWMhImLmJ1Y2tldGVlci5hY2NvdW50LkdldEFjY291bnRWMlJlcXVlc3QaJy5idWNrZXRlZXIuYWNjb3VudC5HZXRBY2NvdW50VjJSZXNwb25zZSLKA5JBpwMKB0FjY291bnQSA0dldBoPR2V0IGFuIGFjY291bnQuKhp3ZWIudjEuYWNjb3VudC5nZXRfYWNjb3VudEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhkSFy92MS9hY2NvdW50L2dldF9hY2NvdW50Ep0FChtHZXRBY2NvdW50VjJCeUVudmlyb25tZW50SUQSNS5idWNrZXRlZXIuYWNjb3VudC5HZXRBY2NvdW50VjJCeUVudmlyb25tZW50SURSZXF1ZXN0GjYuYnVja2V0ZWVyLmFjY291bnQuR2V0QWNjb3VudFYyQnlFbnZpcm9ubWVudElEUmVzcG9uc2UijgSSQdwDCgdBY2NvdW50EhpHZXQgQWNjb3VudCBCeSBFbnZpcm9ubWVudBoeR2V0IGFuIGFjY291bnQgYnkgZW52aXJvbm1lbnQuKil3ZWIudjEuYWNjb3VudC5nZXRfYWNjb3VudF9ieV9lbnZpcm9ubWVudEq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAigSJi92MS9hY2NvdW50L2dldF9hY2NvdW50X2J5X2Vudmlyb25tZW50ErYECg5MaXN0QWNjb3VudHNWMhIoLmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBY2NvdW50c1YyUmVxdWVzdBopLmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBY2NvdW50c1YyUmVzcG9uc2UizgOSQakDCgdBY2NvdW50EgRMaXN0Gg5MaXN0IGFjY291bnRzLiocd2ViLnYxLmFjY291bnQubGlzdF9hY2NvdW50c0q0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhsSGS92MS9hY2NvdW50L2xpc3RfYWNjb3VudHMSsAYKDENyZWF0ZUFQSUtleRImLmJ1Y2tldGVlci5hY2NvdW50LkNyZWF0ZUFQSUtleVJlcXVlc3QaJy5idWNrZXRlZXIuYWNjb3VudC5DcmVhdGVBUElLZXlSZXNwb25zZSLOBZJBpQUKB0FQSSBLZXkSBkNyZWF0ZRpbQ3JlYXRlIGFuIEFQSSBrZXkgdG8gYmUgdXNlZCBvbiB0aGUgY2xpZW50IFNESy4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYW4gYEFETUlOYCByb2xlLiodd2ViLnYxLmFjY291bnQuY3JlYXRlX2FwaV9rZXlKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCHyIaL3YxL2FjY291bnQvY3JlYXRlX2FwaV9rZXk6ASoSvAYKEENoYW5nZUFQSUtleU5hbWUSKi5idWNrZXRlZXIuYWNjb3VudC5DaGFuZ2VBUElLZXlOYW1lUmVxdWVzdBorLmJ1Y2tldGVlci5hY2NvdW50LkNoYW5nZUFQSUtleU5hbWVSZXNwb25zZSLOBZJBoAUKB0FQSSBLZXkSE0NoYW5nZSBBUEkgS2V5IE5hbWUaRENoYW5nZSB0aGUgQVBJIEtleSBOYW1lLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgQURNSU5gIHJvbGUuKiJ3ZWIudjEuYWNjb3VudC5jaGFuZ2VfYXBpX2tleV9uYW1lSrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAiQiHy92MS9hY2NvdW50L2NoYW5nZV9hcGlfa2V5X25hbWU6ASoSkwYKDEVuYWJsZUFQSUtleRImLmJ1Y2tldGVlci5hY2NvdW50LkVuYWJsZUFQSUtleVJlcXVlc3QaJy5idWNrZXRlZXIuYWNjb3VudC5FbmFibGVBUElLZXlSZXNwb25zZSKxBZJBiAUKB0FQSSBLZXkSBkVuYWJsZRo+RW5hYmxlIGFuIEFQSSBLZXkuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBBRE1JTmAgcm9sZS4qHXdlYi52MS5hY2NvdW50LmVuYWJsZV9hcGlfa2V5SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAh8iGi92MS9hY2NvdW50L2VuYWJsZV9hcGlfa2V5OgEqEpoGCg1EaXNhYmxlQVBJS2V5EicuYnVja2V0ZWVyLmFjY291bnQuRGlzYWJsZUFQSUtleVJlcXVlc3QaKC5idWNrZXRlZXIuYWNjb3VudC5EaXNhYmxlQVBJS2V5UmVzcG9uc2UitQWSQYsFCgdBUEkgS2V5EgdEaXNhYmxlGj9EaXNhYmxlIGFuIEFQSSBLZXkuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGFuIGBBRE1JTmAgcm9sZS4qHndlYi52MS5hY2NvdW50LmRpc2FibGVfYXBpX2tleUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIgIhsvdjEvYWNjb3VudC9kaXNhYmxlX2FwaV9rZXk6ASoSowQKCUdldEFQSUtleRIjLmJ1Y2tldGVlci5hY2NvdW50LkdldEFQSUtleVJlcXVlc3QaJC5idWNrZXRlZXIuYWNjb3VudC5HZXRBUElLZXlSZXNwb25zZSLKA5JBpwMKB0FQSSBLZXkSA0dldBoPR2V0IGFuIEFQSSBLZXkuKhp3ZWIudjEuYWNjb3VudC5nZXRfYXBpX2tleUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhkSFy92MS9hY2NvdW50L2dldF9hcGlfa2V5Eq0ECgtMaXN0QVBJS2V5cxIlLmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBUElLZXlzUmVxdWVzdBomLmJ1Y2tldGVlci5hY2NvdW50Lkxpc3RBUElLZXlzUmVzcG9uc2UizgOSQakDCgdBUEkgS2V5EgRMaXN0Gg5MaXN0IEFQSSBLZXlzLiocd2ViLnYxLmFjY291bnQubGlzdF9hcGlfa2V5c0q0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhsSGS92MS9hY2NvdW50L2xpc3RfYXBpX2tleXMS/AQKFEdldEVudmlyb25tZW50QVBJS2V5Ei4uYnVja2V0ZWVyLmFjY291bnQuR2V0RW52aXJvbm1lbnRBUElLZXlSZXF1ZXN0Gi8uYnVja2V0ZWVyLmFjY291bnQuR2V0RW52aXJvbm1lbnRBUElLZXlSZXNwb25zZSKCBJJB0wMKB0FQSSBLZXkSF0dldCBFbnZpcm9ubWVudCBBUEkgS2V5GhtHZXQgYW4gZW52aXJvbm1lbnQgQVBJIEtleS4qJndlYi52MS5hY2NvdW50LmdldF9lbnZpcm9ubWVudF9hcGlfa2V5SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfYLT5JMCJRIjL3YxL2FjY291bnQvZ2V0X2Vudmlyb25tZW50X2FwaV9rZXkSxQYKEkNyZWF0ZVNlYXJjaEZpbHRlchIsLmJ1Y2tldGVlci5hY2NvdW50LkNyZWF0ZVNlYXJjaEZpbHRlclJlcXVlc3QaLS5idWNrZXRlZXIuYWNjb3VudC5DcmVhdGVTZWFyY2hGaWx0ZXJSZXNwb25zZSLRBZJBogUKB0FjY291bnQSFENyZWF0ZSBTZWFyY2ggRmlsdGVyGkRDcmVhdGUgYSBzZWFyY2ggZmlsdGVyLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgVklFV0VSYCByb2xlLiojd2ViLnYxLmFjY291bnQuY3JlYXRlX3NlYXJjaF9maWx0ZXJKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCJSIgL3YxL2FjY291bnQvY3JlYXRlX3NlYXJjaF9maWx0ZXI6ASoSxQYKElVwZGF0ZVNlYXJjaEZpbHRlchIsLmJ1Y2tldGVlci5hY2NvdW50LlVwZGF0ZVNlYXJjaEZpbHRlclJlcXVlc3QaLS5idWNrZXRlZXIuYWNjb3VudC5VcGRhdGVTZWFyY2hGaWx0ZXJSZXNwb25zZSLRBZJBogUKB0FjY291bnQSFFVwZGF0ZSBTZWFyY2ggRmlsdGVyGkRVcGRhdGUgYSBzZWFyY2ggZmlsdGVyLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgVklFV0VSYCByb2xlLiojd2ViLnYxLmFjY291bnQudXBkYXRlX3NlYXJjaF9maWx0ZXJKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCJSIgL3YxL2FjY291bnQvdXBkYXRlX3NlYXJjaF9maWx0ZXI6ASoSxQYKEkRlbGV0ZVNlYXJjaEZpbHRlchIsLmJ1Y2tldGVlci5hY2NvdW50LkRlbGV0ZVNlYXJjaEZpbHRlclJlcXVlc3QaLS5idWNrZXRlZXIuYWNjb3VudC5EZWxldGVTZWFyY2hGaWx0ZXJSZXNwb25zZSLRBZJBogUKB0FjY291bnQSFERlbGV0ZSBTZWFyY2ggRmlsdGVyGkREZWxldGUgYSBzZWFyY2ggZmlsdGVyLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhbiBgVklFV0VSYCByb2xlLiojd2ViLnYxLmFjY291bnQuZGVsZXRlX3NlYXJjaF9maWx0ZXJKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCJSIgL3YxL2FjY291bnQvZGVsZXRlX3NlYXJjaF9maWx0ZXI6ASoSmwYKDFVwZGF0ZUFQSUtleRImLmJ1Y2tldGVlci5hY2NvdW50LlVwZGF0ZUFQSUtleVJlcXVlc3QaJy5idWNrZXRlZXIuYWNjb3VudC5VcGRhdGVBUElLZXlSZXNwb25zZSK5BZJBkAUKB0FQSSBLZXkSDlVwZGF0ZSBBUEkgS2V5Gj5VcGRhdGUgYW4gQVBJIEtleS4gVG8gY2FsbCB0aGlzIEFQSSwgeW91IG5lZWQgYW4gYEFETUlOYCByb2xlLiodd2ViLnYxLmFjY291bnQudXBkYXRlX2FwaV9rZXlKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCHzIaL3YxL2FjY291bnQvdXBkYXRlX2FwaV9rZXk6ASpCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMw== experimentcalculatorDescriptor: CtYBCh1wcm90by9mZWF0dXJlL3ZhcmlhdGlvbi5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUiZwoJVmFyaWF0aW9uEg4KAmlkGAEgASgJUgJpZBIUCgV2YWx1ZRgCIAEoCVIFdmFsdWUSEgoEbmFtZRgDIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgEIAEoCVILZGVzY3JpcHRpb25CMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwq8BwohcHJvdG8vZXhwZXJpbWVudC9leHBlcmltZW50LnByb3RvEhRidWNrZXRlZXIuZXhwZXJpbWVudBodcHJvdG8vZmVhdHVyZS92YXJpYXRpb24ucHJvdG8i0AUKCkV4cGVyaW1lbnQSDgoCaWQYASABKAlSAmlkEhsKB2dvYWxfaWQYAiABKAlCAhgBUgZnb2FsSWQSHQoKZmVhdHVyZV9pZBgDIAEoCVIJZmVhdHVyZUlkEicKD2ZlYXR1cmVfdmVyc2lvbhgEIAEoBVIOZmVhdHVyZVZlcnNpb24SPAoKdmFyaWF0aW9ucxgFIAMoCzIcLmJ1Y2tldGVlci5mZWF0dXJlLlZhcmlhdGlvblIKdmFyaWF0aW9ucxIZCghzdGFydF9hdBgGIAEoA1IHc3RhcnRBdBIXCgdzdG9wX2F0GAcgASgDUgZzdG9wQXQSHAoHc3RvcHBlZBgIIAEoCEICGAFSB3N0b3BwZWQSIQoKc3RvcHBlZF9hdBgJIAEoA0ICMAFSCXN0b3BwZWRBdBIdCgpjcmVhdGVkX2F0GAogASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgLIAEoA1IJdXBkYXRlZEF0EhgKB2RlbGV0ZWQYDCABKAhSB2RlbGV0ZWQSGQoIZ29hbF9pZHMYDSADKAlSB2dvYWxJZHMSEgoEbmFtZRgOIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgPIAEoCVILZGVzY3JpcHRpb24SKgoRYmFzZV92YXJpYXRpb25faWQYECABKAlSD2Jhc2VWYXJpYXRpb25JZBI/CgZzdGF0dXMYEiABKA4yJy5idWNrZXRlZXIuZXhwZXJpbWVudC5FeHBlcmltZW50LlN0YXR1c1IGc3RhdHVzEh4KCm1haW50YWluZXIYEyABKAlSCm1haW50YWluZXISGgoIYXJjaGl2ZWQYFCABKAhSCGFyY2hpdmVkIkIKBlN0YXR1cxILCgdXQUlUSU5HEAASCwoHUlVOTklORxABEgsKB1NUT1BQRUQQAhIRCg1GT1JDRV9TVE9QUEVEEANKBAgREBIiUQoLRXhwZXJpbWVudHMSQgoLZXhwZXJpbWVudHMYASADKAsyIC5idWNrZXRlZXIuZXhwZXJpbWVudC5FeHBlcmltZW50UgtleHBlcmltZW50c0I0WjJnaXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZXhwZXJpbWVudGIGcHJvdG8zCuADCihwcm90by9leHBlcmltZW50Y2FsY3VsYXRvci9zZXJ2aWNlLnByb3RvEh5idWNrZXRlZXIuZXhwZXJpbWVudGNhbGN1bGF0b3IaIXByb3RvL2V4cGVyaW1lbnQvZXhwZXJpbWVudC5wcm90byJ7ChBCYXRjaENhbGNSZXF1ZXN0EiUKDmVudmlyb25tZW50X2lkGAEgASgJUg1lbnZpcm9ubWVudElkEkAKCmV4cGVyaW1lbnQYAiABKAsyIC5idWNrZXRlZXIuZXhwZXJpbWVudC5FeHBlcmltZW50UgpleHBlcmltZW50IhMKEUJhdGNoQ2FsY1Jlc3BvbnNlMpYBChtFeHBlcmltZW50Q2FsY3VsYXRvclNlcnZpY2USdwoOQ2FsY0V4cGVyaW1lbnQSMC5idWNrZXRlZXIuZXhwZXJpbWVudGNhbGN1bGF0b3IuQmF0Y2hDYWxjUmVxdWVzdBoxLmJ1Y2tldGVlci5leHBlcmltZW50Y2FsY3VsYXRvci5CYXRjaENhbGNSZXNwb25zZSIAQj5aPGdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9leHBlcmltZW50Y2FsY3VsYXRvcmIGcHJvdG8z - auditlogDescriptor: CuQBChlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiNgoDQW55EhkKCHR5cGVfdXJsGAEgASgJUgd0eXBlVXJsEhQKBXZhbHVlGAIgASgMUgV2YWx1ZUJ2ChNjb20uZ29vZ2xlLnByb3RvYnVmQghBbnlQcm90b1ABWixnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi9hbnlwYqICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IGcHJvdG8zCoYECh5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIjCgtEb3VibGVWYWx1ZRIUCgV2YWx1ZRgBIAEoAVIFdmFsdWUiIgoKRmxvYXRWYWx1ZRIUCgV2YWx1ZRgBIAEoAlIFdmFsdWUiIgoKSW50NjRWYWx1ZRIUCgV2YWx1ZRgBIAEoA1IFdmFsdWUiIwoLVUludDY0VmFsdWUSFAoFdmFsdWUYASABKARSBXZhbHVlIiIKCkludDMyVmFsdWUSFAoFdmFsdWUYASABKAVSBXZhbHVlIiMKC1VJbnQzMlZhbHVlEhQKBXZhbHVlGAEgASgNUgV2YWx1ZSIhCglCb29sVmFsdWUSFAoFdmFsdWUYASABKAhSBXZhbHVlIiMKC1N0cmluZ1ZhbHVlEhQKBXZhbHVlGAEgASgJUgV2YWx1ZSIiCgpCeXRlc1ZhbHVlEhQKBXZhbHVlGAEgASgMUgV2YWx1ZUKDAQoTY29tLmdvb2dsZS5wcm90b2J1ZkINV3JhcHBlcnNQcm90b1ABWjFnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi93cmFwcGVyc3Bi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzMKxwMKGnByb3RvL2ZlYXR1cmUvY2xhdXNlLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSLaAgoGQ2xhdXNlEg4KAmlkGAEgASgJUgJpZBIcCglhdHRyaWJ1dGUYAiABKAlSCWF0dHJpYnV0ZRI+CghvcGVyYXRvchgDIAEoDjIiLmJ1Y2tldGVlci5mZWF0dXJlLkNsYXVzZS5PcGVyYXRvclIIb3BlcmF0b3ISFgoGdmFsdWVzGAQgAygJUgZ2YWx1ZXMiyQEKCE9wZXJhdG9yEgoKBkVRVUFMUxAAEgYKAklOEAESDQoJRU5EU19XSVRIEAISDwoLU1RBUlRTX1dJVEgQAxILCgdTRUdNRU5UEAQSCwoHR1JFQVRFUhAFEhQKEEdSRUFURVJfT1JfRVFVQUwQBhIICgRMRVNTEAcSEQoNTEVTU19PUl9FUVVBTBAIEgoKBkJFRk9SRRAJEgkKBUFGVEVSEAoSEAoMRkVBVFVSRV9GTEFHEAsSEwoPUEFSVElBTExZX01BVENIEAxCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwq7BAoccHJvdG8vZmVhdHVyZS9zdHJhdGVneS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUiLQoNRml4ZWRTdHJhdGVneRIcCgl2YXJpYXRpb24YASABKAlSCXZhcmlhdGlvbiKiAQoPUm9sbG91dFN0cmF0ZWd5EkwKCnZhcmlhdGlvbnMYASADKAsyLC5idWNrZXRlZXIuZmVhdHVyZS5Sb2xsb3V0U3RyYXRlZ3kuVmFyaWF0aW9uUgp2YXJpYXRpb25zGkEKCVZhcmlhdGlvbhIcCgl2YXJpYXRpb24YASABKAlSCXZhcmlhdGlvbhIWCgZ3ZWlnaHQYAiABKAVSBndlaWdodCL4AQoIU3RyYXRlZ3kSNAoEdHlwZRgBIAEoDjIgLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5LlR5cGVSBHR5cGUSRwoOZml4ZWRfc3RyYXRlZ3kYAiABKAsyIC5idWNrZXRlZXIuZmVhdHVyZS5GaXhlZFN0cmF0ZWd5Ug1maXhlZFN0cmF0ZWd5Ek0KEHJvbGxvdXRfc3RyYXRlZ3kYAyABKAsyIi5idWNrZXRlZXIuZmVhdHVyZS5Sb2xsb3V0U3RyYXRlZ3lSD3JvbGxvdXRTdHJhdGVneSIeCgRUeXBlEgkKBUZJWEVEEAASCwoHUk9MTE9VVBABQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKqQIKGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGnByb3RvL2ZlYXR1cmUvY2xhdXNlLnByb3RvGhxwcm90by9mZWF0dXJlL3N0cmF0ZWd5LnByb3RvIoQBCgRSdWxlEg4KAmlkGAEgASgJUgJpZBI3CghzdHJhdGVneRgCIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5UghzdHJhdGVneRIzCgdjbGF1c2VzGAMgAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlUgdjbGF1c2VzQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKqAEKGnByb3RvL2ZlYXR1cmUvdGFyZ2V0LnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSI8CgZUYXJnZXQSHAoJdmFyaWF0aW9uGAEgASgJUgl2YXJpYXRpb24SFAoFdXNlcnMYAiADKAlSBXVzZXJzQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMK1gEKHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSJnCglWYXJpYXRpb24SDgoCaWQYASABKAlSAmlkEhQKBXZhbHVlGAIgASgJUgV2YWx1ZRISCgRuYW1lGAMgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCvQCCipwcm90by9mZWF0dXJlL2ZlYXR1cmVfbGFzdF91c2VkX2luZm8ucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlIvcBChNGZWF0dXJlTGFzdFVzZWRJbmZvEh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIYCgd2ZXJzaW9uGAIgASgFUgd2ZXJzaW9uEiAKDGxhc3RfdXNlZF9hdBgDIAEoA1IKbGFzdFVzZWRBdBIdCgpjcmVhdGVkX2F0GAQgASgDUgljcmVhdGVkQXQSMgoVY2xpZW50X29sZGVzdF92ZXJzaW9uGAUgASgJUhNjbGllbnRPbGRlc3RWZXJzaW9uEjIKFWNsaWVudF9sYXRlc3RfdmVyc2lvbhgGIAEoCVITY2xpZW50TGF0ZXN0VmVyc2lvbkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCsIBCiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUiUAoMUHJlcmVxdWlzaXRlEh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIhCgx2YXJpYXRpb25faWQYAiABKAlSC3ZhcmlhdGlvbklkQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKswwKG3Byb3RvL2ZlYXR1cmUvZmVhdHVyZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxoacHJvdG8vZmVhdHVyZS90YXJnZXQucHJvdG8aHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvGhxwcm90by9mZWF0dXJlL3N0cmF0ZWd5LnByb3RvGipwcm90by9mZWF0dXJlL2ZlYXR1cmVfbGFzdF91c2VkX2luZm8ucHJvdG8aIHByb3RvL2ZlYXR1cmUvcHJlcmVxdWlzaXRlLnByb3RvItIHCgdGZWF0dXJlEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhIYCgdlbmFibGVkGAQgASgIUgdlbmFibGVkEhgKB2RlbGV0ZWQYBSABKAhSB2RlbGV0ZWQSOQoWZXZhbHVhdGlvbl91bmRlbGF5YWJsZRgGIAEoCEICGAFSFWV2YWx1YXRpb25VbmRlbGF5YWJsZRIQCgN0dGwYByABKAVSA3R0bBIYCgd2ZXJzaW9uGAggASgFUgd2ZXJzaW9uEh0KCmNyZWF0ZWRfYXQYCSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAogASgDUgl1cGRhdGVkQXQSPAoKdmFyaWF0aW9ucxgLIAMoCzIcLmJ1Y2tldGVlci5mZWF0dXJlLlZhcmlhdGlvblIKdmFyaWF0aW9ucxIzCgd0YXJnZXRzGAwgAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuVGFyZ2V0Ugd0YXJnZXRzEi0KBXJ1bGVzGA0gAygLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIFcnVsZXMSRgoQZGVmYXVsdF9zdHJhdGVneRgOIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5Ug9kZWZhdWx0U3RyYXRlZ3kSIwoNb2ZmX3ZhcmlhdGlvbhgPIAEoCVIMb2ZmVmFyaWF0aW9uEhIKBHRhZ3MYECADKAlSBHRhZ3MSTAoObGFzdF91c2VkX2luZm8YESABKAsyJi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlTGFzdFVzZWRJbmZvUgxsYXN0VXNlZEluZm8SHgoKbWFpbnRhaW5lchgSIAEoCVIKbWFpbnRhaW5lchJPCg52YXJpYXRpb25fdHlwZRgTIAEoDjIoLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmUuVmFyaWF0aW9uVHlwZVINdmFyaWF0aW9uVHlwZRIaCghhcmNoaXZlZBgUIAEoCFIIYXJjaGl2ZWQSRQoNcHJlcmVxdWlzaXRlcxgVIAMoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVINcHJlcmVxdWlzaXRlcxIjCg1zYW1wbGluZ19zZWVkGBYgASgJUgxzYW1wbGluZ1NlZWQiPgoNVmFyaWF0aW9uVHlwZRIKCgZTVFJJTkcQABILCgdCT09MRUFOEAESCgoGTlVNQkVSEAISCAoESlNPThADIlIKCEZlYXR1cmVzEjYKCGZlYXR1cmVzGAEgAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIIZmVhdHVyZXMSDgoCaWQYAiABKAlSAmlkInMKEkVudmlyb25tZW50RmVhdHVyZRIlCg5lbnZpcm9ubWVudF9pZBgBIAEoCVINZW52aXJvbm1lbnRJZBI2CghmZWF0dXJlcxgCIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzImcKA1RhZxIOCgJpZBgBIAEoCVICaWQSHQoKY3JlYXRlZF9hdBgCIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYAyABKANSCXVwZGF0ZWRBdBISCgRuYW1lGAQgASgJUgRuYW1lQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKtQgKG3Byb3RvL2ZlYXR1cmUvc2VnbWVudC5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxobcHJvdG8vZmVhdHVyZS9mZWF0dXJlLnByb3RvIrQECgdTZWdtZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhItCgVydWxlcxgEIAMoCzIXLmJ1Y2tldGVlci5mZWF0dXJlLlJ1bGVSBXJ1bGVzEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSHAoHdmVyc2lvbhgHIAEoA0ICGAFSB3ZlcnNpb24SGAoHZGVsZXRlZBgIIAEoCFIHZGVsZXRlZBIuChNpbmNsdWRlZF91c2VyX2NvdW50GAkgASgDUhFpbmNsdWRlZFVzZXJDb3VudBIyChNleGNsdWRlZF91c2VyX2NvdW50GAogASgDQgIYAVIRZXhjbHVkZWRVc2VyQ291bnQSOQoGc3RhdHVzGAsgASgOMiEuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudC5TdGF0dXNSBnN0YXR1cxInChBpc19pbl91c2Vfc3RhdHVzGAwgASgIUg1pc0luVXNlU3RhdHVzEjYKCGZlYXR1cmVzGA0gAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIIZmVhdHVyZXMiPgoGU3RhdHVzEgsKB0lOSVRJQUwQABINCglVUExPQURJTkcQARIMCghTVUNFRURFRBACEgoKBkZBSUxFRBADItQBCgtTZWdtZW50VXNlchIOCgJpZBgBIAEoCVICaWQSHQoKc2VnbWVudF9pZBgCIAEoCVIJc2VnbWVudElkEhcKB3VzZXJfaWQYAyABKAlSBnVzZXJJZBI6CgVzdGF0ZRgEIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZRIYCgdkZWxldGVkGAUgASgIUgdkZWxldGVkIicKBVN0YXRlEgwKCElOQ0xVREVEEAASEAoIRVhDTFVERUQQARoCCAEiggEKDFNlZ21lbnRVc2VycxIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSNAoFdXNlcnMYAiADKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlclIFdXNlcnMSHQoKdXBkYXRlZF9hdBgDIAEoA1IJdXBkYXRlZEF0QjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMK5wMKI3Byb3RvL2Vudmlyb25tZW50L2Vudmlyb25tZW50LnByb3RvEhVidWNrZXRlZXIuZW52aXJvbm1lbnQi6QIKDUVudmlyb25tZW50VjISDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSGQoIdXJsX2NvZGUYAyABKAlSB3VybENvZGUSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uEh0KCnByb2plY3RfaWQYBSABKAlSCXByb2plY3RJZBIaCghhcmNoaXZlZBgGIAEoCFIIYXJjaGl2ZWQSHQoKY3JlYXRlZF9hdBgHIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCCABKANSCXVwZGF0ZWRBdBInCg9vcmdhbml6YXRpb25faWQYCSABKAlSDm9yZ2FuaXphdGlvbklkEicKD3JlcXVpcmVfY29tbWVudBgKIAEoCFIOcmVxdWlyZUNvbW1lbnQSLAoSZmVhdHVyZV9mbGFnX2NvdW50GAsgASgFUhBmZWF0dXJlRmxhZ0NvdW50QjVaM2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9lbnZpcm9ubWVudGIGcHJvdG8zCv0DCh9wcm90by9lbnZpcm9ubWVudC9wcm9qZWN0LnByb3RvEhVidWNrZXRlZXIuZW52aXJvbm1lbnQigwMKB1Byb2plY3QSDgoCaWQYASABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhIaCghkaXNhYmxlZBgDIAEoCFIIZGlzYWJsZWQSFAoFdHJpYWwYBCABKAhSBXRyaWFsEiMKDWNyZWF0b3JfZW1haWwYBSABKAlSDGNyZWF0b3JFbWFpbBIdCgpjcmVhdGVkX2F0GAYgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgHIAEoA1IJdXBkYXRlZEF0EhIKBG5hbWUYCCABKAlSBG5hbWUSGQoIdXJsX2NvZGUYCSABKAlSB3VybENvZGUSJwoPb3JnYW5pemF0aW9uX2lkGAogASgJUg5vcmdhbml6YXRpb25JZBIrChFlbnZpcm9ubWVudF9jb3VudBgLIAEoBVIQZW52aXJvbm1lbnRDb3VudBIsChJmZWF0dXJlX2ZsYWdfY291bnQYDCABKAVSEGZlYXR1cmVGbGFnQ291bnRCNVozZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2Vudmlyb25tZW50YgZwcm90bzMKrwQKJHByb3RvL2Vudmlyb25tZW50L29yZ2FuaXphdGlvbi5wcm90bxIVYnVja2V0ZWVyLmVudmlyb25tZW50IrADCgxPcmdhbml6YXRpb24SDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSGQoIdXJsX2NvZGUYAyABKAlSB3VybENvZGUSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uEhoKCGRpc2FibGVkGAUgASgIUghkaXNhYmxlZBIaCghhcmNoaXZlZBgGIAEoCFIIYXJjaGl2ZWQSFAoFdHJpYWwYByABKAhSBXRyaWFsEh0KCmNyZWF0ZWRfYXQYCCABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAkgASgDUgl1cGRhdGVkQXQSIQoMc3lzdGVtX2FkbWluGAogASgIUgtzeXN0ZW1BZG1pbhIjCg1wcm9qZWN0X2NvdW50GAsgASgFUgxwcm9qZWN0Q291bnQSKwoRZW52aXJvbm1lbnRfY291bnQYDCABKAVSEGVudmlyb25tZW50Q291bnQSHQoKdXNlcl9jb3VudBgNIAEoBVIJdXNlckNvdW50Eh8KC293bmVyX2VtYWlsGA4gASgJUgpvd25lckVtYWlsQjVaM2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9lbnZpcm9ubWVudGIGcHJvdG8zCpADCiFwcm90by9hY2NvdW50L3NlYXJjaF9maWx0ZXIucHJvdG8SEWJ1Y2tldGVlci5hY2NvdW50IukBCgxTZWFyY2hGaWx0ZXISDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSFAoFcXVlcnkYAyABKAlSBXF1ZXJ5ElEKEmZpbHRlcl90YXJnZXRfdHlwZRgEIAEoDjIjLmJ1Y2tldGVlci5hY2NvdW50LkZpbHRlclRhcmdldFR5cGVSEGZpbHRlclRhcmdldFR5cGUSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWQSJQoOZGVmYXVsdF9maWx0ZXIYBiABKAhSDWRlZmF1bHRGaWx0ZXIqMQoQRmlsdGVyVGFyZ2V0VHlwZRILCgdVTktOT1dOEAASEAoMRkVBVFVSRV9GTEFHEAFCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwrUEwobcHJvdG8vYWNjb3VudC9hY2NvdW50LnByb3RvEhFidWNrZXRlZXIuYWNjb3VudBojcHJvdG8vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQucHJvdG8aH3Byb3RvL2Vudmlyb25tZW50L3Byb2plY3QucHJvdG8aJHByb3RvL2Vudmlyb25tZW50L29yZ2FuaXphdGlvbi5wcm90bxohcHJvdG8vYWNjb3VudC9zZWFyY2hfZmlsdGVyLnByb3RvIqsCCgdBY2NvdW50Eg4KAmlkGAEgASgJUgJpZBIUCgVlbWFpbBgCIAEoCVIFZW1haWwSEgoEbmFtZRgDIAEoCVIEbmFtZRIzCgRyb2xlGAQgASgOMh8uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudC5Sb2xlUgRyb2xlEhoKCGRpc2FibGVkGAUgASgIUghkaXNhYmxlZBIdCgpjcmVhdGVkX2F0GAYgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgHIAEoA1IJdXBkYXRlZEF0EhgKB2RlbGV0ZWQYCCABKAhSB2RlbGV0ZWQiOQoEUm9sZRIKCgZWSUVXRVIQABIKCgZFRElUT1IQARIJCgVPV05FUhACEg4KClVOQVNTSUdORUQQYzoCGAEivAgKCUFjY291bnRWMhIUCgVlbWFpbBgBIAEoCVIFZW1haWwSEgoEbmFtZRgCIAEoCVIEbmFtZRIoChBhdmF0YXJfaW1hZ2VfdXJsGAMgASgJUg5hdmF0YXJJbWFnZVVybBInCg9vcmdhbml6YXRpb25faWQYBCABKAlSDm9yZ2FuaXphdGlvbklkElsKEW9yZ2FuaXphdGlvbl9yb2xlGAUgASgOMi4uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLlJvbGUuT3JnYW5pemF0aW9uUhBvcmdhbml6YXRpb25Sb2xlElkKEWVudmlyb25tZW50X3JvbGVzGAYgAygLMiwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLkVudmlyb25tZW50Um9sZVIQZW52aXJvbm1lbnRSb2xlcxIaCghkaXNhYmxlZBgHIAEoCFIIZGlzYWJsZWQSHQoKY3JlYXRlZF9hdBgIIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCSABKANSCXVwZGF0ZWRBdBJGCg5zZWFyY2hfZmlsdGVycxgKIAMoCzIfLmJ1Y2tldGVlci5hY2NvdW50LlNlYXJjaEZpbHRlclINc2VhcmNoRmlsdGVycxIdCgpmaXJzdF9uYW1lGAsgASgJUglmaXJzdE5hbWUSGwoJbGFzdF9uYW1lGAwgASgJUghsYXN0TmFtZRIaCghsYW5ndWFnZRgNIAEoCVIIbGFuZ3VhZ2USGwoJbGFzdF9zZWVuGA4gASgDUghsYXN0U2VlbhIoChBhdmF0YXJfZmlsZV90eXBlGA8gASgJUg5hdmF0YXJGaWxlVHlwZRIhCgxhdmF0YXJfaW1hZ2UYECABKAxSC2F2YXRhckltYWdlEisKEWVudmlyb25tZW50X2NvdW50GBEgASgFUhBlbnZpcm9ubWVudENvdW50EhIKBHRhZ3MYEiADKAlSBHRhZ3Ma1wEKBFJvbGUiWQoLRW52aXJvbm1lbnQSGgoWRW52aXJvbm1lbnRfVU5BU1NJR05FRBAAEhYKEkVudmlyb25tZW50X1ZJRVdFUhABEhYKEkVudmlyb25tZW50X0VESVRPUhACInQKDE9yZ2FuaXphdGlvbhIbChdPcmdhbml6YXRpb25fVU5BU1NJR05FRBAAEhcKE09yZ2FuaXphdGlvbl9NRU1CRVIQARIWChJPcmdhbml6YXRpb25fQURNSU4QAhIWChJPcmdhbml6YXRpb25fT1dORVIQAxp7Cg9FbnZpcm9ubWVudFJvbGUSJQoOZW52aXJvbm1lbnRfaWQYASABKAlSDWVudmlyb25tZW50SWQSQQoEcm9sZRgCIAEoDjItLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5Sb2xlLkVudmlyb25tZW50UgRyb2xlIuoGCg5Db25zb2xlQWNjb3VudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSEgoEbmFtZRgCIAEoCVIEbmFtZRIdCgphdmF0YXJfdXJsGAMgASgJUglhdmF0YXJVcmwSJgoPaXNfc3lzdGVtX2FkbWluGAQgASgIUg1pc1N5c3RlbUFkbWluEkcKDG9yZ2FuaXphdGlvbhgFIAEoCzIjLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5Pcmdhbml6YXRpb25SDG9yZ2FuaXphdGlvbhJbChFvcmdhbml6YXRpb25fcm9sZRgGIAEoDjIuLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5Sb2xlLk9yZ2FuaXphdGlvblIQb3JnYW5pemF0aW9uUm9sZRJeChFlbnZpcm9ubWVudF9yb2xlcxgHIAMoCzIxLmJ1Y2tldGVlci5hY2NvdW50LkNvbnNvbGVBY2NvdW50LkVudmlyb25tZW50Um9sZVIQZW52aXJvbm1lbnRSb2xlcxJGCg5zZWFyY2hfZmlsdGVycxgIIAMoCzIfLmJ1Y2tldGVlci5hY2NvdW50LlNlYXJjaEZpbHRlclINc2VhcmNoRmlsdGVycxIdCgpmaXJzdF9uYW1lGAkgASgJUglmaXJzdE5hbWUSGwoJbGFzdF9uYW1lGAogASgJUghsYXN0TmFtZRIaCghsYW5ndWFnZRgLIAEoCVIIbGFuZ3VhZ2USKAoQYXZhdGFyX2ZpbGVfdHlwZRgMIAEoCVIOYXZhdGFyRmlsZVR5cGUSIQoMYXZhdGFyX2ltYWdlGA0gASgMUgthdmF0YXJJbWFnZRIbCglsYXN0X3NlZW4YDiABKANSCGxhc3RTZWVuGtYBCg9FbnZpcm9ubWVudFJvbGUSRgoLZW52aXJvbm1lbnQYASABKAsyJC5idWNrZXRlZXIuZW52aXJvbm1lbnQuRW52aXJvbm1lbnRWMlILZW52aXJvbm1lbnQSOAoHcHJvamVjdBgCIAEoCzIeLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5Qcm9qZWN0Ugdwcm9qZWN0EkEKBHJvbGUYAyABKA4yLS5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5FbnZpcm9ubWVudFIEcm9sZUIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vYWNjb3VudGIGcHJvdG8zCuYGChtwcm90by9hY2NvdW50L2FwaV9rZXkucHJvdG8SEWJ1Y2tldGVlci5hY2NvdW50GiNwcm90by9lbnZpcm9ubWVudC9lbnZpcm9ubWVudC5wcm90byK7AwoGQVBJS2V5Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEjIKBHJvbGUYAyABKA4yHi5idWNrZXRlZXIuYWNjb3VudC5BUElLZXkuUm9sZVIEcm9sZRIaCghkaXNhYmxlZBgEIAEoCFIIZGlzYWJsZWQSHQoKY3JlYXRlZF9hdBgFIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYBiABKANSCXVwZGF0ZWRBdBIeCgptYWludGFpbmVyGAcgASgJUgptYWludGFpbmVyEhcKB2FwaV9rZXkYCCABKAlSBmFwaUtleRIgCgtkZXNjcmlwdGlvbhgJIAEoCVILZGVzY3JpcHRpb24SKQoQZW52aXJvbm1lbnRfbmFtZRgKIAEoCVIPZW52aXJvbm1lbnROYW1lInkKBFJvbGUSCwoHVU5LTk9XThAAEg4KClNES19DTElFTlQQARIOCgpTREtfU0VSVkVSEAISGAoUUFVCTElDX0FQSV9SRUFEX09OTFkQAxIUChBQVUJMSUNfQVBJX1dSSVRFEAQSFAoQUFVCTElDX0FQSV9BRE1JThAFIpUCChFFbnZpcm9ubWVudEFQSUtleRIyCgdhcGlfa2V5GAIgASgLMhkuYnVja2V0ZWVyLmFjY291bnQuQVBJS2V5UgZhcGlLZXkSMQoUZW52aXJvbm1lbnRfZGlzYWJsZWQYAyABKAhSE2Vudmlyb25tZW50RGlzYWJsZWQSIQoKcHJvamVjdF9pZBgEIAEoCUICGAFSCXByb2plY3RJZBJGCgtlbnZpcm9ubWVudBgFIAEoCzIkLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5FbnZpcm9ubWVudFYyUgtlbnZpcm9ubWVudBIoChBwcm9qZWN0X3VybF9jb2RlGAYgASgJUg5wcm9qZWN0VXJsQ29kZUoECAEQAkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vYWNjb3VudGIGcHJvdG8zCpoLChpwcm90by9hdXRvb3BzL2NsYXVzZS5wcm90bxIRYnVja2V0ZWVyLmF1dG9vcHMaGWdvb2dsZS9wcm90b2J1Zi9hbnkucHJvdG8ihgEKBkNsYXVzZRIOCgJpZBgBIAEoCVICaWQSLAoGY2xhdXNlGAIgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIGY2xhdXNlEj4KC2FjdGlvbl90eXBlGAMgASgOMh0uYnVja2V0ZWVyLmF1dG9vcHMuQWN0aW9uVHlwZVIKYWN0aW9uVHlwZSLfAgoST3BzRXZlbnRSYXRlQ2xhdXNlEiEKDHZhcmlhdGlvbl9pZBgCIAEoCVILdmFyaWF0aW9uSWQSFwoHZ29hbF9pZBgDIAEoCVIGZ29hbElkEhsKCW1pbl9jb3VudBgEIAEoA1IIbWluQ291bnQSKQoQdGhyZWFkc2hvbGRfcmF0ZRgFIAEoAVIPdGhyZWFkc2hvbGRSYXRlEkoKCG9wZXJhdG9yGAYgASgOMi4uYnVja2V0ZWVyLmF1dG9vcHMuT3BzRXZlbnRSYXRlQ2xhdXNlLk9wZXJhdG9yUghvcGVyYXRvchI+CgthY3Rpb25fdHlwZRgHIAEoDjIdLmJ1Y2tldGVlci5hdXRvb3BzLkFjdGlvblR5cGVSCmFjdGlvblR5cGUiMwoIT3BlcmF0b3ISFAoQR1JFQVRFUl9PUl9FUVVBTBAAEhEKDUxFU1NfT1JfRVFVQUwQAUoECAEQAiJkCg5EYXRldGltZUNsYXVzZRISCgR0aW1lGAEgASgDUgR0aW1lEj4KC2FjdGlvbl90eXBlGAIgASgOMh0uYnVja2V0ZWVyLmF1dG9vcHMuQWN0aW9uVHlwZVIKYWN0aW9uVHlwZSKXAQoaUHJvZ3Jlc3NpdmVSb2xsb3V0U2NoZWR1bGUSHwoLc2NoZWR1bGVfaWQYASABKAlSCnNjaGVkdWxlSWQSHQoKZXhlY3V0ZV9hdBgCIAEoA1IJZXhlY3V0ZUF0EhYKBndlaWdodBgDIAEoBVIGd2VpZ2h0EiEKDHRyaWdnZXJlZF9hdBgEIAEoA1ILdHJpZ2dlcmVkQXQimAEKJlByb2dyZXNzaXZlUm9sbG91dE1hbnVhbFNjaGVkdWxlQ2xhdXNlEksKCXNjaGVkdWxlcxgBIAMoCzItLmJ1Y2tldGVlci5hdXRvb3BzLlByb2dyZXNzaXZlUm9sbG91dFNjaGVkdWxlUglzY2hlZHVsZXMSIQoMdmFyaWF0aW9uX2lkGAIgASgJUgt2YXJpYXRpb25JZCLYAgooUHJvZ3Jlc3NpdmVSb2xsb3V0VGVtcGxhdGVTY2hlZHVsZUNsYXVzZRJLCglzY2hlZHVsZXMYASADKAsyLS5idWNrZXRlZXIuYXV0b29wcy5Qcm9ncmVzc2l2ZVJvbGxvdXRTY2hlZHVsZVIJc2NoZWR1bGVzEmAKCGludGVydmFsGAIgASgOMkQuYnVja2V0ZWVyLmF1dG9vcHMuUHJvZ3Jlc3NpdmVSb2xsb3V0VGVtcGxhdGVTY2hlZHVsZUNsYXVzZS5JbnRlcnZhbFIIaW50ZXJ2YWwSHgoKaW5jcmVtZW50cxgDIAEoA1IKaW5jcmVtZW50cxIhCgx2YXJpYXRpb25faWQYBCABKAlSC3ZhcmlhdGlvbklkIjoKCEludGVydmFsEgsKB1VOS05PV04QABIKCgZIT1VSTFkQARIJCgVEQUlMWRACEgoKBldFRUtMWRADKjIKCkFjdGlvblR5cGUSCwoHVU5LTk9XThAAEgoKBkVOQUJMRRABEgsKB0RJU0FCTEUQAkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vYXV0b29wc2IGcHJvdG8zCr0FCiFwcm90by9hdXRvb3BzL2F1dG9fb3BzX3J1bGUucHJvdG8SEWJ1Y2tldGVlci5hdXRvb3BzGhpwcm90by9hdXRvb3BzL2NsYXVzZS5wcm90byLQAgoLQXV0b09wc1J1bGUSDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBI1CghvcHNfdHlwZRgDIAEoDjIaLmJ1Y2tldGVlci5hdXRvb3BzLk9wc1R5cGVSB29wc1R5cGUSMwoHY2xhdXNlcxgEIAMoCzIZLmJ1Y2tldGVlci5hdXRvb3BzLkNsYXVzZVIHY2xhdXNlcxIdCgpjcmVhdGVkX2F0GAcgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgIIAEoA1IJdXBkYXRlZEF0EhgKB2RlbGV0ZWQYCSABKAhSB2RlbGV0ZWQSSAoPYXV0b19vcHNfc3RhdHVzGAogASgOMiAuYnVja2V0ZWVyLmF1dG9vcHMuQXV0b09wc1N0YXR1c1INYXV0b09wc1N0YXR1c0oECAYQByJUCgxBdXRvT3BzUnVsZXMSRAoOYXV0b19vcHNfcnVsZXMYASADKAsyHi5idWNrZXRlZXIuYXV0b29wcy5BdXRvT3BzUnVsZVIMYXV0b09wc1J1bGVzKj8KB09wc1R5cGUSEAoMVFlQRV9VTktOT1dOEAASDAoIU0NIRURVTEUQAhIOCgpFVkVOVF9SQVRFEAMiBAgBEAEqRAoNQXV0b09wc1N0YXR1cxILCgdXQUlUSU5HEAASCwoHUlVOTklORxABEgwKCEZJTklTSEVEEAISCwoHU1RPUFBFRBADQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9hdXRvb3BzYgZwcm90bzMK8AMKInByb3RvL25vdGlmaWNhdGlvbi9yZWNpcGllbnQucHJvdG8SFmJ1Y2tldGVlci5ub3RpZmljYXRpb24itwIKCVJlY2lwaWVudBI6CgR0eXBlGAEgASgOMiYuYnVja2V0ZWVyLm5vdGlmaWNhdGlvbi5SZWNpcGllbnQuVHlwZVIEdHlwZRJlChdzbGFja19jaGFubmVsX3JlY2lwaWVudBgCIAEoCzItLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uU2xhY2tDaGFubmVsUmVjaXBpZW50UhVzbGFja0NoYW5uZWxSZWNpcGllbnQSRgoIbGFuZ3VhZ2UYAyABKA4yKi5idWNrZXRlZXIubm90aWZpY2F0aW9uLlJlY2lwaWVudC5MYW5ndWFnZVIIbGFuZ3VhZ2UiGAoEVHlwZRIQCgxTbGFja0NoYW5uZWwQACIlCghMYW5ndWFnZRILCgdFTkdMSVNIEAASDAoISkFQQU5FU0UQASI4ChVTbGFja0NoYW5uZWxSZWNpcGllbnQSHwoLd2ViaG9va191cmwYASABKAlSCndlYmhvb2tVcmxCNlo0Z2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL25vdGlmaWNhdGlvbmIGcHJvdG8zCqsJCiVwcm90by9ub3RpZmljYXRpb24vc3Vic2NyaXB0aW9uLnByb3RvEhZidWNrZXRlZXIubm90aWZpY2F0aW9uGiJwcm90by9ub3RpZmljYXRpb24vcmVjaXBpZW50LnByb3RvIoUICgxTdWJzY3JpcHRpb24SDgoCaWQYASABKAlSAmlkEh0KCmNyZWF0ZWRfYXQYAiABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAMgASgDUgl1cGRhdGVkQXQSGgoIZGlzYWJsZWQYBCABKAhSCGRpc2FibGVkElIKDHNvdXJjZV90eXBlcxgFIAMoDjIvLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uU3Vic2NyaXB0aW9uLlNvdXJjZVR5cGVSC3NvdXJjZVR5cGVzEj8KCXJlY2lwaWVudBgGIAEoCzIhLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uUmVjaXBpZW50UglyZWNpcGllbnQSEgoEbmFtZRgHIAEoCVIEbmFtZRIlCg5lbnZpcm9ubWVudF9pZBgIIAEoCVINZW52aXJvbm1lbnRJZBIpChBlbnZpcm9ubWVudF9uYW1lGAkgASgJUg9lbnZpcm9ubWVudE5hbWUSKgoRZmVhdHVyZV9mbGFnX3RhZ3MYCiADKAlSD2ZlYXR1cmVGbGFnVGFncyLjBAoKU291cmNlVHlwZRIYChRET01BSU5fRVZFTlRfRkVBVFVSRRAAEhUKEURPTUFJTl9FVkVOVF9HT0FMEAESGwoXRE9NQUlOX0VWRU5UX0VYUEVSSU1FTlQQAhIYChRET01BSU5fRVZFTlRfQUNDT1VOVBADEhcKE0RPTUFJTl9FVkVOVF9BUElLRVkQBBIYChRET01BSU5fRVZFTlRfU0VHTUVOVBAFEhwKGERPTUFJTl9FVkVOVF9FTlZJUk9OTUVOVBAGEh4KGkRPTUFJTl9FVkVOVF9BRE1JTl9BQ0NPVU5UEAcSHQoZRE9NQUlOX0VWRU5UX0FVVE9PUFNfUlVMRRAIEhUKEURPTUFJTl9FVkVOVF9QVVNIEAkSHQoZRE9NQUlOX0VWRU5UX1NVQlNDUklQVElPThAKEiMKH0RPTUFJTl9FVkVOVF9BRE1JTl9TVUJTQ1JJUFRJT04QCxIYChRET01BSU5fRVZFTlRfUFJPSkVDVBAMEhgKFERPTUFJTl9FVkVOVF9XRUJIT09LEA0SJAogRE9NQUlOX0VWRU5UX1BST0dSRVNTSVZFX1JPTExPVVQQDhIdChlET01BSU5fRVZFTlRfT1JHQU5JWkFUSU9OEA8SHQoZRE9NQUlOX0VWRU5UX0ZMQUdfVFJJR0dFUhAQEhQKEERPTUFJTl9FVkVOVF9UQUcQERIYChRET01BSU5fRVZFTlRfQ09ERVJFRhASEhEKDUZFQVRVUkVfU1RBTEUQZBIXChJFWFBFUklNRU5UX1JVTk5JTkcQyAESDgoJTUFVX0NPVU5UEKwCQjZaNGdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9ub3RpZmljYXRpb25iBnByb3RvMwr3BQoncHJvdG8vYXV0b29wcy9wcm9ncmVzc2l2ZV9yb2xsb3V0LnByb3RvEhFidWNrZXRlZXIuYXV0b29wcxoZZ29vZ2xlL3Byb3RvYnVmL2FueS5wcm90byLiBAoSUHJvZ3Jlc3NpdmVSb2xsb3V0Eg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSLAoGY2xhdXNlGAMgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIGY2xhdXNlEkQKBnN0YXR1cxgEIAEoDjIsLmJ1Y2tldGVlci5hdXRvb3BzLlByb2dyZXNzaXZlUm9sbG91dC5TdGF0dXNSBnN0YXR1cxIdCgpjcmVhdGVkX2F0GAUgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgGIAEoA1IJdXBkYXRlZEF0Ej4KBHR5cGUYByABKA4yKi5idWNrZXRlZXIuYXV0b29wcy5Qcm9ncmVzc2l2ZVJvbGxvdXQuVHlwZVIEdHlwZRJOCgpzdG9wcGVkX2J5GAggASgOMi8uYnVja2V0ZWVyLmF1dG9vcHMuUHJvZ3Jlc3NpdmVSb2xsb3V0LlN0b3BwZWRCeVIJc3RvcHBlZEJ5Eh0KCnN0b3BwZWRfYXQYCSABKANSCXN0b3BwZWRBdCIyCgRUeXBlEhMKD01BTlVBTF9TQ0hFRFVMRRAAEhUKEVRFTVBMQVRFX1NDSEVEVUxFEAEiPQoGU3RhdHVzEgsKB1dBSVRJTkcQABILCgdSVU5OSU5HEAESDAoIRklOSVNIRUQQAhILCgdTVE9QUEVEEAMiSQoJU3RvcHBlZEJ5EgsKB1VOS05PV04QABIICgRVU0VSEAESEAoMT1BTX1NDSEVEVUxFEAISEwoPT1BTX0tJTExfU1dJVENIEANCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2F1dG9vcHNiBnByb3RvMwqgBQogcHJvdG8vZmVhdHVyZS9mbGFnX3RyaWdnZXIucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlIq0ECgtGbGFnVHJpZ2dlchIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEjcKBHR5cGUYBCABKA4yIy5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlci5UeXBlUgR0eXBlEj0KBmFjdGlvbhgFIAEoDjIlLmJ1Y2tldGVlci5mZWF0dXJlLkZsYWdUcmlnZ2VyLkFjdGlvblIGYWN0aW9uEiAKC2Rlc2NyaXB0aW9uGAYgASgJUgtkZXNjcmlwdGlvbhIjCg10cmlnZ2VyX2NvdW50GAcgASgFUgx0cmlnZ2VyQ291bnQSKgoRbGFzdF90cmlnZ2VyZWRfYXQYCCABKANSD2xhc3RUcmlnZ2VyZWRBdBIUCgV0b2tlbhgJIAEoCVIFdG9rZW4SGgoIZGlzYWJsZWQYCiABKAhSCGRpc2FibGVkEh0KCmNyZWF0ZWRfYXQYCyABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAwgASgDUgl1cGRhdGVkQXQSJQoOZW52aXJvbm1lbnRfaWQYDSABKAlSDWVudmlyb25tZW50SWQiKgoEVHlwZRIQCgxUeXBlX1VOS05PV04QABIQCgxUeXBlX1dFQkhPT0sQASI7CgZBY3Rpb24SEgoOQWN0aW9uX1VOS05PV04QABINCglBY3Rpb25fT04QARIOCgpBY3Rpb25fT0ZGEAJKBAgDEARCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwr2AwoTcHJvdG8vdGFnL3RhZy5wcm90bxINYnVja2V0ZWVyLnRhZyK3AgoDVGFnEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEh0KCmNyZWF0ZWRfYXQYAyABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAQgASgDUgl1cGRhdGVkQXQSPgoLZW50aXR5X3R5cGUYBSABKA4yHS5idWNrZXRlZXIudGFnLlRhZy5FbnRpdHlUeXBlUgplbnRpdHlUeXBlEiUKDmVudmlyb25tZW50X2lkGAYgASgJUg1lbnZpcm9ubWVudElkEikKEGVudmlyb25tZW50X25hbWUYByABKAlSD2Vudmlyb25tZW50TmFtZSI8CgpFbnRpdHlUeXBlEg8KC1VOU1BFQ0lGSUVEEAASEAoMRkVBVFVSRV9GTEFHEAESCwoHQUNDT1VOVBACIl8KDkVudmlyb25tZW50VGFnEiUKDmVudmlyb25tZW50X2lkGAEgASgJUg1lbnZpcm9ubWVudElkEiYKBHRhZ3MYAiADKAsyEi5idWNrZXRlZXIudGFnLlRhZ1IEdGFnc0ItWitnaXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vdGFnYgZwcm90bzMKtwgKIXByb3RvL2V4cGVyaW1lbnQvZXhwZXJpbWVudC5wcm90bxIUYnVja2V0ZWVyLmV4cGVyaW1lbnQaHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvIssGCgpFeHBlcmltZW50Eg4KAmlkGAEgASgJUgJpZBIbCgdnb2FsX2lkGAIgASgJQgIYAVIGZ29hbElkEh0KCmZlYXR1cmVfaWQYAyABKAlSCWZlYXR1cmVJZBInCg9mZWF0dXJlX3ZlcnNpb24YBCABKAVSDmZlYXR1cmVWZXJzaW9uEjwKCnZhcmlhdGlvbnMYBSADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSGQoIc3RhcnRfYXQYBiABKANSB3N0YXJ0QXQSFwoHc3RvcF9hdBgHIAEoA1IGc3RvcEF0EhwKB3N0b3BwZWQYCCABKAhCAhgBUgdzdG9wcGVkEiEKCnN0b3BwZWRfYXQYCSABKANCAjABUglzdG9wcGVkQXQSHQoKY3JlYXRlZF9hdBgKIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCyABKANSCXVwZGF0ZWRBdBIYCgdkZWxldGVkGAwgASgIUgdkZWxldGVkEhkKCGdvYWxfaWRzGA0gAygJUgdnb2FsSWRzEhIKBG5hbWUYDiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YDyABKAlSC2Rlc2NyaXB0aW9uEioKEWJhc2VfdmFyaWF0aW9uX2lkGBAgASgJUg9iYXNlVmFyaWF0aW9uSWQSPwoGc3RhdHVzGBIgASgOMicuYnVja2V0ZWVyLmV4cGVyaW1lbnQuRXhwZXJpbWVudC5TdGF0dXNSBnN0YXR1cxIeCgptYWludGFpbmVyGBMgASgJUgptYWludGFpbmVyEhoKCGFyY2hpdmVkGBQgASgIUghhcmNoaXZlZBJECgVnb2FscxgVIAMoCzIuLmJ1Y2tldGVlci5leHBlcmltZW50LkV4cGVyaW1lbnQuR29hbFJlZmVyZW5jZVIFZ29hbHMaMwoNR29hbFJlZmVyZW5jZRIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZSJCCgZTdGF0dXMSCwoHV0FJVElORxAAEgsKB1JVTk5JTkcQARILCgdTVE9QUEVEEAISEQoNRk9SQ0VfU1RPUFBFRBADSgQIERASIlEKC0V4cGVyaW1lbnRzEkIKC2V4cGVyaW1lbnRzGAEgAygLMiAuYnVja2V0ZWVyLmV4cGVyaW1lbnQuRXhwZXJpbWVudFILZXhwZXJpbWVudHNCNFoyZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2V4cGVyaW1lbnRiBnByb3RvMwq/BQobcHJvdG8vZXhwZXJpbWVudC9nb2FsLnByb3RvEhRidWNrZXRlZXIuZXhwZXJpbWVudBohcHJvdG8vZXhwZXJpbWVudC9leHBlcmltZW50LnByb3RvGiFwcm90by9hdXRvb3BzL2F1dG9fb3BzX3J1bGUucHJvdG8ihQQKBEdvYWwSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEhgKB2RlbGV0ZWQYBCABKAhSB2RlbGV0ZWQSHQoKY3JlYXRlZF9hdBgFIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYBiABKANSCXVwZGF0ZWRBdBInChBpc19pbl91c2Vfc3RhdHVzGAcgASgIUg1pc0luVXNlU3RhdHVzEhoKCGFyY2hpdmVkGAggASgIUghhcmNoaXZlZBJSCg9jb25uZWN0aW9uX3R5cGUYCSABKA4yKS5idWNrZXRlZXIuZXhwZXJpbWVudC5Hb2FsLkNvbm5lY3Rpb25UeXBlUg5jb25uZWN0aW9uVHlwZRJCCgtleHBlcmltZW50cxgKIAMoCzIgLmJ1Y2tldGVlci5leHBlcmltZW50LkV4cGVyaW1lbnRSC2V4cGVyaW1lbnRzEkQKDmF1dG9fb3BzX3J1bGVzGAsgAygLMh4uYnVja2V0ZWVyLmF1dG9vcHMuQXV0b09wc1J1bGVSDGF1dG9PcHNSdWxlcyI8Cg5Db25uZWN0aW9uVHlwZRILCgdVTktOT1dOEAASDgoKRVhQRVJJTUVOVBABEg0KCU9QRVJBVElPThACQjRaMmdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9leHBlcmltZW50YgZwcm90bzMKtwYKInByb3RvL2NvZGVyZWYvY29kZV9yZWZlcmVuY2UucHJvdG8SEWJ1Y2tldGVlci5jb2RlcmVmIsIFCg1Db2RlUmVmZXJlbmNlEg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSGwoJZmlsZV9wYXRoGAMgASgJUghmaWxlUGF0aBIfCgtsaW5lX251bWJlchgEIAEoBVIKbGluZU51bWJlchIhCgxjb2RlX3NuaXBwZXQYBSABKAlSC2NvZGVTbmlwcGV0EiEKDGNvbnRlbnRfaGFzaBgGIAEoCVILY29udGVudEhhc2gSGAoHYWxpYXNlcxgHIAMoCVIHYWxpYXNlcxInCg9yZXBvc2l0b3J5X25hbWUYCCABKAlSDnJlcG9zaXRvcnlOYW1lEikKEHJlcG9zaXRvcnlfb3duZXIYCSABKAlSD3JlcG9zaXRvcnlPd25lchJYCg9yZXBvc2l0b3J5X3R5cGUYCiABKA4yLy5idWNrZXRlZXIuY29kZXJlZi5Db2RlUmVmZXJlbmNlLlJlcG9zaXRvcnlUeXBlUg5yZXBvc2l0b3J5VHlwZRIrChFyZXBvc2l0b3J5X2JyYW5jaBgLIAEoCVIQcmVwb3NpdG9yeUJyYW5jaBIfCgtjb21taXRfaGFzaBgMIAEoCVIKY29tbWl0SGFzaBIlCg5lbnZpcm9ubWVudF9pZBgNIAEoCVINZW52aXJvbm1lbnRJZBIdCgpjcmVhdGVkX2F0GA4gASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgPIAEoA1IJdXBkYXRlZEF0Eh0KCnNvdXJjZV91cmwYECABKAlSCXNvdXJjZVVybCJkCg5SZXBvc2l0b3J5VHlwZRIfChtSRVBPU0lUT1JZX1RZUEVfVU5TUEVDSUZJRUQQABIKCgZHSVRIVUIQARIKCgZHSVRMQUIQAhINCglCSVRCVUNLRVQQAxIKCgZDVVNUT00QBEIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vY29kZXJlZmIGcHJvdG8zCufYAQoecHJvdG8vZXZlbnQvZG9tYWluL2V2ZW50LnByb3RvEhZidWNrZXRlZXIuZXZlbnQuZG9tYWluGhlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvGh5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8aGnByb3RvL2ZlYXR1cmUvY2xhdXNlLnByb3RvGhtwcm90by9mZWF0dXJlL2ZlYXR1cmUucHJvdG8aGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxodcHJvdG8vZmVhdHVyZS92YXJpYXRpb24ucHJvdG8aHHByb3RvL2ZlYXR1cmUvc3RyYXRlZ3kucHJvdG8aG3Byb3RvL2ZlYXR1cmUvc2VnbWVudC5wcm90bxoacHJvdG8vZmVhdHVyZS90YXJnZXQucHJvdG8aG3Byb3RvL2FjY291bnQvYWNjb3VudC5wcm90bxobcHJvdG8vYWNjb3VudC9hcGlfa2V5LnByb3RvGiFwcm90by9hdXRvb3BzL2F1dG9fb3BzX3J1bGUucHJvdG8aGnByb3RvL2F1dG9vcHMvY2xhdXNlLnByb3RvGiVwcm90by9ub3RpZmljYXRpb24vc3Vic2NyaXB0aW9uLnByb3RvGiJwcm90by9ub3RpZmljYXRpb24vcmVjaXBpZW50LnByb3RvGiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90bxoncHJvdG8vYXV0b29wcy9wcm9ncmVzc2l2ZV9yb2xsb3V0LnByb3RvGiBwcm90by9mZWF0dXJlL2ZsYWdfdHJpZ2dlci5wcm90bxohcHJvdG8vYWNjb3VudC9zZWFyY2hfZmlsdGVyLnByb3RvGhNwcm90by90YWcvdGFnLnByb3RvGhtwcm90by9leHBlcmltZW50L2dvYWwucHJvdG8aInByb3RvL2NvZGVyZWYvY29kZV9yZWZlcmVuY2UucHJvdG8iozAKBUV2ZW50Eg4KAmlkGAEgASgJUgJpZBIcCgl0aW1lc3RhbXAYAiABKANSCXRpbWVzdGFtcBJJCgtlbnRpdHlfdHlwZRgDIAEoDjIoLmJ1Y2tldGVlci5ldmVudC5kb21haW4uRXZlbnQuRW50aXR5VHlwZVIKZW50aXR5VHlwZRIbCgllbnRpdHlfaWQYBCABKAlSCGVudGl0eUlkEjYKBHR5cGUYBSABKA4yIi5idWNrZXRlZXIuZXZlbnQuZG9tYWluLkV2ZW50LlR5cGVSBHR5cGUSNgoGZWRpdG9yGAYgASgLMh4uYnVja2V0ZWVyLmV2ZW50LmRvbWFpbi5FZGl0b3JSBmVkaXRvchIoCgRkYXRhGAcgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIEZGF0YRIkCg5pc19hZG1pbl9ldmVudBgJIAEoCFIMaXNBZG1pbkV2ZW50EjkKB29wdGlvbnMYCiABKAsyHy5idWNrZXRlZXIuZXZlbnQuZG9tYWluLk9wdGlvbnNSB29wdGlvbnMSHwoLZW50aXR5X2RhdGEYCyABKAlSCmVudGl0eURhdGESMAoUcHJldmlvdXNfZW50aXR5X2RhdGEYDCABKAlSEnByZXZpb3VzRW50aXR5RGF0YRIlCg5lbnZpcm9ubWVudF9pZBgNIAEoCVINZW52aXJvbm1lbnRJZCKpAgoKRW50aXR5VHlwZRILCgdGRUFUVVJFEAASCAoER09BTBABEg4KCkVYUEVSSU1FTlQQAhILCgdBQ0NPVU5UEAMSCgoGQVBJS0VZEAQSCwoHU0VHTUVOVBAFEg8KC0VOVklST05NRU5UEAYSEQoNQURNSU5fQUNDT1VOVBAHEhAKDEFVVE9PUFNfUlVMRRAIEggKBFBVU0gQCRIQCgxTVUJTQ1JJUFRJT04QChIWChJBRE1JTl9TVUJTQ1JJUFRJT04QCxILCgdQUk9KRUNUEAwSFwoTUFJPR1JFU1NJVkVfUk9MTE9VVBAOEhAKDE9SR0FOSVpBVElPThAPEhAKDEZMQUdfVFJJR0dFUhAQEgcKA1RBRxAREgsKB0NPREVSRUYQEiIECA0QDSLcKQoEVHlwZRILCgdVTktOT1dOEAASEwoPRkVBVFVSRV9DUkVBVEVEEAESEwoPRkVBVFVSRV9SRU5BTUVEEAISEwoPRkVBVFVSRV9FTkFCTEVEEAMSFAoQRkVBVFVSRV9ESVNBQkxFRBAEEhMKD0ZFQVRVUkVfREVMRVRFRBAFEh8KG0ZFQVRVUkVfREVTQ1JJUFRJT05fQ0hBTkdFRBAIEhsKF0ZFQVRVUkVfVkFSSUFUSU9OX0FEREVEEAkSHQoZRkVBVFVSRV9WQVJJQVRJT05fUkVNT1ZFRBAKEiEKHUZFQVRVUkVfT0ZGX1ZBUklBVElPTl9DSEFOR0VEEAsSGwoXVkFSSUFUSU9OX1ZBTFVFX0NIQU5HRUQQDBIaChZWQVJJQVRJT05fTkFNRV9DSEFOR0VEEA0SIQodVkFSSUFUSU9OX0RFU0NSSVBUSU9OX0NIQU5HRUQQDhIYChRWQVJJQVRJT05fVVNFUl9BRERFRBAPEhoKFlZBUklBVElPTl9VU0VSX1JFTU9WRUQQEBIWChJGRUFUVVJFX1JVTEVfQURERUQQERIhCh1GRUFUVVJFX1JVTEVfU1RSQVRFR1lfQ0hBTkdFRBASEhgKFEZFQVRVUkVfUlVMRV9ERUxFVEVEEBMSFQoRUlVMRV9DTEFVU0VfQURERUQQFBIXChNSVUxFX0NMQVVTRV9ERUxFVEVEEBUSHwobUlVMRV9GSVhFRF9TVFJBVEVHWV9DSEFOR0VEEBYSIQodUlVMRV9ST0xMT1VUX1NUUkFURUdZX0NIQU5HRUQQFxIcChhDTEFVU0VfQVRUUklCVVRFX0NIQU5HRUQQGBIbChdDTEFVU0VfT1BFUkFUT1JfQ0hBTkdFRBAZEhYKEkNMQVVTRV9WQUxVRV9BRERFRBAaEhgKFENMQVVTRV9WQUxVRV9SRU1PVkVEEBsSJAogRkVBVFVSRV9ERUZBVUxUX1NUUkFURUdZX0NIQU5HRUQQHBIVChFGRUFUVVJFX1RBR19BRERFRBAdEhcKE0ZFQVRVUkVfVEFHX1JFTU9WRUQQHhIfChtGRUFUVVJFX1ZFUlNJT05fSU5DUkVNRU5URUQQHxIUChBGRUFUVVJFX0FSQ0hJVkVEECASEgoORkVBVFVSRV9DTE9ORUQQIRIWChJGRUFUVVJFX1VOQVJDSElWRUQQIxIXChNTQU1QTElOR19TRUVEX1JFU0VUECISFgoSUFJFUkVRVUlTSVRFX0FEREVEECQSGAoUUFJFUkVRVUlTSVRFX1JFTU9WRUQQJRIiCh5QUkVSRVFVSVNJVEVfVkFSSUFUSU9OX0NIQU5HRUQQJhIfChtGRUFUVVJFX1JVTEVTX09SREVSX0NIQU5HRUQQJxITCg9GRUFUVVJFX1VQREFURUQQKBIQCgxHT0FMX0NSRUFURUQQZBIQCgxHT0FMX1JFTkFNRUQQZRIcChhHT0FMX0RFU0NSSVBUSU9OX0NIQU5HRUQQZhIQCgxHT0FMX0RFTEVURUQQZxIRCg1HT0FMX0FSQ0hJVkVEEGgSEAoMR09BTF9VUERBVEVEEGkSFwoSRVhQRVJJTUVOVF9DUkVBVEVEEMgBEhcKEkVYUEVSSU1FTlRfU1RPUFBFRBDJARIgChtFWFBFUklNRU5UX1NUQVJUX0FUX0NIQU5HRUQQygESHwoaRVhQRVJJTUVOVF9TVE9QX0FUX0NIQU5HRUQQywESFwoSRVhQRVJJTUVOVF9ERUxFVEVEEMwBEh4KGUVYUEVSSU1FTlRfUEVSSU9EX0NIQU5HRUQQzQESHAoXRVhQRVJJTUVOVF9OQU1FX0NIQU5HRUQQzgESIwoeRVhQRVJJTUVOVF9ERVNDUklQVElPTl9DSEFOR0VEEM8BEhcKEkVYUEVSSU1FTlRfU1RBUlRFRBDQARIYChNFWFBFUklNRU5UX0ZJTklTSEVEENEBEhgKE0VYUEVSSU1FTlRfQVJDSElWRUQQ0gESGAoPQUNDT1VOVF9DUkVBVEVEEKwCGgIIARIdChRBQ0NPVU5UX1JPTEVfQ0hBTkdFRBCtAhoCCAESGAoPQUNDT1VOVF9FTkFCTEVEEK4CGgIIARIZChBBQ0NPVU5UX0RJU0FCTEVEEK8CGgIIARIYCg9BQ0NPVU5UX0RFTEVURUQQsAIaAggBEhcKEkFDQ09VTlRfVjJfQ1JFQVRFRBCxAhIcChdBQ0NPVU5UX1YyX05BTUVfQ0hBTkdFRBCyAhIoCiNBQ0NPVU5UX1YyX0FWQVRBUl9JTUFHRV9VUkxfQ0hBTkdFRBCzAhIpCiRBQ0NPVU5UX1YyX09SR0FOSVpBVElPTl9ST0xFX0NIQU5HRUQQtAISKQokQUNDT1VOVF9WMl9FTlZJUk9OTUVOVF9ST0xFU19DSEFOR0VEELUCEhcKEkFDQ09VTlRfVjJfRU5BQkxFRBC2AhIYChNBQ0NPVU5UX1YyX0RJU0FCTEVEELcCEhcKEkFDQ09VTlRfVjJfREVMRVRFRBC4AhIlCiBBQ0NPVU5UX1YyX0NSRUFURURfU0VBUkNIX0ZJTFRFUhC5AhIqCiVBQ0NPVU5UX1YyX1NFQVJDSF9GSUxURVJfTkFORV9DSEFOR0VEELoCEisKJkFDQ09VTlRfVjJfU0VBUkNIX0ZJTFRFUl9RVUVSWV9DSEFOR0VEELsCEi0KKEFDQ09VTlRfVjJfU0VBUkNIX0ZJTFRFUl9ERUZBVUxUX0NIQU5HRUQQvAISJQogQUNDT1VOVF9WMl9TRUFSQ0hfRklMVEVSX0RFTEVURUQQvQISIgodQUNDT1VOVF9WMl9GSVJTVF9OQU1FX0NIQU5HRUQQvgISIQocQUNDT1VOVF9WMl9MQVNUX05BTUVfQ0hBTkdFRBC/AhIgChtBQ0NPVU5UX1YyX0xBTkdVQUdFX0NIQU5HRUQQwAISFwoSQUNDT1VOVF9WMl9VUERBVEVEEMECEhwKF0FDQ09VTlRfVjJfVEFHU19DSEFOR0VEEMICEhMKDkFQSUtFWV9DUkVBVEVEEJADEhgKE0FQSUtFWV9OQU1FX0NIQU5HRUQQkQMSEwoOQVBJS0VZX0VOQUJMRUQQkgMSFAoPQVBJS0VZX0RJU0FCTEVEEJMDEhMKDkFQSUtFWV9DSEFOR0VEEJQDEhQKD1NFR01FTlRfQ1JFQVRFRBD0AxIUCg9TRUdNRU5UX0RFTEVURUQQ9QMSGQoUU0VHTUVOVF9OQU1FX0NIQU5HRUQQ9gMSIAobU0VHTUVOVF9ERVNDUklQVElPTl9DSEFOR0VEEPcDEhcKElNFR01FTlRfUlVMRV9BRERFRBD4AxIZChRTRUdNRU5UX1JVTEVfREVMRVRFRBD5AxIeChlTRUdNRU5UX1JVTEVfQ0xBVVNFX0FEREVEEPoDEiAKG1NFR01FTlRfUlVMRV9DTEFVU0VfREVMRVRFRBD7AxIlCiBTRUdNRU5UX0NMQVVTRV9BVFRSSUJVVEVfQ0hBTkdFRBD8AxIkCh9TRUdNRU5UX0NMQVVTRV9PUEVSQVRPUl9DSEFOR0VEEP0DEh8KGlNFR01FTlRfQ0xBVVNFX1ZBTFVFX0FEREVEEP4DEiEKHFNFR01FTlRfQ0xBVVNFX1ZBTFVFX1JFTU9WRUQQ/wMSFwoSU0VHTUVOVF9VU0VSX0FEREVEEIAEEhkKFFNFR01FTlRfVVNFUl9ERUxFVEVEEIEEEh4KGVNFR01FTlRfQlVMS19VUExPQURfVVNFUlMQggQSLQooU0VHTUVOVF9CVUxLX1VQTE9BRF9VU0VSU19TVEFUVVNfQ0hBTkdFRBCDBBIUCg9TRUdNRU5UX1VQREFURUQQhAQSGAoTRU5WSVJPTk1FTlRfQ1JFQVRFRBDYBBIYChNFTlZJUk9OTUVOVF9SRU5BTUVEENkEEiQKH0VOVklST05NRU5UX0RFU0NSSVBUSU9OX0NIQU5HRUQQ2gQSGAoTRU5WSVJPTk1FTlRfREVMRVRFRBDbBBIbChZFTlZJUk9OTUVOVF9WMl9DUkVBVEVEENwEEhsKFkVOVklST05NRU5UX1YyX1JFTkFNRUQQ3QQSJwoiRU5WSVJPTk1FTlRfVjJfREVTQ1JJUFRJT05fQ0hBTkdFRBDeBBIcChdFTlZJUk9OTUVOVF9WMl9BUkNISVZFRBDfBBIeChlFTlZJUk9OTUVOVF9WMl9VTkFSQ0hJVkVEEOAEEisKJkVOVklST05NRU5UX1YyX1JFUVVJUkVfQ09NTUVOVF9DSEFOR0VEEOEEEh4KFUFETUlOX0FDQ09VTlRfQ1JFQVRFRBC8BRoCCAESHgoVQURNSU5fQUNDT1VOVF9FTkFCTEVEEL4FGgIIARIfChZBRE1JTl9BQ0NPVU5UX0RJU0FCTEVEEL8FGgIIARIZChRBVVRPT1BTX1JVTEVfQ1JFQVRFRBCgBhIZChRBVVRPT1BTX1JVTEVfREVMRVRFRBChBhIiCh1BVVRPT1BTX1JVTEVfT1BTX1RZUEVfQ0hBTkdFRBCiBhIgChtBVVRPT1BTX1JVTEVfQ0xBVVNFX0RFTEVURUQQowYSKgohQVVUT09QU19SVUxFX1RSSUdHRVJFRF9BVF9DSEFOR0VEEKQGGgIIARIgChtPUFNfRVZFTlRfUkFURV9DTEFVU0VfQURERUQQpQYSIgodT1BTX0VWRU5UX1JBVEVfQ0xBVVNFX0NIQU5HRUQQpgYSGgoVREFURVRJTUVfQ0xBVVNFX0FEREVEEKcGEhwKF0RBVEVUSU1FX0NMQVVTRV9DSEFOR0VEEKgGEhkKFEFVVE9PUFNfUlVMRV9TVE9QUEVEEKkGEiQKH0FVVE9PUFNfUlVMRV9PUFNfU1RBVFVTX0NIQU5HRUQQqgYSEQoMUFVTSF9DUkVBVEVEEIQHEhEKDFBVU0hfREVMRVRFRBCFBxIUCg9QVVNIX1RBR1NfQURERUQQhgcSFgoRUFVTSF9UQUdTX0RFTEVURUQQhwcSEQoMUFVTSF9SRU5BTUVEEIgHEhEKDFBVU0hfVVBEQVRFRBCJBxIZChRTVUJTQ1JJUFRJT05fQ1JFQVRFRBDoBxIZChRTVUJTQ1JJUFRJT05fREVMRVRFRBDpBxIZChRTVUJTQ1JJUFRJT05fRU5BQkxFRBDqBxIaChVTVUJTQ1JJUFRJT05fRElTQUJMRUQQ6wcSIwoeU1VCU0NSSVBUSU9OX1NPVVJDRV9UWVBFX0FEREVEEOwHEiUKIFNVQlNDUklQVElPTl9TT1VSQ0VfVFlQRV9ERUxFVEVEEO0HEhkKFFNVQlNDUklQVElPTl9SRU5BTUVEEO4HEhkKFFNVQlNDUklQVElPTl9VUERBVEVEEO8HEisKJlNVQlNDUklQVElPTl9GRUFUVVJFX0ZMQUdfVEFHU19VUERBVEVEEPAHEh8KGkFETUlOX1NVQlNDUklQVElPTl9DUkVBVEVEEMwIEh8KGkFETUlOX1NVQlNDUklQVElPTl9ERUxFVEVEEM0IEh8KGkFETUlOX1NVQlNDUklQVElPTl9FTkFCTEVEEM4IEiAKG0FETUlOX1NVQlNDUklQVElPTl9ESVNBQkxFRBDPCBIpCiRBRE1JTl9TVUJTQ1JJUFRJT05fU09VUkNFX1RZUEVfQURERUQQ0AgSKwomQURNSU5fU1VCU0NSSVBUSU9OX1NPVVJDRV9UWVBFX0RFTEVURUQQ0QgSHwoaQURNSU5fU1VCU0NSSVBUSU9OX1JFTkFNRUQQ0ggSFAoPUFJPSkVDVF9DUkVBVEVEELAJEiAKG1BST0pFQ1RfREVTQ1JJUFRJT05fQ0hBTkdFRBCxCRIUCg9QUk9KRUNUX0VOQUJMRUQQsgkSFQoQUFJPSkVDVF9ESVNBQkxFRBCzCRIaChVQUk9KRUNUX1RSSUFMX0NSRUFURUQQtAkSHAoXUFJPSkVDVF9UUklBTF9DT05WRVJURUQQtQkSFAoPUFJPSkVDVF9SRU5BTUVEELYJEiAKG1BST0dSRVNTSVZFX1JPTExPVVRfQ1JFQVRFRBD4ChIgChtQUk9HUkVTU0lWRV9ST0xMT1VUX0RFTEVURUQQ+QoSNgoxUFJPR1JFU1NJVkVfUk9MTE9VVF9TQ0hFRFVMRV9UUklHR0VSRURfQVRfQ0hBTkdFRBD6ChIgChtQUk9HUkVTU0lWRV9ST0xMT1VUX1NUT1BQRUQQ+woSGQoUT1JHQU5JWkFUSU9OX0NSRUFURUQQ3AsSHgoZT1JHQU5JWkFUSU9OX05BTUVfQ0hBTkdFRBDdCxIlCiBPUkdBTklaQVRJT05fREVTQ1JJUFRJT05fQ0hBTkdFRBDeCxIZChRPUkdBTklaQVRJT05fRU5BQkxFRBDfCxIaChVPUkdBTklaQVRJT05fRElTQUJMRUQQ4AsSGgoVT1JHQU5JWkFUSU9OX0FSQ0hJVkVEEOELEhwKF09SR0FOSVpBVElPTl9VTkFSQ0hJVkVEEOILEiEKHE9SR0FOSVpBVElPTl9UUklBTF9DT05WRVJURUQQ4wsSJQogT1JHQU5JWkFUSU9OX09XTkVSX0VNQUlMX0NIQU5HRUQQ5AsSGQoURkxBR19UUklHR0VSX0NSRUFURUQQwQwSFwoSRkxBR19UUklHR0VSX1JFU0VUEMIMEiUKIEZMQUdfVFJJR0dFUl9ERVNDUklQVElPTl9DSEFOR0VEEMMMEhoKFUZMQUdfVFJJR0dFUl9ESVNBQkxFRBDEDBIZChRGTEFHX1RSSUdHRVJfRU5BQkxFRBDFDBIZChRGTEFHX1RSSUdHRVJfREVMRVRFRBDGDBIfChpGTEFHX1RSSUdHRVJfVVNBR0VfVVBEQVRFRBDHDBIQCgtUQUdfQ1JFQVRFRBClDRIQCgtUQUdfREVMRVRFRBCmDRIbChZDT0RFX1JFRkVSRU5DRV9DUkVBVEVEEIgOEhsKFkNPREVfUkVGRVJFTkNFX1VQREFURUQQiQ4SGwoWQ09ERV9SRUZFUkVOQ0VfREVMRVRFRBCKDiIGCJQKEJQKIgYIlQoQlQoiBgiWChCWCiIGCJcKEJcKIgYImAoQmAoiBgiZChCZCkoECAgQCSKMAgoGRWRpdG9yEhQKBWVtYWlsGAEgASgJUgVlbWFpbBIZCghpc19hZG1pbhgDIAEoCFIHaXNBZG1pbhISCgRuYW1lGAQgASgJUgRuYW1lEloKEXB1YmxpY19hcGlfZWRpdG9yGAUgASgLMi4uYnVja2V0ZWVyLmV2ZW50LmRvbWFpbi5FZGl0b3IuUHVibGljQVBJRWRpdG9yUg9wdWJsaWNBcGlFZGl0b3IaWwoPUHVibGljQVBJRWRpdG9yEhQKBXRva2VuGAEgASgJUgV0b2tlbhIeCgptYWludGFpbmVyGAIgASgJUgptYWludGFpbmVyEhIKBG5hbWUYAyABKAlSBG5hbWVKBAgCEAMiRAoHT3B0aW9ucxIYCgdjb21tZW50GAEgASgJUgdjb21tZW50Eh8KC25ld192ZXJzaW9uGAIgASgFUgpuZXdWZXJzaW9uIvMEChNGZWF0dXJlQ3JlYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhISCgR1c2VyGAQgASgJUgR1c2VyEjwKCnZhcmlhdGlvbnMYBSADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSWAoaZGVmYXVsdF9vbl92YXJpYXRpb25faW5kZXgYBiABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIXZGVmYXVsdE9uVmFyaWF0aW9uSW5kZXgSWgobZGVmYXVsdF9vZmZfdmFyaWF0aW9uX2luZGV4GAcgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVSGGRlZmF1bHRPZmZWYXJpYXRpb25JbmRleBJPCg52YXJpYXRpb25fdHlwZRgIIAEoDjIoLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmUuVmFyaWF0aW9uVHlwZVINdmFyaWF0aW9uVHlwZRISCgR0YWdzGAkgAygJUgR0YWdzEkUKDXByZXJlcXVpc2l0ZXMYCiADKAsyHy5idWNrZXRlZXIuZmVhdHVyZS5QcmVyZXF1aXNpdGVSDXByZXJlcXVpc2l0ZXMSLQoFcnVsZXMYCyADKAsyFy5idWNrZXRlZXIuZmVhdHVyZS5SdWxlUgVydWxlcxIzCgd0YXJnZXRzGAwgAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuVGFyZ2V0Ugd0YXJnZXRzImYKE0ZlYXR1cmVVcGRhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhYKBGRhdGEYAiABKAlCAhgBUgRkYXRhEicKDXByZXZpb3VzX2RhdGEYAyABKAlCAhgBUgxwcmV2aW91c0RhdGEiJQoTRmVhdHVyZUVuYWJsZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiJgoURmVhdHVyZURpc2FibGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIiYKFEZlYXR1cmVBcmNoaXZlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCIoChZGZWF0dXJlVW5hcmNoaXZlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCIlChNGZWF0dXJlRGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCItChtFdmFsdWF0aW9uRGVsYXlhYmxlU2V0RXZlbnQSDgoCaWQYASABKAlSAmlkIi8KHUV2YWx1YXRpb25VbmRlbGF5YWJsZVNldEV2ZW50Eg4KAmlkGAEgASgJUgJpZCI5ChNGZWF0dXJlUmVuYW1lZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lIlIKHkZlYXR1cmVEZXNjcmlwdGlvbkNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uIlYKH0ZlYXR1cmVPZmZWYXJpYXRpb25DaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEiMKDW9mZl92YXJpYXRpb24YAiABKAlSDG9mZlZhcmlhdGlvbiJoChpGZWF0dXJlVmFyaWF0aW9uQWRkZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSOgoJdmFyaWF0aW9uGAIgASgLMhwuYnVja2V0ZWVyLmZlYXR1cmUuVmFyaWF0aW9uUgl2YXJpYXRpb24iUQocRmVhdHVyZVZhcmlhdGlvblJlbW92ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSIQoMdmFyaWF0aW9uX2lkGAIgASgJUgt2YXJpYXRpb25JZCJhChpWYXJpYXRpb25WYWx1ZUNoYW5nZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSDgoCaWQYAiABKAlSAmlkEhQKBXZhbHVlGAMgASgJUgV2YWx1ZSJeChlWYXJpYXRpb25OYW1lQ2hhbmdlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIOCgJpZBgCIAEoCVICaWQSEgoEbmFtZRgDIAEoCVIEbmFtZSJzCiBWYXJpYXRpb25EZXNjcmlwdGlvbkNoYW5nZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSDgoCaWQYAiABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbiJcChdWYXJpYXRpb25Vc2VyQWRkZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSDgoCaWQYAiABKAlSAmlkEhIKBHVzZXIYAyABKAlSBHVzZXIiXgoZVmFyaWF0aW9uVXNlclJlbW92ZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSDgoCaWQYAiABKAlSAmlkEhIKBHVzZXIYAyABKAlSBHVzZXIiVAoVRmVhdHVyZVJ1bGVBZGRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIrCgRydWxlGAIgASgLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIEcnVsZSKRAQoeRmVhdHVyZUNoYW5nZVJ1bGVTdHJhdGVneUV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSNwoIc3RyYXRlZ3kYAyABKAsyGy5idWNrZXRlZXIuZmVhdHVyZS5TdHJhdGVneVIIc3RyYXRlZ3kiWQodRmVhdHVyZVJ1bGVzT3JkZXJDaGFuZ2VkRXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhkKCHJ1bGVfaWRzGAIgAygJUgdydWxlSWRzIkIKF0ZlYXR1cmVSdWxlRGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQimAEKIEZlYXR1cmVGaXhlZFN0cmF0ZWd5Q2hhbmdlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSPAoIc3RyYXRlZ3kYAyABKAsyIC5idWNrZXRlZXIuZmVhdHVyZS5GaXhlZFN0cmF0ZWd5UghzdHJhdGVneSKcAQoiRmVhdHVyZVJvbGxvdXRTdHJhdGVneUNoYW5nZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEj4KCHN0cmF0ZWd5GAMgASgLMiIuYnVja2V0ZWVyLmZlYXR1cmUuUm9sbG91dFN0cmF0ZWd5UghzdHJhdGVneSKBAQoUUnVsZUNsYXVzZUFkZGVkRXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIxCgZjbGF1c2UYAyABKAsyGS5idWNrZXRlZXIuZmVhdHVyZS5DbGF1c2VSBmNsYXVzZSJgChZSdWxlQ2xhdXNlRGVsZXRlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSDgoCaWQYAyABKAlSAmlkIoMBChtDbGF1c2VBdHRyaWJ1dGVDaGFuZ2VkRXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIOCgJpZBgDIAEoCVICaWQSHAoJYXR0cmlidXRlGAQgASgJUglhdHRyaWJ1dGUipAEKGkNsYXVzZU9wZXJhdG9yQ2hhbmdlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSDgoCaWQYAyABKAlSAmlkEj4KCG9wZXJhdG9yGAQgASgOMiIuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlLk9wZXJhdG9yUghvcGVyYXRvciJ1ChVDbGF1c2VWYWx1ZUFkZGVkRXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIOCgJpZBgDIAEoCVICaWQSFAoFdmFsdWUYBCABKAlSBXZhbHVlIncKF0NsYXVzZVZhbHVlUmVtb3ZlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSDgoCaWQYAyABKAlSAmlkEhQKBXZhbHVlGAQgASgJUgV2YWx1ZSJtCiJGZWF0dXJlRGVmYXVsdFN0cmF0ZWd5Q2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBI3CghzdHJhdGVneRgCIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5UghzdHJhdGVneSI4ChRGZWF0dXJlVGFnQWRkZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEAoDdGFnGAIgASgJUgN0YWciOgoWRmVhdHVyZVRhZ1JlbW92ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEAoDdGFnGAIgASgJUgN0YWciSgoeRmVhdHVyZVZlcnNpb25JbmNyZW1lbnRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIYCgd2ZXJzaW9uGAIgASgFUgd2ZXJzaW9uIrUEChJGZWF0dXJlQ2xvbmVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEjwKCnZhcmlhdGlvbnMYBCADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSMwoHdGFyZ2V0cxgFIAMoCzIZLmJ1Y2tldGVlci5mZWF0dXJlLlRhcmdldFIHdGFyZ2V0cxItCgVydWxlcxgGIAMoCzIXLmJ1Y2tldGVlci5mZWF0dXJlLlJ1bGVSBXJ1bGVzEkYKEGRlZmF1bHRfc3RyYXRlZ3kYByABKAsyGy5idWNrZXRlZXIuZmVhdHVyZS5TdHJhdGVneVIPZGVmYXVsdFN0cmF0ZWd5EiMKDW9mZl92YXJpYXRpb24YCCABKAlSDG9mZlZhcmlhdGlvbhISCgR0YWdzGAkgAygJUgR0YWdzEh4KCm1haW50YWluZXIYCiABKAlSCm1haW50YWluZXISTwoOdmFyaWF0aW9uX3R5cGUYCyABKA4yKC5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlLlZhcmlhdGlvblR5cGVSDXZhcmlhdGlvblR5cGUSRQoNcHJlcmVxdWlzaXRlcxgMIAMoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVINcHJlcmVxdWlzaXRlcyJECh1GZWF0dXJlU2FtcGxpbmdTZWVkUmVzZXRFdmVudBIjCg1zYW1wbGluZ19zZWVkGAEgASgJUgxzYW1wbGluZ1NlZWQihAIKEEdvYWxDcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEhgKB2RlbGV0ZWQYBCABKAhSB2RlbGV0ZWQSHQoKY3JlYXRlZF9hdBgFIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYBiABKANSCXVwZGF0ZWRBdBJSCg9jb25uZWN0aW9uX3R5cGUYByABKA4yKS5idWNrZXRlZXIuZXhwZXJpbWVudC5Hb2FsLkNvbm5lY3Rpb25UeXBlUg5jb25uZWN0aW9uVHlwZSKUAQoQR29hbFVwZGF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSMAoEbmFtZRgCIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIEbmFtZRI+CgtkZXNjcmlwdGlvbhgDIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVILZGVzY3JpcHRpb24iNgoQR29hbFJlbmFtZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZSJPChtHb2FsRGVzY3JpcHRpb25DaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbiIjChFHb2FsQXJjaGl2ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiIgoQR29hbERlbGV0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQi8wMKFkV4cGVyaW1lbnRDcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBInCg9mZWF0dXJlX3ZlcnNpb24YAyABKAVSDmZlYXR1cmVWZXJzaW9uEjwKCnZhcmlhdGlvbnMYBCADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSGwoHZ29hbF9pZBgFIAEoCUICGAFSBmdvYWxJZBIZCghzdGFydF9hdBgGIAEoA1IHc3RhcnRBdBIXCgdzdG9wX2F0GAcgASgDUgZzdG9wQXQSGAoHc3RvcHBlZBgIIAEoCFIHc3RvcHBlZBIdCgpzdG9wcGVkX2F0GAkgASgDUglzdG9wcGVkQXQSHQoKY3JlYXRlZF9hdBgKIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCyABKANSCXVwZGF0ZWRBdBIZCghnb2FsX2lkcxgMIAMoCVIHZ29hbElkcxISCgRuYW1lGA0gASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGA4gASgJUgtkZXNjcmlwdGlvbhIqChFiYXNlX3ZhcmlhdGlvbl9pZBgPIAEoCVIPYmFzZVZhcmlhdGlvbklkIkcKFkV4cGVyaW1lbnRTdG9wcGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEh0KCnN0b3BwZWRfYXQYAiABKANSCXN0b3BwZWRBdCIpChdFeHBlcmltZW50QXJjaGl2ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiKAoWRXhwZXJpbWVudERlbGV0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiSgodRXhwZXJpbWVudFN0YXJ0QXRDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhkKCHN0YXJ0X2F0GAIgASgDUgdzdGFydEF0IkcKHEV4cGVyaW1lbnRTdG9wQXRDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhcKB3N0b3BfYXQYAiABKANSBnN0b3BBdCJiChxFeHBlcmltZW50UGVyaW9kQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIZCghzdGFydF9hdBgCIAEoA1IHc3RhcnRBdBIXCgdzdG9wX2F0GAMgASgDUgZzdG9wQXQiQAoaRXhwZXJpbWVudE5hbWVDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiVQohRXhwZXJpbWVudERlc2NyaXB0aW9uQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24iGAoWRXhwZXJpbWVudFN0YXJ0ZWRFdmVudCIZChdFeHBlcmltZW50RmluaXNoZWRFdmVudCKSBAoVQWNjb3VudFYyQ3JlYXRlZEV2ZW50EhQKBWVtYWlsGAEgASgJUgVlbWFpbBISCgRuYW1lGAIgASgJUgRuYW1lEigKEGF2YXRhcl9pbWFnZV91cmwYAyABKAlSDmF2YXRhckltYWdlVXJsEicKD29yZ2FuaXphdGlvbl9pZBgEIAEoCVIOb3JnYW5pemF0aW9uSWQSWwoRb3JnYW5pemF0aW9uX3JvbGUYBSABKA4yLi5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5Pcmdhbml6YXRpb25SEG9yZ2FuaXphdGlvblJvbGUSWQoRZW52aXJvbm1lbnRfcm9sZXMYBiADKAsyLC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuRW52aXJvbm1lbnRSb2xlUhBlbnZpcm9ubWVudFJvbGVzEhoKCGRpc2FibGVkGAcgASgIUghkaXNhYmxlZBIdCgpjcmVhdGVkX2F0GAggASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgJIAEoA1IJdXBkYXRlZEF0Eh0KCmZpcnN0X25hbWUYCiABKAlSCWZpcnN0TmFtZRIbCglsYXN0X25hbWUYCyABKAlSCGxhc3ROYW1lEhoKCGxhbmd1YWdlGAwgASgJUghsYW5ndWFnZRISCgR0YWdzGA0gAygJUgR0YWdzIlYKFUFjY291bnRWMlVwZGF0ZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSJwoPb3JnYW5pemF0aW9uX2lkGAIgASgJUg5vcmdhbml6YXRpb25JZCJFChlBY2NvdW50VjJOYW1lQ2hhbmdlZEV2ZW50EhQKBWVtYWlsGAEgASgJUgVlbWFpbBISCgRuYW1lGAIgASgJUgRuYW1lImUKI0FjY291bnRWMkF2YXRhckltYWdlVVJMQ2hhbmdlZEV2ZW50EhQKBWVtYWlsGAEgASgJUgVlbWFpbBIoChBhdmF0YXJfaW1hZ2VfdXJsGAIgASgJUg5hdmF0YXJJbWFnZVVybCJFChlBY2NvdW50VjJUYWdzQ2hhbmdlZEV2ZW50EhQKBWVtYWlsGAEgASgJUgVlbWFpbBISCgR0YWdzGAIgAygJUgR0YWdzIpoBCiVBY2NvdW50VjJPcmdhbml6YXRpb25Sb2xlQ2hhbmdlZEV2ZW50EhQKBWVtYWlsGAEgASgJUgVlbWFpbBJbChFvcmdhbml6YXRpb25fcm9sZRgCIAEoDjIuLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5Sb2xlLk9yZ2FuaXphdGlvblIQb3JnYW5pemF0aW9uUm9sZSKYAQolQWNjb3VudFYyRW52aXJvbm1lbnRSb2xlc0NoYW5nZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSWQoRZW52aXJvbm1lbnRfcm9sZXMYAiADKAsyLC5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuRW52aXJvbm1lbnRSb2xlUhBlbnZpcm9ubWVudFJvbGVzIi0KFUFjY291bnRWMkVuYWJsZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwiLgoWQWNjb3VudFYyRGlzYWJsZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwiLQoVQWNjb3VudFYyRGVsZXRlZEV2ZW50EhQKBWVtYWlsGAEgASgJUgVlbWFpbCLXAQoYU2VhcmNoRmlsdGVyQ3JlYXRlZEV2ZW50EhIKBE5hbWUYASABKAlSBE5hbWUSFAoFUXVlcnkYAiABKAlSBVF1ZXJ5EkMKClRhcmdldFR5cGUYAyABKA4yIy5idWNrZXRlZXIuYWNjb3VudC5GaWx0ZXJUYXJnZXRUeXBlUgpUYXJnZXRUeXBlEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkEiUKDmRlZmF1bHRfZmlsdGVyGAUgASgIUg1kZWZhdWx0RmlsdGVyIkIKHFNlYXJjaEZpbHRlck5hbWVDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBE5hbWUYAiABKAlSBE5hbWUiRQodU2VhcmNoRmlsdGVyUXVlcnlDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhQKBVF1ZXJ5GAIgASgJUgVRdWVyeSJYCh9TZWFyY2hGaWx0ZXJEZWZhdWx0Q2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIlCg5kZWZhdWx0X2ZpbHRlchgCIAEoCFINZGVmYXVsdEZpbHRlciIqChhTZWFyY2hGaWx0ZXJEZWxldGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIv8BChJBUElLZXlDcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSMgoEcm9sZRgDIAEoDjIeLmJ1Y2tldGVlci5hY2NvdW50LkFQSUtleS5Sb2xlUgRyb2xlEhoKCGRpc2FibGVkGAQgASgIUghkaXNhYmxlZBIdCgpjcmVhdGVkX2F0GAUgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgGIAEoA1IJdXBkYXRlZEF0Eh4KCm1haW50YWluZXIYByABKAlSCm1haW50YWluZXISFwoHYXBpX2tleRgIIAEoCVIGYXBpS2V5IiQKEkFQSUtleUNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiPAoWQVBJS2V5TmFtZUNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZSIkChJBUElLZXlFbmFibGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIiUKE0FQSUtleURpc2FibGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIlsKE1NlZ21lbnRDcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uIiUKE1NlZ21lbnREZWxldGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIpcBChNTZWdtZW50VXBkYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIwCgRuYW1lGAIgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgRuYW1lEj4KC2Rlc2NyaXB0aW9uGAMgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgtkZXNjcmlwdGlvbiI9ChdTZWdtZW50TmFtZUNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZSJSCh5TZWdtZW50RGVzY3JpcHRpb25DaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbiJUChVTZWdtZW50UnVsZUFkZGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEisKBHJ1bGUYAiABKAsyFy5idWNrZXRlZXIuZmVhdHVyZS5SdWxlUgRydWxlIkIKF1NlZ21lbnRSdWxlRGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQiiAEKG1NlZ21lbnRSdWxlQ2xhdXNlQWRkZWRFdmVudBIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEjEKBmNsYXVzZRgDIAEoCzIZLmJ1Y2tldGVlci5mZWF0dXJlLkNsYXVzZVIGY2xhdXNlInQKHVNlZ21lbnRSdWxlQ2xhdXNlRGVsZXRlZEV2ZW50Eh0KCnNlZ21lbnRfaWQYASABKAlSCXNlZ21lbnRJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSGwoJY2xhdXNlX2lkGAMgASgJUghjbGF1c2VJZCKXAQoiU2VnbWVudENsYXVzZUF0dHJpYnV0ZUNoYW5nZWRFdmVudBIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEhsKCWNsYXVzZV9pZBgDIAEoCVIIY2xhdXNlSWQSHAoJYXR0cmlidXRlGAQgASgJUglhdHRyaWJ1dGUiuAEKIVNlZ21lbnRDbGF1c2VPcGVyYXRvckNoYW5nZWRFdmVudBIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEhsKCWNsYXVzZV9pZBgDIAEoCVIIY2xhdXNlSWQSPgoIb3BlcmF0b3IYBCABKA4yIi5idWNrZXRlZXIuZmVhdHVyZS5DbGF1c2UuT3BlcmF0b3JSCG9wZXJhdG9yIokBChxTZWdtZW50Q2xhdXNlVmFsdWVBZGRlZEV2ZW50Eh0KCnNlZ21lbnRfaWQYASABKAlSCXNlZ21lbnRJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSGwoJY2xhdXNlX2lkGAMgASgJUghjbGF1c2VJZBIUCgV2YWx1ZRgEIAEoCVIFdmFsdWUiiwEKHlNlZ21lbnRDbGF1c2VWYWx1ZVJlbW92ZWRFdmVudBIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEhsKCWNsYXVzZV9pZBgDIAEoCVIIY2xhdXNlSWQSFAoFdmFsdWUYBCABKAlSBXZhbHVlIo0BChVTZWdtZW50VXNlckFkZGVkRXZlbnQSHQoKc2VnbWVudF9pZBgBIAEoCVIJc2VnbWVudElkEhkKCHVzZXJfaWRzGAIgAygJUgd1c2VySWRzEjoKBXN0YXRlGAMgASgOMiQuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXIuU3RhdGVSBXN0YXRlIo8BChdTZWdtZW50VXNlckRlbGV0ZWRFdmVudBIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSGQoIdXNlcl9pZHMYAiADKAlSB3VzZXJJZHMSOgoFc3RhdGUYAyABKA4yJC5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlci5TdGF0ZVIFc3RhdGUiswEKG1NlZ21lbnRCdWxrVXBsb2FkVXNlcnNFdmVudBIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSOQoGc3RhdHVzGAIgASgOMiEuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudC5TdGF0dXNSBnN0YXR1cxI6CgVzdGF0ZRgDIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZSLWAQooU2VnbWVudEJ1bGtVcGxvYWRVc2Vyc1N0YXR1c0NoYW5nZWRFdmVudBIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSOQoGc3RhdHVzGAIgASgOMiEuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudC5TdGF0dXNSBnN0YXR1cxI6CgVzdGF0ZRgDIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZRIUCgVjb3VudBgEIAEoA1IFY291bnQi9AEKF0Vudmlyb25tZW50Q3JlYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIcCgluYW1lc3BhY2UYAiABKAlSCW5hbWVzcGFjZRISCgRuYW1lGAMgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbhIYCgdkZWxldGVkGAUgASgIUgdkZWxldGVkEh0KCmNyZWF0ZWRfYXQYBiABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAcgASgDUgl1cGRhdGVkQXQSHQoKcHJvamVjdF9pZBgIIAEoCVIJcHJvamVjdElkIj0KF0Vudmlyb25tZW50UmVuYW1lZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lIlYKIkVudmlyb25tZW50RGVzY3JpcHRpb25DaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbiJHChdFbnZpcm9ubWVudERlbGV0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHAoJbmFtZXNwYWNlGAIgASgJUgluYW1lc3BhY2UingIKGUVudmlyb25tZW50VjJDcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSGQoIdXJsX2NvZGUYAyABKAlSB3VybENvZGUSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uEh0KCnByb2plY3RfaWQYBSABKAlSCXByb2plY3RJZBIaCghhcmNoaXZlZBgGIAEoCFIIYXJjaGl2ZWQSHQoKY3JlYXRlZF9hdBgHIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCCABKANSCXVwZGF0ZWRBdBInCg9yZXF1aXJlX2NvbW1lbnQYCSABKAhSDnJlcXVpcmVDb21tZW50IoABChlFbnZpcm9ubWVudFYyUmVuYW1lZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIdCgpwcm9qZWN0X2lkGAIgASgJUglwcm9qZWN0SWQSGQoIb2xkX25hbWUYAyABKAlSB29sZE5hbWUSGQoIbmV3X25hbWUYBCABKAlSB25ld05hbWUiuwEKJEVudmlyb25tZW50VjJEZXNjcmlwdGlvbkNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIdCgpwcm9qZWN0X2lkGAMgASgJUglwcm9qZWN0SWQSJwoPb2xkX2Rlc2NyaXB0aW9uGAQgASgJUg5vbGREZXNjcmlwdGlvbhInCg9uZXdfZGVzY3JpcHRpb24YBSABKAlSDm5ld0Rlc2NyaXB0aW9uIpUBCidFbnZpcm9ubWVudFYyUmVxdWlyZUNvbW1lbnRDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSHQoKcHJvamVjdF9pZBgDIAEoCVIJcHJvamVjdElkEicKD3JlcXVpcmVfY29tbWVudBgEIAEoCFIOcmVxdWlyZUNvbW1lbnQiXwoaRW52aXJvbm1lbnRWMkFyY2hpdmVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSHQoKcHJvamVjdF9pZBgDIAEoCVIJcHJvamVjdElkImEKHEVudmlyb25tZW50VjJVbmFyY2hpdmVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSHQoKcHJvamVjdF9pZBgDIAEoCVIJcHJvamVjdElkIqkCChdBdXRvT3BzUnVsZUNyZWF0ZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSNQoIb3BzX3R5cGUYAiABKA4yGi5idWNrZXRlZXIuYXV0b29wcy5PcHNUeXBlUgdvcHNUeXBlEjMKB2NsYXVzZXMYAyADKAsyGS5idWNrZXRlZXIuYXV0b29wcy5DbGF1c2VSB2NsYXVzZXMSHQoKY3JlYXRlZF9hdBgFIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYBiABKANSCXVwZGF0ZWRBdBI/CgpvcHNfc3RhdHVzGAcgASgOMiAuYnVja2V0ZWVyLmF1dG9vcHMuQXV0b09wc1N0YXR1c1IJb3BzU3RhdHVzSgQIBBAFIhkKF0F1dG9PcHNSdWxlU3RvcHBlZEV2ZW50IhkKF0F1dG9PcHNSdWxlRGVsZXRlZEV2ZW50IlcKHkF1dG9PcHNSdWxlT3BzVHlwZUNoYW5nZWRFdmVudBI1CghvcHNfdHlwZRgBIAEoDjIaLmJ1Y2tldGVlci5hdXRvb3BzLk9wc1R5cGVSB29wc1R5cGUiJAoiQXV0b09wc1J1bGVUcmlnZ2VyZWRBdENoYW5nZWRFdmVudCJjCiBBdXRvT3BzUnVsZU9wc1N0YXR1c0NoYW5nZWRFdmVudBI/CgpvcHNfc3RhdHVzGAEgASgOMiAuYnVja2V0ZWVyLmF1dG9vcHMuQXV0b09wc1N0YXR1c1IJb3BzU3RhdHVzIpUBChxPcHNFdmVudFJhdGVDbGF1c2VBZGRlZEV2ZW50EhsKCWNsYXVzZV9pZBgBIAEoCVIIY2xhdXNlSWQSWAoVb3BzX2V2ZW50X3JhdGVfY2xhdXNlGAIgASgLMiUuYnVja2V0ZWVyLmF1dG9vcHMuT3BzRXZlbnRSYXRlQ2xhdXNlUhJvcHNFdmVudFJhdGVDbGF1c2UilwEKHk9wc0V2ZW50UmF0ZUNsYXVzZUNoYW5nZWRFdmVudBIbCgljbGF1c2VfaWQYASABKAlSCGNsYXVzZUlkElgKFW9wc19ldmVudF9yYXRlX2NsYXVzZRgCIAEoCzIlLmJ1Y2tldGVlci5hdXRvb3BzLk9wc0V2ZW50UmF0ZUNsYXVzZVISb3BzRXZlbnRSYXRlQ2xhdXNlIjwKHUF1dG9PcHNSdWxlQ2xhdXNlRGVsZXRlZEV2ZW50EhsKCWNsYXVzZV9pZBgBIAEoCVIIY2xhdXNlSWQigwEKGERhdGV0aW1lQ2xhdXNlQWRkZWRFdmVudBIbCgljbGF1c2VfaWQYASABKAlSCGNsYXVzZUlkEkoKD2RhdGV0aW1lX2NsYXVzZRgCIAEoCzIhLmJ1Y2tldGVlci5hdXRvb3BzLkRhdGV0aW1lQ2xhdXNlUg5kYXRldGltZUNsYXVzZSKFAQoaRGF0ZXRpbWVDbGF1c2VDaGFuZ2VkRXZlbnQSGwoJY2xhdXNlX2lkGAEgASgJUghjbGF1c2VJZBJKCg9kYXRldGltZV9jbGF1c2UYAiABKAsyIS5idWNrZXRlZXIuYXV0b29wcy5EYXRldGltZUNsYXVzZVIOZGF0ZXRpbWVDbGF1c2UicAoQUHVzaENyZWF0ZWRFdmVudBIuChNmY21fc2VydmljZV9hY2NvdW50GAEgASgJUhFmY21TZXJ2aWNlQWNjb3VudBISCgR0YWdzGAMgAygJUgR0YWdzEhIKBG5hbWUYBCABKAlSBG5hbWVKBAgCEAMiEgoQUHVzaERlbGV0ZWRFdmVudCIoChJQdXNoVGFnc0FkZGVkRXZlbnQSEgoEdGFncxgCIAMoCVIEdGFncyIqChRQdXNoVGFnc0RlbGV0ZWRFdmVudBISCgR0YWdzGAIgAygJUgR0YWdzIiYKEFB1c2hSZW5hbWVkRXZlbnQSEgoEbmFtZRgCIAEoCVIEbmFtZSIqChRQdXNoVGFnc1VwZGF0ZWRFdmVudBISCgR0YWdzGAIgAygJUgR0YWdzIlgKEFB1c2hVcGRhdGVkRXZlbnQSMAoEbmFtZRgBIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIEbmFtZRISCgR0YWdzGAIgAygJUgR0YWdzIu8BChhTdWJzY3JpcHRpb25DcmVhdGVkRXZlbnQSUgoMc291cmNlX3R5cGVzGAEgAygOMi8uYnVja2V0ZWVyLm5vdGlmaWNhdGlvbi5TdWJzY3JpcHRpb24uU291cmNlVHlwZVILc291cmNlVHlwZXMSPwoJcmVjaXBpZW50GAIgASgLMiEuYnVja2V0ZWVyLm5vdGlmaWNhdGlvbi5SZWNpcGllbnRSCXJlY2lwaWVudBISCgRuYW1lGAMgASgJUgRuYW1lEioKEWZlYXR1cmVfZmxhZ190YWdzGAQgAygJUg9mZWF0dXJlRmxhZ1RhZ3MiGgoYU3Vic2NyaXB0aW9uRGVsZXRlZEV2ZW50IhoKGFN1YnNjcmlwdGlvbkVuYWJsZWRFdmVudCIbChlTdWJzY3JpcHRpb25EaXNhYmxlZEV2ZW50IncKIVN1YnNjcmlwdGlvblNvdXJjZVR5cGVzQWRkZWRFdmVudBJSCgxzb3VyY2VfdHlwZXMYASADKA4yLy5idWNrZXRlZXIubm90aWZpY2F0aW9uLlN1YnNjcmlwdGlvbi5Tb3VyY2VUeXBlUgtzb3VyY2VUeXBlcyJ5CiNTdWJzY3JpcHRpb25Tb3VyY2VUeXBlc0RlbGV0ZWRFdmVudBJSCgxzb3VyY2VfdHlwZXMYASADKA4yLy5idWNrZXRlZXIubm90aWZpY2F0aW9uLlN1YnNjcmlwdGlvbi5Tb3VyY2VUeXBlUgtzb3VyY2VUeXBlcyIuChhTdWJzY3JpcHRpb25SZW5hbWVkRXZlbnQSEgoEbmFtZRgBIAEoCVIEbmFtZSJVCidTdWJzY3JpcHRpb25GZWF0dXJlRmxhZ1RhZ3NVcGRhdGVkRXZlbnQSKgoRZmVhdHVyZV9mbGFnX3RhZ3MYASADKAlSD2ZlYXR1cmVGbGFnVGFncyKUAgoYU3Vic2NyaXB0aW9uVXBkYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIwCgRuYW1lGAIgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlUgRuYW1lElIKDHNvdXJjZV90eXBlcxgDIAMoDjIvLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uU3Vic2NyaXB0aW9uLlNvdXJjZVR5cGVSC3NvdXJjZVR5cGVzEjYKCGRpc2FibGVkGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZVIIZGlzYWJsZWQSKgoRZmVhdHVyZV9mbGFnX3RhZ3MYBSADKAlSD2ZlYXR1cmVGbGFnVGFncyLIAQodQWRtaW5TdWJzY3JpcHRpb25DcmVhdGVkRXZlbnQSUgoMc291cmNlX3R5cGVzGAEgAygOMi8uYnVja2V0ZWVyLm5vdGlmaWNhdGlvbi5TdWJzY3JpcHRpb24uU291cmNlVHlwZVILc291cmNlVHlwZXMSPwoJcmVjaXBpZW50GAIgASgLMiEuYnVja2V0ZWVyLm5vdGlmaWNhdGlvbi5SZWNpcGllbnRSCXJlY2lwaWVudBISCgRuYW1lGAMgASgJUgRuYW1lIh8KHUFkbWluU3Vic2NyaXB0aW9uRGVsZXRlZEV2ZW50Ih8KHUFkbWluU3Vic2NyaXB0aW9uRW5hYmxlZEV2ZW50IiAKHkFkbWluU3Vic2NyaXB0aW9uRGlzYWJsZWRFdmVudCJ8CiZBZG1pblN1YnNjcmlwdGlvblNvdXJjZVR5cGVzQWRkZWRFdmVudBJSCgxzb3VyY2VfdHlwZXMYASADKA4yLy5idWNrZXRlZXIubm90aWZpY2F0aW9uLlN1YnNjcmlwdGlvbi5Tb3VyY2VUeXBlUgtzb3VyY2VUeXBlcyJ+CihBZG1pblN1YnNjcmlwdGlvblNvdXJjZVR5cGVzRGVsZXRlZEV2ZW50ElIKDHNvdXJjZV90eXBlcxgBIAMoDjIvLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uU3Vic2NyaXB0aW9uLlNvdXJjZVR5cGVSC3NvdXJjZVR5cGVzIjMKHUFkbWluU3Vic2NyaXB0aW9uUmVuYW1lZEV2ZW50EhIKBG5hbWUYASABKAlSBG5hbWUiiwIKE1Byb2plY3RDcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhIaCghkaXNhYmxlZBgDIAEoCFIIZGlzYWJsZWQSFAoFdHJpYWwYBCABKAhSBXRyaWFsEiMKDWNyZWF0b3JfZW1haWwYBSABKAlSDGNyZWF0b3JFbWFpbBIdCgpjcmVhdGVkX2F0GAYgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgHIAEoA1IJdXBkYXRlZEF0EhIKBG5hbWUYCCABKAlSBG5hbWUSGQoIdXJsX2NvZGUYCSABKAlSB3VybENvZGUiUgoeUHJvamVjdERlc2NyaXB0aW9uQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24iOQoTUHJvamVjdFJlbmFtZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZSIlChNQcm9qZWN0RW5hYmxlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCImChRQcm9qZWN0RGlzYWJsZWRFdmVudBIOCgJpZBgBIAEoCVICaWQikAIKGFByb2plY3RUcmlhbENyZWF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uEhoKCGRpc2FibGVkGAMgASgIUghkaXNhYmxlZBIUCgV0cmlhbBgEIAEoCFIFdHJpYWwSIwoNY3JlYXRvcl9lbWFpbBgFIAEoCVIMY3JlYXRvckVtYWlsEh0KCmNyZWF0ZWRfYXQYBiABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAcgASgDUgl1cGRhdGVkQXQSEgoEbmFtZRgIIAEoCVIEbmFtZRIZCgh1cmxfY29kZRgJIAEoCVIHdXJsQ29kZSIsChpQcm9qZWN0VHJpYWxDb252ZXJ0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiXQoWUHJlcmVxdWlzaXRlQWRkZWRFdmVudBJDCgxwcmVyZXF1aXNpdGUYASABKAsyHy5idWNrZXRlZXIuZmVhdHVyZS5QcmVyZXF1aXNpdGVSDHByZXJlcXVpc2l0ZSJoCiFQcmVyZXF1aXNpdGVWYXJpYXRpb25DaGFuZ2VkRXZlbnQSQwoMcHJlcmVxdWlzaXRlGAEgASgLMh8uYnVja2V0ZWVyLmZlYXR1cmUuUHJlcmVxdWlzaXRlUgxwcmVyZXF1aXNpdGUiOQoYUHJlcmVxdWlzaXRlUmVtb3ZlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZCL7AQoeUHJvZ3Jlc3NpdmVSb2xsb3V0Q3JlYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSLAoGY2xhdXNlGAMgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIGY2xhdXNlEh0KCmNyZWF0ZWRfYXQYBCABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAUgASgDUgl1cGRhdGVkQXQSPgoEdHlwZRgGIAEoDjIqLmJ1Y2tldGVlci5hdXRvb3BzLlByb2dyZXNzaXZlUm9sbG91dC5UeXBlUgR0eXBlIuUBCh5Qcm9ncmVzc2l2ZVJvbGxvdXRTdG9wcGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEkQKBnN0YXR1cxgCIAEoDjIsLmJ1Y2tldGVlci5hdXRvb3BzLlByb2dyZXNzaXZlUm9sbG91dC5TdGF0dXNSBnN0YXR1cxJOCgpzdG9wcGVkX2J5GAMgASgOMi8uYnVja2V0ZWVyLmF1dG9vcHMuUHJvZ3Jlc3NpdmVSb2xsb3V0LlN0b3BwZWRCeVIJc3RvcHBlZEJ5Eh0KCnN0b3BwZWRfYXQYBCABKANSCXN0b3BwZWRBdCIwCh5Qcm9ncmVzc2l2ZVJvbGxvdXREZWxldGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIlQKMVByb2dyZXNzaXZlUm9sbG91dFNjaGVkdWxlVHJpZ2dlcmVkQXRDaGFuZ2VkRXZlbnQSHwoLc2NoZWR1bGVfaWQYASABKAlSCnNjaGVkdWxlSWQiqAIKGE9yZ2FuaXphdGlvbkNyZWF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIZCgh1cmxfY29kZRgDIAEoCVIHdXJsQ29kZRIgCgtkZXNjcmlwdGlvbhgEIAEoCVILZGVzY3JpcHRpb24SGgoIZGlzYWJsZWQYBSABKAhSCGRpc2FibGVkEhoKCGFyY2hpdmVkGAYgASgIUghhcmNoaXZlZBIUCgV0cmlhbBgHIAEoCFIFdHJpYWwSHQoKY3JlYXRlZF9hdBgIIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCSABKANSCXVwZGF0ZWRBdBIfCgtvd25lcl9lbWFpbBgKIAEoCVIKb3duZXJFbWFpbCJXCiNPcmdhbml6YXRpb25EZXNjcmlwdGlvbkNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uIlUKIk9yZ2FuaXphdGlvbk93bmVyRW1haWxDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEh8KC293bmVyX2VtYWlsGAIgASgJUgpvd25lckVtYWlsIkIKHE9yZ2FuaXphdGlvbk5hbWVDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiKgoYT3JnYW5pemF0aW9uRW5hYmxlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCIrChlPcmdhbml6YXRpb25EaXNhYmxlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCIrChlPcmdhbml6YXRpb25BcmNoaXZlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCItChtPcmdhbml6YXRpb25VbmFyY2hpdmVkRXZlbnQSDgoCaWQYASABKAlSAmlkIjEKH09yZ2FuaXphdGlvblRyaWFsQ29udmVydGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIuMCChdGbGFnVHJpZ2dlckNyZWF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEjcKBHR5cGUYBCABKA4yIy5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlci5UeXBlUgR0eXBlEj0KBmFjdGlvbhgFIAEoDjIlLmJ1Y2tldGVlci5mZWF0dXJlLkZsYWdUcmlnZ2VyLkFjdGlvblIGYWN0aW9uEiAKC2Rlc2NyaXB0aW9uGAYgASgJUgtkZXNjcmlwdGlvbhIUCgV0b2tlbhgHIAEoCVIFdG9rZW4SHQoKY3JlYXRlZF9hdBgIIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCSABKANSCXVwZGF0ZWRBdBIlCg5lbnZpcm9ubWVudF9pZBgKIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCKJAQoVRmxhZ1RyaWdnZXJSZXNldEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSFAoFdG9rZW4YBCABKAlSBXRva2VuEiUKDmVudmlyb25tZW50X2lkGAUgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEIqIBCiJGbGFnVHJpZ2dlckRlc2NyaXB0aW9uQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uEiUKDmVudmlyb25tZW50X2lkGAUgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEInYKGEZsYWdUcmlnZ2VyRGlzYWJsZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEInUKF0ZsYWdUcmlnZ2VyRW5hYmxlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQidQoXRmxhZ1RyaWdnZXJEZWxldGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCLLAQocRmxhZ1RyaWdnZXJVc2FnZVVwZGF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEioKEWxhc3RfdHJpZ2dlcmVkX2F0GAQgASgDUg9sYXN0VHJpZ2dlcmVkQXQSIwoNdHJpZ2dlcl90aW1lcxgFIAEoBVIMdHJpZ2dlclRpbWVzEiUKDmVudmlyb25tZW50X2lkGAYgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEIlUKHkFjY291bnRWMkZpcnN0TmFtZUNoYW5nZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSHQoKZmlyc3RfbmFtZRgCIAEoCVIJZmlyc3ROYW1lIlIKHUFjY291bnRWMkxhc3ROYW1lQ2hhbmdlZEV2ZW50EhQKBWVtYWlsGAEgASgJUgVlbWFpbBIbCglsYXN0X25hbWUYAiABKAlSCGxhc3ROYW1lIlEKHUFjY291bnRWMkxhbmd1YWdlQ2hhbmdlZEV2ZW50EhQKBWVtYWlsGAEgASgJUgVlbWFpbBIaCghsYW5ndWFnZRgCIAEoCVIIbGFuZ3VhZ2Ui2gEKD1RhZ0NyZWF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIdCgpjcmVhdGVkX2F0GAMgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgEIAEoA1IJdXBkYXRlZEF0Ej4KC2VudGl0eV90eXBlGAUgASgOMh0uYnVja2V0ZWVyLnRhZy5UYWcuRW50aXR5VHlwZVIKZW50aXR5VHlwZRIlCg5lbnZpcm9ubWVudF9pZBgGIAEoCVINZW52aXJvbm1lbnRJZCJICg9UYWdEZWxldGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEiUKDmVudmlyb25tZW50X2lkGAYgASgJUg1lbnZpcm9ubWVudElkIskEChlDb2RlUmVmZXJlbmNlQ3JlYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSGwoJZmlsZV9wYXRoGAMgASgJUghmaWxlUGF0aBIfCgtsaW5lX251bWJlchgEIAEoBVIKbGluZU51bWJlchIhCgxjb2RlX3NuaXBwZXQYBSABKAlSC2NvZGVTbmlwcGV0EiEKDGNvbnRlbnRfaGFzaBgGIAEoCVILY29udGVudEhhc2gSGAoHYWxpYXNlcxgHIAMoCVIHYWxpYXNlcxInCg9yZXBvc2l0b3J5X25hbWUYCCABKAlSDnJlcG9zaXRvcnlOYW1lEikKEHJlcG9zaXRvcnlfb3duZXIYCSABKAlSD3JlcG9zaXRvcnlPd25lchJYCg9yZXBvc2l0b3J5X3R5cGUYCiABKA4yLy5idWNrZXRlZXIuY29kZXJlZi5Db2RlUmVmZXJlbmNlLlJlcG9zaXRvcnlUeXBlUg5yZXBvc2l0b3J5VHlwZRIrChFyZXBvc2l0b3J5X2JyYW5jaBgLIAEoCVIQcmVwb3NpdG9yeUJyYW5jaBIfCgtjb21taXRfaGFzaBgMIAEoCVIKY29tbWl0SGFzaBIlCg5lbnZpcm9ubWVudF9pZBgNIAEoCVINZW52aXJvbm1lbnRJZBIdCgpjcmVhdGVkX2F0GA4gASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgPIAEoA1IJdXBkYXRlZEF0It0CChlDb2RlUmVmZXJlbmNlVXBkYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIbCglmaWxlX3BhdGgYAiABKAlSCGZpbGVQYXRoEh8KC2xpbmVfbnVtYmVyGAMgASgFUgpsaW5lTnVtYmVyEiEKDGNvZGVfc25pcHBldBgEIAEoCVILY29kZVNuaXBwZXQSIQoMY29udGVudF9oYXNoGAUgASgJUgtjb250ZW50SGFzaBIYCgdhbGlhc2VzGAYgAygJUgdhbGlhc2VzEisKEXJlcG9zaXRvcnlfYnJhbmNoGAcgASgJUhByZXBvc2l0b3J5QnJhbmNoEh8KC2NvbW1pdF9oYXNoGAggASgJUgpjb21taXRIYXNoEiUKDmVudmlyb25tZW50X2lkGAkgASgJUg1lbnZpcm9ubWVudElkEh0KCnVwZGF0ZWRfYXQYCiABKANSCXVwZGF0ZWRBdCJSChlDb2RlUmVmZXJlbmNlRGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIlCg5lbnZpcm9ubWVudF9pZBgCIAEoCVINZW52aXJvbm1lbnRJZEI2WjRnaXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZXZlbnQvZG9tYWluYgZwcm90bzMKygEKKnByb3RvL2V2ZW50L2RvbWFpbi9sb2NhbGl6ZWRfbWVzc2FnZS5wcm90bxIWYnVja2V0ZWVyLmV2ZW50LmRvbWFpbiJEChBMb2NhbGl6ZWRNZXNzYWdlEhYKBmxvY2FsZRgBIAEoCVIGbG9jYWxlEhgKB21lc3NhZ2UYAiABKAlSB21lc3NhZ2VCNlo0Z2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2V2ZW50L2RvbWFpbmIGcHJvdG8zCvoFCh1wcm90by9hdWRpdGxvZy9hdWRpdGxvZy5wcm90bxISYnVja2V0ZWVyLmF1ZGl0bG9nGhlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvGh5wcm90by9ldmVudC9kb21haW4vZXZlbnQucHJvdG8aKnByb3RvL2V2ZW50L2RvbWFpbi9sb2NhbGl6ZWRfbWVzc2FnZS5wcm90byKhBAoIQXVkaXRMb2cSDgoCaWQYASABKAlSAmlkEhwKCXRpbWVzdGFtcBgCIAEoA1IJdGltZXN0YW1wEkkKC2VudGl0eV90eXBlGAMgASgOMiguYnVja2V0ZWVyLmV2ZW50LmRvbWFpbi5FdmVudC5FbnRpdHlUeXBlUgplbnRpdHlUeXBlEhsKCWVudGl0eV9pZBgEIAEoCVIIZW50aXR5SWQSNgoEdHlwZRgFIAEoDjIiLmJ1Y2tldGVlci5ldmVudC5kb21haW4uRXZlbnQuVHlwZVIEdHlwZRIqCgVldmVudBgGIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnlSBWV2ZW50EjYKBmVkaXRvchgHIAEoCzIeLmJ1Y2tldGVlci5ldmVudC5kb21haW4uRWRpdG9yUgZlZGl0b3ISOQoHb3B0aW9ucxgIIAEoCzIfLmJ1Y2tldGVlci5ldmVudC5kb21haW4uT3B0aW9uc1IHb3B0aW9ucxJVChFsb2NhbGl6ZWRfbWVzc2FnZRgJIAEoCzIoLmJ1Y2tldGVlci5ldmVudC5kb21haW4uTG9jYWxpemVkTWVzc2FnZVIQbG9jYWxpemVkTWVzc2FnZRIfCgtlbnRpdHlfZGF0YRgKIAEoCVIKZW50aXR5RGF0YRIwChRwcmV2aW91c19lbnRpdHlfZGF0YRgLIAEoCVIScHJldmlvdXNFbnRpdHlEYXRhQjJaMGdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9hdWRpdGxvZ2IGcHJvdG8zCqATChxwcm90by9hdWRpdGxvZy9zZXJ2aWNlLnByb3RvEhJidWNrZXRlZXIuYXVkaXRsb2caHmdvb2dsZS9wcm90b2J1Zi93cmFwcGVycy5wcm90bxodcHJvdG8vYXVkaXRsb2cvYXVkaXRsb2cucHJvdG8i/AMKFExpc3RBdWRpdExvZ3NSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISSwoIb3JkZXJfYnkYBCABKA4yMC5idWNrZXRlZXIuYXVkaXRsb2cuTGlzdEF1ZGl0TG9nc1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJgCg9vcmRlcl9kaXJlY3Rpb24YBSABKA4yNy5idWNrZXRlZXIuYXVkaXRsb2cuTGlzdEF1ZGl0TG9nc1JlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAYgASgJUg1zZWFyY2hLZXl3b3JkEhIKBGZyb20YByABKANSBGZyb20SDgoCdG8YCCABKANSAnRvEjwKC2VudGl0eV90eXBlGAkgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVSCmVudGl0eVR5cGUSJQoOZW52aXJvbm1lbnRfaWQYCiABKAlSDWVudmlyb25tZW50SWQiJQoHT3JkZXJCeRILCgdERUZBVUxUEAASDQoJVElNRVNUQU1QEAEiIwoOT3JkZXJEaXJlY3Rpb24SCAoEREVTQxAAEgcKA0FTQxABSgQIAxAEIo0BChVMaXN0QXVkaXRMb2dzUmVzcG9uc2USOwoKYXVkaXRfbG9ncxgBIAMoCzIcLmJ1Y2tldGVlci5hdWRpdGxvZy5BdWRpdExvZ1IJYXVkaXRMb2dzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEh8KC3RvdGFsX2NvdW50GAMgASgDUgp0b3RhbENvdW50It4DChlMaXN0QWRtaW5BdWRpdExvZ3NSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISUAoIb3JkZXJfYnkYAyABKA4yNS5idWNrZXRlZXIuYXVkaXRsb2cuTGlzdEFkbWluQXVkaXRMb2dzUmVxdWVzdC5PcmRlckJ5UgdvcmRlckJ5EmUKD29yZGVyX2RpcmVjdGlvbhgEIAEoDjI8LmJ1Y2tldGVlci5hdWRpdGxvZy5MaXN0QWRtaW5BdWRpdExvZ3NSZXF1ZXN0Lk9yZGVyRGlyZWN0aW9uUg5vcmRlckRpcmVjdGlvbhIlCg5zZWFyY2hfa2V5d29yZBgFIAEoCVINc2VhcmNoS2V5d29yZBISCgRmcm9tGAYgASgDUgRmcm9tEg4KAnRvGAcgASgDUgJ0bxI8CgtlbnRpdHlfdHlwZRgIIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlUgplbnRpdHlUeXBlIiUKB09yZGVyQnkSCwoHREVGQVVMVBAAEg0KCVRJTUVTVEFNUBABIiMKDk9yZGVyRGlyZWN0aW9uEggKBERFU0MQABIHCgNBU0MQASKSAQoaTGlzdEFkbWluQXVkaXRMb2dzUmVzcG9uc2USOwoKYXVkaXRfbG9ncxgBIAMoCzIcLmJ1Y2tldGVlci5hdWRpdGxvZy5BdWRpdExvZ1IJYXVkaXRMb2dzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEh8KC3RvdGFsX2NvdW50GAMgASgDUgp0b3RhbENvdW50IuwDChlMaXN0RmVhdHVyZUhpc3RvcnlSZXF1ZXN0Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIbCglwYWdlX3NpemUYAiABKANSCHBhZ2VTaXplEhYKBmN1cnNvchgDIAEoCVIGY3Vyc29yElAKCG9yZGVyX2J5GAUgASgOMjUuYnVja2V0ZWVyLmF1ZGl0bG9nLkxpc3RGZWF0dXJlSGlzdG9yeVJlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJlCg9vcmRlcl9kaXJlY3Rpb24YBiABKA4yPC5idWNrZXRlZXIuYXVkaXRsb2cuTGlzdEZlYXR1cmVIaXN0b3J5UmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYByABKAlSDXNlYXJjaEtleXdvcmQSEgoEZnJvbRgIIAEoA1IEZnJvbRIOCgJ0bxgJIAEoA1ICdG8SJQoOZW52aXJvbm1lbnRfaWQYCiABKAlSDWVudmlyb25tZW50SWQiJQoHT3JkZXJCeRILCgdERUZBVUxUEAASDQoJVElNRVNUQU1QEAEiIwoOT3JkZXJEaXJlY3Rpb24SCAoEREVTQxAAEgcKA0FTQxABSgQIBBAFIpIBChpMaXN0RmVhdHVyZUhpc3RvcnlSZXNwb25zZRI7CgphdWRpdF9sb2dzGAEgAygLMhwuYnVja2V0ZWVyLmF1ZGl0bG9nLkF1ZGl0TG9nUglhdWRpdExvZ3MSFgoGY3Vyc29yGAIgASgJUgZjdXJzb3ISHwoLdG90YWxfY291bnQYAyABKANSCnRvdGFsQ291bnQy5wIKD0F1ZGl0TG9nU2VydmljZRJmCg1MaXN0QXVkaXRMb2dzEiguYnVja2V0ZWVyLmF1ZGl0bG9nLkxpc3RBdWRpdExvZ3NSZXF1ZXN0GikuYnVja2V0ZWVyLmF1ZGl0bG9nLkxpc3RBdWRpdExvZ3NSZXNwb25zZSIAEnUKEkxpc3RBZG1pbkF1ZGl0TG9ncxItLmJ1Y2tldGVlci5hdWRpdGxvZy5MaXN0QWRtaW5BdWRpdExvZ3NSZXF1ZXN0Gi4uYnVja2V0ZWVyLmF1ZGl0bG9nLkxpc3RBZG1pbkF1ZGl0TG9nc1Jlc3BvbnNlIgASdQoSTGlzdEZlYXR1cmVIaXN0b3J5Ei0uYnVja2V0ZWVyLmF1ZGl0bG9nLkxpc3RGZWF0dXJlSGlzdG9yeVJlcXVlc3QaLi5idWNrZXRlZXIuYXVkaXRsb2cuTGlzdEZlYXR1cmVIaXN0b3J5UmVzcG9uc2UiAEIyWjBnaXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vYXVkaXRsb2diBnByb3RvMw== + auditlogDescriptor: CuQBChlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiNgoDQW55EhkKCHR5cGVfdXJsGAEgASgJUgd0eXBlVXJsEhQKBXZhbHVlGAIgASgMUgV2YWx1ZUJ2ChNjb20uZ29vZ2xlLnByb3RvYnVmQghBbnlQcm90b1ABWixnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi9hbnlwYqICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IGcHJvdG8zCoYECh5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIjCgtEb3VibGVWYWx1ZRIUCgV2YWx1ZRgBIAEoAVIFdmFsdWUiIgoKRmxvYXRWYWx1ZRIUCgV2YWx1ZRgBIAEoAlIFdmFsdWUiIgoKSW50NjRWYWx1ZRIUCgV2YWx1ZRgBIAEoA1IFdmFsdWUiIwoLVUludDY0VmFsdWUSFAoFdmFsdWUYASABKARSBXZhbHVlIiIKCkludDMyVmFsdWUSFAoFdmFsdWUYASABKAVSBXZhbHVlIiMKC1VJbnQzMlZhbHVlEhQKBXZhbHVlGAEgASgNUgV2YWx1ZSIhCglCb29sVmFsdWUSFAoFdmFsdWUYASABKAhSBXZhbHVlIiMKC1N0cmluZ1ZhbHVlEhQKBXZhbHVlGAEgASgJUgV2YWx1ZSIiCgpCeXRlc1ZhbHVlEhQKBXZhbHVlGAEgASgMUgV2YWx1ZUKDAQoTY29tLmdvb2dsZS5wcm90b2J1ZkINV3JhcHBlcnNQcm90b1ABWjFnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi93cmFwcGVyc3Bi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzMKxwMKGnByb3RvL2ZlYXR1cmUvY2xhdXNlLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSLaAgoGQ2xhdXNlEg4KAmlkGAEgASgJUgJpZBIcCglhdHRyaWJ1dGUYAiABKAlSCWF0dHJpYnV0ZRI+CghvcGVyYXRvchgDIAEoDjIiLmJ1Y2tldGVlci5mZWF0dXJlLkNsYXVzZS5PcGVyYXRvclIIb3BlcmF0b3ISFgoGdmFsdWVzGAQgAygJUgZ2YWx1ZXMiyQEKCE9wZXJhdG9yEgoKBkVRVUFMUxAAEgYKAklOEAESDQoJRU5EU19XSVRIEAISDwoLU1RBUlRTX1dJVEgQAxILCgdTRUdNRU5UEAQSCwoHR1JFQVRFUhAFEhQKEEdSRUFURVJfT1JfRVFVQUwQBhIICgRMRVNTEAcSEQoNTEVTU19PUl9FUVVBTBAIEgoKBkJFRk9SRRAJEgkKBUFGVEVSEAoSEAoMRkVBVFVSRV9GTEFHEAsSEwoPUEFSVElBTExZX01BVENIEAxCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwq7BAoccHJvdG8vZmVhdHVyZS9zdHJhdGVneS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUiLQoNRml4ZWRTdHJhdGVneRIcCgl2YXJpYXRpb24YASABKAlSCXZhcmlhdGlvbiKiAQoPUm9sbG91dFN0cmF0ZWd5EkwKCnZhcmlhdGlvbnMYASADKAsyLC5idWNrZXRlZXIuZmVhdHVyZS5Sb2xsb3V0U3RyYXRlZ3kuVmFyaWF0aW9uUgp2YXJpYXRpb25zGkEKCVZhcmlhdGlvbhIcCgl2YXJpYXRpb24YASABKAlSCXZhcmlhdGlvbhIWCgZ3ZWlnaHQYAiABKAVSBndlaWdodCL4AQoIU3RyYXRlZ3kSNAoEdHlwZRgBIAEoDjIgLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5LlR5cGVSBHR5cGUSRwoOZml4ZWRfc3RyYXRlZ3kYAiABKAsyIC5idWNrZXRlZXIuZmVhdHVyZS5GaXhlZFN0cmF0ZWd5Ug1maXhlZFN0cmF0ZWd5Ek0KEHJvbGxvdXRfc3RyYXRlZ3kYAyABKAsyIi5idWNrZXRlZXIuZmVhdHVyZS5Sb2xsb3V0U3RyYXRlZ3lSD3JvbGxvdXRTdHJhdGVneSIeCgRUeXBlEgkKBUZJWEVEEAASCwoHUk9MTE9VVBABQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKqQIKGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGnByb3RvL2ZlYXR1cmUvY2xhdXNlLnByb3RvGhxwcm90by9mZWF0dXJlL3N0cmF0ZWd5LnByb3RvIoQBCgRSdWxlEg4KAmlkGAEgASgJUgJpZBI3CghzdHJhdGVneRgCIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5UghzdHJhdGVneRIzCgdjbGF1c2VzGAMgAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlUgdjbGF1c2VzQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKqAEKGnByb3RvL2ZlYXR1cmUvdGFyZ2V0LnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSI8CgZUYXJnZXQSHAoJdmFyaWF0aW9uGAEgASgJUgl2YXJpYXRpb24SFAoFdXNlcnMYAiADKAlSBXVzZXJzQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMK1gEKHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvEhFidWNrZXRlZXIuZmVhdHVyZSJnCglWYXJpYXRpb24SDgoCaWQYASABKAlSAmlkEhQKBXZhbHVlGAIgASgJUgV2YWx1ZRISCgRuYW1lGAMgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCvQCCipwcm90by9mZWF0dXJlL2ZlYXR1cmVfbGFzdF91c2VkX2luZm8ucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlIvcBChNGZWF0dXJlTGFzdFVzZWRJbmZvEh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIYCgd2ZXJzaW9uGAIgASgFUgd2ZXJzaW9uEiAKDGxhc3RfdXNlZF9hdBgDIAEoA1IKbGFzdFVzZWRBdBIdCgpjcmVhdGVkX2F0GAQgASgDUgljcmVhdGVkQXQSMgoVY2xpZW50X29sZGVzdF92ZXJzaW9uGAUgASgJUhNjbGllbnRPbGRlc3RWZXJzaW9uEjIKFWNsaWVudF9sYXRlc3RfdmVyc2lvbhgGIAEoCVITY2xpZW50TGF0ZXN0VmVyc2lvbkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vZmVhdHVyZWIGcHJvdG8zCsIBCiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUiUAoMUHJlcmVxdWlzaXRlEh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIhCgx2YXJpYXRpb25faWQYAiABKAlSC3ZhcmlhdGlvbklkQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKswwKG3Byb3RvL2ZlYXR1cmUvZmVhdHVyZS5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxoacHJvdG8vZmVhdHVyZS90YXJnZXQucHJvdG8aHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvGhxwcm90by9mZWF0dXJlL3N0cmF0ZWd5LnByb3RvGipwcm90by9mZWF0dXJlL2ZlYXR1cmVfbGFzdF91c2VkX2luZm8ucHJvdG8aIHByb3RvL2ZlYXR1cmUvcHJlcmVxdWlzaXRlLnByb3RvItIHCgdGZWF0dXJlEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhIYCgdlbmFibGVkGAQgASgIUgdlbmFibGVkEhgKB2RlbGV0ZWQYBSABKAhSB2RlbGV0ZWQSOQoWZXZhbHVhdGlvbl91bmRlbGF5YWJsZRgGIAEoCEICGAFSFWV2YWx1YXRpb25VbmRlbGF5YWJsZRIQCgN0dGwYByABKAVSA3R0bBIYCgd2ZXJzaW9uGAggASgFUgd2ZXJzaW9uEh0KCmNyZWF0ZWRfYXQYCSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAogASgDUgl1cGRhdGVkQXQSPAoKdmFyaWF0aW9ucxgLIAMoCzIcLmJ1Y2tldGVlci5mZWF0dXJlLlZhcmlhdGlvblIKdmFyaWF0aW9ucxIzCgd0YXJnZXRzGAwgAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuVGFyZ2V0Ugd0YXJnZXRzEi0KBXJ1bGVzGA0gAygLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIFcnVsZXMSRgoQZGVmYXVsdF9zdHJhdGVneRgOIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5Ug9kZWZhdWx0U3RyYXRlZ3kSIwoNb2ZmX3ZhcmlhdGlvbhgPIAEoCVIMb2ZmVmFyaWF0aW9uEhIKBHRhZ3MYECADKAlSBHRhZ3MSTAoObGFzdF91c2VkX2luZm8YESABKAsyJi5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlTGFzdFVzZWRJbmZvUgxsYXN0VXNlZEluZm8SHgoKbWFpbnRhaW5lchgSIAEoCVIKbWFpbnRhaW5lchJPCg52YXJpYXRpb25fdHlwZRgTIAEoDjIoLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmUuVmFyaWF0aW9uVHlwZVINdmFyaWF0aW9uVHlwZRIaCghhcmNoaXZlZBgUIAEoCFIIYXJjaGl2ZWQSRQoNcHJlcmVxdWlzaXRlcxgVIAMoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVINcHJlcmVxdWlzaXRlcxIjCg1zYW1wbGluZ19zZWVkGBYgASgJUgxzYW1wbGluZ1NlZWQiPgoNVmFyaWF0aW9uVHlwZRIKCgZTVFJJTkcQABILCgdCT09MRUFOEAESCgoGTlVNQkVSEAISCAoESlNPThADIlIKCEZlYXR1cmVzEjYKCGZlYXR1cmVzGAEgAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIIZmVhdHVyZXMSDgoCaWQYAiABKAlSAmlkInMKEkVudmlyb25tZW50RmVhdHVyZRIlCg5lbnZpcm9ubWVudF9pZBgBIAEoCVINZW52aXJvbm1lbnRJZBI2CghmZWF0dXJlcxgCIAMoCzIaLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmVSCGZlYXR1cmVzImcKA1RhZxIOCgJpZBgBIAEoCVICaWQSHQoKY3JlYXRlZF9hdBgCIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYAyABKANSCXVwZGF0ZWRBdBISCgRuYW1lGAQgASgJUgRuYW1lQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMKtQgKG3Byb3RvL2ZlYXR1cmUvc2VnbWVudC5wcm90bxIRYnVja2V0ZWVyLmZlYXR1cmUaGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxobcHJvdG8vZmVhdHVyZS9mZWF0dXJlLnByb3RvIrQECgdTZWdtZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhItCgVydWxlcxgEIAMoCzIXLmJ1Y2tldGVlci5mZWF0dXJlLlJ1bGVSBXJ1bGVzEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSHAoHdmVyc2lvbhgHIAEoA0ICGAFSB3ZlcnNpb24SGAoHZGVsZXRlZBgIIAEoCFIHZGVsZXRlZBIuChNpbmNsdWRlZF91c2VyX2NvdW50GAkgASgDUhFpbmNsdWRlZFVzZXJDb3VudBIyChNleGNsdWRlZF91c2VyX2NvdW50GAogASgDQgIYAVIRZXhjbHVkZWRVc2VyQ291bnQSOQoGc3RhdHVzGAsgASgOMiEuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudC5TdGF0dXNSBnN0YXR1cxInChBpc19pbl91c2Vfc3RhdHVzGAwgASgIUg1pc0luVXNlU3RhdHVzEjYKCGZlYXR1cmVzGA0gAygLMhouYnVja2V0ZWVyLmZlYXR1cmUuRmVhdHVyZVIIZmVhdHVyZXMiPgoGU3RhdHVzEgsKB0lOSVRJQUwQABINCglVUExPQURJTkcQARIMCghTVUNFRURFRBACEgoKBkZBSUxFRBADItQBCgtTZWdtZW50VXNlchIOCgJpZBgBIAEoCVICaWQSHQoKc2VnbWVudF9pZBgCIAEoCVIJc2VnbWVudElkEhcKB3VzZXJfaWQYAyABKAlSBnVzZXJJZBI6CgVzdGF0ZRgEIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZRIYCgdkZWxldGVkGAUgASgIUgdkZWxldGVkIicKBVN0YXRlEgwKCElOQ0xVREVEEAASEAoIRVhDTFVERUQQARoCCAEiggEKDFNlZ21lbnRVc2VycxIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSNAoFdXNlcnMYAiADKAsyHi5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlclIFdXNlcnMSHQoKdXBkYXRlZF9hdBgDIAEoA1IJdXBkYXRlZEF0QjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9mZWF0dXJlYgZwcm90bzMK5wMKI3Byb3RvL2Vudmlyb25tZW50L2Vudmlyb25tZW50LnByb3RvEhVidWNrZXRlZXIuZW52aXJvbm1lbnQi6QIKDUVudmlyb25tZW50VjISDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSGQoIdXJsX2NvZGUYAyABKAlSB3VybENvZGUSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uEh0KCnByb2plY3RfaWQYBSABKAlSCXByb2plY3RJZBIaCghhcmNoaXZlZBgGIAEoCFIIYXJjaGl2ZWQSHQoKY3JlYXRlZF9hdBgHIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCCABKANSCXVwZGF0ZWRBdBInCg9vcmdhbml6YXRpb25faWQYCSABKAlSDm9yZ2FuaXphdGlvbklkEicKD3JlcXVpcmVfY29tbWVudBgKIAEoCFIOcmVxdWlyZUNvbW1lbnQSLAoSZmVhdHVyZV9mbGFnX2NvdW50GAsgASgFUhBmZWF0dXJlRmxhZ0NvdW50QjVaM2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9lbnZpcm9ubWVudGIGcHJvdG8zCv0DCh9wcm90by9lbnZpcm9ubWVudC9wcm9qZWN0LnByb3RvEhVidWNrZXRlZXIuZW52aXJvbm1lbnQigwMKB1Byb2plY3QSDgoCaWQYASABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhIaCghkaXNhYmxlZBgDIAEoCFIIZGlzYWJsZWQSFAoFdHJpYWwYBCABKAhSBXRyaWFsEiMKDWNyZWF0b3JfZW1haWwYBSABKAlSDGNyZWF0b3JFbWFpbBIdCgpjcmVhdGVkX2F0GAYgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgHIAEoA1IJdXBkYXRlZEF0EhIKBG5hbWUYCCABKAlSBG5hbWUSGQoIdXJsX2NvZGUYCSABKAlSB3VybENvZGUSJwoPb3JnYW5pemF0aW9uX2lkGAogASgJUg5vcmdhbml6YXRpb25JZBIrChFlbnZpcm9ubWVudF9jb3VudBgLIAEoBVIQZW52aXJvbm1lbnRDb3VudBIsChJmZWF0dXJlX2ZsYWdfY291bnQYDCABKAVSEGZlYXR1cmVGbGFnQ291bnRCNVozZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2Vudmlyb25tZW50YgZwcm90bzMKrwQKJHByb3RvL2Vudmlyb25tZW50L29yZ2FuaXphdGlvbi5wcm90bxIVYnVja2V0ZWVyLmVudmlyb25tZW50IrADCgxPcmdhbml6YXRpb24SDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSGQoIdXJsX2NvZGUYAyABKAlSB3VybENvZGUSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uEhoKCGRpc2FibGVkGAUgASgIUghkaXNhYmxlZBIaCghhcmNoaXZlZBgGIAEoCFIIYXJjaGl2ZWQSFAoFdHJpYWwYByABKAhSBXRyaWFsEh0KCmNyZWF0ZWRfYXQYCCABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAkgASgDUgl1cGRhdGVkQXQSIQoMc3lzdGVtX2FkbWluGAogASgIUgtzeXN0ZW1BZG1pbhIjCg1wcm9qZWN0X2NvdW50GAsgASgFUgxwcm9qZWN0Q291bnQSKwoRZW52aXJvbm1lbnRfY291bnQYDCABKAVSEGVudmlyb25tZW50Q291bnQSHQoKdXNlcl9jb3VudBgNIAEoBVIJdXNlckNvdW50Eh8KC293bmVyX2VtYWlsGA4gASgJUgpvd25lckVtYWlsQjVaM2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9lbnZpcm9ubWVudGIGcHJvdG8zCpADCiFwcm90by9hY2NvdW50L3NlYXJjaF9maWx0ZXIucHJvdG8SEWJ1Y2tldGVlci5hY2NvdW50IukBCgxTZWFyY2hGaWx0ZXISDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSFAoFcXVlcnkYAyABKAlSBXF1ZXJ5ElEKEmZpbHRlcl90YXJnZXRfdHlwZRgEIAEoDjIjLmJ1Y2tldGVlci5hY2NvdW50LkZpbHRlclRhcmdldFR5cGVSEGZpbHRlclRhcmdldFR5cGUSJQoOZW52aXJvbm1lbnRfaWQYBSABKAlSDWVudmlyb25tZW50SWQSJQoOZGVmYXVsdF9maWx0ZXIYBiABKAhSDWRlZmF1bHRGaWx0ZXIqMQoQRmlsdGVyVGFyZ2V0VHlwZRILCgdVTktOT1dOEAASEAoMRkVBVFVSRV9GTEFHEAFCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2FjY291bnRiBnByb3RvMwrUEwobcHJvdG8vYWNjb3VudC9hY2NvdW50LnByb3RvEhFidWNrZXRlZXIuYWNjb3VudBojcHJvdG8vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQucHJvdG8aH3Byb3RvL2Vudmlyb25tZW50L3Byb2plY3QucHJvdG8aJHByb3RvL2Vudmlyb25tZW50L29yZ2FuaXphdGlvbi5wcm90bxohcHJvdG8vYWNjb3VudC9zZWFyY2hfZmlsdGVyLnByb3RvIqsCCgdBY2NvdW50Eg4KAmlkGAEgASgJUgJpZBIUCgVlbWFpbBgCIAEoCVIFZW1haWwSEgoEbmFtZRgDIAEoCVIEbmFtZRIzCgRyb2xlGAQgASgOMh8uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudC5Sb2xlUgRyb2xlEhoKCGRpc2FibGVkGAUgASgIUghkaXNhYmxlZBIdCgpjcmVhdGVkX2F0GAYgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgHIAEoA1IJdXBkYXRlZEF0EhgKB2RlbGV0ZWQYCCABKAhSB2RlbGV0ZWQiOQoEUm9sZRIKCgZWSUVXRVIQABIKCgZFRElUT1IQARIJCgVPV05FUhACEg4KClVOQVNTSUdORUQQYzoCGAEivAgKCUFjY291bnRWMhIUCgVlbWFpbBgBIAEoCVIFZW1haWwSEgoEbmFtZRgCIAEoCVIEbmFtZRIoChBhdmF0YXJfaW1hZ2VfdXJsGAMgASgJUg5hdmF0YXJJbWFnZVVybBInCg9vcmdhbml6YXRpb25faWQYBCABKAlSDm9yZ2FuaXphdGlvbklkElsKEW9yZ2FuaXphdGlvbl9yb2xlGAUgASgOMi4uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLlJvbGUuT3JnYW5pemF0aW9uUhBvcmdhbml6YXRpb25Sb2xlElkKEWVudmlyb25tZW50X3JvbGVzGAYgAygLMiwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLkVudmlyb25tZW50Um9sZVIQZW52aXJvbm1lbnRSb2xlcxIaCghkaXNhYmxlZBgHIAEoCFIIZGlzYWJsZWQSHQoKY3JlYXRlZF9hdBgIIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCSABKANSCXVwZGF0ZWRBdBJGCg5zZWFyY2hfZmlsdGVycxgKIAMoCzIfLmJ1Y2tldGVlci5hY2NvdW50LlNlYXJjaEZpbHRlclINc2VhcmNoRmlsdGVycxIdCgpmaXJzdF9uYW1lGAsgASgJUglmaXJzdE5hbWUSGwoJbGFzdF9uYW1lGAwgASgJUghsYXN0TmFtZRIaCghsYW5ndWFnZRgNIAEoCVIIbGFuZ3VhZ2USGwoJbGFzdF9zZWVuGA4gASgDUghsYXN0U2VlbhIoChBhdmF0YXJfZmlsZV90eXBlGA8gASgJUg5hdmF0YXJGaWxlVHlwZRIhCgxhdmF0YXJfaW1hZ2UYECABKAxSC2F2YXRhckltYWdlEisKEWVudmlyb25tZW50X2NvdW50GBEgASgFUhBlbnZpcm9ubWVudENvdW50EhIKBHRhZ3MYEiADKAlSBHRhZ3Ma1wEKBFJvbGUiWQoLRW52aXJvbm1lbnQSGgoWRW52aXJvbm1lbnRfVU5BU1NJR05FRBAAEhYKEkVudmlyb25tZW50X1ZJRVdFUhABEhYKEkVudmlyb25tZW50X0VESVRPUhACInQKDE9yZ2FuaXphdGlvbhIbChdPcmdhbml6YXRpb25fVU5BU1NJR05FRBAAEhcKE09yZ2FuaXphdGlvbl9NRU1CRVIQARIWChJPcmdhbml6YXRpb25fQURNSU4QAhIWChJPcmdhbml6YXRpb25fT1dORVIQAxp7Cg9FbnZpcm9ubWVudFJvbGUSJQoOZW52aXJvbm1lbnRfaWQYASABKAlSDWVudmlyb25tZW50SWQSQQoEcm9sZRgCIAEoDjItLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5Sb2xlLkVudmlyb25tZW50UgRyb2xlIuoGCg5Db25zb2xlQWNjb3VudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSEgoEbmFtZRgCIAEoCVIEbmFtZRIdCgphdmF0YXJfdXJsGAMgASgJUglhdmF0YXJVcmwSJgoPaXNfc3lzdGVtX2FkbWluGAQgASgIUg1pc1N5c3RlbUFkbWluEkcKDG9yZ2FuaXphdGlvbhgFIAEoCzIjLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5Pcmdhbml6YXRpb25SDG9yZ2FuaXphdGlvbhJbChFvcmdhbml6YXRpb25fcm9sZRgGIAEoDjIuLmJ1Y2tldGVlci5hY2NvdW50LkFjY291bnRWMi5Sb2xlLk9yZ2FuaXphdGlvblIQb3JnYW5pemF0aW9uUm9sZRJeChFlbnZpcm9ubWVudF9yb2xlcxgHIAMoCzIxLmJ1Y2tldGVlci5hY2NvdW50LkNvbnNvbGVBY2NvdW50LkVudmlyb25tZW50Um9sZVIQZW52aXJvbm1lbnRSb2xlcxJGCg5zZWFyY2hfZmlsdGVycxgIIAMoCzIfLmJ1Y2tldGVlci5hY2NvdW50LlNlYXJjaEZpbHRlclINc2VhcmNoRmlsdGVycxIdCgpmaXJzdF9uYW1lGAkgASgJUglmaXJzdE5hbWUSGwoJbGFzdF9uYW1lGAogASgJUghsYXN0TmFtZRIaCghsYW5ndWFnZRgLIAEoCVIIbGFuZ3VhZ2USKAoQYXZhdGFyX2ZpbGVfdHlwZRgMIAEoCVIOYXZhdGFyRmlsZVR5cGUSIQoMYXZhdGFyX2ltYWdlGA0gASgMUgthdmF0YXJJbWFnZRIbCglsYXN0X3NlZW4YDiABKANSCGxhc3RTZWVuGtYBCg9FbnZpcm9ubWVudFJvbGUSRgoLZW52aXJvbm1lbnQYASABKAsyJC5idWNrZXRlZXIuZW52aXJvbm1lbnQuRW52aXJvbm1lbnRWMlILZW52aXJvbm1lbnQSOAoHcHJvamVjdBgCIAEoCzIeLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5Qcm9qZWN0Ugdwcm9qZWN0EkEKBHJvbGUYAyABKA4yLS5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5FbnZpcm9ubWVudFIEcm9sZUIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vYWNjb3VudGIGcHJvdG8zCuYGChtwcm90by9hY2NvdW50L2FwaV9rZXkucHJvdG8SEWJ1Y2tldGVlci5hY2NvdW50GiNwcm90by9lbnZpcm9ubWVudC9lbnZpcm9ubWVudC5wcm90byK7AwoGQVBJS2V5Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEjIKBHJvbGUYAyABKA4yHi5idWNrZXRlZXIuYWNjb3VudC5BUElLZXkuUm9sZVIEcm9sZRIaCghkaXNhYmxlZBgEIAEoCFIIZGlzYWJsZWQSHQoKY3JlYXRlZF9hdBgFIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYBiABKANSCXVwZGF0ZWRBdBIeCgptYWludGFpbmVyGAcgASgJUgptYWludGFpbmVyEhcKB2FwaV9rZXkYCCABKAlSBmFwaUtleRIgCgtkZXNjcmlwdGlvbhgJIAEoCVILZGVzY3JpcHRpb24SKQoQZW52aXJvbm1lbnRfbmFtZRgKIAEoCVIPZW52aXJvbm1lbnROYW1lInkKBFJvbGUSCwoHVU5LTk9XThAAEg4KClNES19DTElFTlQQARIOCgpTREtfU0VSVkVSEAISGAoUUFVCTElDX0FQSV9SRUFEX09OTFkQAxIUChBQVUJMSUNfQVBJX1dSSVRFEAQSFAoQUFVCTElDX0FQSV9BRE1JThAFIpUCChFFbnZpcm9ubWVudEFQSUtleRIyCgdhcGlfa2V5GAIgASgLMhkuYnVja2V0ZWVyLmFjY291bnQuQVBJS2V5UgZhcGlLZXkSMQoUZW52aXJvbm1lbnRfZGlzYWJsZWQYAyABKAhSE2Vudmlyb25tZW50RGlzYWJsZWQSIQoKcHJvamVjdF9pZBgEIAEoCUICGAFSCXByb2plY3RJZBJGCgtlbnZpcm9ubWVudBgFIAEoCzIkLmJ1Y2tldGVlci5lbnZpcm9ubWVudC5FbnZpcm9ubWVudFYyUgtlbnZpcm9ubWVudBIoChBwcm9qZWN0X3VybF9jb2RlGAYgASgJUg5wcm9qZWN0VXJsQ29kZUoECAEQAkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vYWNjb3VudGIGcHJvdG8zCpoLChpwcm90by9hdXRvb3BzL2NsYXVzZS5wcm90bxIRYnVja2V0ZWVyLmF1dG9vcHMaGWdvb2dsZS9wcm90b2J1Zi9hbnkucHJvdG8ihgEKBkNsYXVzZRIOCgJpZBgBIAEoCVICaWQSLAoGY2xhdXNlGAIgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIGY2xhdXNlEj4KC2FjdGlvbl90eXBlGAMgASgOMh0uYnVja2V0ZWVyLmF1dG9vcHMuQWN0aW9uVHlwZVIKYWN0aW9uVHlwZSLfAgoST3BzRXZlbnRSYXRlQ2xhdXNlEiEKDHZhcmlhdGlvbl9pZBgCIAEoCVILdmFyaWF0aW9uSWQSFwoHZ29hbF9pZBgDIAEoCVIGZ29hbElkEhsKCW1pbl9jb3VudBgEIAEoA1IIbWluQ291bnQSKQoQdGhyZWFkc2hvbGRfcmF0ZRgFIAEoAVIPdGhyZWFkc2hvbGRSYXRlEkoKCG9wZXJhdG9yGAYgASgOMi4uYnVja2V0ZWVyLmF1dG9vcHMuT3BzRXZlbnRSYXRlQ2xhdXNlLk9wZXJhdG9yUghvcGVyYXRvchI+CgthY3Rpb25fdHlwZRgHIAEoDjIdLmJ1Y2tldGVlci5hdXRvb3BzLkFjdGlvblR5cGVSCmFjdGlvblR5cGUiMwoIT3BlcmF0b3ISFAoQR1JFQVRFUl9PUl9FUVVBTBAAEhEKDUxFU1NfT1JfRVFVQUwQAUoECAEQAiJkCg5EYXRldGltZUNsYXVzZRISCgR0aW1lGAEgASgDUgR0aW1lEj4KC2FjdGlvbl90eXBlGAIgASgOMh0uYnVja2V0ZWVyLmF1dG9vcHMuQWN0aW9uVHlwZVIKYWN0aW9uVHlwZSKXAQoaUHJvZ3Jlc3NpdmVSb2xsb3V0U2NoZWR1bGUSHwoLc2NoZWR1bGVfaWQYASABKAlSCnNjaGVkdWxlSWQSHQoKZXhlY3V0ZV9hdBgCIAEoA1IJZXhlY3V0ZUF0EhYKBndlaWdodBgDIAEoBVIGd2VpZ2h0EiEKDHRyaWdnZXJlZF9hdBgEIAEoA1ILdHJpZ2dlcmVkQXQimAEKJlByb2dyZXNzaXZlUm9sbG91dE1hbnVhbFNjaGVkdWxlQ2xhdXNlEksKCXNjaGVkdWxlcxgBIAMoCzItLmJ1Y2tldGVlci5hdXRvb3BzLlByb2dyZXNzaXZlUm9sbG91dFNjaGVkdWxlUglzY2hlZHVsZXMSIQoMdmFyaWF0aW9uX2lkGAIgASgJUgt2YXJpYXRpb25JZCLYAgooUHJvZ3Jlc3NpdmVSb2xsb3V0VGVtcGxhdGVTY2hlZHVsZUNsYXVzZRJLCglzY2hlZHVsZXMYASADKAsyLS5idWNrZXRlZXIuYXV0b29wcy5Qcm9ncmVzc2l2ZVJvbGxvdXRTY2hlZHVsZVIJc2NoZWR1bGVzEmAKCGludGVydmFsGAIgASgOMkQuYnVja2V0ZWVyLmF1dG9vcHMuUHJvZ3Jlc3NpdmVSb2xsb3V0VGVtcGxhdGVTY2hlZHVsZUNsYXVzZS5JbnRlcnZhbFIIaW50ZXJ2YWwSHgoKaW5jcmVtZW50cxgDIAEoA1IKaW5jcmVtZW50cxIhCgx2YXJpYXRpb25faWQYBCABKAlSC3ZhcmlhdGlvbklkIjoKCEludGVydmFsEgsKB1VOS05PV04QABIKCgZIT1VSTFkQARIJCgVEQUlMWRACEgoKBldFRUtMWRADKjIKCkFjdGlvblR5cGUSCwoHVU5LTk9XThAAEgoKBkVOQUJMRRABEgsKB0RJU0FCTEUQAkIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vYXV0b29wc2IGcHJvdG8zCr0FCiFwcm90by9hdXRvb3BzL2F1dG9fb3BzX3J1bGUucHJvdG8SEWJ1Y2tldGVlci5hdXRvb3BzGhpwcm90by9hdXRvb3BzL2NsYXVzZS5wcm90byLQAgoLQXV0b09wc1J1bGUSDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBI1CghvcHNfdHlwZRgDIAEoDjIaLmJ1Y2tldGVlci5hdXRvb3BzLk9wc1R5cGVSB29wc1R5cGUSMwoHY2xhdXNlcxgEIAMoCzIZLmJ1Y2tldGVlci5hdXRvb3BzLkNsYXVzZVIHY2xhdXNlcxIdCgpjcmVhdGVkX2F0GAcgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgIIAEoA1IJdXBkYXRlZEF0EhgKB2RlbGV0ZWQYCSABKAhSB2RlbGV0ZWQSSAoPYXV0b19vcHNfc3RhdHVzGAogASgOMiAuYnVja2V0ZWVyLmF1dG9vcHMuQXV0b09wc1N0YXR1c1INYXV0b09wc1N0YXR1c0oECAYQByJUCgxBdXRvT3BzUnVsZXMSRAoOYXV0b19vcHNfcnVsZXMYASADKAsyHi5idWNrZXRlZXIuYXV0b29wcy5BdXRvT3BzUnVsZVIMYXV0b09wc1J1bGVzKj8KB09wc1R5cGUSEAoMVFlQRV9VTktOT1dOEAASDAoIU0NIRURVTEUQAhIOCgpFVkVOVF9SQVRFEAMiBAgBEAEqRAoNQXV0b09wc1N0YXR1cxILCgdXQUlUSU5HEAASCwoHUlVOTklORxABEgwKCEZJTklTSEVEEAISCwoHU1RPUFBFRBADQjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9hdXRvb3BzYgZwcm90bzMK8AMKInByb3RvL25vdGlmaWNhdGlvbi9yZWNpcGllbnQucHJvdG8SFmJ1Y2tldGVlci5ub3RpZmljYXRpb24itwIKCVJlY2lwaWVudBI6CgR0eXBlGAEgASgOMiYuYnVja2V0ZWVyLm5vdGlmaWNhdGlvbi5SZWNpcGllbnQuVHlwZVIEdHlwZRJlChdzbGFja19jaGFubmVsX3JlY2lwaWVudBgCIAEoCzItLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uU2xhY2tDaGFubmVsUmVjaXBpZW50UhVzbGFja0NoYW5uZWxSZWNpcGllbnQSRgoIbGFuZ3VhZ2UYAyABKA4yKi5idWNrZXRlZXIubm90aWZpY2F0aW9uLlJlY2lwaWVudC5MYW5ndWFnZVIIbGFuZ3VhZ2UiGAoEVHlwZRIQCgxTbGFja0NoYW5uZWwQACIlCghMYW5ndWFnZRILCgdFTkdMSVNIEAASDAoISkFQQU5FU0UQASI4ChVTbGFja0NoYW5uZWxSZWNpcGllbnQSHwoLd2ViaG9va191cmwYASABKAlSCndlYmhvb2tVcmxCNlo0Z2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL25vdGlmaWNhdGlvbmIGcHJvdG8zCqsJCiVwcm90by9ub3RpZmljYXRpb24vc3Vic2NyaXB0aW9uLnByb3RvEhZidWNrZXRlZXIubm90aWZpY2F0aW9uGiJwcm90by9ub3RpZmljYXRpb24vcmVjaXBpZW50LnByb3RvIoUICgxTdWJzY3JpcHRpb24SDgoCaWQYASABKAlSAmlkEh0KCmNyZWF0ZWRfYXQYAiABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAMgASgDUgl1cGRhdGVkQXQSGgoIZGlzYWJsZWQYBCABKAhSCGRpc2FibGVkElIKDHNvdXJjZV90eXBlcxgFIAMoDjIvLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uU3Vic2NyaXB0aW9uLlNvdXJjZVR5cGVSC3NvdXJjZVR5cGVzEj8KCXJlY2lwaWVudBgGIAEoCzIhLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uUmVjaXBpZW50UglyZWNpcGllbnQSEgoEbmFtZRgHIAEoCVIEbmFtZRIlCg5lbnZpcm9ubWVudF9pZBgIIAEoCVINZW52aXJvbm1lbnRJZBIpChBlbnZpcm9ubWVudF9uYW1lGAkgASgJUg9lbnZpcm9ubWVudE5hbWUSKgoRZmVhdHVyZV9mbGFnX3RhZ3MYCiADKAlSD2ZlYXR1cmVGbGFnVGFncyLjBAoKU291cmNlVHlwZRIYChRET01BSU5fRVZFTlRfRkVBVFVSRRAAEhUKEURPTUFJTl9FVkVOVF9HT0FMEAESGwoXRE9NQUlOX0VWRU5UX0VYUEVSSU1FTlQQAhIYChRET01BSU5fRVZFTlRfQUNDT1VOVBADEhcKE0RPTUFJTl9FVkVOVF9BUElLRVkQBBIYChRET01BSU5fRVZFTlRfU0VHTUVOVBAFEhwKGERPTUFJTl9FVkVOVF9FTlZJUk9OTUVOVBAGEh4KGkRPTUFJTl9FVkVOVF9BRE1JTl9BQ0NPVU5UEAcSHQoZRE9NQUlOX0VWRU5UX0FVVE9PUFNfUlVMRRAIEhUKEURPTUFJTl9FVkVOVF9QVVNIEAkSHQoZRE9NQUlOX0VWRU5UX1NVQlNDUklQVElPThAKEiMKH0RPTUFJTl9FVkVOVF9BRE1JTl9TVUJTQ1JJUFRJT04QCxIYChRET01BSU5fRVZFTlRfUFJPSkVDVBAMEhgKFERPTUFJTl9FVkVOVF9XRUJIT09LEA0SJAogRE9NQUlOX0VWRU5UX1BST0dSRVNTSVZFX1JPTExPVVQQDhIdChlET01BSU5fRVZFTlRfT1JHQU5JWkFUSU9OEA8SHQoZRE9NQUlOX0VWRU5UX0ZMQUdfVFJJR0dFUhAQEhQKEERPTUFJTl9FVkVOVF9UQUcQERIYChRET01BSU5fRVZFTlRfQ09ERVJFRhASEhEKDUZFQVRVUkVfU1RBTEUQZBIXChJFWFBFUklNRU5UX1JVTk5JTkcQyAESDgoJTUFVX0NPVU5UEKwCQjZaNGdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9ub3RpZmljYXRpb25iBnByb3RvMwr3BQoncHJvdG8vYXV0b29wcy9wcm9ncmVzc2l2ZV9yb2xsb3V0LnByb3RvEhFidWNrZXRlZXIuYXV0b29wcxoZZ29vZ2xlL3Byb3RvYnVmL2FueS5wcm90byLiBAoSUHJvZ3Jlc3NpdmVSb2xsb3V0Eg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSLAoGY2xhdXNlGAMgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIGY2xhdXNlEkQKBnN0YXR1cxgEIAEoDjIsLmJ1Y2tldGVlci5hdXRvb3BzLlByb2dyZXNzaXZlUm9sbG91dC5TdGF0dXNSBnN0YXR1cxIdCgpjcmVhdGVkX2F0GAUgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgGIAEoA1IJdXBkYXRlZEF0Ej4KBHR5cGUYByABKA4yKi5idWNrZXRlZXIuYXV0b29wcy5Qcm9ncmVzc2l2ZVJvbGxvdXQuVHlwZVIEdHlwZRJOCgpzdG9wcGVkX2J5GAggASgOMi8uYnVja2V0ZWVyLmF1dG9vcHMuUHJvZ3Jlc3NpdmVSb2xsb3V0LlN0b3BwZWRCeVIJc3RvcHBlZEJ5Eh0KCnN0b3BwZWRfYXQYCSABKANSCXN0b3BwZWRBdCIyCgRUeXBlEhMKD01BTlVBTF9TQ0hFRFVMRRAAEhUKEVRFTVBMQVRFX1NDSEVEVUxFEAEiPQoGU3RhdHVzEgsKB1dBSVRJTkcQABILCgdSVU5OSU5HEAESDAoIRklOSVNIRUQQAhILCgdTVE9QUEVEEAMiSQoJU3RvcHBlZEJ5EgsKB1VOS05PV04QABIICgRVU0VSEAESEAoMT1BTX1NDSEVEVUxFEAISEwoPT1BTX0tJTExfU1dJVENIEANCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2F1dG9vcHNiBnByb3RvMwqgBQogcHJvdG8vZmVhdHVyZS9mbGFnX3RyaWdnZXIucHJvdG8SEWJ1Y2tldGVlci5mZWF0dXJlIq0ECgtGbGFnVHJpZ2dlchIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEjcKBHR5cGUYBCABKA4yIy5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlci5UeXBlUgR0eXBlEj0KBmFjdGlvbhgFIAEoDjIlLmJ1Y2tldGVlci5mZWF0dXJlLkZsYWdUcmlnZ2VyLkFjdGlvblIGYWN0aW9uEiAKC2Rlc2NyaXB0aW9uGAYgASgJUgtkZXNjcmlwdGlvbhIjCg10cmlnZ2VyX2NvdW50GAcgASgFUgx0cmlnZ2VyQ291bnQSKgoRbGFzdF90cmlnZ2VyZWRfYXQYCCABKANSD2xhc3RUcmlnZ2VyZWRBdBIUCgV0b2tlbhgJIAEoCVIFdG9rZW4SGgoIZGlzYWJsZWQYCiABKAhSCGRpc2FibGVkEh0KCmNyZWF0ZWRfYXQYCyABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAwgASgDUgl1cGRhdGVkQXQSJQoOZW52aXJvbm1lbnRfaWQYDSABKAlSDWVudmlyb25tZW50SWQiKgoEVHlwZRIQCgxUeXBlX1VOS05PV04QABIQCgxUeXBlX1dFQkhPT0sQASI7CgZBY3Rpb24SEgoOQWN0aW9uX1VOS05PV04QABINCglBY3Rpb25fT04QARIOCgpBY3Rpb25fT0ZGEAJKBAgDEARCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2ZlYXR1cmViBnByb3RvMwr2AwoTcHJvdG8vdGFnL3RhZy5wcm90bxINYnVja2V0ZWVyLnRhZyK3AgoDVGFnEg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEh0KCmNyZWF0ZWRfYXQYAyABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAQgASgDUgl1cGRhdGVkQXQSPgoLZW50aXR5X3R5cGUYBSABKA4yHS5idWNrZXRlZXIudGFnLlRhZy5FbnRpdHlUeXBlUgplbnRpdHlUeXBlEiUKDmVudmlyb25tZW50X2lkGAYgASgJUg1lbnZpcm9ubWVudElkEikKEGVudmlyb25tZW50X25hbWUYByABKAlSD2Vudmlyb25tZW50TmFtZSI8CgpFbnRpdHlUeXBlEg8KC1VOU1BFQ0lGSUVEEAASEAoMRkVBVFVSRV9GTEFHEAESCwoHQUNDT1VOVBACIl8KDkVudmlyb25tZW50VGFnEiUKDmVudmlyb25tZW50X2lkGAEgASgJUg1lbnZpcm9ubWVudElkEiYKBHRhZ3MYAiADKAsyEi5idWNrZXRlZXIudGFnLlRhZ1IEdGFnc0ItWitnaXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vdGFnYgZwcm90bzMKtwgKIXByb3RvL2V4cGVyaW1lbnQvZXhwZXJpbWVudC5wcm90bxIUYnVja2V0ZWVyLmV4cGVyaW1lbnQaHXByb3RvL2ZlYXR1cmUvdmFyaWF0aW9uLnByb3RvIssGCgpFeHBlcmltZW50Eg4KAmlkGAEgASgJUgJpZBIbCgdnb2FsX2lkGAIgASgJQgIYAVIGZ29hbElkEh0KCmZlYXR1cmVfaWQYAyABKAlSCWZlYXR1cmVJZBInCg9mZWF0dXJlX3ZlcnNpb24YBCABKAVSDmZlYXR1cmVWZXJzaW9uEjwKCnZhcmlhdGlvbnMYBSADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSGQoIc3RhcnRfYXQYBiABKANSB3N0YXJ0QXQSFwoHc3RvcF9hdBgHIAEoA1IGc3RvcEF0EhwKB3N0b3BwZWQYCCABKAhCAhgBUgdzdG9wcGVkEiEKCnN0b3BwZWRfYXQYCSABKANCAjABUglzdG9wcGVkQXQSHQoKY3JlYXRlZF9hdBgKIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCyABKANSCXVwZGF0ZWRBdBIYCgdkZWxldGVkGAwgASgIUgdkZWxldGVkEhkKCGdvYWxfaWRzGA0gAygJUgdnb2FsSWRzEhIKBG5hbWUYDiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YDyABKAlSC2Rlc2NyaXB0aW9uEioKEWJhc2VfdmFyaWF0aW9uX2lkGBAgASgJUg9iYXNlVmFyaWF0aW9uSWQSPwoGc3RhdHVzGBIgASgOMicuYnVja2V0ZWVyLmV4cGVyaW1lbnQuRXhwZXJpbWVudC5TdGF0dXNSBnN0YXR1cxIeCgptYWludGFpbmVyGBMgASgJUgptYWludGFpbmVyEhoKCGFyY2hpdmVkGBQgASgIUghhcmNoaXZlZBJECgVnb2FscxgVIAMoCzIuLmJ1Y2tldGVlci5leHBlcmltZW50LkV4cGVyaW1lbnQuR29hbFJlZmVyZW5jZVIFZ29hbHMaMwoNR29hbFJlZmVyZW5jZRIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZSJCCgZTdGF0dXMSCwoHV0FJVElORxAAEgsKB1JVTk5JTkcQARILCgdTVE9QUEVEEAISEQoNRk9SQ0VfU1RPUFBFRBADSgQIERASIlEKC0V4cGVyaW1lbnRzEkIKC2V4cGVyaW1lbnRzGAEgAygLMiAuYnVja2V0ZWVyLmV4cGVyaW1lbnQuRXhwZXJpbWVudFILZXhwZXJpbWVudHNCNFoyZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2V4cGVyaW1lbnRiBnByb3RvMwq/BQobcHJvdG8vZXhwZXJpbWVudC9nb2FsLnByb3RvEhRidWNrZXRlZXIuZXhwZXJpbWVudBohcHJvdG8vZXhwZXJpbWVudC9leHBlcmltZW50LnByb3RvGiFwcm90by9hdXRvb3BzL2F1dG9fb3BzX3J1bGUucHJvdG8ihQQKBEdvYWwSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEhgKB2RlbGV0ZWQYBCABKAhSB2RlbGV0ZWQSHQoKY3JlYXRlZF9hdBgFIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYBiABKANSCXVwZGF0ZWRBdBInChBpc19pbl91c2Vfc3RhdHVzGAcgASgIUg1pc0luVXNlU3RhdHVzEhoKCGFyY2hpdmVkGAggASgIUghhcmNoaXZlZBJSCg9jb25uZWN0aW9uX3R5cGUYCSABKA4yKS5idWNrZXRlZXIuZXhwZXJpbWVudC5Hb2FsLkNvbm5lY3Rpb25UeXBlUg5jb25uZWN0aW9uVHlwZRJCCgtleHBlcmltZW50cxgKIAMoCzIgLmJ1Y2tldGVlci5leHBlcmltZW50LkV4cGVyaW1lbnRSC2V4cGVyaW1lbnRzEkQKDmF1dG9fb3BzX3J1bGVzGAsgAygLMh4uYnVja2V0ZWVyLmF1dG9vcHMuQXV0b09wc1J1bGVSDGF1dG9PcHNSdWxlcyI8Cg5Db25uZWN0aW9uVHlwZRILCgdVTktOT1dOEAASDgoKRVhQRVJJTUVOVBABEg0KCU9QRVJBVElPThACQjRaMmdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9leHBlcmltZW50YgZwcm90bzMKtwYKInByb3RvL2NvZGVyZWYvY29kZV9yZWZlcmVuY2UucHJvdG8SEWJ1Y2tldGVlci5jb2RlcmVmIsIFCg1Db2RlUmVmZXJlbmNlEg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSGwoJZmlsZV9wYXRoGAMgASgJUghmaWxlUGF0aBIfCgtsaW5lX251bWJlchgEIAEoBVIKbGluZU51bWJlchIhCgxjb2RlX3NuaXBwZXQYBSABKAlSC2NvZGVTbmlwcGV0EiEKDGNvbnRlbnRfaGFzaBgGIAEoCVILY29udGVudEhhc2gSGAoHYWxpYXNlcxgHIAMoCVIHYWxpYXNlcxInCg9yZXBvc2l0b3J5X25hbWUYCCABKAlSDnJlcG9zaXRvcnlOYW1lEikKEHJlcG9zaXRvcnlfb3duZXIYCSABKAlSD3JlcG9zaXRvcnlPd25lchJYCg9yZXBvc2l0b3J5X3R5cGUYCiABKA4yLy5idWNrZXRlZXIuY29kZXJlZi5Db2RlUmVmZXJlbmNlLlJlcG9zaXRvcnlUeXBlUg5yZXBvc2l0b3J5VHlwZRIrChFyZXBvc2l0b3J5X2JyYW5jaBgLIAEoCVIQcmVwb3NpdG9yeUJyYW5jaBIfCgtjb21taXRfaGFzaBgMIAEoCVIKY29tbWl0SGFzaBIlCg5lbnZpcm9ubWVudF9pZBgNIAEoCVINZW52aXJvbm1lbnRJZBIdCgpjcmVhdGVkX2F0GA4gASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgPIAEoA1IJdXBkYXRlZEF0Eh0KCnNvdXJjZV91cmwYECABKAlSCXNvdXJjZVVybCJkCg5SZXBvc2l0b3J5VHlwZRIfChtSRVBPU0lUT1JZX1RZUEVfVU5TUEVDSUZJRUQQABIKCgZHSVRIVUIQARIKCgZHSVRMQUIQAhINCglCSVRCVUNLRVQQAxIKCgZDVVNUT00QBEIxWi9naXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vY29kZXJlZmIGcHJvdG8zCvnaAQoecHJvdG8vZXZlbnQvZG9tYWluL2V2ZW50LnByb3RvEhZidWNrZXRlZXIuZXZlbnQuZG9tYWluGhlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvGh5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8aGnByb3RvL2ZlYXR1cmUvY2xhdXNlLnByb3RvGhtwcm90by9mZWF0dXJlL2ZlYXR1cmUucHJvdG8aGHByb3RvL2ZlYXR1cmUvcnVsZS5wcm90bxodcHJvdG8vZmVhdHVyZS92YXJpYXRpb24ucHJvdG8aHHByb3RvL2ZlYXR1cmUvc3RyYXRlZ3kucHJvdG8aG3Byb3RvL2ZlYXR1cmUvc2VnbWVudC5wcm90bxoacHJvdG8vZmVhdHVyZS90YXJnZXQucHJvdG8aG3Byb3RvL2FjY291bnQvYWNjb3VudC5wcm90bxobcHJvdG8vYWNjb3VudC9hcGlfa2V5LnByb3RvGiFwcm90by9hdXRvb3BzL2F1dG9fb3BzX3J1bGUucHJvdG8aGnByb3RvL2F1dG9vcHMvY2xhdXNlLnByb3RvGiVwcm90by9ub3RpZmljYXRpb24vc3Vic2NyaXB0aW9uLnByb3RvGiJwcm90by9ub3RpZmljYXRpb24vcmVjaXBpZW50LnByb3RvGiBwcm90by9mZWF0dXJlL3ByZXJlcXVpc2l0ZS5wcm90bxoncHJvdG8vYXV0b29wcy9wcm9ncmVzc2l2ZV9yb2xsb3V0LnByb3RvGiBwcm90by9mZWF0dXJlL2ZsYWdfdHJpZ2dlci5wcm90bxohcHJvdG8vYWNjb3VudC9zZWFyY2hfZmlsdGVyLnByb3RvGhNwcm90by90YWcvdGFnLnByb3RvGhtwcm90by9leHBlcmltZW50L2dvYWwucHJvdG8aIXByb3RvL2V4cGVyaW1lbnQvZXhwZXJpbWVudC5wcm90bxoicHJvdG8vY29kZXJlZi9jb2RlX3JlZmVyZW5jZS5wcm90byK8MAoFRXZlbnQSDgoCaWQYASABKAlSAmlkEhwKCXRpbWVzdGFtcBgCIAEoA1IJdGltZXN0YW1wEkkKC2VudGl0eV90eXBlGAMgASgOMiguYnVja2V0ZWVyLmV2ZW50LmRvbWFpbi5FdmVudC5FbnRpdHlUeXBlUgplbnRpdHlUeXBlEhsKCWVudGl0eV9pZBgEIAEoCVIIZW50aXR5SWQSNgoEdHlwZRgFIAEoDjIiLmJ1Y2tldGVlci5ldmVudC5kb21haW4uRXZlbnQuVHlwZVIEdHlwZRI2CgZlZGl0b3IYBiABKAsyHi5idWNrZXRlZXIuZXZlbnQuZG9tYWluLkVkaXRvclIGZWRpdG9yEigKBGRhdGEYByABKAsyFC5nb29nbGUucHJvdG9idWYuQW55UgRkYXRhEiQKDmlzX2FkbWluX2V2ZW50GAkgASgIUgxpc0FkbWluRXZlbnQSOQoHb3B0aW9ucxgKIAEoCzIfLmJ1Y2tldGVlci5ldmVudC5kb21haW4uT3B0aW9uc1IHb3B0aW9ucxIfCgtlbnRpdHlfZGF0YRgLIAEoCVIKZW50aXR5RGF0YRIwChRwcmV2aW91c19lbnRpdHlfZGF0YRgMIAEoCVIScHJldmlvdXNFbnRpdHlEYXRhEiUKDmVudmlyb25tZW50X2lkGA0gASgJUg1lbnZpcm9ubWVudElkIqkCCgpFbnRpdHlUeXBlEgsKB0ZFQVRVUkUQABIICgRHT0FMEAESDgoKRVhQRVJJTUVOVBACEgsKB0FDQ09VTlQQAxIKCgZBUElLRVkQBBILCgdTRUdNRU5UEAUSDwoLRU5WSVJPTk1FTlQQBhIRCg1BRE1JTl9BQ0NPVU5UEAcSEAoMQVVUT09QU19SVUxFEAgSCAoEUFVTSBAJEhAKDFNVQlNDUklQVElPThAKEhYKEkFETUlOX1NVQlNDUklQVElPThALEgsKB1BST0pFQ1QQDBIXChNQUk9HUkVTU0lWRV9ST0xMT1VUEA4SEAoMT1JHQU5JWkFUSU9OEA8SEAoMRkxBR19UUklHR0VSEBASBwoDVEFHEBESCwoHQ09ERVJFRhASIgQIDRANIvUpCgRUeXBlEgsKB1VOS05PV04QABITCg9GRUFUVVJFX0NSRUFURUQQARITCg9GRUFUVVJFX1JFTkFNRUQQAhITCg9GRUFUVVJFX0VOQUJMRUQQAxIUChBGRUFUVVJFX0RJU0FCTEVEEAQSEwoPRkVBVFVSRV9ERUxFVEVEEAUSHwobRkVBVFVSRV9ERVNDUklQVElPTl9DSEFOR0VEEAgSGwoXRkVBVFVSRV9WQVJJQVRJT05fQURERUQQCRIdChlGRUFUVVJFX1ZBUklBVElPTl9SRU1PVkVEEAoSIQodRkVBVFVSRV9PRkZfVkFSSUFUSU9OX0NIQU5HRUQQCxIbChdWQVJJQVRJT05fVkFMVUVfQ0hBTkdFRBAMEhoKFlZBUklBVElPTl9OQU1FX0NIQU5HRUQQDRIhCh1WQVJJQVRJT05fREVTQ1JJUFRJT05fQ0hBTkdFRBAOEhgKFFZBUklBVElPTl9VU0VSX0FEREVEEA8SGgoWVkFSSUFUSU9OX1VTRVJfUkVNT1ZFRBAQEhYKEkZFQVRVUkVfUlVMRV9BRERFRBAREiEKHUZFQVRVUkVfUlVMRV9TVFJBVEVHWV9DSEFOR0VEEBISGAoURkVBVFVSRV9SVUxFX0RFTEVURUQQExIVChFSVUxFX0NMQVVTRV9BRERFRBAUEhcKE1JVTEVfQ0xBVVNFX0RFTEVURUQQFRIfChtSVUxFX0ZJWEVEX1NUUkFURUdZX0NIQU5HRUQQFhIhCh1SVUxFX1JPTExPVVRfU1RSQVRFR1lfQ0hBTkdFRBAXEhwKGENMQVVTRV9BVFRSSUJVVEVfQ0hBTkdFRBAYEhsKF0NMQVVTRV9PUEVSQVRPUl9DSEFOR0VEEBkSFgoSQ0xBVVNFX1ZBTFVFX0FEREVEEBoSGAoUQ0xBVVNFX1ZBTFVFX1JFTU9WRUQQGxIkCiBGRUFUVVJFX0RFRkFVTFRfU1RSQVRFR1lfQ0hBTkdFRBAcEhUKEUZFQVRVUkVfVEFHX0FEREVEEB0SFwoTRkVBVFVSRV9UQUdfUkVNT1ZFRBAeEh8KG0ZFQVRVUkVfVkVSU0lPTl9JTkNSRU1FTlRFRBAfEhQKEEZFQVRVUkVfQVJDSElWRUQQIBISCg5GRUFUVVJFX0NMT05FRBAhEhYKEkZFQVRVUkVfVU5BUkNISVZFRBAjEhcKE1NBTVBMSU5HX1NFRURfUkVTRVQQIhIWChJQUkVSRVFVSVNJVEVfQURERUQQJBIYChRQUkVSRVFVSVNJVEVfUkVNT1ZFRBAlEiIKHlBSRVJFUVVJU0lURV9WQVJJQVRJT05fQ0hBTkdFRBAmEh8KG0ZFQVRVUkVfUlVMRVNfT1JERVJfQ0hBTkdFRBAnEhMKD0ZFQVRVUkVfVVBEQVRFRBAoEhAKDEdPQUxfQ1JFQVRFRBBkEhAKDEdPQUxfUkVOQU1FRBBlEhwKGEdPQUxfREVTQ1JJUFRJT05fQ0hBTkdFRBBmEhAKDEdPQUxfREVMRVRFRBBnEhEKDUdPQUxfQVJDSElWRUQQaBIQCgxHT0FMX1VQREFURUQQaRIXChJFWFBFUklNRU5UX0NSRUFURUQQyAESFwoSRVhQRVJJTUVOVF9TVE9QUEVEEMkBEiAKG0VYUEVSSU1FTlRfU1RBUlRfQVRfQ0hBTkdFRBDKARIfChpFWFBFUklNRU5UX1NUT1BfQVRfQ0hBTkdFRBDLARIXChJFWFBFUklNRU5UX0RFTEVURUQQzAESHgoZRVhQRVJJTUVOVF9QRVJJT0RfQ0hBTkdFRBDNARIcChdFWFBFUklNRU5UX05BTUVfQ0hBTkdFRBDOARIjCh5FWFBFUklNRU5UX0RFU0NSSVBUSU9OX0NIQU5HRUQQzwESFwoSRVhQRVJJTUVOVF9TVEFSVEVEENABEhgKE0VYUEVSSU1FTlRfRklOSVNIRUQQ0QESGAoTRVhQRVJJTUVOVF9BUkNISVZFRBDSARIXChJFWFBFUklNRU5UX1VQREFURUQQ0wESGAoPQUNDT1VOVF9DUkVBVEVEEKwCGgIIARIdChRBQ0NPVU5UX1JPTEVfQ0hBTkdFRBCtAhoCCAESGAoPQUNDT1VOVF9FTkFCTEVEEK4CGgIIARIZChBBQ0NPVU5UX0RJU0FCTEVEEK8CGgIIARIYCg9BQ0NPVU5UX0RFTEVURUQQsAIaAggBEhcKEkFDQ09VTlRfVjJfQ1JFQVRFRBCxAhIcChdBQ0NPVU5UX1YyX05BTUVfQ0hBTkdFRBCyAhIoCiNBQ0NPVU5UX1YyX0FWQVRBUl9JTUFHRV9VUkxfQ0hBTkdFRBCzAhIpCiRBQ0NPVU5UX1YyX09SR0FOSVpBVElPTl9ST0xFX0NIQU5HRUQQtAISKQokQUNDT1VOVF9WMl9FTlZJUk9OTUVOVF9ST0xFU19DSEFOR0VEELUCEhcKEkFDQ09VTlRfVjJfRU5BQkxFRBC2AhIYChNBQ0NPVU5UX1YyX0RJU0FCTEVEELcCEhcKEkFDQ09VTlRfVjJfREVMRVRFRBC4AhIlCiBBQ0NPVU5UX1YyX0NSRUFURURfU0VBUkNIX0ZJTFRFUhC5AhIqCiVBQ0NPVU5UX1YyX1NFQVJDSF9GSUxURVJfTkFORV9DSEFOR0VEELoCEisKJkFDQ09VTlRfVjJfU0VBUkNIX0ZJTFRFUl9RVUVSWV9DSEFOR0VEELsCEi0KKEFDQ09VTlRfVjJfU0VBUkNIX0ZJTFRFUl9ERUZBVUxUX0NIQU5HRUQQvAISJQogQUNDT1VOVF9WMl9TRUFSQ0hfRklMVEVSX0RFTEVURUQQvQISIgodQUNDT1VOVF9WMl9GSVJTVF9OQU1FX0NIQU5HRUQQvgISIQocQUNDT1VOVF9WMl9MQVNUX05BTUVfQ0hBTkdFRBC/AhIgChtBQ0NPVU5UX1YyX0xBTkdVQUdFX0NIQU5HRUQQwAISFwoSQUNDT1VOVF9WMl9VUERBVEVEEMECEhwKF0FDQ09VTlRfVjJfVEFHU19DSEFOR0VEEMICEhMKDkFQSUtFWV9DUkVBVEVEEJADEhgKE0FQSUtFWV9OQU1FX0NIQU5HRUQQkQMSEwoOQVBJS0VZX0VOQUJMRUQQkgMSFAoPQVBJS0VZX0RJU0FCTEVEEJMDEhMKDkFQSUtFWV9DSEFOR0VEEJQDEhQKD1NFR01FTlRfQ1JFQVRFRBD0AxIUCg9TRUdNRU5UX0RFTEVURUQQ9QMSGQoUU0VHTUVOVF9OQU1FX0NIQU5HRUQQ9gMSIAobU0VHTUVOVF9ERVNDUklQVElPTl9DSEFOR0VEEPcDEhcKElNFR01FTlRfUlVMRV9BRERFRBD4AxIZChRTRUdNRU5UX1JVTEVfREVMRVRFRBD5AxIeChlTRUdNRU5UX1JVTEVfQ0xBVVNFX0FEREVEEPoDEiAKG1NFR01FTlRfUlVMRV9DTEFVU0VfREVMRVRFRBD7AxIlCiBTRUdNRU5UX0NMQVVTRV9BVFRSSUJVVEVfQ0hBTkdFRBD8AxIkCh9TRUdNRU5UX0NMQVVTRV9PUEVSQVRPUl9DSEFOR0VEEP0DEh8KGlNFR01FTlRfQ0xBVVNFX1ZBTFVFX0FEREVEEP4DEiEKHFNFR01FTlRfQ0xBVVNFX1ZBTFVFX1JFTU9WRUQQ/wMSFwoSU0VHTUVOVF9VU0VSX0FEREVEEIAEEhkKFFNFR01FTlRfVVNFUl9ERUxFVEVEEIEEEh4KGVNFR01FTlRfQlVMS19VUExPQURfVVNFUlMQggQSLQooU0VHTUVOVF9CVUxLX1VQTE9BRF9VU0VSU19TVEFUVVNfQ0hBTkdFRBCDBBIUCg9TRUdNRU5UX1VQREFURUQQhAQSGAoTRU5WSVJPTk1FTlRfQ1JFQVRFRBDYBBIYChNFTlZJUk9OTUVOVF9SRU5BTUVEENkEEiQKH0VOVklST05NRU5UX0RFU0NSSVBUSU9OX0NIQU5HRUQQ2gQSGAoTRU5WSVJPTk1FTlRfREVMRVRFRBDbBBIbChZFTlZJUk9OTUVOVF9WMl9DUkVBVEVEENwEEhsKFkVOVklST05NRU5UX1YyX1JFTkFNRUQQ3QQSJwoiRU5WSVJPTk1FTlRfVjJfREVTQ1JJUFRJT05fQ0hBTkdFRBDeBBIcChdFTlZJUk9OTUVOVF9WMl9BUkNISVZFRBDfBBIeChlFTlZJUk9OTUVOVF9WMl9VTkFSQ0hJVkVEEOAEEisKJkVOVklST05NRU5UX1YyX1JFUVVJUkVfQ09NTUVOVF9DSEFOR0VEEOEEEh4KFUFETUlOX0FDQ09VTlRfQ1JFQVRFRBC8BRoCCAESHgoVQURNSU5fQUNDT1VOVF9FTkFCTEVEEL4FGgIIARIfChZBRE1JTl9BQ0NPVU5UX0RJU0FCTEVEEL8FGgIIARIZChRBVVRPT1BTX1JVTEVfQ1JFQVRFRBCgBhIZChRBVVRPT1BTX1JVTEVfREVMRVRFRBChBhIiCh1BVVRPT1BTX1JVTEVfT1BTX1RZUEVfQ0hBTkdFRBCiBhIgChtBVVRPT1BTX1JVTEVfQ0xBVVNFX0RFTEVURUQQowYSKgohQVVUT09QU19SVUxFX1RSSUdHRVJFRF9BVF9DSEFOR0VEEKQGGgIIARIgChtPUFNfRVZFTlRfUkFURV9DTEFVU0VfQURERUQQpQYSIgodT1BTX0VWRU5UX1JBVEVfQ0xBVVNFX0NIQU5HRUQQpgYSGgoVREFURVRJTUVfQ0xBVVNFX0FEREVEEKcGEhwKF0RBVEVUSU1FX0NMQVVTRV9DSEFOR0VEEKgGEhkKFEFVVE9PUFNfUlVMRV9TVE9QUEVEEKkGEiQKH0FVVE9PUFNfUlVMRV9PUFNfU1RBVFVTX0NIQU5HRUQQqgYSEQoMUFVTSF9DUkVBVEVEEIQHEhEKDFBVU0hfREVMRVRFRBCFBxIUCg9QVVNIX1RBR1NfQURERUQQhgcSFgoRUFVTSF9UQUdTX0RFTEVURUQQhwcSEQoMUFVTSF9SRU5BTUVEEIgHEhEKDFBVU0hfVVBEQVRFRBCJBxIZChRTVUJTQ1JJUFRJT05fQ1JFQVRFRBDoBxIZChRTVUJTQ1JJUFRJT05fREVMRVRFRBDpBxIZChRTVUJTQ1JJUFRJT05fRU5BQkxFRBDqBxIaChVTVUJTQ1JJUFRJT05fRElTQUJMRUQQ6wcSIwoeU1VCU0NSSVBUSU9OX1NPVVJDRV9UWVBFX0FEREVEEOwHEiUKIFNVQlNDUklQVElPTl9TT1VSQ0VfVFlQRV9ERUxFVEVEEO0HEhkKFFNVQlNDUklQVElPTl9SRU5BTUVEEO4HEhkKFFNVQlNDUklQVElPTl9VUERBVEVEEO8HEisKJlNVQlNDUklQVElPTl9GRUFUVVJFX0ZMQUdfVEFHU19VUERBVEVEEPAHEh8KGkFETUlOX1NVQlNDUklQVElPTl9DUkVBVEVEEMwIEh8KGkFETUlOX1NVQlNDUklQVElPTl9ERUxFVEVEEM0IEh8KGkFETUlOX1NVQlNDUklQVElPTl9FTkFCTEVEEM4IEiAKG0FETUlOX1NVQlNDUklQVElPTl9ESVNBQkxFRBDPCBIpCiRBRE1JTl9TVUJTQ1JJUFRJT05fU09VUkNFX1RZUEVfQURERUQQ0AgSKwomQURNSU5fU1VCU0NSSVBUSU9OX1NPVVJDRV9UWVBFX0RFTEVURUQQ0QgSHwoaQURNSU5fU1VCU0NSSVBUSU9OX1JFTkFNRUQQ0ggSFAoPUFJPSkVDVF9DUkVBVEVEELAJEiAKG1BST0pFQ1RfREVTQ1JJUFRJT05fQ0hBTkdFRBCxCRIUCg9QUk9KRUNUX0VOQUJMRUQQsgkSFQoQUFJPSkVDVF9ESVNBQkxFRBCzCRIaChVQUk9KRUNUX1RSSUFMX0NSRUFURUQQtAkSHAoXUFJPSkVDVF9UUklBTF9DT05WRVJURUQQtQkSFAoPUFJPSkVDVF9SRU5BTUVEELYJEiAKG1BST0dSRVNTSVZFX1JPTExPVVRfQ1JFQVRFRBD4ChIgChtQUk9HUkVTU0lWRV9ST0xMT1VUX0RFTEVURUQQ+QoSNgoxUFJPR1JFU1NJVkVfUk9MTE9VVF9TQ0hFRFVMRV9UUklHR0VSRURfQVRfQ0hBTkdFRBD6ChIgChtQUk9HUkVTU0lWRV9ST0xMT1VUX1NUT1BQRUQQ+woSGQoUT1JHQU5JWkFUSU9OX0NSRUFURUQQ3AsSHgoZT1JHQU5JWkFUSU9OX05BTUVfQ0hBTkdFRBDdCxIlCiBPUkdBTklaQVRJT05fREVTQ1JJUFRJT05fQ0hBTkdFRBDeCxIZChRPUkdBTklaQVRJT05fRU5BQkxFRBDfCxIaChVPUkdBTklaQVRJT05fRElTQUJMRUQQ4AsSGgoVT1JHQU5JWkFUSU9OX0FSQ0hJVkVEEOELEhwKF09SR0FOSVpBVElPTl9VTkFSQ0hJVkVEEOILEiEKHE9SR0FOSVpBVElPTl9UUklBTF9DT05WRVJURUQQ4wsSJQogT1JHQU5JWkFUSU9OX09XTkVSX0VNQUlMX0NIQU5HRUQQ5AsSGQoURkxBR19UUklHR0VSX0NSRUFURUQQwQwSFwoSRkxBR19UUklHR0VSX1JFU0VUEMIMEiUKIEZMQUdfVFJJR0dFUl9ERVNDUklQVElPTl9DSEFOR0VEEMMMEhoKFUZMQUdfVFJJR0dFUl9ESVNBQkxFRBDEDBIZChRGTEFHX1RSSUdHRVJfRU5BQkxFRBDFDBIZChRGTEFHX1RSSUdHRVJfREVMRVRFRBDGDBIfChpGTEFHX1RSSUdHRVJfVVNBR0VfVVBEQVRFRBDHDBIQCgtUQUdfQ1JFQVRFRBClDRIQCgtUQUdfREVMRVRFRBCmDRIbChZDT0RFX1JFRkVSRU5DRV9DUkVBVEVEEIgOEhsKFkNPREVfUkVGRVJFTkNFX1VQREFURUQQiQ4SGwoWQ09ERV9SRUZFUkVOQ0VfREVMRVRFRBCKDiIGCJQKEJQKIgYIlQoQlQoiBgiWChCWCiIGCJcKEJcKIgYImAoQmAoiBgiZChCZCkoECAgQCSKMAgoGRWRpdG9yEhQKBWVtYWlsGAEgASgJUgVlbWFpbBIZCghpc19hZG1pbhgDIAEoCFIHaXNBZG1pbhISCgRuYW1lGAQgASgJUgRuYW1lEloKEXB1YmxpY19hcGlfZWRpdG9yGAUgASgLMi4uYnVja2V0ZWVyLmV2ZW50LmRvbWFpbi5FZGl0b3IuUHVibGljQVBJRWRpdG9yUg9wdWJsaWNBcGlFZGl0b3IaWwoPUHVibGljQVBJRWRpdG9yEhQKBXRva2VuGAEgASgJUgV0b2tlbhIeCgptYWludGFpbmVyGAIgASgJUgptYWludGFpbmVyEhIKBG5hbWUYAyABKAlSBG5hbWVKBAgCEAMiRAoHT3B0aW9ucxIYCgdjb21tZW50GAEgASgJUgdjb21tZW50Eh8KC25ld192ZXJzaW9uGAIgASgFUgpuZXdWZXJzaW9uIvMEChNGZWF0dXJlQ3JlYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhISCgR1c2VyGAQgASgJUgR1c2VyEjwKCnZhcmlhdGlvbnMYBSADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSWAoaZGVmYXVsdF9vbl92YXJpYXRpb25faW5kZXgYBiABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIXZGVmYXVsdE9uVmFyaWF0aW9uSW5kZXgSWgobZGVmYXVsdF9vZmZfdmFyaWF0aW9uX2luZGV4GAcgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWVSGGRlZmF1bHRPZmZWYXJpYXRpb25JbmRleBJPCg52YXJpYXRpb25fdHlwZRgIIAEoDjIoLmJ1Y2tldGVlci5mZWF0dXJlLkZlYXR1cmUuVmFyaWF0aW9uVHlwZVINdmFyaWF0aW9uVHlwZRISCgR0YWdzGAkgAygJUgR0YWdzEkUKDXByZXJlcXVpc2l0ZXMYCiADKAsyHy5idWNrZXRlZXIuZmVhdHVyZS5QcmVyZXF1aXNpdGVSDXByZXJlcXVpc2l0ZXMSLQoFcnVsZXMYCyADKAsyFy5idWNrZXRlZXIuZmVhdHVyZS5SdWxlUgVydWxlcxIzCgd0YXJnZXRzGAwgAygLMhkuYnVja2V0ZWVyLmZlYXR1cmUuVGFyZ2V0Ugd0YXJnZXRzImYKE0ZlYXR1cmVVcGRhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhYKBGRhdGEYAiABKAlCAhgBUgRkYXRhEicKDXByZXZpb3VzX2RhdGEYAyABKAlCAhgBUgxwcmV2aW91c0RhdGEiJQoTRmVhdHVyZUVuYWJsZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiJgoURmVhdHVyZURpc2FibGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIiYKFEZlYXR1cmVBcmNoaXZlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCIoChZGZWF0dXJlVW5hcmNoaXZlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCIlChNGZWF0dXJlRGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCItChtFdmFsdWF0aW9uRGVsYXlhYmxlU2V0RXZlbnQSDgoCaWQYASABKAlSAmlkIi8KHUV2YWx1YXRpb25VbmRlbGF5YWJsZVNldEV2ZW50Eg4KAmlkGAEgASgJUgJpZCI5ChNGZWF0dXJlUmVuYW1lZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lIlIKHkZlYXR1cmVEZXNjcmlwdGlvbkNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uIlYKH0ZlYXR1cmVPZmZWYXJpYXRpb25DaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEiMKDW9mZl92YXJpYXRpb24YAiABKAlSDG9mZlZhcmlhdGlvbiJoChpGZWF0dXJlVmFyaWF0aW9uQWRkZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSOgoJdmFyaWF0aW9uGAIgASgLMhwuYnVja2V0ZWVyLmZlYXR1cmUuVmFyaWF0aW9uUgl2YXJpYXRpb24iUQocRmVhdHVyZVZhcmlhdGlvblJlbW92ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSIQoMdmFyaWF0aW9uX2lkGAIgASgJUgt2YXJpYXRpb25JZCJhChpWYXJpYXRpb25WYWx1ZUNoYW5nZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSDgoCaWQYAiABKAlSAmlkEhQKBXZhbHVlGAMgASgJUgV2YWx1ZSJeChlWYXJpYXRpb25OYW1lQ2hhbmdlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIOCgJpZBgCIAEoCVICaWQSEgoEbmFtZRgDIAEoCVIEbmFtZSJzCiBWYXJpYXRpb25EZXNjcmlwdGlvbkNoYW5nZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSDgoCaWQYAiABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbiJcChdWYXJpYXRpb25Vc2VyQWRkZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSDgoCaWQYAiABKAlSAmlkEhIKBHVzZXIYAyABKAlSBHVzZXIiXgoZVmFyaWF0aW9uVXNlclJlbW92ZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSDgoCaWQYAiABKAlSAmlkEhIKBHVzZXIYAyABKAlSBHVzZXIiVAoVRmVhdHVyZVJ1bGVBZGRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIrCgRydWxlGAIgASgLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIEcnVsZSKRAQoeRmVhdHVyZUNoYW5nZVJ1bGVTdHJhdGVneUV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSNwoIc3RyYXRlZ3kYAyABKAsyGy5idWNrZXRlZXIuZmVhdHVyZS5TdHJhdGVneVIIc3RyYXRlZ3kiWQodRmVhdHVyZVJ1bGVzT3JkZXJDaGFuZ2VkRXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhkKCHJ1bGVfaWRzGAIgAygJUgdydWxlSWRzIkIKF0ZlYXR1cmVSdWxlRGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQimAEKIEZlYXR1cmVGaXhlZFN0cmF0ZWd5Q2hhbmdlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSPAoIc3RyYXRlZ3kYAyABKAsyIC5idWNrZXRlZXIuZmVhdHVyZS5GaXhlZFN0cmF0ZWd5UghzdHJhdGVneSKcAQoiRmVhdHVyZVJvbGxvdXRTdHJhdGVneUNoYW5nZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEj4KCHN0cmF0ZWd5GAMgASgLMiIuYnVja2V0ZWVyLmZlYXR1cmUuUm9sbG91dFN0cmF0ZWd5UghzdHJhdGVneSKBAQoUUnVsZUNsYXVzZUFkZGVkRXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIxCgZjbGF1c2UYAyABKAsyGS5idWNrZXRlZXIuZmVhdHVyZS5DbGF1c2VSBmNsYXVzZSJgChZSdWxlQ2xhdXNlRGVsZXRlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSDgoCaWQYAyABKAlSAmlkIoMBChtDbGF1c2VBdHRyaWJ1dGVDaGFuZ2VkRXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIOCgJpZBgDIAEoCVICaWQSHAoJYXR0cmlidXRlGAQgASgJUglhdHRyaWJ1dGUipAEKGkNsYXVzZU9wZXJhdG9yQ2hhbmdlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSDgoCaWQYAyABKAlSAmlkEj4KCG9wZXJhdG9yGAQgASgOMiIuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlLk9wZXJhdG9yUghvcGVyYXRvciJ1ChVDbGF1c2VWYWx1ZUFkZGVkRXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIOCgJpZBgDIAEoCVICaWQSFAoFdmFsdWUYBCABKAlSBXZhbHVlIncKF0NsYXVzZVZhbHVlUmVtb3ZlZEV2ZW50Eh0KCmZlYXR1cmVfaWQYASABKAlSCWZlYXR1cmVJZBIXCgdydWxlX2lkGAIgASgJUgZydWxlSWQSDgoCaWQYAyABKAlSAmlkEhQKBXZhbHVlGAQgASgJUgV2YWx1ZSJtCiJGZWF0dXJlRGVmYXVsdFN0cmF0ZWd5Q2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBI3CghzdHJhdGVneRgCIAEoCzIbLmJ1Y2tldGVlci5mZWF0dXJlLlN0cmF0ZWd5UghzdHJhdGVneSI4ChRGZWF0dXJlVGFnQWRkZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEAoDdGFnGAIgASgJUgN0YWciOgoWRmVhdHVyZVRhZ1JlbW92ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEAoDdGFnGAIgASgJUgN0YWciSgoeRmVhdHVyZVZlcnNpb25JbmNyZW1lbnRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIYCgd2ZXJzaW9uGAIgASgFUgd2ZXJzaW9uIrUEChJGZWF0dXJlQ2xvbmVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEjwKCnZhcmlhdGlvbnMYBCADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSMwoHdGFyZ2V0cxgFIAMoCzIZLmJ1Y2tldGVlci5mZWF0dXJlLlRhcmdldFIHdGFyZ2V0cxItCgVydWxlcxgGIAMoCzIXLmJ1Y2tldGVlci5mZWF0dXJlLlJ1bGVSBXJ1bGVzEkYKEGRlZmF1bHRfc3RyYXRlZ3kYByABKAsyGy5idWNrZXRlZXIuZmVhdHVyZS5TdHJhdGVneVIPZGVmYXVsdFN0cmF0ZWd5EiMKDW9mZl92YXJpYXRpb24YCCABKAlSDG9mZlZhcmlhdGlvbhISCgR0YWdzGAkgAygJUgR0YWdzEh4KCm1haW50YWluZXIYCiABKAlSCm1haW50YWluZXISTwoOdmFyaWF0aW9uX3R5cGUYCyABKA4yKC5idWNrZXRlZXIuZmVhdHVyZS5GZWF0dXJlLlZhcmlhdGlvblR5cGVSDXZhcmlhdGlvblR5cGUSRQoNcHJlcmVxdWlzaXRlcxgMIAMoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVINcHJlcmVxdWlzaXRlcyJECh1GZWF0dXJlU2FtcGxpbmdTZWVkUmVzZXRFdmVudBIjCg1zYW1wbGluZ19zZWVkGAEgASgJUgxzYW1wbGluZ1NlZWQihAIKEEdvYWxDcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEhgKB2RlbGV0ZWQYBCABKAhSB2RlbGV0ZWQSHQoKY3JlYXRlZF9hdBgFIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYBiABKANSCXVwZGF0ZWRBdBJSCg9jb25uZWN0aW9uX3R5cGUYByABKA4yKS5idWNrZXRlZXIuZXhwZXJpbWVudC5Hb2FsLkNvbm5lY3Rpb25UeXBlUg5jb25uZWN0aW9uVHlwZSKUAQoQR29hbFVwZGF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSMAoEbmFtZRgCIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIEbmFtZRI+CgtkZXNjcmlwdGlvbhgDIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVILZGVzY3JpcHRpb24iNgoQR29hbFJlbmFtZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZSJPChtHb2FsRGVzY3JpcHRpb25DaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbiIjChFHb2FsQXJjaGl2ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiIgoQR29hbERlbGV0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQi8wMKFkV4cGVyaW1lbnRDcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBInCg9mZWF0dXJlX3ZlcnNpb24YAyABKAVSDmZlYXR1cmVWZXJzaW9uEjwKCnZhcmlhdGlvbnMYBCADKAsyHC5idWNrZXRlZXIuZmVhdHVyZS5WYXJpYXRpb25SCnZhcmlhdGlvbnMSGwoHZ29hbF9pZBgFIAEoCUICGAFSBmdvYWxJZBIZCghzdGFydF9hdBgGIAEoA1IHc3RhcnRBdBIXCgdzdG9wX2F0GAcgASgDUgZzdG9wQXQSGAoHc3RvcHBlZBgIIAEoCFIHc3RvcHBlZBIdCgpzdG9wcGVkX2F0GAkgASgDUglzdG9wcGVkQXQSHQoKY3JlYXRlZF9hdBgKIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCyABKANSCXVwZGF0ZWRBdBIZCghnb2FsX2lkcxgMIAMoCVIHZ29hbElkcxISCgRuYW1lGA0gASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGA4gASgJUgtkZXNjcmlwdGlvbhIqChFiYXNlX3ZhcmlhdGlvbl9pZBgPIAEoCVIPYmFzZVZhcmlhdGlvbklkIkcKFkV4cGVyaW1lbnRTdG9wcGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEh0KCnN0b3BwZWRfYXQYAiABKANSCXN0b3BwZWRBdCIpChdFeHBlcmltZW50QXJjaGl2ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiKAoWRXhwZXJpbWVudERlbGV0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiSgodRXhwZXJpbWVudFN0YXJ0QXRDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhkKCHN0YXJ0X2F0GAIgASgDUgdzdGFydEF0IkcKHEV4cGVyaW1lbnRTdG9wQXRDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhcKB3N0b3BfYXQYAiABKANSBnN0b3BBdCJiChxFeHBlcmltZW50UGVyaW9kQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIZCghzdGFydF9hdBgCIAEoA1IHc3RhcnRBdBIXCgdzdG9wX2F0GAMgASgDUgZzdG9wQXQiQAoaRXhwZXJpbWVudE5hbWVDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiVQohRXhwZXJpbWVudERlc2NyaXB0aW9uQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24i0wEKFkV4cGVyaW1lbnRVcGRhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEhkKCHN0YXJ0X2F0GAQgASgDUgdzdGFydEF0EhcKB3N0b3BfYXQYBSABKANSBnN0b3BBdBI/CgZzdGF0dXMYBiABKA4yJy5idWNrZXRlZXIuZXhwZXJpbWVudC5FeHBlcmltZW50LlN0YXR1c1IGc3RhdHVzIhgKFkV4cGVyaW1lbnRTdGFydGVkRXZlbnQiGQoXRXhwZXJpbWVudEZpbmlzaGVkRXZlbnQikgQKFUFjY291bnRWMkNyZWF0ZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSEgoEbmFtZRgCIAEoCVIEbmFtZRIoChBhdmF0YXJfaW1hZ2VfdXJsGAMgASgJUg5hdmF0YXJJbWFnZVVybBInCg9vcmdhbml6YXRpb25faWQYBCABKAlSDm9yZ2FuaXphdGlvbklkElsKEW9yZ2FuaXphdGlvbl9yb2xlGAUgASgOMi4uYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLlJvbGUuT3JnYW5pemF0aW9uUhBvcmdhbml6YXRpb25Sb2xlElkKEWVudmlyb25tZW50X3JvbGVzGAYgAygLMiwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLkVudmlyb25tZW50Um9sZVIQZW52aXJvbm1lbnRSb2xlcxIaCghkaXNhYmxlZBgHIAEoCFIIZGlzYWJsZWQSHQoKY3JlYXRlZF9hdBgIIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYCSABKANSCXVwZGF0ZWRBdBIdCgpmaXJzdF9uYW1lGAogASgJUglmaXJzdE5hbWUSGwoJbGFzdF9uYW1lGAsgASgJUghsYXN0TmFtZRIaCghsYW5ndWFnZRgMIAEoCVIIbGFuZ3VhZ2USEgoEdGFncxgNIAMoCVIEdGFncyJWChVBY2NvdW50VjJVcGRhdGVkRXZlbnQSFAoFZW1haWwYASABKAlSBWVtYWlsEicKD29yZ2FuaXphdGlvbl9pZBgCIAEoCVIOb3JnYW5pemF0aW9uSWQiRQoZQWNjb3VudFYyTmFtZUNoYW5nZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSEgoEbmFtZRgCIAEoCVIEbmFtZSJlCiNBY2NvdW50VjJBdmF0YXJJbWFnZVVSTENoYW5nZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSKAoQYXZhdGFyX2ltYWdlX3VybBgCIAEoCVIOYXZhdGFySW1hZ2VVcmwiRQoZQWNjb3VudFYyVGFnc0NoYW5nZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSEgoEdGFncxgCIAMoCVIEdGFncyKaAQolQWNjb3VudFYyT3JnYW5pemF0aW9uUm9sZUNoYW5nZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSWwoRb3JnYW5pemF0aW9uX3JvbGUYAiABKA4yLi5idWNrZXRlZXIuYWNjb3VudC5BY2NvdW50VjIuUm9sZS5Pcmdhbml6YXRpb25SEG9yZ2FuaXphdGlvblJvbGUimAEKJUFjY291bnRWMkVudmlyb25tZW50Um9sZXNDaGFuZ2VkRXZlbnQSFAoFZW1haWwYASABKAlSBWVtYWlsElkKEWVudmlyb25tZW50X3JvbGVzGAIgAygLMiwuYnVja2V0ZWVyLmFjY291bnQuQWNjb3VudFYyLkVudmlyb25tZW50Um9sZVIQZW52aXJvbm1lbnRSb2xlcyItChVBY2NvdW50VjJFbmFibGVkRXZlbnQSFAoFZW1haWwYASABKAlSBWVtYWlsIi4KFkFjY291bnRWMkRpc2FibGVkRXZlbnQSFAoFZW1haWwYASABKAlSBWVtYWlsIi0KFUFjY291bnRWMkRlbGV0ZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwi1wEKGFNlYXJjaEZpbHRlckNyZWF0ZWRFdmVudBISCgROYW1lGAEgASgJUgROYW1lEhQKBVF1ZXJ5GAIgASgJUgVRdWVyeRJDCgpUYXJnZXRUeXBlGAMgASgOMiMuYnVja2V0ZWVyLmFjY291bnQuRmlsdGVyVGFyZ2V0VHlwZVIKVGFyZ2V0VHlwZRIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZBIlCg5kZWZhdWx0X2ZpbHRlchgFIAEoCFINZGVmYXVsdEZpbHRlciJCChxTZWFyY2hGaWx0ZXJOYW1lQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgROYW1lGAIgASgJUgROYW1lIkUKHVNlYXJjaEZpbHRlclF1ZXJ5Q2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIUCgVRdWVyeRgCIAEoCVIFUXVlcnkiWAofU2VhcmNoRmlsdGVyRGVmYXVsdENoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSJQoOZGVmYXVsdF9maWx0ZXIYAiABKAhSDWRlZmF1bHRGaWx0ZXIiKgoYU2VhcmNoRmlsdGVyRGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCL/AQoSQVBJS2V5Q3JlYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEjIKBHJvbGUYAyABKA4yHi5idWNrZXRlZXIuYWNjb3VudC5BUElLZXkuUm9sZVIEcm9sZRIaCghkaXNhYmxlZBgEIAEoCFIIZGlzYWJsZWQSHQoKY3JlYXRlZF9hdBgFIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYBiABKANSCXVwZGF0ZWRBdBIeCgptYWludGFpbmVyGAcgASgJUgptYWludGFpbmVyEhcKB2FwaV9rZXkYCCABKAlSBmFwaUtleSIkChJBUElLZXlDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkIjwKFkFQSUtleU5hbWVDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiJAoSQVBJS2V5RW5hYmxlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCIlChNBUElLZXlEaXNhYmxlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCJbChNTZWdtZW50Q3JlYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbiIlChNTZWdtZW50RGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCKXAQoTU2VnbWVudFVwZGF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSMAoEbmFtZRgCIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIEbmFtZRI+CgtkZXNjcmlwdGlvbhgDIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVILZGVzY3JpcHRpb24iPQoXU2VnbWVudE5hbWVDaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiUgoeU2VnbWVudERlc2NyaXB0aW9uQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24iVAoVU2VnbWVudFJ1bGVBZGRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIrCgRydWxlGAIgASgLMhcuYnVja2V0ZWVyLmZlYXR1cmUuUnVsZVIEcnVsZSJCChdTZWdtZW50UnVsZURlbGV0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkIogBChtTZWdtZW50UnVsZUNsYXVzZUFkZGVkRXZlbnQSHQoKc2VnbWVudF9pZBgBIAEoCVIJc2VnbWVudElkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIxCgZjbGF1c2UYAyABKAsyGS5idWNrZXRlZXIuZmVhdHVyZS5DbGF1c2VSBmNsYXVzZSJ0Ch1TZWdtZW50UnVsZUNsYXVzZURlbGV0ZWRFdmVudBIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEhsKCWNsYXVzZV9pZBgDIAEoCVIIY2xhdXNlSWQilwEKIlNlZ21lbnRDbGF1c2VBdHRyaWJ1dGVDaGFuZ2VkRXZlbnQSHQoKc2VnbWVudF9pZBgBIAEoCVIJc2VnbWVudElkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIbCgljbGF1c2VfaWQYAyABKAlSCGNsYXVzZUlkEhwKCWF0dHJpYnV0ZRgEIAEoCVIJYXR0cmlidXRlIrgBCiFTZWdtZW50Q2xhdXNlT3BlcmF0b3JDaGFuZ2VkRXZlbnQSHQoKc2VnbWVudF9pZBgBIAEoCVIJc2VnbWVudElkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIbCgljbGF1c2VfaWQYAyABKAlSCGNsYXVzZUlkEj4KCG9wZXJhdG9yGAQgASgOMiIuYnVja2V0ZWVyLmZlYXR1cmUuQ2xhdXNlLk9wZXJhdG9yUghvcGVyYXRvciKJAQocU2VnbWVudENsYXVzZVZhbHVlQWRkZWRFdmVudBIdCgpzZWdtZW50X2lkGAEgASgJUglzZWdtZW50SWQSFwoHcnVsZV9pZBgCIAEoCVIGcnVsZUlkEhsKCWNsYXVzZV9pZBgDIAEoCVIIY2xhdXNlSWQSFAoFdmFsdWUYBCABKAlSBXZhbHVlIosBCh5TZWdtZW50Q2xhdXNlVmFsdWVSZW1vdmVkRXZlbnQSHQoKc2VnbWVudF9pZBgBIAEoCVIJc2VnbWVudElkEhcKB3J1bGVfaWQYAiABKAlSBnJ1bGVJZBIbCgljbGF1c2VfaWQYAyABKAlSCGNsYXVzZUlkEhQKBXZhbHVlGAQgASgJUgV2YWx1ZSKNAQoVU2VnbWVudFVzZXJBZGRlZEV2ZW50Eh0KCnNlZ21lbnRfaWQYASABKAlSCXNlZ21lbnRJZBIZCgh1c2VyX2lkcxgCIAMoCVIHdXNlcklkcxI6CgVzdGF0ZRgDIAEoDjIkLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnRVc2VyLlN0YXRlUgVzdGF0ZSKPAQoXU2VnbWVudFVzZXJEZWxldGVkRXZlbnQSHQoKc2VnbWVudF9pZBgBIAEoCVIJc2VnbWVudElkEhkKCHVzZXJfaWRzGAIgAygJUgd1c2VySWRzEjoKBXN0YXRlGAMgASgOMiQuYnVja2V0ZWVyLmZlYXR1cmUuU2VnbWVudFVzZXIuU3RhdGVSBXN0YXRlIrMBChtTZWdtZW50QnVsa1VwbG9hZFVzZXJzRXZlbnQSHQoKc2VnbWVudF9pZBgBIAEoCVIJc2VnbWVudElkEjkKBnN0YXR1cxgCIAEoDjIhLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnQuU3RhdHVzUgZzdGF0dXMSOgoFc3RhdGUYAyABKA4yJC5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlci5TdGF0ZVIFc3RhdGUi1gEKKFNlZ21lbnRCdWxrVXBsb2FkVXNlcnNTdGF0dXNDaGFuZ2VkRXZlbnQSHQoKc2VnbWVudF9pZBgBIAEoCVIJc2VnbWVudElkEjkKBnN0YXR1cxgCIAEoDjIhLmJ1Y2tldGVlci5mZWF0dXJlLlNlZ21lbnQuU3RhdHVzUgZzdGF0dXMSOgoFc3RhdGUYAyABKA4yJC5idWNrZXRlZXIuZmVhdHVyZS5TZWdtZW50VXNlci5TdGF0ZVIFc3RhdGUSFAoFY291bnQYBCABKANSBWNvdW50IvQBChdFbnZpcm9ubWVudENyZWF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHAoJbmFtZXNwYWNlGAIgASgJUgluYW1lc3BhY2USEgoEbmFtZRgDIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgEIAEoCVILZGVzY3JpcHRpb24SGAoHZGVsZXRlZBgFIAEoCFIHZGVsZXRlZBIdCgpjcmVhdGVkX2F0GAYgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgHIAEoA1IJdXBkYXRlZEF0Eh0KCnByb2plY3RfaWQYCCABKAlSCXByb2plY3RJZCI9ChdFbnZpcm9ubWVudFJlbmFtZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZSJWCiJFbnZpcm9ubWVudERlc2NyaXB0aW9uQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24iRwoXRW52aXJvbm1lbnREZWxldGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhwKCW5hbWVzcGFjZRgCIAEoCVIJbmFtZXNwYWNlIp4CChlFbnZpcm9ubWVudFYyQ3JlYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEhkKCHVybF9jb2RlGAMgASgJUgd1cmxDb2RlEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbhIdCgpwcm9qZWN0X2lkGAUgASgJUglwcm9qZWN0SWQSGgoIYXJjaGl2ZWQYBiABKAhSCGFyY2hpdmVkEh0KCmNyZWF0ZWRfYXQYByABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAggASgDUgl1cGRhdGVkQXQSJwoPcmVxdWlyZV9jb21tZW50GAkgASgIUg5yZXF1aXJlQ29tbWVudCKAAQoZRW52aXJvbm1lbnRWMlJlbmFtZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHQoKcHJvamVjdF9pZBgCIAEoCVIJcHJvamVjdElkEhkKCG9sZF9uYW1lGAMgASgJUgdvbGROYW1lEhkKCG5ld19uYW1lGAQgASgJUgduZXdOYW1lIrsBCiRFbnZpcm9ubWVudFYyRGVzY3JpcHRpb25DaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSHQoKcHJvamVjdF9pZBgDIAEoCVIJcHJvamVjdElkEicKD29sZF9kZXNjcmlwdGlvbhgEIAEoCVIOb2xkRGVzY3JpcHRpb24SJwoPbmV3X2Rlc2NyaXB0aW9uGAUgASgJUg5uZXdEZXNjcmlwdGlvbiKVAQonRW52aXJvbm1lbnRWMlJlcXVpcmVDb21tZW50Q2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEh0KCnByb2plY3RfaWQYAyABKAlSCXByb2plY3RJZBInCg9yZXF1aXJlX2NvbW1lbnQYBCABKAhSDnJlcXVpcmVDb21tZW50Il8KGkVudmlyb25tZW50VjJBcmNoaXZlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEh0KCnByb2plY3RfaWQYAyABKAlSCXByb2plY3RJZCJhChxFbnZpcm9ubWVudFYyVW5hcmNoaXZlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lEh0KCnByb2plY3RfaWQYAyABKAlSCXByb2plY3RJZCKpAgoXQXV0b09wc1J1bGVDcmVhdGVkRXZlbnQSHQoKZmVhdHVyZV9pZBgBIAEoCVIJZmVhdHVyZUlkEjUKCG9wc190eXBlGAIgASgOMhouYnVja2V0ZWVyLmF1dG9vcHMuT3BzVHlwZVIHb3BzVHlwZRIzCgdjbGF1c2VzGAMgAygLMhkuYnVja2V0ZWVyLmF1dG9vcHMuQ2xhdXNlUgdjbGF1c2VzEh0KCmNyZWF0ZWRfYXQYBSABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAYgASgDUgl1cGRhdGVkQXQSPwoKb3BzX3N0YXR1cxgHIAEoDjIgLmJ1Y2tldGVlci5hdXRvb3BzLkF1dG9PcHNTdGF0dXNSCW9wc1N0YXR1c0oECAQQBSIZChdBdXRvT3BzUnVsZVN0b3BwZWRFdmVudCIZChdBdXRvT3BzUnVsZURlbGV0ZWRFdmVudCJXCh5BdXRvT3BzUnVsZU9wc1R5cGVDaGFuZ2VkRXZlbnQSNQoIb3BzX3R5cGUYASABKA4yGi5idWNrZXRlZXIuYXV0b29wcy5PcHNUeXBlUgdvcHNUeXBlIiQKIkF1dG9PcHNSdWxlVHJpZ2dlcmVkQXRDaGFuZ2VkRXZlbnQiYwogQXV0b09wc1J1bGVPcHNTdGF0dXNDaGFuZ2VkRXZlbnQSPwoKb3BzX3N0YXR1cxgBIAEoDjIgLmJ1Y2tldGVlci5hdXRvb3BzLkF1dG9PcHNTdGF0dXNSCW9wc1N0YXR1cyKVAQocT3BzRXZlbnRSYXRlQ2xhdXNlQWRkZWRFdmVudBIbCgljbGF1c2VfaWQYASABKAlSCGNsYXVzZUlkElgKFW9wc19ldmVudF9yYXRlX2NsYXVzZRgCIAEoCzIlLmJ1Y2tldGVlci5hdXRvb3BzLk9wc0V2ZW50UmF0ZUNsYXVzZVISb3BzRXZlbnRSYXRlQ2xhdXNlIpcBCh5PcHNFdmVudFJhdGVDbGF1c2VDaGFuZ2VkRXZlbnQSGwoJY2xhdXNlX2lkGAEgASgJUghjbGF1c2VJZBJYChVvcHNfZXZlbnRfcmF0ZV9jbGF1c2UYAiABKAsyJS5idWNrZXRlZXIuYXV0b29wcy5PcHNFdmVudFJhdGVDbGF1c2VSEm9wc0V2ZW50UmF0ZUNsYXVzZSI8Ch1BdXRvT3BzUnVsZUNsYXVzZURlbGV0ZWRFdmVudBIbCgljbGF1c2VfaWQYASABKAlSCGNsYXVzZUlkIoMBChhEYXRldGltZUNsYXVzZUFkZGVkRXZlbnQSGwoJY2xhdXNlX2lkGAEgASgJUghjbGF1c2VJZBJKCg9kYXRldGltZV9jbGF1c2UYAiABKAsyIS5idWNrZXRlZXIuYXV0b29wcy5EYXRldGltZUNsYXVzZVIOZGF0ZXRpbWVDbGF1c2UihQEKGkRhdGV0aW1lQ2xhdXNlQ2hhbmdlZEV2ZW50EhsKCWNsYXVzZV9pZBgBIAEoCVIIY2xhdXNlSWQSSgoPZGF0ZXRpbWVfY2xhdXNlGAIgASgLMiEuYnVja2V0ZWVyLmF1dG9vcHMuRGF0ZXRpbWVDbGF1c2VSDmRhdGV0aW1lQ2xhdXNlInAKEFB1c2hDcmVhdGVkRXZlbnQSLgoTZmNtX3NlcnZpY2VfYWNjb3VudBgBIAEoCVIRZmNtU2VydmljZUFjY291bnQSEgoEdGFncxgDIAMoCVIEdGFncxISCgRuYW1lGAQgASgJUgRuYW1lSgQIAhADIhIKEFB1c2hEZWxldGVkRXZlbnQiKAoSUHVzaFRhZ3NBZGRlZEV2ZW50EhIKBHRhZ3MYAiADKAlSBHRhZ3MiKgoUUHVzaFRhZ3NEZWxldGVkRXZlbnQSEgoEdGFncxgCIAMoCVIEdGFncyImChBQdXNoUmVuYW1lZEV2ZW50EhIKBG5hbWUYAiABKAlSBG5hbWUiKgoUUHVzaFRhZ3NVcGRhdGVkRXZlbnQSEgoEdGFncxgCIAMoCVIEdGFncyJYChBQdXNoVXBkYXRlZEV2ZW50EjAKBG5hbWUYASABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWVSBG5hbWUSEgoEdGFncxgCIAMoCVIEdGFncyLvAQoYU3Vic2NyaXB0aW9uQ3JlYXRlZEV2ZW50ElIKDHNvdXJjZV90eXBlcxgBIAMoDjIvLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uU3Vic2NyaXB0aW9uLlNvdXJjZVR5cGVSC3NvdXJjZVR5cGVzEj8KCXJlY2lwaWVudBgCIAEoCzIhLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uUmVjaXBpZW50UglyZWNpcGllbnQSEgoEbmFtZRgDIAEoCVIEbmFtZRIqChFmZWF0dXJlX2ZsYWdfdGFncxgEIAMoCVIPZmVhdHVyZUZsYWdUYWdzIhoKGFN1YnNjcmlwdGlvbkRlbGV0ZWRFdmVudCIaChhTdWJzY3JpcHRpb25FbmFibGVkRXZlbnQiGwoZU3Vic2NyaXB0aW9uRGlzYWJsZWRFdmVudCJ3CiFTdWJzY3JpcHRpb25Tb3VyY2VUeXBlc0FkZGVkRXZlbnQSUgoMc291cmNlX3R5cGVzGAEgAygOMi8uYnVja2V0ZWVyLm5vdGlmaWNhdGlvbi5TdWJzY3JpcHRpb24uU291cmNlVHlwZVILc291cmNlVHlwZXMieQojU3Vic2NyaXB0aW9uU291cmNlVHlwZXNEZWxldGVkRXZlbnQSUgoMc291cmNlX3R5cGVzGAEgAygOMi8uYnVja2V0ZWVyLm5vdGlmaWNhdGlvbi5TdWJzY3JpcHRpb24uU291cmNlVHlwZVILc291cmNlVHlwZXMiLgoYU3Vic2NyaXB0aW9uUmVuYW1lZEV2ZW50EhIKBG5hbWUYASABKAlSBG5hbWUiVQonU3Vic2NyaXB0aW9uRmVhdHVyZUZsYWdUYWdzVXBkYXRlZEV2ZW50EioKEWZlYXR1cmVfZmxhZ190YWdzGAEgAygJUg9mZWF0dXJlRmxhZ1RhZ3MilAIKGFN1YnNjcmlwdGlvblVwZGF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSMAoEbmFtZRgCIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZVIEbmFtZRJSCgxzb3VyY2VfdHlwZXMYAyADKA4yLy5idWNrZXRlZXIubm90aWZpY2F0aW9uLlN1YnNjcmlwdGlvbi5Tb3VyY2VUeXBlUgtzb3VyY2VUeXBlcxI2CghkaXNhYmxlZBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWVSCGRpc2FibGVkEioKEWZlYXR1cmVfZmxhZ190YWdzGAUgAygJUg9mZWF0dXJlRmxhZ1RhZ3MiyAEKHUFkbWluU3Vic2NyaXB0aW9uQ3JlYXRlZEV2ZW50ElIKDHNvdXJjZV90eXBlcxgBIAMoDjIvLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uU3Vic2NyaXB0aW9uLlNvdXJjZVR5cGVSC3NvdXJjZVR5cGVzEj8KCXJlY2lwaWVudBgCIAEoCzIhLmJ1Y2tldGVlci5ub3RpZmljYXRpb24uUmVjaXBpZW50UglyZWNpcGllbnQSEgoEbmFtZRgDIAEoCVIEbmFtZSIfCh1BZG1pblN1YnNjcmlwdGlvbkRlbGV0ZWRFdmVudCIfCh1BZG1pblN1YnNjcmlwdGlvbkVuYWJsZWRFdmVudCIgCh5BZG1pblN1YnNjcmlwdGlvbkRpc2FibGVkRXZlbnQifAomQWRtaW5TdWJzY3JpcHRpb25Tb3VyY2VUeXBlc0FkZGVkRXZlbnQSUgoMc291cmNlX3R5cGVzGAEgAygOMi8uYnVja2V0ZWVyLm5vdGlmaWNhdGlvbi5TdWJzY3JpcHRpb24uU291cmNlVHlwZVILc291cmNlVHlwZXMifgooQWRtaW5TdWJzY3JpcHRpb25Tb3VyY2VUeXBlc0RlbGV0ZWRFdmVudBJSCgxzb3VyY2VfdHlwZXMYASADKA4yLy5idWNrZXRlZXIubm90aWZpY2F0aW9uLlN1YnNjcmlwdGlvbi5Tb3VyY2VUeXBlUgtzb3VyY2VUeXBlcyIzCh1BZG1pblN1YnNjcmlwdGlvblJlbmFtZWRFdmVudBISCgRuYW1lGAEgASgJUgRuYW1lIosCChNQcm9qZWN0Q3JlYXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SGgoIZGlzYWJsZWQYAyABKAhSCGRpc2FibGVkEhQKBXRyaWFsGAQgASgIUgV0cmlhbBIjCg1jcmVhdG9yX2VtYWlsGAUgASgJUgxjcmVhdG9yRW1haWwSHQoKY3JlYXRlZF9hdBgGIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYByABKANSCXVwZGF0ZWRBdBISCgRuYW1lGAggASgJUgRuYW1lEhkKCHVybF9jb2RlGAkgASgJUgd1cmxDb2RlIlIKHlByb2plY3REZXNjcmlwdGlvbkNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uIjkKE1Byb2plY3RSZW5hbWVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUiJQoTUHJvamVjdEVuYWJsZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiJgoUUHJvamVjdERpc2FibGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIpACChhQcm9qZWN0VHJpYWxDcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhIaCghkaXNhYmxlZBgDIAEoCFIIZGlzYWJsZWQSFAoFdHJpYWwYBCABKAhSBXRyaWFsEiMKDWNyZWF0b3JfZW1haWwYBSABKAlSDGNyZWF0b3JFbWFpbBIdCgpjcmVhdGVkX2F0GAYgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgHIAEoA1IJdXBkYXRlZEF0EhIKBG5hbWUYCCABKAlSBG5hbWUSGQoIdXJsX2NvZGUYCSABKAlSB3VybENvZGUiLAoaUHJvamVjdFRyaWFsQ29udmVydGVkRXZlbnQSDgoCaWQYASABKAlSAmlkIl0KFlByZXJlcXVpc2l0ZUFkZGVkRXZlbnQSQwoMcHJlcmVxdWlzaXRlGAEgASgLMh8uYnVja2V0ZWVyLmZlYXR1cmUuUHJlcmVxdWlzaXRlUgxwcmVyZXF1aXNpdGUiaAohUHJlcmVxdWlzaXRlVmFyaWF0aW9uQ2hhbmdlZEV2ZW50EkMKDHByZXJlcXVpc2l0ZRgBIAEoCzIfLmJ1Y2tldGVlci5mZWF0dXJlLlByZXJlcXVpc2l0ZVIMcHJlcmVxdWlzaXRlIjkKGFByZXJlcXVpc2l0ZVJlbW92ZWRFdmVudBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQi+wEKHlByb2dyZXNzaXZlUm9sbG91dENyZWF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEiwKBmNsYXVzZRgDIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnlSBmNsYXVzZRIdCgpjcmVhdGVkX2F0GAQgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgFIAEoA1IJdXBkYXRlZEF0Ej4KBHR5cGUYBiABKA4yKi5idWNrZXRlZXIuYXV0b29wcy5Qcm9ncmVzc2l2ZVJvbGxvdXQuVHlwZVIEdHlwZSLlAQoeUHJvZ3Jlc3NpdmVSb2xsb3V0U3RvcHBlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBJECgZzdGF0dXMYAiABKA4yLC5idWNrZXRlZXIuYXV0b29wcy5Qcm9ncmVzc2l2ZVJvbGxvdXQuU3RhdHVzUgZzdGF0dXMSTgoKc3RvcHBlZF9ieRgDIAEoDjIvLmJ1Y2tldGVlci5hdXRvb3BzLlByb2dyZXNzaXZlUm9sbG91dC5TdG9wcGVkQnlSCXN0b3BwZWRCeRIdCgpzdG9wcGVkX2F0GAQgASgDUglzdG9wcGVkQXQiMAoeUHJvZ3Jlc3NpdmVSb2xsb3V0RGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCJUCjFQcm9ncmVzc2l2ZVJvbGxvdXRTY2hlZHVsZVRyaWdnZXJlZEF0Q2hhbmdlZEV2ZW50Eh8KC3NjaGVkdWxlX2lkGAEgASgJUgpzY2hlZHVsZUlkIqgCChhPcmdhbml6YXRpb25DcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSGQoIdXJsX2NvZGUYAyABKAlSB3VybENvZGUSIAoLZGVzY3JpcHRpb24YBCABKAlSC2Rlc2NyaXB0aW9uEhoKCGRpc2FibGVkGAUgASgIUghkaXNhYmxlZBIaCghhcmNoaXZlZBgGIAEoCFIIYXJjaGl2ZWQSFAoFdHJpYWwYByABKAhSBXRyaWFsEh0KCmNyZWF0ZWRfYXQYCCABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAkgASgDUgl1cGRhdGVkQXQSHwoLb3duZXJfZW1haWwYCiABKAlSCm93bmVyRW1haWwiVwojT3JnYW5pemF0aW9uRGVzY3JpcHRpb25DaGFuZ2VkRXZlbnQSDgoCaWQYASABKAlSAmlkEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbiJVCiJPcmdhbml6YXRpb25Pd25lckVtYWlsQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIfCgtvd25lcl9lbWFpbBgCIAEoCVIKb3duZXJFbWFpbCJCChxPcmdhbml6YXRpb25OYW1lQ2hhbmdlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBISCgRuYW1lGAIgASgJUgRuYW1lIioKGE9yZ2FuaXphdGlvbkVuYWJsZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiKwoZT3JnYW5pemF0aW9uRGlzYWJsZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiKwoZT3JnYW5pemF0aW9uQXJjaGl2ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQiLQobT3JnYW5pemF0aW9uVW5hcmNoaXZlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCIxCh9Pcmdhbml6YXRpb25UcmlhbENvbnZlcnRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZCLjAgoXRmxhZ1RyaWdnZXJDcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBI3CgR0eXBlGAQgASgOMiMuYnVja2V0ZWVyLmZlYXR1cmUuRmxhZ1RyaWdnZXIuVHlwZVIEdHlwZRI9CgZhY3Rpb24YBSABKA4yJS5idWNrZXRlZXIuZmVhdHVyZS5GbGFnVHJpZ2dlci5BY3Rpb25SBmFjdGlvbhIgCgtkZXNjcmlwdGlvbhgGIAEoCVILZGVzY3JpcHRpb24SFAoFdG9rZW4YByABKAlSBXRva2VuEh0KCmNyZWF0ZWRfYXQYCCABKANSCWNyZWF0ZWRBdBIdCgp1cGRhdGVkX2F0GAkgASgDUgl1cGRhdGVkQXQSJQoOZW52aXJvbm1lbnRfaWQYCiABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiiQEKFUZsYWdUcmlnZ2VyUmVzZXRFdmVudBIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEhQKBXRva2VuGAQgASgJUgV0b2tlbhIlCg5lbnZpcm9ubWVudF9pZBgFIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCKiAQoiRmxhZ1RyaWdnZXJEZXNjcmlwdGlvbkNoYW5nZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEiAKC2Rlc2NyaXB0aW9uGAQgASgJUgtkZXNjcmlwdGlvbhIlCg5lbnZpcm9ubWVudF9pZBgFIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCJ2ChhGbGFnVHJpZ2dlckRpc2FibGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBIlCg5lbnZpcm9ubWVudF9pZBgEIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCJ1ChdGbGFnVHJpZ2dlckVuYWJsZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEiUKDmVudmlyb25tZW50X2lkGAQgASgJUg1lbnZpcm9ubWVudElkSgQIAxAEInUKF0ZsYWdUcmlnZ2VyRGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIdCgpmZWF0dXJlX2lkGAIgASgJUglmZWF0dXJlSWQSJQoOZW52aXJvbm1lbnRfaWQYBCABKAlSDWVudmlyb25tZW50SWRKBAgDEAQiywEKHEZsYWdUcmlnZ2VyVXNhZ2VVcGRhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEh0KCmZlYXR1cmVfaWQYAiABKAlSCWZlYXR1cmVJZBIqChFsYXN0X3RyaWdnZXJlZF9hdBgEIAEoA1IPbGFzdFRyaWdnZXJlZEF0EiMKDXRyaWdnZXJfdGltZXMYBSABKAVSDHRyaWdnZXJUaW1lcxIlCg5lbnZpcm9ubWVudF9pZBgGIAEoCVINZW52aXJvbm1lbnRJZEoECAMQBCJVCh5BY2NvdW50VjJGaXJzdE5hbWVDaGFuZ2VkRXZlbnQSFAoFZW1haWwYASABKAlSBWVtYWlsEh0KCmZpcnN0X25hbWUYAiABKAlSCWZpcnN0TmFtZSJSCh1BY2NvdW50VjJMYXN0TmFtZUNoYW5nZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSGwoJbGFzdF9uYW1lGAIgASgJUghsYXN0TmFtZSJRCh1BY2NvdW50VjJMYW5ndWFnZUNoYW5nZWRFdmVudBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSGgoIbGFuZ3VhZ2UYAiABKAlSCGxhbmd1YWdlItoBCg9UYWdDcmVhdGVkRXZlbnQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSHQoKY3JlYXRlZF9hdBgDIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYBCABKANSCXVwZGF0ZWRBdBI+CgtlbnRpdHlfdHlwZRgFIAEoDjIdLmJ1Y2tldGVlci50YWcuVGFnLkVudGl0eVR5cGVSCmVudGl0eVR5cGUSJQoOZW52aXJvbm1lbnRfaWQYBiABKAlSDWVudmlyb25tZW50SWQiSAoPVGFnRGVsZXRlZEV2ZW50Eg4KAmlkGAEgASgJUgJpZBIlCg5lbnZpcm9ubWVudF9pZBgGIAEoCVINZW52aXJvbm1lbnRJZCLJBAoZQ29kZVJlZmVyZW5jZUNyZWF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEhsKCWZpbGVfcGF0aBgDIAEoCVIIZmlsZVBhdGgSHwoLbGluZV9udW1iZXIYBCABKAVSCmxpbmVOdW1iZXISIQoMY29kZV9zbmlwcGV0GAUgASgJUgtjb2RlU25pcHBldBIhCgxjb250ZW50X2hhc2gYBiABKAlSC2NvbnRlbnRIYXNoEhgKB2FsaWFzZXMYByADKAlSB2FsaWFzZXMSJwoPcmVwb3NpdG9yeV9uYW1lGAggASgJUg5yZXBvc2l0b3J5TmFtZRIpChByZXBvc2l0b3J5X293bmVyGAkgASgJUg9yZXBvc2l0b3J5T3duZXISWAoPcmVwb3NpdG9yeV90eXBlGAogASgOMi8uYnVja2V0ZWVyLmNvZGVyZWYuQ29kZVJlZmVyZW5jZS5SZXBvc2l0b3J5VHlwZVIOcmVwb3NpdG9yeVR5cGUSKwoRcmVwb3NpdG9yeV9icmFuY2gYCyABKAlSEHJlcG9zaXRvcnlCcmFuY2gSHwoLY29tbWl0X2hhc2gYDCABKAlSCmNvbW1pdEhhc2gSJQoOZW52aXJvbm1lbnRfaWQYDSABKAlSDWVudmlyb25tZW50SWQSHQoKY3JlYXRlZF9hdBgOIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYDyABKANSCXVwZGF0ZWRBdCLdAgoZQ29kZVJlZmVyZW5jZVVwZGF0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSGwoJZmlsZV9wYXRoGAIgASgJUghmaWxlUGF0aBIfCgtsaW5lX251bWJlchgDIAEoBVIKbGluZU51bWJlchIhCgxjb2RlX3NuaXBwZXQYBCABKAlSC2NvZGVTbmlwcGV0EiEKDGNvbnRlbnRfaGFzaBgFIAEoCVILY29udGVudEhhc2gSGAoHYWxpYXNlcxgGIAMoCVIHYWxpYXNlcxIrChFyZXBvc2l0b3J5X2JyYW5jaBgHIAEoCVIQcmVwb3NpdG9yeUJyYW5jaBIfCgtjb21taXRfaGFzaBgIIAEoCVIKY29tbWl0SGFzaBIlCg5lbnZpcm9ubWVudF9pZBgJIAEoCVINZW52aXJvbm1lbnRJZBIdCgp1cGRhdGVkX2F0GAogASgDUgl1cGRhdGVkQXQiUgoZQ29kZVJlZmVyZW5jZURlbGV0ZWRFdmVudBIOCgJpZBgBIAEoCVICaWQSJQoOZW52aXJvbm1lbnRfaWQYAiABKAlSDWVudmlyb25tZW50SWRCNlo0Z2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2V2ZW50L2RvbWFpbmIGcHJvdG8zCsoBCipwcm90by9ldmVudC9kb21haW4vbG9jYWxpemVkX21lc3NhZ2UucHJvdG8SFmJ1Y2tldGVlci5ldmVudC5kb21haW4iRAoQTG9jYWxpemVkTWVzc2FnZRIWCgZsb2NhbGUYASABKAlSBmxvY2FsZRIYCgdtZXNzYWdlGAIgASgJUgdtZXNzYWdlQjZaNGdpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9ldmVudC9kb21haW5iBnByb3RvMwr6BQodcHJvdG8vYXVkaXRsb2cvYXVkaXRsb2cucHJvdG8SEmJ1Y2tldGVlci5hdWRpdGxvZxoZZ29vZ2xlL3Byb3RvYnVmL2FueS5wcm90bxoecHJvdG8vZXZlbnQvZG9tYWluL2V2ZW50LnByb3RvGipwcm90by9ldmVudC9kb21haW4vbG9jYWxpemVkX21lc3NhZ2UucHJvdG8ioQQKCEF1ZGl0TG9nEg4KAmlkGAEgASgJUgJpZBIcCgl0aW1lc3RhbXAYAiABKANSCXRpbWVzdGFtcBJJCgtlbnRpdHlfdHlwZRgDIAEoDjIoLmJ1Y2tldGVlci5ldmVudC5kb21haW4uRXZlbnQuRW50aXR5VHlwZVIKZW50aXR5VHlwZRIbCgllbnRpdHlfaWQYBCABKAlSCGVudGl0eUlkEjYKBHR5cGUYBSABKA4yIi5idWNrZXRlZXIuZXZlbnQuZG9tYWluLkV2ZW50LlR5cGVSBHR5cGUSKgoFZXZlbnQYBiABKAsyFC5nb29nbGUucHJvdG9idWYuQW55UgVldmVudBI2CgZlZGl0b3IYByABKAsyHi5idWNrZXRlZXIuZXZlbnQuZG9tYWluLkVkaXRvclIGZWRpdG9yEjkKB29wdGlvbnMYCCABKAsyHy5idWNrZXRlZXIuZXZlbnQuZG9tYWluLk9wdGlvbnNSB29wdGlvbnMSVQoRbG9jYWxpemVkX21lc3NhZ2UYCSABKAsyKC5idWNrZXRlZXIuZXZlbnQuZG9tYWluLkxvY2FsaXplZE1lc3NhZ2VSEGxvY2FsaXplZE1lc3NhZ2USHwoLZW50aXR5X2RhdGEYCiABKAlSCmVudGl0eURhdGESMAoUcHJldmlvdXNfZW50aXR5X2RhdGEYCyABKAlSEnByZXZpb3VzRW50aXR5RGF0YUIyWjBnaXRodWIuY29tL2J1Y2tldGVlci1pby9idWNrZXRlZXIvcHJvdG8vYXVkaXRsb2diBnByb3RvMwqgEwoccHJvdG8vYXVkaXRsb2cvc2VydmljZS5wcm90bxISYnVja2V0ZWVyLmF1ZGl0bG9nGh5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8aHXByb3RvL2F1ZGl0bG9nL2F1ZGl0bG9nLnByb3RvIvwDChRMaXN0QXVkaXRMb2dzUmVxdWVzdBIbCglwYWdlX3NpemUYASABKANSCHBhZ2VTaXplEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEksKCG9yZGVyX2J5GAQgASgOMjAuYnVja2V0ZWVyLmF1ZGl0bG9nLkxpc3RBdWRpdExvZ3NSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSYAoPb3JkZXJfZGlyZWN0aW9uGAUgASgOMjcuYnVja2V0ZWVyLmF1ZGl0bG9nLkxpc3RBdWRpdExvZ3NSZXF1ZXN0Lk9yZGVyRGlyZWN0aW9uUg5vcmRlckRpcmVjdGlvbhIlCg5zZWFyY2hfa2V5d29yZBgGIAEoCVINc2VhcmNoS2V5d29yZBISCgRmcm9tGAcgASgDUgRmcm9tEg4KAnRvGAggASgDUgJ0bxI8CgtlbnRpdHlfdHlwZRgJIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlUgplbnRpdHlUeXBlEiUKDmVudmlyb25tZW50X2lkGAogASgJUg1lbnZpcm9ubWVudElkIiUKB09yZGVyQnkSCwoHREVGQVVMVBAAEg0KCVRJTUVTVEFNUBABIiMKDk9yZGVyRGlyZWN0aW9uEggKBERFU0MQABIHCgNBU0MQAUoECAMQBCKNAQoVTGlzdEF1ZGl0TG9nc1Jlc3BvbnNlEjsKCmF1ZGl0X2xvZ3MYASADKAsyHC5idWNrZXRlZXIuYXVkaXRsb2cuQXVkaXRMb2dSCWF1ZGl0TG9ncxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCLeAwoZTGlzdEFkbWluQXVkaXRMb2dzUmVxdWVzdBIbCglwYWdlX3NpemUYASABKANSCHBhZ2VTaXplEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yElAKCG9yZGVyX2J5GAMgASgOMjUuYnVja2V0ZWVyLmF1ZGl0bG9nLkxpc3RBZG1pbkF1ZGl0TG9nc1JlcXVlc3QuT3JkZXJCeVIHb3JkZXJCeRJlCg9vcmRlcl9kaXJlY3Rpb24YBCABKA4yPC5idWNrZXRlZXIuYXVkaXRsb2cuTGlzdEFkbWluQXVkaXRMb2dzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOc2VhcmNoX2tleXdvcmQYBSABKAlSDXNlYXJjaEtleXdvcmQSEgoEZnJvbRgGIAEoA1IEZnJvbRIOCgJ0bxgHIAEoA1ICdG8SPAoLZW50aXR5X3R5cGUYCCABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZVIKZW50aXR5VHlwZSIlCgdPcmRlckJ5EgsKB0RFRkFVTFQQABINCglUSU1FU1RBTVAQASIjCg5PcmRlckRpcmVjdGlvbhIICgRERVNDEAASBwoDQVNDEAEikgEKGkxpc3RBZG1pbkF1ZGl0TG9nc1Jlc3BvbnNlEjsKCmF1ZGl0X2xvZ3MYASADKAsyHC5idWNrZXRlZXIuYXVkaXRsb2cuQXVkaXRMb2dSCWF1ZGl0TG9ncxIWCgZjdXJzb3IYAiABKAlSBmN1cnNvchIfCgt0b3RhbF9jb3VudBgDIAEoA1IKdG90YWxDb3VudCLsAwoZTGlzdEZlYXR1cmVIaXN0b3J5UmVxdWVzdBIdCgpmZWF0dXJlX2lkGAEgASgJUglmZWF0dXJlSWQSGwoJcGFnZV9zaXplGAIgASgDUghwYWdlU2l6ZRIWCgZjdXJzb3IYAyABKAlSBmN1cnNvchJQCghvcmRlcl9ieRgFIAEoDjI1LmJ1Y2tldGVlci5hdWRpdGxvZy5MaXN0RmVhdHVyZUhpc3RvcnlSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSZQoPb3JkZXJfZGlyZWN0aW9uGAYgASgOMjwuYnVja2V0ZWVyLmF1ZGl0bG9nLkxpc3RGZWF0dXJlSGlzdG9yeVJlcXVlc3QuT3JkZXJEaXJlY3Rpb25SDm9yZGVyRGlyZWN0aW9uEiUKDnNlYXJjaF9rZXl3b3JkGAcgASgJUg1zZWFyY2hLZXl3b3JkEhIKBGZyb20YCCABKANSBGZyb20SDgoCdG8YCSABKANSAnRvEiUKDmVudmlyb25tZW50X2lkGAogASgJUg1lbnZpcm9ubWVudElkIiUKB09yZGVyQnkSCwoHREVGQVVMVBAAEg0KCVRJTUVTVEFNUBABIiMKDk9yZGVyRGlyZWN0aW9uEggKBERFU0MQABIHCgNBU0MQAUoECAQQBSKSAQoaTGlzdEZlYXR1cmVIaXN0b3J5UmVzcG9uc2USOwoKYXVkaXRfbG9ncxgBIAMoCzIcLmJ1Y2tldGVlci5hdWRpdGxvZy5BdWRpdExvZ1IJYXVkaXRMb2dzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEh8KC3RvdGFsX2NvdW50GAMgASgDUgp0b3RhbENvdW50MucCCg9BdWRpdExvZ1NlcnZpY2USZgoNTGlzdEF1ZGl0TG9ncxIoLmJ1Y2tldGVlci5hdWRpdGxvZy5MaXN0QXVkaXRMb2dzUmVxdWVzdBopLmJ1Y2tldGVlci5hdWRpdGxvZy5MaXN0QXVkaXRMb2dzUmVzcG9uc2UiABJ1ChJMaXN0QWRtaW5BdWRpdExvZ3MSLS5idWNrZXRlZXIuYXVkaXRsb2cuTGlzdEFkbWluQXVkaXRMb2dzUmVxdWVzdBouLmJ1Y2tldGVlci5hdWRpdGxvZy5MaXN0QWRtaW5BdWRpdExvZ3NSZXNwb25zZSIAEnUKEkxpc3RGZWF0dXJlSGlzdG9yeRItLmJ1Y2tldGVlci5hdWRpdGxvZy5MaXN0RmVhdHVyZUhpc3RvcnlSZXF1ZXN0Gi4uYnVja2V0ZWVyLmF1ZGl0bG9nLkxpc3RGZWF0dXJlSGlzdG9yeVJlc3BvbnNlIgBCMlowZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2F1ZGl0bG9nYgZwcm90bzM= + coderefDescriptor: CrcGCiJwcm90by9jb2RlcmVmL2NvZGVfcmVmZXJlbmNlLnByb3RvEhFidWNrZXRlZXIuY29kZXJlZiLCBQoNQ29kZVJlZmVyZW5jZRIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEhsKCWZpbGVfcGF0aBgDIAEoCVIIZmlsZVBhdGgSHwoLbGluZV9udW1iZXIYBCABKAVSCmxpbmVOdW1iZXISIQoMY29kZV9zbmlwcGV0GAUgASgJUgtjb2RlU25pcHBldBIhCgxjb250ZW50X2hhc2gYBiABKAlSC2NvbnRlbnRIYXNoEhgKB2FsaWFzZXMYByADKAlSB2FsaWFzZXMSJwoPcmVwb3NpdG9yeV9uYW1lGAggASgJUg5yZXBvc2l0b3J5TmFtZRIpChByZXBvc2l0b3J5X293bmVyGAkgASgJUg9yZXBvc2l0b3J5T3duZXISWAoPcmVwb3NpdG9yeV90eXBlGAogASgOMi8uYnVja2V0ZWVyLmNvZGVyZWYuQ29kZVJlZmVyZW5jZS5SZXBvc2l0b3J5VHlwZVIOcmVwb3NpdG9yeVR5cGUSKwoRcmVwb3NpdG9yeV9icmFuY2gYCyABKAlSEHJlcG9zaXRvcnlCcmFuY2gSHwoLY29tbWl0X2hhc2gYDCABKAlSCmNvbW1pdEhhc2gSJQoOZW52aXJvbm1lbnRfaWQYDSABKAlSDWVudmlyb25tZW50SWQSHQoKY3JlYXRlZF9hdBgOIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYDyABKANSCXVwZGF0ZWRBdBIdCgpzb3VyY2VfdXJsGBAgASgJUglzb3VyY2VVcmwiZAoOUmVwb3NpdG9yeVR5cGUSHwobUkVQT1NJVE9SWV9UWVBFX1VOU1BFQ0lGSUVEEAASCgoGR0lUSFVCEAESCgoGR0lUTEFCEAISDQoJQklUQlVDS0VUEAMSCgoGQ1VTVE9NEARCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2NvZGVyZWZiBnByb3RvMwqHBQoVZ29vZ2xlL2FwaS9odHRwLnByb3RvEgpnb29nbGUuYXBpInkKBEh0dHASKgoFcnVsZXMYASADKAsyFC5nb29nbGUuYXBpLkh0dHBSdWxlUgVydWxlcxJFCh9mdWxseV9kZWNvZGVfcmVzZXJ2ZWRfZXhwYW5zaW9uGAIgASgIUhxmdWxseURlY29kZVJlc2VydmVkRXhwYW5zaW9uIrUCCghIdHRwUnVsZRIaCghzZWxlY3RvchgBIAEoCVIIc2VsZWN0b3ISEgoDZ2V0GAIgASgJSABSA2dldBISCgNwdXQYAyABKAlIAFIDcHV0EhQKBHBvc3QYBCABKAlIAFIEcG9zdBIYCgZkZWxldGUYBSABKAlIAFIGZGVsZXRlEhYKBXBhdGNoGAYgASgJSABSBXBhdGNoEjcKBmN1c3RvbRgIIAEoCzIdLmdvb2dsZS5hcGkuQ3VzdG9tSHR0cFBhdHRlcm5IAFIGY3VzdG9tEhIKBGJvZHkYByABKAlSBGJvZHkSRQoTYWRkaXRpb25hbF9iaW5kaW5ncxgLIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSEmFkZGl0aW9uYWxCaW5kaW5nc0IJCgdwYXR0ZXJuIjsKEUN1c3RvbUh0dHBQYXR0ZXJuEhIKBGtpbmQYASABKAlSBGtpbmQSEgoEcGF0aBgCIAEoCVIEcGF0aEJqCg5jb20uZ29vZ2xlLmFwaUIJSHR0cFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25z+AEBogIER0FQSWIGcHJvdG8zCuFGCiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIk0KEUZpbGVEZXNjcmlwdG9yU2V0EjgKBGZpbGUYASADKAsyJC5nb29nbGUucHJvdG9idWYuRmlsZURlc2NyaXB0b3JQcm90b1IEZmlsZSL+BAoTRmlsZURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEhgKB3BhY2thZ2UYAiABKAlSB3BhY2thZ2USHgoKZGVwZW5kZW5jeRgDIAMoCVIKZGVwZW5kZW5jeRIrChFwdWJsaWNfZGVwZW5kZW5jeRgKIAMoBVIQcHVibGljRGVwZW5kZW5jeRInCg93ZWFrX2RlcGVuZGVuY3kYCyADKAVSDndlYWtEZXBlbmRlbmN5EkMKDG1lc3NhZ2VfdHlwZRgEIAMoCzIgLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG9SC21lc3NhZ2VUeXBlEkEKCWVudW1fdHlwZRgFIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvUghlbnVtVHlwZRJBCgdzZXJ2aWNlGAYgAygLMicuZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VEZXNjcmlwdG9yUHJvdG9SB3NlcnZpY2USQwoJZXh0ZW5zaW9uGAcgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvUglleHRlbnNpb24SNgoHb3B0aW9ucxgIIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9uc1IHb3B0aW9ucxJJChBzb3VyY2VfY29kZV9pbmZvGAkgASgLMh8uZ29vZ2xlLnByb3RvYnVmLlNvdXJjZUNvZGVJbmZvUg5zb3VyY2VDb2RlSW5mbxIWCgZzeW50YXgYDCABKAlSBnN5bnRheBIYCgdlZGl0aW9uGA0gASgJUgdlZGl0aW9uIrkGCg9EZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRI7CgVmaWVsZBgCIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90b1IFZmllbGQSQwoJZXh0ZW5zaW9uGAYgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvUglleHRlbnNpb24SQQoLbmVzdGVkX3R5cGUYAyADKAsyIC5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvUgpuZXN0ZWRUeXBlEkEKCWVudW1fdHlwZRgEIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvUghlbnVtVHlwZRJYCg9leHRlbnNpb25fcmFuZ2UYBSADKAsyLy5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvLkV4dGVuc2lvblJhbmdlUg5leHRlbnNpb25SYW5nZRJECgpvbmVvZl9kZWNsGAggAygLMiUuZ29vZ2xlLnByb3RvYnVmLk9uZW9mRGVzY3JpcHRvclByb3RvUglvbmVvZkRlY2wSOQoHb3B0aW9ucxgHIAEoCzIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9uc1IHb3B0aW9ucxJVCg5yZXNlcnZlZF9yYW5nZRgJIAMoCzIuLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG8uUmVzZXJ2ZWRSYW5nZVINcmVzZXJ2ZWRSYW5nZRIjCg1yZXNlcnZlZF9uYW1lGAogAygJUgxyZXNlcnZlZE5hbWUaegoORXh0ZW5zaW9uUmFuZ2USFAoFc3RhcnQYASABKAVSBXN0YXJ0EhAKA2VuZBgCIAEoBVIDZW5kEkAKB29wdGlvbnMYAyABKAsyJi5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2VPcHRpb25zUgdvcHRpb25zGjcKDVJlc2VydmVkUmFuZ2USFAoFc3RhcnQYASABKAVSBXN0YXJ0EhAKA2VuZBgCIAEoBVIDZW5kIq0EChVFeHRlbnNpb25SYW5nZU9wdGlvbnMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24SWQoLZGVjbGFyYXRpb24YAiADKAsyMi5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2VPcHRpb25zLkRlY2xhcmF0aW9uQgOIAQJSC2RlY2xhcmF0aW9uEmgKDHZlcmlmaWNhdGlvbhgDIAEoDjI4Lmdvb2dsZS5wcm90b2J1Zi5FeHRlbnNpb25SYW5nZU9wdGlvbnMuVmVyaWZpY2F0aW9uU3RhdGU6ClVOVkVSSUZJRURSDHZlcmlmaWNhdGlvbhqzAQoLRGVjbGFyYXRpb24SFgoGbnVtYmVyGAEgASgFUgZudW1iZXISGwoJZnVsbF9uYW1lGAIgASgJUghmdWxsTmFtZRISCgR0eXBlGAMgASgJUgR0eXBlEiMKC2lzX3JlcGVhdGVkGAQgASgIQgIYAVIKaXNSZXBlYXRlZBIaCghyZXNlcnZlZBgFIAEoCFIIcmVzZXJ2ZWQSGgoIcmVwZWF0ZWQYBiABKAhSCHJlcGVhdGVkIjQKEVZlcmlmaWNhdGlvblN0YXRlEg8KC0RFQ0xBUkFUSU9OEAASDgoKVU5WRVJJRklFRBABKgkI6AcQgICAgAIiwQYKFEZpZWxkRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSFgoGbnVtYmVyGAMgASgFUgZudW1iZXISQQoFbGFiZWwYBCABKA4yKy5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uTGFiZWxSBWxhYmVsEj4KBHR5cGUYBSABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZVIEdHlwZRIbCgl0eXBlX25hbWUYBiABKAlSCHR5cGVOYW1lEhoKCGV4dGVuZGVlGAIgASgJUghleHRlbmRlZRIjCg1kZWZhdWx0X3ZhbHVlGAcgASgJUgxkZWZhdWx0VmFsdWUSHwoLb25lb2ZfaW5kZXgYCSABKAVSCm9uZW9mSW5kZXgSGwoJanNvbl9uYW1lGAogASgJUghqc29uTmFtZRI3CgdvcHRpb25zGAggASgLMh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9uc1IHb3B0aW9ucxInCg9wcm90bzNfb3B0aW9uYWwYESABKAhSDnByb3RvM09wdGlvbmFsIrYCCgRUeXBlEg8KC1RZUEVfRE9VQkxFEAESDgoKVFlQRV9GTE9BVBACEg4KClRZUEVfSU5UNjQQAxIPCgtUWVBFX1VJTlQ2NBAEEg4KClRZUEVfSU5UMzIQBRIQCgxUWVBFX0ZJWEVENjQQBhIQCgxUWVBFX0ZJWEVEMzIQBxINCglUWVBFX0JPT0wQCBIPCgtUWVBFX1NUUklORxAJEg4KClRZUEVfR1JPVVAQChIQCgxUWVBFX01FU1NBR0UQCxIOCgpUWVBFX0JZVEVTEAwSDwoLVFlQRV9VSU5UMzIQDRINCglUWVBFX0VOVU0QDhIRCg1UWVBFX1NGSVhFRDMyEA8SEQoNVFlQRV9TRklYRUQ2NBAQEg8KC1RZUEVfU0lOVDMyEBESDwoLVFlQRV9TSU5UNjQQEiJDCgVMYWJlbBISCg5MQUJFTF9PUFRJT05BTBABEhIKDkxBQkVMX1JFUVVJUkVEEAISEgoOTEFCRUxfUkVQRUFURUQQAyJjChRPbmVvZkRlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEjcKB29wdGlvbnMYAiABKAsyHS5nb29nbGUucHJvdG9idWYuT25lb2ZPcHRpb25zUgdvcHRpb25zIuMCChNFbnVtRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSPwoFdmFsdWUYAiADKAsyKS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlRGVzY3JpcHRvclByb3RvUgV2YWx1ZRI2CgdvcHRpb25zGAMgASgLMhwuZ29vZ2xlLnByb3RvYnVmLkVudW1PcHRpb25zUgdvcHRpb25zEl0KDnJlc2VydmVkX3JhbmdlGAQgAygLMjYuZ29vZ2xlLnByb3RvYnVmLkVudW1EZXNjcmlwdG9yUHJvdG8uRW51bVJlc2VydmVkUmFuZ2VSDXJlc2VydmVkUmFuZ2USIwoNcmVzZXJ2ZWRfbmFtZRgFIAMoCVIMcmVzZXJ2ZWROYW1lGjsKEUVudW1SZXNlcnZlZFJhbmdlEhQKBXN0YXJ0GAEgASgFUgVzdGFydBIQCgNlbmQYAiABKAVSA2VuZCKDAQoYRW51bVZhbHVlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSFgoGbnVtYmVyGAIgASgFUgZudW1iZXISOwoHb3B0aW9ucxgDIAEoCzIhLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVPcHRpb25zUgdvcHRpb25zIqcBChZTZXJ2aWNlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSPgoGbWV0aG9kGAIgAygLMiYuZ29vZ2xlLnByb3RvYnVmLk1ldGhvZERlc2NyaXB0b3JQcm90b1IGbWV0aG9kEjkKB29wdGlvbnMYAyABKAsyHy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnNSB29wdGlvbnMiiQIKFU1ldGhvZERlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEh0KCmlucHV0X3R5cGUYAiABKAlSCWlucHV0VHlwZRIfCgtvdXRwdXRfdHlwZRgDIAEoCVIKb3V0cHV0VHlwZRI4CgdvcHRpb25zGAQgASgLMh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnNSB29wdGlvbnMSMAoQY2xpZW50X3N0cmVhbWluZxgFIAEoCDoFZmFsc2VSD2NsaWVudFN0cmVhbWluZxIwChBzZXJ2ZXJfc3RyZWFtaW5nGAYgASgIOgVmYWxzZVIPc2VydmVyU3RyZWFtaW5nIpEJCgtGaWxlT3B0aW9ucxIhCgxqYXZhX3BhY2thZ2UYASABKAlSC2phdmFQYWNrYWdlEjAKFGphdmFfb3V0ZXJfY2xhc3NuYW1lGAggASgJUhJqYXZhT3V0ZXJDbGFzc25hbWUSNQoTamF2YV9tdWx0aXBsZV9maWxlcxgKIAEoCDoFZmFsc2VSEWphdmFNdWx0aXBsZUZpbGVzEkQKHWphdmFfZ2VuZXJhdGVfZXF1YWxzX2FuZF9oYXNoGBQgASgIQgIYAVIZamF2YUdlbmVyYXRlRXF1YWxzQW5kSGFzaBI6ChZqYXZhX3N0cmluZ19jaGVja191dGY4GBsgASgIOgVmYWxzZVITamF2YVN0cmluZ0NoZWNrVXRmOBJTCgxvcHRpbWl6ZV9mb3IYCSABKA4yKS5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMuT3B0aW1pemVNb2RlOgVTUEVFRFILb3B0aW1pemVGb3ISHQoKZ29fcGFja2FnZRgLIAEoCVIJZ29QYWNrYWdlEjUKE2NjX2dlbmVyaWNfc2VydmljZXMYECABKAg6BWZhbHNlUhFjY0dlbmVyaWNTZXJ2aWNlcxI5ChVqYXZhX2dlbmVyaWNfc2VydmljZXMYESABKAg6BWZhbHNlUhNqYXZhR2VuZXJpY1NlcnZpY2VzEjUKE3B5X2dlbmVyaWNfc2VydmljZXMYEiABKAg6BWZhbHNlUhFweUdlbmVyaWNTZXJ2aWNlcxI3ChRwaHBfZ2VuZXJpY19zZXJ2aWNlcxgqIAEoCDoFZmFsc2VSEnBocEdlbmVyaWNTZXJ2aWNlcxIlCgpkZXByZWNhdGVkGBcgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBIuChBjY19lbmFibGVfYXJlbmFzGB8gASgIOgR0cnVlUg5jY0VuYWJsZUFyZW5hcxIqChFvYmpjX2NsYXNzX3ByZWZpeBgkIAEoCVIPb2JqY0NsYXNzUHJlZml4EikKEGNzaGFycF9uYW1lc3BhY2UYJSABKAlSD2NzaGFycE5hbWVzcGFjZRIhCgxzd2lmdF9wcmVmaXgYJyABKAlSC3N3aWZ0UHJlZml4EigKEHBocF9jbGFzc19wcmVmaXgYKCABKAlSDnBocENsYXNzUHJlZml4EiMKDXBocF9uYW1lc3BhY2UYKSABKAlSDHBocE5hbWVzcGFjZRI0ChZwaHBfbWV0YWRhdGFfbmFtZXNwYWNlGCwgASgJUhRwaHBNZXRhZGF0YU5hbWVzcGFjZRIhCgxydWJ5X3BhY2thZ2UYLSABKAlSC3J1YnlQYWNrYWdlElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uIjoKDE9wdGltaXplTW9kZRIJCgVTUEVFRBABEg0KCUNPREVfU0laRRACEhAKDExJVEVfUlVOVElNRRADKgkI6AcQgICAgAJKBAgmECciuwMKDk1lc3NhZ2VPcHRpb25zEjwKF21lc3NhZ2Vfc2V0X3dpcmVfZm9ybWF0GAEgASgIOgVmYWxzZVIUbWVzc2FnZVNldFdpcmVGb3JtYXQSTAofbm9fc3RhbmRhcmRfZGVzY3JpcHRvcl9hY2Nlc3NvchgCIAEoCDoFZmFsc2VSHG5vU3RhbmRhcmREZXNjcmlwdG9yQWNjZXNzb3ISJQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSGwoJbWFwX2VudHJ5GAcgASgIUghtYXBFbnRyeRJWCiZkZXByZWNhdGVkX2xlZ2FjeV9qc29uX2ZpZWxkX2NvbmZsaWN0cxgLIAEoCEICGAFSImRlcHJlY2F0ZWRMZWdhY3lKc29uRmllbGRDb25mbGljdHMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAkoECAQQBUoECAUQBkoECAYQB0oECAgQCUoECAkQCiKFCQoMRmllbGRPcHRpb25zEkEKBWN0eXBlGAEgASgOMiMuZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5DVHlwZToGU1RSSU5HUgVjdHlwZRIWCgZwYWNrZWQYAiABKAhSBnBhY2tlZBJHCgZqc3R5cGUYBiABKA4yJC5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLkpTVHlwZToJSlNfTk9STUFMUgZqc3R5cGUSGQoEbGF6eRgFIAEoCDoFZmFsc2VSBGxhenkSLgoPdW52ZXJpZmllZF9sYXp5GA8gASgIOgVmYWxzZVIOdW52ZXJpZmllZExhenkSJQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSGQoEd2VhaxgKIAEoCDoFZmFsc2VSBHdlYWsSKAoMZGVidWdfcmVkYWN0GBAgASgIOgVmYWxzZVILZGVidWdSZWRhY3QSSwoJcmV0ZW50aW9uGBEgASgOMi0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5PcHRpb25SZXRlbnRpb25SCXJldGVudGlvbhJKCgZ0YXJnZXQYEiABKA4yLi5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLk9wdGlvblRhcmdldFR5cGVCAhgBUgZ0YXJnZXQSSAoHdGFyZ2V0cxgTIAMoDjIuLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuT3B0aW9uVGFyZ2V0VHlwZVIHdGFyZ2V0cxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiIvCgVDVHlwZRIKCgZTVFJJTkcQABIICgRDT1JEEAESEAoMU1RSSU5HX1BJRUNFEAIiNQoGSlNUeXBlEg0KCUpTX05PUk1BTBAAEg0KCUpTX1NUUklORxABEg0KCUpTX05VTUJFUhACIlUKD09wdGlvblJldGVudGlvbhIVChFSRVRFTlRJT05fVU5LTk9XThAAEhUKEVJFVEVOVElPTl9SVU5USU1FEAESFAoQUkVURU5USU9OX1NPVVJDRRACIowCChBPcHRpb25UYXJnZXRUeXBlEhcKE1RBUkdFVF9UWVBFX1VOS05PV04QABIUChBUQVJHRVRfVFlQRV9GSUxFEAESHwobVEFSR0VUX1RZUEVfRVhURU5TSU9OX1JBTkdFEAISFwoTVEFSR0VUX1RZUEVfTUVTU0FHRRADEhUKEVRBUkdFVF9UWVBFX0ZJRUxEEAQSFQoRVEFSR0VUX1RZUEVfT05FT0YQBRIUChBUQVJHRVRfVFlQRV9FTlVNEAYSGgoWVEFSR0VUX1RZUEVfRU5VTV9FTlRSWRAHEhcKE1RBUkdFVF9UWVBFX1NFUlZJQ0UQCBIWChJUQVJHRVRfVFlQRV9NRVRIT0QQCSoJCOgHEICAgIACSgQIBBAFInMKDE9uZW9mT3B0aW9ucxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIpgCCgtFbnVtT3B0aW9ucxIfCgthbGxvd19hbGlhcxgCIAEoCFIKYWxsb3dBbGlhcxIlCgpkZXByZWNhdGVkGAMgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJWCiZkZXByZWNhdGVkX2xlZ2FjeV9qc29uX2ZpZWxkX2NvbmZsaWN0cxgGIAEoCEICGAFSImRlcHJlY2F0ZWRMZWdhY3lKc29uRmllbGRDb25mbGljdHMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAkoECAUQBiKeAQoQRW51bVZhbHVlT3B0aW9ucxIlCgpkZXByZWNhdGVkGAEgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIpwBCg5TZXJ2aWNlT3B0aW9ucxIlCgpkZXByZWNhdGVkGCEgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIuACCg1NZXRob2RPcHRpb25zEiUKCmRlcHJlY2F0ZWQYISABKAg6BWZhbHNlUgpkZXByZWNhdGVkEnEKEWlkZW1wb3RlbmN5X2xldmVsGCIgASgOMi8uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMuSWRlbXBvdGVuY3lMZXZlbDoTSURFTVBPVEVOQ1lfVU5LTk9XTlIQaWRlbXBvdGVuY3lMZXZlbBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiJQChBJZGVtcG90ZW5jeUxldmVsEhcKE0lERU1QT1RFTkNZX1VOS05PV04QABITCg9OT19TSURFX0VGRkVDVFMQARIOCgpJREVNUE9URU5UEAIqCQjoBxCAgICAAiKaAwoTVW5pbnRlcnByZXRlZE9wdGlvbhJBCgRuYW1lGAIgAygLMi0uZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb24uTmFtZVBhcnRSBG5hbWUSKQoQaWRlbnRpZmllcl92YWx1ZRgDIAEoCVIPaWRlbnRpZmllclZhbHVlEiwKEnBvc2l0aXZlX2ludF92YWx1ZRgEIAEoBFIQcG9zaXRpdmVJbnRWYWx1ZRIsChJuZWdhdGl2ZV9pbnRfdmFsdWUYBSABKANSEG5lZ2F0aXZlSW50VmFsdWUSIQoMZG91YmxlX3ZhbHVlGAYgASgBUgtkb3VibGVWYWx1ZRIhCgxzdHJpbmdfdmFsdWUYByABKAxSC3N0cmluZ1ZhbHVlEicKD2FnZ3JlZ2F0ZV92YWx1ZRgIIAEoCVIOYWdncmVnYXRlVmFsdWUaSgoITmFtZVBhcnQSGwoJbmFtZV9wYXJ0GAEgAigJUghuYW1lUGFydBIhCgxpc19leHRlbnNpb24YAiACKAhSC2lzRXh0ZW5zaW9uIqcCCg5Tb3VyY2VDb2RlSW5mbxJECghsb2NhdGlvbhgBIAMoCzIoLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb2RlSW5mby5Mb2NhdGlvblIIbG9jYXRpb24azgEKCExvY2F0aW9uEhYKBHBhdGgYASADKAVCAhABUgRwYXRoEhYKBHNwYW4YAiADKAVCAhABUgRzcGFuEikKEGxlYWRpbmdfY29tbWVudHMYAyABKAlSD2xlYWRpbmdDb21tZW50cxIrChF0cmFpbGluZ19jb21tZW50cxgEIAEoCVIQdHJhaWxpbmdDb21tZW50cxI6ChlsZWFkaW5nX2RldGFjaGVkX2NvbW1lbnRzGAYgAygJUhdsZWFkaW5nRGV0YWNoZWRDb21tZW50cyLQAgoRR2VuZXJhdGVkQ29kZUluZm8STQoKYW5ub3RhdGlvbhgBIAMoCzItLmdvb2dsZS5wcm90b2J1Zi5HZW5lcmF0ZWRDb2RlSW5mby5Bbm5vdGF0aW9uUgphbm5vdGF0aW9uGusBCgpBbm5vdGF0aW9uEhYKBHBhdGgYASADKAVCAhABUgRwYXRoEh8KC3NvdXJjZV9maWxlGAIgASgJUgpzb3VyY2VGaWxlEhQKBWJlZ2luGAMgASgFUgViZWdpbhIQCgNlbmQYBCABKAVSA2VuZBJSCghzZW1hbnRpYxgFIAEoDjI2Lmdvb2dsZS5wcm90b2J1Zi5HZW5lcmF0ZWRDb2RlSW5mby5Bbm5vdGF0aW9uLlNlbWFudGljUghzZW1hbnRpYyIoCghTZW1hbnRpYxIICgROT05FEAASBwoDU0VUEAESCQoFQUxJQVMQAkJ+ChNjb20uZ29vZ2xlLnByb3RvYnVmQhBEZXNjcmlwdG9yUHJvdG9zSAFaLWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2Rlc2NyaXB0b3JwYvgBAaICA0dQQqoCGkdvb2dsZS5Qcm90b2J1Zi5SZWZsZWN0aW9uCqgCChxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpGhVnb29nbGUvYXBpL2h0dHAucHJvdG8aIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCbgoOY29tLmdvb2dsZS5hcGlCEEFubm90YXRpb25zUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzMK6AMKH2dvb2dsZS9hcGkvZmllbGRfYmVoYXZpb3IucHJvdG8SCmdvb2dsZS5hcGkaIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvKrYBCg1GaWVsZEJlaGF2aW9yEh4KGkZJRUxEX0JFSEFWSU9SX1VOU1BFQ0lGSUVEEAASDAoIT1BUSU9OQUwQARIMCghSRVFVSVJFRBACEg8KC09VVFBVVF9PTkxZEAMSDgoKSU5QVVRfT05MWRAEEg0KCUlNTVVUQUJMRRAFEhIKDlVOT1JERVJFRF9MSVNUEAYSFQoRTk9OX0VNUFRZX0RFRkFVTFQQBxIOCgpJREVOVElGSUVSEAg6ZAoOZmllbGRfYmVoYXZpb3ISHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGJwIIAMoDjIZLmdvb2dsZS5hcGkuRmllbGRCZWhhdmlvckICEABSDWZpZWxkQmVoYXZpb3JCcAoOY29tLmdvb2dsZS5hcGlCEkZpZWxkQmVoYXZpb3JQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc6ICBEdBUEliBnByb3RvMwriBQocZ29vZ2xlL3Byb3RvYnVmL3N0cnVjdC5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIpgBCgZTdHJ1Y3QSOwoGZmllbGRzGAEgAygLMiMuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdC5GaWVsZHNFbnRyeVIGZmllbGRzGlEKC0ZpZWxkc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEisgIKBVZhbHVlEjsKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSABSCW51bGxWYWx1ZRIjCgxudW1iZXJfdmFsdWUYAiABKAFIAFILbnVtYmVyVmFsdWUSIwoMc3RyaW5nX3ZhbHVlGAMgASgJSABSC3N0cmluZ1ZhbHVlEh8KCmJvb2xfdmFsdWUYBCABKAhIAFIJYm9vbFZhbHVlEjwKDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAFILc3RydWN0VmFsdWUSOwoKbGlzdF92YWx1ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5MaXN0VmFsdWVIAFIJbGlzdFZhbHVlQgYKBGtpbmQiOwoJTGlzdFZhbHVlEi4KBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIGdmFsdWVzKhsKCU51bGxWYWx1ZRIOCgpOVUxMX1ZBTFVFEABCfwoTY29tLmdvb2dsZS5wcm90b2J1ZkILU3RydWN0UHJvdG9QAVovZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMva25vd24vc3RydWN0cGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMwqmPgoscHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9vcGVuYXBpdjIucHJvdG8SKWdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zGhxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvIrMICgdTd2FnZ2VyEhgKB3N3YWdnZXIYASABKAlSB3N3YWdnZXISQwoEaW5mbxgCIAEoCzIvLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkluZm9SBGluZm8SEgoEaG9zdBgDIAEoCVIEaG9zdBIbCgliYXNlX3BhdGgYBCABKAlSCGJhc2VQYXRoEksKB3NjaGVtZXMYBSADKA4yMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY2hlbWVSB3NjaGVtZXMSGgoIY29uc3VtZXMYBiADKAlSCGNvbnN1bWVzEhoKCHByb2R1Y2VzGAcgAygJUghwcm9kdWNlcxJfCglyZXNwb25zZXMYCiADKAsyQS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Td2FnZ2VyLlJlc3BvbnNlc0VudHJ5UglyZXNwb25zZXMScQoUc2VjdXJpdHlfZGVmaW5pdGlvbnMYCyABKAsyPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eURlZmluaXRpb25zUhNzZWN1cml0eURlZmluaXRpb25zEloKCHNlY3VyaXR5GAwgAygLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlSZXF1aXJlbWVudFIIc2VjdXJpdHkSQgoEdGFncxgNIAMoCzIuLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlRhZ1IEdGFncxJlCg1leHRlcm5hbF9kb2NzGA4gASgLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuRXh0ZXJuYWxEb2N1bWVudGF0aW9uUgxleHRlcm5hbERvY3MSYgoKZXh0ZW5zaW9ucxgPIAMoCzJCLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlN3YWdnZXIuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGnEKDlJlc3BvbnNlc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EkkKBXZhbHVlGAIgASgLMjMuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2VSBXZhbHVlOgI4ARpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4AUoECAgQCUoECAkQCiLWBwoJT3BlcmF0aW9uEhIKBHRhZ3MYASADKAlSBHRhZ3MSGAoHc3VtbWFyeRgCIAEoCVIHc3VtbWFyeRIgCgtkZXNjcmlwdGlvbhgDIAEoCVILZGVzY3JpcHRpb24SZQoNZXh0ZXJuYWxfZG9jcxgEIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEiEKDG9wZXJhdGlvbl9pZBgFIAEoCVILb3BlcmF0aW9uSWQSGgoIY29uc3VtZXMYBiADKAlSCGNvbnN1bWVzEhoKCHByb2R1Y2VzGAcgAygJUghwcm9kdWNlcxJhCglyZXNwb25zZXMYCSADKAsyQy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5PcGVyYXRpb24uUmVzcG9uc2VzRW50cnlSCXJlc3BvbnNlcxJLCgdzY2hlbWVzGAogAygOMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1lUgdzY2hlbWVzEh4KCmRlcHJlY2F0ZWQYCyABKAhSCmRlcHJlY2F0ZWQSWgoIc2VjdXJpdHkYDCADKAsyPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVJlcXVpcmVtZW50UghzZWN1cml0eRJkCgpleHRlbnNpb25zGA0gAygLMkQuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuT3BlcmF0aW9uLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxJVCgpwYXJhbWV0ZXJzGA4gASgLMjUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUGFyYW1ldGVyc1IKcGFyYW1ldGVycxpxCg5SZXNwb25zZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRJJCgV2YWx1ZRgCIAEoCzIzLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlUgV2YWx1ZToCOAEaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAFKBAgIEAkiYgoKUGFyYW1ldGVycxJUCgdoZWFkZXJzGAEgAygLMjouZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSGVhZGVyUGFyYW1ldGVyUgdoZWFkZXJzIqMCCg9IZWFkZXJQYXJhbWV0ZXISEgoEbmFtZRgBIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SUwoEdHlwZRgDIAEoDjI/LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkhlYWRlclBhcmFtZXRlci5UeXBlUgR0eXBlEhYKBmZvcm1hdBgEIAEoCVIGZm9ybWF0EhoKCHJlcXVpcmVkGAUgASgIUghyZXF1aXJlZCJFCgRUeXBlEgsKB1VOS05PV04QABIKCgZTVFJJTkcQARIKCgZOVU1CRVIQAhILCgdJTlRFR0VSEAMSCwoHQk9PTEVBThAESgQIBhAHSgQIBxAIItgBCgZIZWFkZXISIAoLZGVzY3JpcHRpb24YASABKAlSC2Rlc2NyaXB0aW9uEhIKBHR5cGUYAiABKAlSBHR5cGUSFgoGZm9ybWF0GAMgASgJUgZmb3JtYXQSGAoHZGVmYXVsdBgGIAEoCVIHZGVmYXVsdBIYCgdwYXR0ZXJuGA0gASgJUgdwYXR0ZXJuSgQIBBAFSgQIBRAGSgQIBxAISgQICBAJSgQICRAKSgQIChALSgQICxAMSgQIDBANSgQIDhAPSgQIDxAQSgQIEBARSgQIERASSgQIEhATIpoFCghSZXNwb25zZRIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24SSQoGc2NoZW1hGAIgASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1hUgZzY2hlbWESWgoHaGVhZGVycxgDIAMoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlLkhlYWRlcnNFbnRyeVIHaGVhZGVycxJdCghleGFtcGxlcxgEIAMoCzJBLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlLkV4YW1wbGVzRW50cnlSCGV4YW1wbGVzEmMKCmV4dGVuc2lvbnMYBSADKAsyQy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZS5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMabQoMSGVhZGVyc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EkcKBXZhbHVlGAIgASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSGVhZGVyUgV2YWx1ZToCOAEaOwoNRXhhbXBsZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBItYDCgRJbmZvEhQKBXRpdGxlGAEgASgJUgV0aXRsZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SKAoQdGVybXNfb2Zfc2VydmljZRgDIAEoCVIOdGVybXNPZlNlcnZpY2USTAoHY29udGFjdBgEIAEoCzIyLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkNvbnRhY3RSB2NvbnRhY3QSTAoHbGljZW5zZRgFIAEoCzIyLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkxpY2Vuc2VSB2xpY2Vuc2USGAoHdmVyc2lvbhgGIAEoCVIHdmVyc2lvbhJfCgpleHRlbnNpb25zGAcgAygLMj8uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSW5mby5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEiRQoHQ29udGFjdBISCgRuYW1lGAEgASgJUgRuYW1lEhAKA3VybBgCIAEoCVIDdXJsEhQKBWVtYWlsGAMgASgJUgVlbWFpbCIvCgdMaWNlbnNlEhIKBG5hbWUYASABKAlSBG5hbWUSEAoDdXJsGAIgASgJUgN1cmwiSwoVRXh0ZXJuYWxEb2N1bWVudGF0aW9uEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbhIQCgN1cmwYAiABKAlSA3VybCKqAgoGU2NoZW1hElYKC2pzb25fc2NoZW1hGAEgASgLMjUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYVIKanNvblNjaGVtYRIkCg1kaXNjcmltaW5hdG9yGAIgASgJUg1kaXNjcmltaW5hdG9yEhsKCXJlYWRfb25seRgDIAEoCFIIcmVhZE9ubHkSZQoNZXh0ZXJuYWxfZG9jcxgFIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEhgKB2V4YW1wbGUYBiABKAlSB2V4YW1wbGVKBAgEEAUi1woKCkpTT05TY2hlbWESEAoDcmVmGAMgASgJUgNyZWYSFAoFdGl0bGUYBSABKAlSBXRpdGxlEiAKC2Rlc2NyaXB0aW9uGAYgASgJUgtkZXNjcmlwdGlvbhIYCgdkZWZhdWx0GAcgASgJUgdkZWZhdWx0EhsKCXJlYWRfb25seRgIIAEoCFIIcmVhZE9ubHkSGAoHZXhhbXBsZRgJIAEoCVIHZXhhbXBsZRIfCgttdWx0aXBsZV9vZhgKIAEoAVIKbXVsdGlwbGVPZhIYCgdtYXhpbXVtGAsgASgBUgdtYXhpbXVtEisKEWV4Y2x1c2l2ZV9tYXhpbXVtGAwgASgIUhBleGNsdXNpdmVNYXhpbXVtEhgKB21pbmltdW0YDSABKAFSB21pbmltdW0SKwoRZXhjbHVzaXZlX21pbmltdW0YDiABKAhSEGV4Y2x1c2l2ZU1pbmltdW0SHQoKbWF4X2xlbmd0aBgPIAEoBFIJbWF4TGVuZ3RoEh0KCm1pbl9sZW5ndGgYECABKARSCW1pbkxlbmd0aBIYCgdwYXR0ZXJuGBEgASgJUgdwYXR0ZXJuEhsKCW1heF9pdGVtcxgUIAEoBFIIbWF4SXRlbXMSGwoJbWluX2l0ZW1zGBUgASgEUghtaW5JdGVtcxIhCgx1bmlxdWVfaXRlbXMYFiABKAhSC3VuaXF1ZUl0ZW1zEiUKDm1heF9wcm9wZXJ0aWVzGBggASgEUg1tYXhQcm9wZXJ0aWVzEiUKDm1pbl9wcm9wZXJ0aWVzGBkgASgEUg1taW5Qcm9wZXJ0aWVzEhoKCHJlcXVpcmVkGBogAygJUghyZXF1aXJlZBIUCgVhcnJheRgiIAMoCVIFYXJyYXkSXwoEdHlwZRgjIAMoDjJLLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWEuSlNPTlNjaGVtYVNpbXBsZVR5cGVzUgR0eXBlEhYKBmZvcm1hdBgkIAEoCVIGZm9ybWF0EhIKBGVudW0YLiADKAlSBGVudW0SegoTZmllbGRfY29uZmlndXJhdGlvbhjpByABKAsySC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hLkZpZWxkQ29uZmlndXJhdGlvblISZmllbGRDb25maWd1cmF0aW9uEmUKCmV4dGVuc2lvbnMYMCADKAsyRS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxo8ChJGaWVsZENvbmZpZ3VyYXRpb24SJgoPcGF0aF9wYXJhbV9uYW1lGC8gASgJUg1wYXRoUGFyYW1OYW1lGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIncKFUpTT05TY2hlbWFTaW1wbGVUeXBlcxILCgdVTktOT1dOEAASCQoFQVJSQVkQARILCgdCT09MRUFOEAISCwoHSU5URUdFUhADEggKBE5VTEwQBBIKCgZOVU1CRVIQBRIKCgZPQkpFQ1QQBhIKCgZTVFJJTkcQB0oECAEQAkoECAIQA0oECAQQBUoECBIQE0oECBMQFEoECBcQGEoECBsQHEoECBwQHUoECB0QHkoECB4QIkoECCUQKkoECCoQK0oECCsQLiLZAgoDVGFnEhIKBG5hbWUYASABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uEmUKDWV4dGVybmFsX2RvY3MYAyABKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5FeHRlcm5hbERvY3VtZW50YXRpb25SDGV4dGVybmFsRG9jcxJeCgpleHRlbnNpb25zGAQgAygLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuVGFnLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASL3AQoTU2VjdXJpdHlEZWZpbml0aW9ucxJoCghzZWN1cml0eRgBIAMoCzJMLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5RGVmaW5pdGlvbnMuU2VjdXJpdHlFbnRyeVIIc2VjdXJpdHkadgoNU2VjdXJpdHlFbnRyeRIQCgNrZXkYASABKAlSA2tleRJPCgV2YWx1ZRgCIAEoCzI5LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lUgV2YWx1ZToCOAEi/wYKDlNlY3VyaXR5U2NoZW1lElIKBHR5cGUYASABKA4yPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5UeXBlUgR0eXBlEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhISCgRuYW1lGAMgASgJUgRuYW1lEkwKAmluGAQgASgOMjwuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWUuSW5SAmluElIKBGZsb3cYBSABKA4yPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5GbG93UgRmbG93EisKEWF1dGhvcml6YXRpb25fdXJsGAYgASgJUhBhdXRob3JpemF0aW9uVXJsEhsKCXRva2VuX3VybBgHIAEoCVIIdG9rZW5VcmwSSQoGc2NvcGVzGAggASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NvcGVzUgZzY29wZXMSaQoKZXh0ZW5zaW9ucxgJIAMoCzJJLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASJLCgRUeXBlEhAKDFRZUEVfSU5WQUxJRBAAEg4KClRZUEVfQkFTSUMQARIQCgxUWVBFX0FQSV9LRVkQAhIPCgtUWVBFX09BVVRIMhADIjEKAkluEg4KCklOX0lOVkFMSUQQABIMCghJTl9RVUVSWRABEg0KCUlOX0hFQURFUhACImoKBEZsb3cSEAoMRkxPV19JTlZBTElEEAASEQoNRkxPV19JTVBMSUNJVBABEhEKDUZMT1dfUEFTU1dPUkQQAhIUChBGTE9XX0FQUExJQ0FUSU9OEAMSFAoQRkxPV19BQ0NFU1NfQ09ERRAEIvYCChNTZWN1cml0eVJlcXVpcmVtZW50EooBChRzZWN1cml0eV9yZXF1aXJlbWVudBgBIAMoCzJXLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnQuU2VjdXJpdHlSZXF1aXJlbWVudEVudHJ5UhNzZWN1cml0eVJlcXVpcmVtZW50GjAKGFNlY3VyaXR5UmVxdWlyZW1lbnRWYWx1ZRIUCgVzY29wZRgBIAMoCVIFc2NvcGUanwEKGFNlY3VyaXR5UmVxdWlyZW1lbnRFbnRyeRIQCgNrZXkYASABKAlSA2tleRJtCgV2YWx1ZRgCIAEoCzJXLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnQuU2VjdXJpdHlSZXF1aXJlbWVudFZhbHVlUgV2YWx1ZToCOAEilgEKBlNjb3BlcxJSCgVzY29wZRgBIAMoCzI8LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjb3Blcy5TY29wZUVudHJ5UgVzY29wZRo4CgpTY29wZUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEqOwoGU2NoZW1lEgsKB1VOS05PV04QABIICgRIVFRQEAESCQoFSFRUUFMQAhIGCgJXUxADEgcKA1dTUxAEQkhaRmdpdGh1Yi5jb20vZ3JwYy1lY29zeXN0ZW0vZ3JwYy1nYXRld2F5L3YyL3Byb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnNiBnByb3RvMwr9BgoucHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9hbm5vdGF0aW9ucy5wcm90bxIpZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMaIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvGixwcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL29wZW5hcGl2Mi5wcm90bzp+ChFvcGVuYXBpdjJfc3dhZ2dlchIcLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9ucxiSCCABKAsyMi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Td2FnZ2VyUhBvcGVuYXBpdjJTd2FnZ2VyOoYBChNvcGVuYXBpdjJfb3BlcmF0aW9uEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYkgggASgLMjQuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuT3BlcmF0aW9uUhJvcGVuYXBpdjJPcGVyYXRpb246fgoQb3BlbmFwaXYyX3NjaGVtYRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiSCCABKAsyMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY2hlbWFSD29wZW5hcGl2MlNjaGVtYTp1Cg1vcGVuYXBpdjJfdGFnEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJIIIAEoCzIuLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlRhZ1IMb3BlbmFwaXYyVGFnOn4KD29wZW5hcGl2Ml9maWVsZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYkgggASgLMjUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYVIOb3BlbmFwaXYyRmllbGRCSFpGZ2l0aHViLmNvbS9ncnBjLWVjb3N5c3RlbS9ncnBjLWdhdGV3YXkvdjIvcHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9uc2IGcHJvdG8zCrszChtwcm90by9jb2RlcmVmL3NlcnZpY2UucHJvdG8SEWJ1Y2tldGVlci5jb2RlcmVmGiJwcm90by9jb2RlcmVmL2NvZGVfcmVmZXJlbmNlLnByb3RvGhxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvGh9nb29nbGUvYXBpL2ZpZWxkX2JlaGF2aW9yLnByb3RvGi5wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL2Fubm90YXRpb25zLnByb3RvIloKF0dldENvZGVSZWZlcmVuY2VSZXF1ZXN0EhMKAmlkGAEgASgJQgPgQQJSAmlkEioKDmVudmlyb25tZW50X2lkGAIgASgJQgPgQQJSDWVudmlyb25tZW50SWQiYwoYR2V0Q29kZVJlZmVyZW5jZVJlc3BvbnNlEkcKDmNvZGVfcmVmZXJlbmNlGAEgASgLMiAuYnVja2V0ZWVyLmNvZGVyZWYuQ29kZVJlZmVyZW5jZVINY29kZVJlZmVyZW5jZSK2BQoZTGlzdENvZGVSZWZlcmVuY2VzUmVxdWVzdBIqCg5lbnZpcm9ubWVudF9pZBgBIAEoCUID4EECUg1lbnZpcm9ubWVudElkEiIKCmZlYXR1cmVfaWQYAiABKAlCA+BBAlIJZmVhdHVyZUlkEicKD3JlcG9zaXRvcnlfbmFtZRgDIAEoCVIOcmVwb3NpdG9yeU5hbWUSKQoQcmVwb3NpdG9yeV9vd25lchgEIAEoCVIPcmVwb3NpdG9yeU93bmVyElgKD3JlcG9zaXRvcnlfdHlwZRgFIAEoDjIvLmJ1Y2tldGVlci5jb2RlcmVmLkNvZGVSZWZlcmVuY2UuUmVwb3NpdG9yeVR5cGVSDnJlcG9zaXRvcnlUeXBlEisKEXJlcG9zaXRvcnlfYnJhbmNoGAYgASgJUhByZXBvc2l0b3J5QnJhbmNoEhYKBmN1cnNvchgHIAEoCVIGY3Vyc29yEhsKCXBhZ2Vfc2l6ZRgIIAEoA1IIcGFnZVNpemUSTwoIb3JkZXJfYnkYCSABKA4yNC5idWNrZXRlZXIuY29kZXJlZi5MaXN0Q29kZVJlZmVyZW5jZXNSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSZAoPb3JkZXJfZGlyZWN0aW9uGAogASgOMjsuYnVja2V0ZWVyLmNvZGVyZWYuTGlzdENvZGVSZWZlcmVuY2VzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOZmlsZV9leHRlbnNpb24YCyABKAlSDWZpbGVFeHRlbnNpb24iNgoHT3JkZXJCeRILCgdERUZBVUxUEAASDgoKQ1JFQVRFRF9BVBABEg4KClVQREFURURfQVQQAiIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAEioAEKGkxpc3RDb2RlUmVmZXJlbmNlc1Jlc3BvbnNlEkkKD2NvZGVfcmVmZXJlbmNlcxgBIAMoCzIgLmJ1Y2tldGVlci5jb2RlcmVmLkNvZGVSZWZlcmVuY2VSDmNvZGVSZWZlcmVuY2VzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEh8KC3RvdGFsX2NvdW50GAMgASgDUgp0b3RhbENvdW50IqkEChpDcmVhdGVDb2RlUmVmZXJlbmNlUmVxdWVzdBIiCgpmZWF0dXJlX2lkGAEgASgJQgPgQQJSCWZlYXR1cmVJZBIqCg5lbnZpcm9ubWVudF9pZBgCIAEoCUID4EECUg1lbnZpcm9ubWVudElkEiAKCWZpbGVfcGF0aBgDIAEoCUID4EECUghmaWxlUGF0aBIkCgtsaW5lX251bWJlchgEIAEoBUID4EECUgpsaW5lTnVtYmVyEiYKDGNvZGVfc25pcHBldBgFIAEoCUID4EECUgtjb2RlU25pcHBldBImCgxjb250ZW50X2hhc2gYBiABKAlCA+BBAlILY29udGVudEhhc2gSGAoHYWxpYXNlcxgHIAMoCVIHYWxpYXNlcxIsCg9yZXBvc2l0b3J5X25hbWUYCCABKAlCA+BBAlIOcmVwb3NpdG9yeU5hbWUSLgoQcmVwb3NpdG9yeV9vd25lchgJIAEoCUID4EECUg9yZXBvc2l0b3J5T3duZXISXQoPcmVwb3NpdG9yeV90eXBlGAogASgOMi8uYnVja2V0ZWVyLmNvZGVyZWYuQ29kZVJlZmVyZW5jZS5SZXBvc2l0b3J5VHlwZUID4EECUg5yZXBvc2l0b3J5VHlwZRIrChFyZXBvc2l0b3J5X2JyYW5jaBgLIAEoCVIQcmVwb3NpdG9yeUJyYW5jaBIfCgtjb21taXRfaGFzaBgMIAEoCVIKY29tbWl0SGFzaCJmChtDcmVhdGVDb2RlUmVmZXJlbmNlUmVzcG9uc2USRwoOY29kZV9yZWZlcmVuY2UYASABKAsyIC5idWNrZXRlZXIuY29kZXJlZi5Db2RlUmVmZXJlbmNlUg1jb2RlUmVmZXJlbmNlIosEChpVcGRhdGVDb2RlUmVmZXJlbmNlUmVxdWVzdBITCgJpZBgBIAEoCUID4EECUgJpZBIqCg5lbnZpcm9ubWVudF9pZBgCIAEoCUID4EECUg1lbnZpcm9ubWVudElkEiAKCWZpbGVfcGF0aBgDIAEoCUID4EECUghmaWxlUGF0aBIkCgtsaW5lX251bWJlchgEIAEoBUID4EECUgpsaW5lTnVtYmVyEiYKDGNvZGVfc25pcHBldBgFIAEoCUID4EECUgtjb2RlU25pcHBldBImCgxjb250ZW50X2hhc2gYBiABKAlCA+BBAlILY29udGVudEhhc2gSGAoHYWxpYXNlcxgHIAMoCVIHYWxpYXNlcxInCg9yZXBvc2l0b3J5X25hbWUYCCABKAlSDnJlcG9zaXRvcnlOYW1lEikKEHJlcG9zaXRvcnlfb3duZXIYCSABKAlSD3JlcG9zaXRvcnlPd25lchJYCg9yZXBvc2l0b3J5X3R5cGUYCiABKA4yLy5idWNrZXRlZXIuY29kZXJlZi5Db2RlUmVmZXJlbmNlLlJlcG9zaXRvcnlUeXBlUg5yZXBvc2l0b3J5VHlwZRIrChFyZXBvc2l0b3J5X2JyYW5jaBgLIAEoCVIQcmVwb3NpdG9yeUJyYW5jaBIfCgtjb21taXRfaGFzaBgMIAEoCVIKY29tbWl0SGFzaCJmChtVcGRhdGVDb2RlUmVmZXJlbmNlUmVzcG9uc2USRwoOY29kZV9yZWZlcmVuY2UYASABKAsyIC5idWNrZXRlZXIuY29kZXJlZi5Db2RlUmVmZXJlbmNlUg1jb2RlUmVmZXJlbmNlIl0KGkRlbGV0ZUNvZGVSZWZlcmVuY2VSZXF1ZXN0EhMKAmlkGAEgASgJQgPgQQJSAmlkEioKDmVudmlyb25tZW50X2lkGAIgASgJQgPgQQJSDWVudmlyb25tZW50SWQiHQobRGVsZXRlQ29kZVJlZmVyZW5jZVJlc3BvbnNlMpUeChRDb2RlUmVmZXJlbmNlU2VydmljZRL3BQoQR2V0Q29kZVJlZmVyZW5jZRIqLmJ1Y2tldGVlci5jb2RlcmVmLkdldENvZGVSZWZlcmVuY2VSZXF1ZXN0GisuYnVja2V0ZWVyLmNvZGVyZWYuR2V0Q29kZVJlZmVyZW5jZVJlc3BvbnNlIokFkkHlBAoOQ29kZSBSZWZlcmVuY2USA0dldBobR2V0IGEgY29kZSByZWZlcmVuY2UgYnkgSUQuKhl3ZWIudjEuY29kZV9yZWZlcmVuY2UuZ2V0SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhoSGC92MS9jb2RlX3JlZmVyZW5jZXMve2lkfRLgBAoSTGlzdENvZGVSZWZlcmVuY2VzEiwuYnVja2V0ZWVyLmNvZGVyZWYuTGlzdENvZGVSZWZlcmVuY2VzUmVxdWVzdBotLmJ1Y2tldGVlci5jb2RlcmVmLkxpc3RDb2RlUmVmZXJlbmNlc1Jlc3BvbnNlIuwDkkHNAwoOQ29kZSBSZWZlcmVuY2USBExpc3QaLUxpc3QgY29kZSByZWZlcmVuY2VzIHdpdGggb3B0aW9uYWwgZmlsdGVyaW5nLioad2ViLnYxLmNvZGVfcmVmZXJlbmNlLmxpc3RKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIVEhMvdjEvY29kZV9yZWZlcmVuY2VzErAGChNDcmVhdGVDb2RlUmVmZXJlbmNlEi0uYnVja2V0ZWVyLmNvZGVyZWYuQ3JlYXRlQ29kZVJlZmVyZW5jZVJlcXVlc3QaLi5idWNrZXRlZXIuY29kZXJlZi5DcmVhdGVDb2RlUmVmZXJlbmNlUmVzcG9uc2UiuQWSQZcFCg5Db2RlIFJlZmVyZW5jZRIGQ3JlYXRlGkdDcmVhdGUgYSBuZXcgY29kZSByZWZlcmVuY2UuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGEgYFdSSVRFYCByb2xlLiocd2ViLnYxLmNvZGVfcmVmZXJlbmNlLmNyZWF0ZUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIYIhMvdjEvY29kZV9yZWZlcmVuY2VzOgEqErsGChNVcGRhdGVDb2RlUmVmZXJlbmNlEi0uYnVja2V0ZWVyLmNvZGVyZWYuVXBkYXRlQ29kZVJlZmVyZW5jZVJlcXVlc3QaLi5idWNrZXRlZXIuY29kZXJlZi5VcGRhdGVDb2RlUmVmZXJlbmNlUmVzcG9uc2UixAWSQZ0FCg5Db2RlIFJlZmVyZW5jZRIGVXBkYXRlGk1VcGRhdGUgYW4gZXhpc3RpbmcgY29kZSByZWZlcmVuY2UuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGEgYFdSSVRFYCByb2xlLiocd2ViLnYxLmNvZGVfcmVmZXJlbmNlLnVwZGF0ZUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIdMhgvdjEvY29kZV9yZWZlcmVuY2VzL3tpZH06ASoSrgYKE0RlbGV0ZUNvZGVSZWZlcmVuY2USLS5idWNrZXRlZXIuY29kZXJlZi5EZWxldGVDb2RlUmVmZXJlbmNlUmVxdWVzdBouLmJ1Y2tldGVlci5jb2RlcmVmLkRlbGV0ZUNvZGVSZWZlcmVuY2VSZXNwb25zZSK3BZJBkwUKDkNvZGUgUmVmZXJlbmNlEgZEZWxldGUaQ0RlbGV0ZSBhIGNvZGUgcmVmZXJlbmNlLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhIGBXUklURWAgcm9sZS4qHHdlYi52MS5jb2RlX3JlZmVyZW5jZS5kZWxldGVKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCGioYL3YxL2NvZGVfcmVmZXJlbmNlcy97aWR9QjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9jb2RlcmVmYgZwcm90bzM= config: grpcPort: 9000 httpPort: 9003 adminPort: 8001 resources: {} tagDescriptor: CocFChVnb29nbGUvYXBpL2h0dHAucHJvdG8SCmdvb2dsZS5hcGkieQoESHR0cBIqCgVydWxlcxgBIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBXJ1bGVzEkUKH2Z1bGx5X2RlY29kZV9yZXNlcnZlZF9leHBhbnNpb24YAiABKAhSHGZ1bGx5RGVjb2RlUmVzZXJ2ZWRFeHBhbnNpb24itQIKCEh0dHBSdWxlEhoKCHNlbGVjdG9yGAEgASgJUghzZWxlY3RvchISCgNnZXQYAiABKAlIAFIDZ2V0EhIKA3B1dBgDIAEoCUgAUgNwdXQSFAoEcG9zdBgEIAEoCUgAUgRwb3N0EhgKBmRlbGV0ZRgFIAEoCUgAUgZkZWxldGUSFgoFcGF0Y2gYBiABKAlIAFIFcGF0Y2gSNwoGY3VzdG9tGAggASgLMh0uZ29vZ2xlLmFwaS5DdXN0b21IdHRwUGF0dGVybkgAUgZjdXN0b20SEgoEYm9keRgHIAEoCVIEYm9keRJFChNhZGRpdGlvbmFsX2JpbmRpbmdzGAsgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZVISYWRkaXRpb25hbEJpbmRpbmdzQgkKB3BhdHRlcm4iOwoRQ3VzdG9tSHR0cFBhdHRlcm4SEgoEa2luZBgBIAEoCVIEa2luZBISCgRwYXRoGAIgASgJUgRwYXRoQmoKDmNvbS5nb29nbGUuYXBpQglIdHRwUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnP4AQGiAgRHQVBJYgZwcm90bzMK4UYKIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvEg9nb29nbGUucHJvdG9idWYiTQoRRmlsZURlc2NyaXB0b3JTZXQSOAoEZmlsZRgBIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5GaWxlRGVzY3JpcHRvclByb3RvUgRmaWxlIv4EChNGaWxlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSGAoHcGFja2FnZRgCIAEoCVIHcGFja2FnZRIeCgpkZXBlbmRlbmN5GAMgAygJUgpkZXBlbmRlbmN5EisKEXB1YmxpY19kZXBlbmRlbmN5GAogAygFUhBwdWJsaWNEZXBlbmRlbmN5EicKD3dlYWtfZGVwZW5kZW5jeRgLIAMoBVIOd2Vha0RlcGVuZGVuY3kSQwoMbWVzc2FnZV90eXBlGAQgAygLMiAuZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90b1ILbWVzc2FnZVR5cGUSQQoJZW51bV90eXBlGAUgAygLMiQuZ29vZ2xlLnByb3RvYnVmLkVudW1EZXNjcmlwdG9yUHJvdG9SCGVudW1UeXBlEkEKB3NlcnZpY2UYBiADKAsyJy5nb29nbGUucHJvdG9idWYuU2VydmljZURlc2NyaXB0b3JQcm90b1IHc2VydmljZRJDCglleHRlbnNpb24YByADKAsyJS5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG9SCWV4dGVuc2lvbhI2CgdvcHRpb25zGAggASgLMhwuZ29vZ2xlLnByb3RvYnVmLkZpbGVPcHRpb25zUgdvcHRpb25zEkkKEHNvdXJjZV9jb2RlX2luZm8YCSABKAsyHy5nb29nbGUucHJvdG9idWYuU291cmNlQ29kZUluZm9SDnNvdXJjZUNvZGVJbmZvEhYKBnN5bnRheBgMIAEoCVIGc3ludGF4EhgKB2VkaXRpb24YDSABKAlSB2VkaXRpb24iuQYKD0Rlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEjsKBWZpZWxkGAIgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvUgVmaWVsZBJDCglleHRlbnNpb24YBiADKAsyJS5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG9SCWV4dGVuc2lvbhJBCgtuZXN0ZWRfdHlwZRgDIAMoCzIgLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG9SCm5lc3RlZFR5cGUSQQoJZW51bV90eXBlGAQgAygLMiQuZ29vZ2xlLnByb3RvYnVmLkVudW1EZXNjcmlwdG9yUHJvdG9SCGVudW1UeXBlElgKD2V4dGVuc2lvbl9yYW5nZRgFIAMoCzIvLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG8uRXh0ZW5zaW9uUmFuZ2VSDmV4dGVuc2lvblJhbmdlEkQKCm9uZW9mX2RlY2wYCCADKAsyJS5nb29nbGUucHJvdG9idWYuT25lb2ZEZXNjcmlwdG9yUHJvdG9SCW9uZW9mRGVjbBI5CgdvcHRpb25zGAcgASgLMh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zUgdvcHRpb25zElUKDnJlc2VydmVkX3JhbmdlGAkgAygLMi4uZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90by5SZXNlcnZlZFJhbmdlUg1yZXNlcnZlZFJhbmdlEiMKDXJlc2VydmVkX25hbWUYCiADKAlSDHJlc2VydmVkTmFtZRp6Cg5FeHRlbnNpb25SYW5nZRIUCgVzdGFydBgBIAEoBVIFc3RhcnQSEAoDZW5kGAIgASgFUgNlbmQSQAoHb3B0aW9ucxgDIAEoCzImLmdvb2dsZS5wcm90b2J1Zi5FeHRlbnNpb25SYW5nZU9wdGlvbnNSB29wdGlvbnMaNwoNUmVzZXJ2ZWRSYW5nZRIUCgVzdGFydBgBIAEoBVIFc3RhcnQSEAoDZW5kGAIgASgFUgNlbmQirQQKFUV4dGVuc2lvblJhbmdlT3B0aW9ucxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbhJZCgtkZWNsYXJhdGlvbhgCIAMoCzIyLmdvb2dsZS5wcm90b2J1Zi5FeHRlbnNpb25SYW5nZU9wdGlvbnMuRGVjbGFyYXRpb25CA4gBAlILZGVjbGFyYXRpb24SaAoMdmVyaWZpY2F0aW9uGAMgASgOMjguZ29vZ2xlLnByb3RvYnVmLkV4dGVuc2lvblJhbmdlT3B0aW9ucy5WZXJpZmljYXRpb25TdGF0ZToKVU5WRVJJRklFRFIMdmVyaWZpY2F0aW9uGrMBCgtEZWNsYXJhdGlvbhIWCgZudW1iZXIYASABKAVSBm51bWJlchIbCglmdWxsX25hbWUYAiABKAlSCGZ1bGxOYW1lEhIKBHR5cGUYAyABKAlSBHR5cGUSIwoLaXNfcmVwZWF0ZWQYBCABKAhCAhgBUgppc1JlcGVhdGVkEhoKCHJlc2VydmVkGAUgASgIUghyZXNlcnZlZBIaCghyZXBlYXRlZBgGIAEoCFIIcmVwZWF0ZWQiNAoRVmVyaWZpY2F0aW9uU3RhdGUSDwoLREVDTEFSQVRJT04QABIOCgpVTlZFUklGSUVEEAEqCQjoBxCAgICAAiLBBgoURmllbGREZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRIWCgZudW1iZXIYAyABKAVSBm51bWJlchJBCgVsYWJlbBgEIAEoDjIrLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5MYWJlbFIFbGFiZWwSPgoEdHlwZRgFIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlUgR0eXBlEhsKCXR5cGVfbmFtZRgGIAEoCVIIdHlwZU5hbWUSGgoIZXh0ZW5kZWUYAiABKAlSCGV4dGVuZGVlEiMKDWRlZmF1bHRfdmFsdWUYByABKAlSDGRlZmF1bHRWYWx1ZRIfCgtvbmVvZl9pbmRleBgJIAEoBVIKb25lb2ZJbmRleBIbCglqc29uX25hbWUYCiABKAlSCGpzb25OYW1lEjcKB29wdGlvbnMYCCABKAsyHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zUgdvcHRpb25zEicKD3Byb3RvM19vcHRpb25hbBgRIAEoCFIOcHJvdG8zT3B0aW9uYWwitgIKBFR5cGUSDwoLVFlQRV9ET1VCTEUQARIOCgpUWVBFX0ZMT0FUEAISDgoKVFlQRV9JTlQ2NBADEg8KC1RZUEVfVUlOVDY0EAQSDgoKVFlQRV9JTlQzMhAFEhAKDFRZUEVfRklYRUQ2NBAGEhAKDFRZUEVfRklYRUQzMhAHEg0KCVRZUEVfQk9PTBAIEg8KC1RZUEVfU1RSSU5HEAkSDgoKVFlQRV9HUk9VUBAKEhAKDFRZUEVfTUVTU0FHRRALEg4KClRZUEVfQllURVMQDBIPCgtUWVBFX1VJTlQzMhANEg0KCVRZUEVfRU5VTRAOEhEKDVRZUEVfU0ZJWEVEMzIQDxIRCg1UWVBFX1NGSVhFRDY0EBASDwoLVFlQRV9TSU5UMzIQERIPCgtUWVBFX1NJTlQ2NBASIkMKBUxhYmVsEhIKDkxBQkVMX09QVElPTkFMEAESEgoOTEFCRUxfUkVRVUlSRUQQAhISCg5MQUJFTF9SRVBFQVRFRBADImMKFE9uZW9mRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSNwoHb3B0aW9ucxgCIAEoCzIdLmdvb2dsZS5wcm90b2J1Zi5PbmVvZk9wdGlvbnNSB29wdGlvbnMi4wIKE0VudW1EZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRI/CgV2YWx1ZRgCIAMoCzIpLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVEZXNjcmlwdG9yUHJvdG9SBXZhbHVlEjYKB29wdGlvbnMYAyABKAsyHC5nb29nbGUucHJvdG9idWYuRW51bU9wdGlvbnNSB29wdGlvbnMSXQoOcmVzZXJ2ZWRfcmFuZ2UYBCADKAsyNi5nb29nbGUucHJvdG9idWYuRW51bURlc2NyaXB0b3JQcm90by5FbnVtUmVzZXJ2ZWRSYW5nZVINcmVzZXJ2ZWRSYW5nZRIjCg1yZXNlcnZlZF9uYW1lGAUgAygJUgxyZXNlcnZlZE5hbWUaOwoRRW51bVJlc2VydmVkUmFuZ2USFAoFc3RhcnQYASABKAVSBXN0YXJ0EhAKA2VuZBgCIAEoBVIDZW5kIoMBChhFbnVtVmFsdWVEZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRIWCgZudW1iZXIYAiABKAVSBm51bWJlchI7CgdvcHRpb25zGAMgASgLMiEuZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZU9wdGlvbnNSB29wdGlvbnMipwEKFlNlcnZpY2VEZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRI+CgZtZXRob2QYAiADKAsyJi5nb29nbGUucHJvdG9idWYuTWV0aG9kRGVzY3JpcHRvclByb3RvUgZtZXRob2QSOQoHb3B0aW9ucxgDIAEoCzIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9uc1IHb3B0aW9ucyKJAgoVTWV0aG9kRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSHQoKaW5wdXRfdHlwZRgCIAEoCVIJaW5wdXRUeXBlEh8KC291dHB1dF90eXBlGAMgASgJUgpvdXRwdXRUeXBlEjgKB29wdGlvbnMYBCABKAsyHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9uc1IHb3B0aW9ucxIwChBjbGllbnRfc3RyZWFtaW5nGAUgASgIOgVmYWxzZVIPY2xpZW50U3RyZWFtaW5nEjAKEHNlcnZlcl9zdHJlYW1pbmcYBiABKAg6BWZhbHNlUg9zZXJ2ZXJTdHJlYW1pbmcikQkKC0ZpbGVPcHRpb25zEiEKDGphdmFfcGFja2FnZRgBIAEoCVILamF2YVBhY2thZ2USMAoUamF2YV9vdXRlcl9jbGFzc25hbWUYCCABKAlSEmphdmFPdXRlckNsYXNzbmFtZRI1ChNqYXZhX211bHRpcGxlX2ZpbGVzGAogASgIOgVmYWxzZVIRamF2YU11bHRpcGxlRmlsZXMSRAodamF2YV9nZW5lcmF0ZV9lcXVhbHNfYW5kX2hhc2gYFCABKAhCAhgBUhlqYXZhR2VuZXJhdGVFcXVhbHNBbmRIYXNoEjoKFmphdmFfc3RyaW5nX2NoZWNrX3V0ZjgYGyABKAg6BWZhbHNlUhNqYXZhU3RyaW5nQ2hlY2tVdGY4ElMKDG9wdGltaXplX2ZvchgJIAEoDjIpLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9ucy5PcHRpbWl6ZU1vZGU6BVNQRUVEUgtvcHRpbWl6ZUZvchIdCgpnb19wYWNrYWdlGAsgASgJUglnb1BhY2thZ2USNQoTY2NfZ2VuZXJpY19zZXJ2aWNlcxgQIAEoCDoFZmFsc2VSEWNjR2VuZXJpY1NlcnZpY2VzEjkKFWphdmFfZ2VuZXJpY19zZXJ2aWNlcxgRIAEoCDoFZmFsc2VSE2phdmFHZW5lcmljU2VydmljZXMSNQoTcHlfZ2VuZXJpY19zZXJ2aWNlcxgSIAEoCDoFZmFsc2VSEXB5R2VuZXJpY1NlcnZpY2VzEjcKFHBocF9nZW5lcmljX3NlcnZpY2VzGCogASgIOgVmYWxzZVIScGhwR2VuZXJpY1NlcnZpY2VzEiUKCmRlcHJlY2F0ZWQYFyABKAg6BWZhbHNlUgpkZXByZWNhdGVkEi4KEGNjX2VuYWJsZV9hcmVuYXMYHyABKAg6BHRydWVSDmNjRW5hYmxlQXJlbmFzEioKEW9iamNfY2xhc3NfcHJlZml4GCQgASgJUg9vYmpjQ2xhc3NQcmVmaXgSKQoQY3NoYXJwX25hbWVzcGFjZRglIAEoCVIPY3NoYXJwTmFtZXNwYWNlEiEKDHN3aWZ0X3ByZWZpeBgnIAEoCVILc3dpZnRQcmVmaXgSKAoQcGhwX2NsYXNzX3ByZWZpeBgoIAEoCVIOcGhwQ2xhc3NQcmVmaXgSIwoNcGhwX25hbWVzcGFjZRgpIAEoCVIMcGhwTmFtZXNwYWNlEjQKFnBocF9tZXRhZGF0YV9uYW1lc3BhY2UYLCABKAlSFHBocE1ldGFkYXRhTmFtZXNwYWNlEiEKDHJ1YnlfcGFja2FnZRgtIAEoCVILcnVieVBhY2thZ2USWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24iOgoMT3B0aW1pemVNb2RlEgkKBVNQRUVEEAESDQoJQ09ERV9TSVpFEAISEAoMTElURV9SVU5USU1FEAMqCQjoBxCAgICAAkoECCYQJyK7AwoOTWVzc2FnZU9wdGlvbnMSPAoXbWVzc2FnZV9zZXRfd2lyZV9mb3JtYXQYASABKAg6BWZhbHNlUhRtZXNzYWdlU2V0V2lyZUZvcm1hdBJMCh9ub19zdGFuZGFyZF9kZXNjcmlwdG9yX2FjY2Vzc29yGAIgASgIOgVmYWxzZVIcbm9TdGFuZGFyZERlc2NyaXB0b3JBY2Nlc3NvchIlCgpkZXByZWNhdGVkGAMgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBIbCgltYXBfZW50cnkYByABKAhSCG1hcEVudHJ5ElYKJmRlcHJlY2F0ZWRfbGVnYWN5X2pzb25fZmllbGRfY29uZmxpY3RzGAsgASgIQgIYAVIiZGVwcmVjYXRlZExlZ2FjeUpzb25GaWVsZENvbmZsaWN0cxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACSgQIBBAFSgQIBRAGSgQIBhAHSgQICBAJSgQICRAKIoUJCgxGaWVsZE9wdGlvbnMSQQoFY3R5cGUYASABKA4yIy5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLkNUeXBlOgZTVFJJTkdSBWN0eXBlEhYKBnBhY2tlZBgCIAEoCFIGcGFja2VkEkcKBmpzdHlwZRgGIAEoDjIkLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuSlNUeXBlOglKU19OT1JNQUxSBmpzdHlwZRIZCgRsYXp5GAUgASgIOgVmYWxzZVIEbGF6eRIuCg91bnZlcmlmaWVkX2xhenkYDyABKAg6BWZhbHNlUg51bnZlcmlmaWVkTGF6eRIlCgpkZXByZWNhdGVkGAMgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBIZCgR3ZWFrGAogASgIOgVmYWxzZVIEd2VhaxIoCgxkZWJ1Z19yZWRhY3QYECABKAg6BWZhbHNlUgtkZWJ1Z1JlZGFjdBJLCglyZXRlbnRpb24YESABKA4yLS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLk9wdGlvblJldGVudGlvblIJcmV0ZW50aW9uEkoKBnRhcmdldBgSIAEoDjIuLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuT3B0aW9uVGFyZ2V0VHlwZUICGAFSBnRhcmdldBJICgd0YXJnZXRzGBMgAygOMi4uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5PcHRpb25UYXJnZXRUeXBlUgd0YXJnZXRzElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uIi8KBUNUeXBlEgoKBlNUUklORxAAEggKBENPUkQQARIQCgxTVFJJTkdfUElFQ0UQAiI1CgZKU1R5cGUSDQoJSlNfTk9STUFMEAASDQoJSlNfU1RSSU5HEAESDQoJSlNfTlVNQkVSEAIiVQoPT3B0aW9uUmV0ZW50aW9uEhUKEVJFVEVOVElPTl9VTktOT1dOEAASFQoRUkVURU5USU9OX1JVTlRJTUUQARIUChBSRVRFTlRJT05fU09VUkNFEAIijAIKEE9wdGlvblRhcmdldFR5cGUSFwoTVEFSR0VUX1RZUEVfVU5LTk9XThAAEhQKEFRBUkdFVF9UWVBFX0ZJTEUQARIfChtUQVJHRVRfVFlQRV9FWFRFTlNJT05fUkFOR0UQAhIXChNUQVJHRVRfVFlQRV9NRVNTQUdFEAMSFQoRVEFSR0VUX1RZUEVfRklFTEQQBBIVChFUQVJHRVRfVFlQRV9PTkVPRhAFEhQKEFRBUkdFVF9UWVBFX0VOVU0QBhIaChZUQVJHRVRfVFlQRV9FTlVNX0VOVFJZEAcSFwoTVEFSR0VUX1RZUEVfU0VSVklDRRAIEhYKElRBUkdFVF9UWVBFX01FVEhPRBAJKgkI6AcQgICAgAJKBAgEEAUicwoMT25lb2ZPcHRpb25zElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAIimAIKC0VudW1PcHRpb25zEh8KC2FsbG93X2FsaWFzGAIgASgIUgphbGxvd0FsaWFzEiUKCmRlcHJlY2F0ZWQYAyABKAg6BWZhbHNlUgpkZXByZWNhdGVkElYKJmRlcHJlY2F0ZWRfbGVnYWN5X2pzb25fZmllbGRfY29uZmxpY3RzGAYgASgIQgIYAVIiZGVwcmVjYXRlZExlZ2FjeUpzb25GaWVsZENvbmZsaWN0cxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACSgQIBRAGIp4BChBFbnVtVmFsdWVPcHRpb25zEiUKCmRlcHJlY2F0ZWQYASABKAg6BWZhbHNlUgpkZXByZWNhdGVkElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAIinAEKDlNlcnZpY2VPcHRpb25zEiUKCmRlcHJlY2F0ZWQYISABKAg6BWZhbHNlUgpkZXByZWNhdGVkElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAIi4AIKDU1ldGhvZE9wdGlvbnMSJQoKZGVwcmVjYXRlZBghIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQScQoRaWRlbXBvdGVuY3lfbGV2ZWwYIiABKA4yLy5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucy5JZGVtcG90ZW5jeUxldmVsOhNJREVNUE9URU5DWV9VTktOT1dOUhBpZGVtcG90ZW5jeUxldmVsElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uIlAKEElkZW1wb3RlbmN5TGV2ZWwSFwoTSURFTVBPVEVOQ1lfVU5LTk9XThAAEhMKD05PX1NJREVfRUZGRUNUUxABEg4KCklERU1QT1RFTlQQAioJCOgHEICAgIACIpoDChNVbmludGVycHJldGVkT3B0aW9uEkEKBG5hbWUYAiADKAsyLS5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvbi5OYW1lUGFydFIEbmFtZRIpChBpZGVudGlmaWVyX3ZhbHVlGAMgASgJUg9pZGVudGlmaWVyVmFsdWUSLAoScG9zaXRpdmVfaW50X3ZhbHVlGAQgASgEUhBwb3NpdGl2ZUludFZhbHVlEiwKEm5lZ2F0aXZlX2ludF92YWx1ZRgFIAEoA1IQbmVnYXRpdmVJbnRWYWx1ZRIhCgxkb3VibGVfdmFsdWUYBiABKAFSC2RvdWJsZVZhbHVlEiEKDHN0cmluZ192YWx1ZRgHIAEoDFILc3RyaW5nVmFsdWUSJwoPYWdncmVnYXRlX3ZhbHVlGAggASgJUg5hZ2dyZWdhdGVWYWx1ZRpKCghOYW1lUGFydBIbCgluYW1lX3BhcnQYASACKAlSCG5hbWVQYXJ0EiEKDGlzX2V4dGVuc2lvbhgCIAIoCFILaXNFeHRlbnNpb24ipwIKDlNvdXJjZUNvZGVJbmZvEkQKCGxvY2F0aW9uGAEgAygLMiguZ29vZ2xlLnByb3RvYnVmLlNvdXJjZUNvZGVJbmZvLkxvY2F0aW9uUghsb2NhdGlvbhrOAQoITG9jYXRpb24SFgoEcGF0aBgBIAMoBUICEAFSBHBhdGgSFgoEc3BhbhgCIAMoBUICEAFSBHNwYW4SKQoQbGVhZGluZ19jb21tZW50cxgDIAEoCVIPbGVhZGluZ0NvbW1lbnRzEisKEXRyYWlsaW5nX2NvbW1lbnRzGAQgASgJUhB0cmFpbGluZ0NvbW1lbnRzEjoKGWxlYWRpbmdfZGV0YWNoZWRfY29tbWVudHMYBiADKAlSF2xlYWRpbmdEZXRhY2hlZENvbW1lbnRzItACChFHZW5lcmF0ZWRDb2RlSW5mbxJNCgphbm5vdGF0aW9uGAEgAygLMi0uZ29vZ2xlLnByb3RvYnVmLkdlbmVyYXRlZENvZGVJbmZvLkFubm90YXRpb25SCmFubm90YXRpb24a6wEKCkFubm90YXRpb24SFgoEcGF0aBgBIAMoBUICEAFSBHBhdGgSHwoLc291cmNlX2ZpbGUYAiABKAlSCnNvdXJjZUZpbGUSFAoFYmVnaW4YAyABKAVSBWJlZ2luEhAKA2VuZBgEIAEoBVIDZW5kElIKCHNlbWFudGljGAUgASgOMjYuZ29vZ2xlLnByb3RvYnVmLkdlbmVyYXRlZENvZGVJbmZvLkFubm90YXRpb24uU2VtYW50aWNSCHNlbWFudGljIigKCFNlbWFudGljEggKBE5PTkUQABIHCgNTRVQQARIJCgVBTElBUxACQn4KE2NvbS5nb29nbGUucHJvdG9idWZCEERlc2NyaXB0b3JQcm90b3NIAVotZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMvZGVzY3JpcHRvcnBi+AEBogIDR1BCqgIaR29vZ2xlLlByb3RvYnVmLlJlZmxlY3Rpb24KqAIKHGdvb2dsZS9hcGkvYW5ub3RhdGlvbnMucHJvdG8SCmdvb2dsZS5hcGkaFWdvb2dsZS9hcGkvaHR0cC5wcm90bxogZ29vZ2xlL3Byb3RvYnVmL2Rlc2NyaXB0b3IucHJvdG86SwoEaHR0cBIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLDKvCIgASgLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZVIEaHR0cEJuCg5jb20uZ29vZ2xlLmFwaUIQQW5ub3RhdGlvbnNQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc6ICBEdBUEliBnByb3RvMwroAwofZ29vZ2xlL2FwaS9maWVsZF9iZWhhdmlvci5wcm90bxIKZ29vZ2xlLmFwaRogZ29vZ2xlL3Byb3RvYnVmL2Rlc2NyaXB0b3IucHJvdG8qtgEKDUZpZWxkQmVoYXZpb3ISHgoaRklFTERfQkVIQVZJT1JfVU5TUEVDSUZJRUQQABIMCghPUFRJT05BTBABEgwKCFJFUVVJUkVEEAISDwoLT1VUUFVUX09OTFkQAxIOCgpJTlBVVF9PTkxZEAQSDQoJSU1NVVRBQkxFEAUSEgoOVU5PUkRFUkVEX0xJU1QQBhIVChFOT05fRU1QVFlfREVGQVVMVBAHEg4KCklERU5USUZJRVIQCDpkCg5maWVsZF9iZWhhdmlvchIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYnAggAygOMhkuZ29vZ2xlLmFwaS5GaWVsZEJlaGF2aW9yQgIQAFINZmllbGRCZWhhdmlvckJwCg5jb20uZ29vZ2xlLmFwaUISRmllbGRCZWhhdmlvclByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25zogIER0FQSWIGcHJvdG8zCuIFChxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYimAEKBlN0cnVjdBI7CgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5UgZmaWVsZHMaUQoLRmllbGRzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASKyAgoFVmFsdWUSOwoKbnVsbF92YWx1ZRgBIAEoDjIaLmdvb2dsZS5wcm90b2J1Zi5OdWxsVmFsdWVIAFIJbnVsbFZhbHVlEiMKDG51bWJlcl92YWx1ZRgCIAEoAUgAUgtudW1iZXJWYWx1ZRIjCgxzdHJpbmdfdmFsdWUYAyABKAlIAFILc3RyaW5nVmFsdWUSHwoKYm9vbF92YWx1ZRgEIAEoCEgAUglib29sVmFsdWUSPAoMc3RydWN0X3ZhbHVlGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAUgtzdHJ1Y3RWYWx1ZRI7CgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAUglsaXN0VmFsdWVCBgoEa2luZCI7CglMaXN0VmFsdWUSLgoGdmFsdWVzGAEgAygLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgZ2YWx1ZXMqGwoJTnVsbFZhbHVlEg4KCk5VTExfVkFMVUUQAEJ/ChNjb20uZ29vZ2xlLnByb3RvYnVmQgtTdHJ1Y3RQcm90b1ABWi9nb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi9zdHJ1Y3RwYvgBAaICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IGcHJvdG8zCqY+Cixwcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL29wZW5hcGl2Mi5wcm90bxIpZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMaHGdvb2dsZS9wcm90b2J1Zi9zdHJ1Y3QucHJvdG8iswgKB1N3YWdnZXISGAoHc3dhZ2dlchgBIAEoCVIHc3dhZ2dlchJDCgRpbmZvGAIgASgLMi8uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSW5mb1IEaW5mbxISCgRob3N0GAMgASgJUgRob3N0EhsKCWJhc2VfcGF0aBgEIAEoCVIIYmFzZVBhdGgSSwoHc2NoZW1lcxgFIAMoDjIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjaGVtZVIHc2NoZW1lcxIaCghjb25zdW1lcxgGIAMoCVIIY29uc3VtZXMSGgoIcHJvZHVjZXMYByADKAlSCHByb2R1Y2VzEl8KCXJlc3BvbnNlcxgKIAMoCzJBLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlN3YWdnZXIuUmVzcG9uc2VzRW50cnlSCXJlc3BvbnNlcxJxChRzZWN1cml0eV9kZWZpbml0aW9ucxgLIAEoCzI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5RGVmaW5pdGlvbnNSE3NlY3VyaXR5RGVmaW5pdGlvbnMSWgoIc2VjdXJpdHkYDCADKAsyPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVJlcXVpcmVtZW50UghzZWN1cml0eRJCCgR0YWdzGA0gAygLMi4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuVGFnUgR0YWdzEmUKDWV4dGVybmFsX2RvY3MYDiABKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5FeHRlcm5hbERvY3VtZW50YXRpb25SDGV4dGVybmFsRG9jcxJiCgpleHRlbnNpb25zGA8gAygLMkIuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU3dhZ2dlci5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMacQoOUmVzcG9uc2VzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSSQoFdmFsdWUYAiABKAsyMy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZVIFdmFsdWU6AjgBGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBSgQICBAJSgQICRAKItYHCglPcGVyYXRpb24SEgoEdGFncxgBIAMoCVIEdGFncxIYCgdzdW1tYXJ5GAIgASgJUgdzdW1tYXJ5EiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtkZXNjcmlwdGlvbhJlCg1leHRlcm5hbF9kb2NzGAQgASgLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuRXh0ZXJuYWxEb2N1bWVudGF0aW9uUgxleHRlcm5hbERvY3MSIQoMb3BlcmF0aW9uX2lkGAUgASgJUgtvcGVyYXRpb25JZBIaCghjb25zdW1lcxgGIAMoCVIIY29uc3VtZXMSGgoIcHJvZHVjZXMYByADKAlSCHByb2R1Y2VzEmEKCXJlc3BvbnNlcxgJIAMoCzJDLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLk9wZXJhdGlvbi5SZXNwb25zZXNFbnRyeVIJcmVzcG9uc2VzEksKB3NjaGVtZXMYCiADKA4yMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY2hlbWVSB3NjaGVtZXMSHgoKZGVwcmVjYXRlZBgLIAEoCFIKZGVwcmVjYXRlZBJaCghzZWN1cml0eRgMIAMoCzI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnRSCHNlY3VyaXR5EmQKCmV4dGVuc2lvbnMYDSADKAsyRC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5PcGVyYXRpb24uRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zElUKCnBhcmFtZXRlcnMYDiABKAsyNS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5QYXJhbWV0ZXJzUgpwYXJhbWV0ZXJzGnEKDlJlc3BvbnNlc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EkkKBXZhbHVlGAIgASgLMjMuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2VSBXZhbHVlOgI4ARpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4AUoECAgQCSJiCgpQYXJhbWV0ZXJzElQKB2hlYWRlcnMYASADKAsyOi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5IZWFkZXJQYXJhbWV0ZXJSB2hlYWRlcnMiowIKD0hlYWRlclBhcmFtZXRlchISCgRuYW1lGAEgASgJUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhJTCgR0eXBlGAMgASgOMj8uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSGVhZGVyUGFyYW1ldGVyLlR5cGVSBHR5cGUSFgoGZm9ybWF0GAQgASgJUgZmb3JtYXQSGgoIcmVxdWlyZWQYBSABKAhSCHJlcXVpcmVkIkUKBFR5cGUSCwoHVU5LTk9XThAAEgoKBlNUUklORxABEgoKBk5VTUJFUhACEgsKB0lOVEVHRVIQAxILCgdCT09MRUFOEARKBAgGEAdKBAgHEAgi2AEKBkhlYWRlchIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24SEgoEdHlwZRgCIAEoCVIEdHlwZRIWCgZmb3JtYXQYAyABKAlSBmZvcm1hdBIYCgdkZWZhdWx0GAYgASgJUgdkZWZhdWx0EhgKB3BhdHRlcm4YDSABKAlSB3BhdHRlcm5KBAgEEAVKBAgFEAZKBAgHEAhKBAgIEAlKBAgJEApKBAgKEAtKBAgLEAxKBAgMEA1KBAgOEA9KBAgPEBBKBAgQEBFKBAgREBJKBAgSEBMimgUKCFJlc3BvbnNlEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbhJJCgZzY2hlbWEYAiABKAsyMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY2hlbWFSBnNjaGVtYRJaCgdoZWFkZXJzGAMgAygLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2UuSGVhZGVyc0VudHJ5UgdoZWFkZXJzEl0KCGV4YW1wbGVzGAQgAygLMkEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2UuRXhhbXBsZXNFbnRyeVIIZXhhbXBsZXMSYwoKZXh0ZW5zaW9ucxgFIAMoCzJDLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxptCgxIZWFkZXJzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSRwoFdmFsdWUYAiABKAsyMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5IZWFkZXJSBXZhbHVlOgI4ARo7Cg1FeGFtcGxlc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEi1gMKBEluZm8SFAoFdGl0bGUYASABKAlSBXRpdGxlEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhIoChB0ZXJtc19vZl9zZXJ2aWNlGAMgASgJUg50ZXJtc09mU2VydmljZRJMCgdjb250YWN0GAQgASgLMjIuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuQ29udGFjdFIHY29udGFjdBJMCgdsaWNlbnNlGAUgASgLMjIuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuTGljZW5zZVIHbGljZW5zZRIYCgd2ZXJzaW9uGAYgASgJUgd2ZXJzaW9uEl8KCmV4dGVuc2lvbnMYByADKAsyPy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5JbmZvLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASJFCgdDb250YWN0EhIKBG5hbWUYASABKAlSBG5hbWUSEAoDdXJsGAIgASgJUgN1cmwSFAoFZW1haWwYAyABKAlSBWVtYWlsIi8KB0xpY2Vuc2USEgoEbmFtZRgBIAEoCVIEbmFtZRIQCgN1cmwYAiABKAlSA3VybCJLChVFeHRlcm5hbERvY3VtZW50YXRpb24SIAoLZGVzY3JpcHRpb24YASABKAlSC2Rlc2NyaXB0aW9uEhAKA3VybBgCIAEoCVIDdXJsIqoCCgZTY2hlbWESVgoLanNvbl9zY2hlbWEYASABKAsyNS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hUgpqc29uU2NoZW1hEiQKDWRpc2NyaW1pbmF0b3IYAiABKAlSDWRpc2NyaW1pbmF0b3ISGwoJcmVhZF9vbmx5GAMgASgIUghyZWFkT25seRJlCg1leHRlcm5hbF9kb2NzGAUgASgLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuRXh0ZXJuYWxEb2N1bWVudGF0aW9uUgxleHRlcm5hbERvY3MSGAoHZXhhbXBsZRgGIAEoCVIHZXhhbXBsZUoECAQQBSLXCgoKSlNPTlNjaGVtYRIQCgNyZWYYAyABKAlSA3JlZhIUCgV0aXRsZRgFIAEoCVIFdGl0bGUSIAoLZGVzY3JpcHRpb24YBiABKAlSC2Rlc2NyaXB0aW9uEhgKB2RlZmF1bHQYByABKAlSB2RlZmF1bHQSGwoJcmVhZF9vbmx5GAggASgIUghyZWFkT25seRIYCgdleGFtcGxlGAkgASgJUgdleGFtcGxlEh8KC211bHRpcGxlX29mGAogASgBUgptdWx0aXBsZU9mEhgKB21heGltdW0YCyABKAFSB21heGltdW0SKwoRZXhjbHVzaXZlX21heGltdW0YDCABKAhSEGV4Y2x1c2l2ZU1heGltdW0SGAoHbWluaW11bRgNIAEoAVIHbWluaW11bRIrChFleGNsdXNpdmVfbWluaW11bRgOIAEoCFIQZXhjbHVzaXZlTWluaW11bRIdCgptYXhfbGVuZ3RoGA8gASgEUgltYXhMZW5ndGgSHQoKbWluX2xlbmd0aBgQIAEoBFIJbWluTGVuZ3RoEhgKB3BhdHRlcm4YESABKAlSB3BhdHRlcm4SGwoJbWF4X2l0ZW1zGBQgASgEUghtYXhJdGVtcxIbCgltaW5faXRlbXMYFSABKARSCG1pbkl0ZW1zEiEKDHVuaXF1ZV9pdGVtcxgWIAEoCFILdW5pcXVlSXRlbXMSJQoObWF4X3Byb3BlcnRpZXMYGCABKARSDW1heFByb3BlcnRpZXMSJQoObWluX3Byb3BlcnRpZXMYGSABKARSDW1pblByb3BlcnRpZXMSGgoIcmVxdWlyZWQYGiADKAlSCHJlcXVpcmVkEhQKBWFycmF5GCIgAygJUgVhcnJheRJfCgR0eXBlGCMgAygOMksuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYS5KU09OU2NoZW1hU2ltcGxlVHlwZXNSBHR5cGUSFgoGZm9ybWF0GCQgASgJUgZmb3JtYXQSEgoEZW51bRguIAMoCVIEZW51bRJ6ChNmaWVsZF9jb25maWd1cmF0aW9uGOkHIAEoCzJILmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWEuRmllbGRDb25maWd1cmF0aW9uUhJmaWVsZENvbmZpZ3VyYXRpb24SZQoKZXh0ZW5zaW9ucxgwIAMoCzJFLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWEuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGjwKEkZpZWxkQ29uZmlndXJhdGlvbhImCg9wYXRoX3BhcmFtX25hbWUYLyABKAlSDXBhdGhQYXJhbU5hbWUaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEidwoVSlNPTlNjaGVtYVNpbXBsZVR5cGVzEgsKB1VOS05PV04QABIJCgVBUlJBWRABEgsKB0JPT0xFQU4QAhILCgdJTlRFR0VSEAMSCAoETlVMTBAEEgoKBk5VTUJFUhAFEgoKBk9CSkVDVBAGEgoKBlNUUklORxAHSgQIARACSgQIAhADSgQIBBAFSgQIEhATSgQIExAUSgQIFxAYSgQIGxAcSgQIHBAdSgQIHRAeSgQIHhAiSgQIJRAqSgQIKhArSgQIKxAuItkCCgNUYWcSEgoEbmFtZRgBIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SZQoNZXh0ZXJuYWxfZG9jcxgDIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEl4KCmV4dGVuc2lvbnMYBCADKAsyPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5UYWcuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIvcBChNTZWN1cml0eURlZmluaXRpb25zEmgKCHNlY3VyaXR5GAEgAygLMkwuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlEZWZpbml0aW9ucy5TZWN1cml0eUVudHJ5UghzZWN1cml0eRp2Cg1TZWN1cml0eUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5Ek8KBXZhbHVlGAIgASgLMjkuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWVSBXZhbHVlOgI4ASL/BgoOU2VjdXJpdHlTY2hlbWUSUgoEdHlwZRgBIAEoDjI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lLlR5cGVSBHR5cGUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uEhIKBG5hbWUYAyABKAlSBG5hbWUSTAoCaW4YBCABKA4yPC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5JblICaW4SUgoEZmxvdxgFIAEoDjI+LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lLkZsb3dSBGZsb3cSKwoRYXV0aG9yaXphdGlvbl91cmwYBiABKAlSEGF1dGhvcml6YXRpb25VcmwSGwoJdG9rZW5fdXJsGAcgASgJUgh0b2tlblVybBJJCgZzY29wZXMYCCABKAsyMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY29wZXNSBnNjb3BlcxJpCgpleHRlbnNpb25zGAkgAygLMkkuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWUuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIksKBFR5cGUSEAoMVFlQRV9JTlZBTElEEAASDgoKVFlQRV9CQVNJQxABEhAKDFRZUEVfQVBJX0tFWRACEg8KC1RZUEVfT0FVVEgyEAMiMQoCSW4SDgoKSU5fSU5WQUxJRBAAEgwKCElOX1FVRVJZEAESDQoJSU5fSEVBREVSEAIiagoERmxvdxIQCgxGTE9XX0lOVkFMSUQQABIRCg1GTE9XX0lNUExJQ0lUEAESEQoNRkxPV19QQVNTV09SRBACEhQKEEZMT1dfQVBQTElDQVRJT04QAxIUChBGTE9XX0FDQ0VTU19DT0RFEAQi9gIKE1NlY3VyaXR5UmVxdWlyZW1lbnQSigEKFHNlY3VyaXR5X3JlcXVpcmVtZW50GAEgAygLMlcuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlSZXF1aXJlbWVudC5TZWN1cml0eVJlcXVpcmVtZW50RW50cnlSE3NlY3VyaXR5UmVxdWlyZW1lbnQaMAoYU2VjdXJpdHlSZXF1aXJlbWVudFZhbHVlEhQKBXNjb3BlGAEgAygJUgVzY29wZRqfAQoYU2VjdXJpdHlSZXF1aXJlbWVudEVudHJ5EhAKA2tleRgBIAEoCVIDa2V5Em0KBXZhbHVlGAIgASgLMlcuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlSZXF1aXJlbWVudC5TZWN1cml0eVJlcXVpcmVtZW50VmFsdWVSBXZhbHVlOgI4ASKWAQoGU2NvcGVzElIKBXNjb3BlGAEgAygLMjwuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NvcGVzLlNjb3BlRW50cnlSBXNjb3BlGjgKClNjb3BlRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ASo7CgZTY2hlbWUSCwoHVU5LTk9XThAAEggKBEhUVFAQARIJCgVIVFRQUxACEgYKAldTEAMSBwoDV1NTEARCSFpGZ2l0aHViLmNvbS9ncnBjLWVjb3N5c3RlbS9ncnBjLWdhdGV3YXkvdjIvcHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9uc2IGcHJvdG8zCv0GCi5wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL2Fubm90YXRpb25zLnByb3RvEilncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucxogZ29vZ2xlL3Byb3RvYnVmL2Rlc2NyaXB0b3IucHJvdG8aLHByb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnMvb3BlbmFwaXYyLnByb3RvOn4KEW9wZW5hcGl2Ml9zd2FnZ2VyEhwuZ29vZ2xlLnByb3RvYnVmLkZpbGVPcHRpb25zGJIIIAEoCzIyLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlN3YWdnZXJSEG9wZW5hcGl2MlN3YWdnZXI6hgEKE29wZW5hcGl2Ml9vcGVyYXRpb24SHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiSCCABKAsyNC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5PcGVyYXRpb25SEm9wZW5hcGl2Mk9wZXJhdGlvbjp+ChBvcGVuYXBpdjJfc2NoZW1hEh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGJIIIAEoCzIxLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjaGVtYVIPb3BlbmFwaXYyU2NoZW1hOnUKDW9wZW5hcGl2Ml90YWcSHy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnMYkgggASgLMi4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuVGFnUgxvcGVuYXBpdjJUYWc6fgoPb3BlbmFwaXYyX2ZpZWxkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiSCCABKAsyNS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hUg5vcGVuYXBpdjJGaWVsZEJIWkZnaXRodWIuY29tL2dycGMtZWNvc3lzdGVtL2dycGMtZ2F0ZXdheS92Mi9wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zYgZwcm90bzMK9gMKE3Byb3RvL3RhZy90YWcucHJvdG8SDWJ1Y2tldGVlci50YWcitwIKA1RhZxIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIdCgpjcmVhdGVkX2F0GAMgASgDUgljcmVhdGVkQXQSHQoKdXBkYXRlZF9hdBgEIAEoA1IJdXBkYXRlZEF0Ej4KC2VudGl0eV90eXBlGAUgASgOMh0uYnVja2V0ZWVyLnRhZy5UYWcuRW50aXR5VHlwZVIKZW50aXR5VHlwZRIlCg5lbnZpcm9ubWVudF9pZBgGIAEoCVINZW52aXJvbm1lbnRJZBIpChBlbnZpcm9ubWVudF9uYW1lGAcgASgJUg9lbnZpcm9ubWVudE5hbWUiPAoKRW50aXR5VHlwZRIPCgtVTlNQRUNJRklFRBAAEhAKDEZFQVRVUkVfRkxBRxABEgsKB0FDQ09VTlQQAiJfCg5FbnZpcm9ubWVudFRhZxIlCg5lbnZpcm9ubWVudF9pZBgBIAEoCVINZW52aXJvbm1lbnRJZBImCgR0YWdzGAIgAygLMhIuYnVja2V0ZWVyLnRhZy5UYWdSBHRhZ3NCLVorZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL3RhZ2IGcHJvdG8zCtUVChdwcm90by90YWcvc2VydmljZS5wcm90bxINYnVja2V0ZWVyLnRhZxocZ29vZ2xlL2FwaS9hbm5vdGF0aW9ucy5wcm90bxofZ29vZ2xlL2FwaS9maWVsZF9iZWhhdmlvci5wcm90bxoucHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9hbm5vdGF0aW9ucy5wcm90bxoTcHJvdG8vdGFnL3RhZy5wcm90byKcAQoQQ3JlYXRlVGFnUmVxdWVzdBIXCgRuYW1lGAEgASgJQgPgQQJSBG5hbWUSQwoLZW50aXR5X3R5cGUYAiABKA4yHS5idWNrZXRlZXIudGFnLlRhZy5FbnRpdHlUeXBlQgPgQQJSCmVudGl0eVR5cGUSKgoOZW52aXJvbm1lbnRfaWQYAyABKAlCA+BBAlINZW52aXJvbm1lbnRJZCI5ChFDcmVhdGVUYWdSZXNwb25zZRIkCgN0YWcYASABKAsyEi5idWNrZXRlZXIudGFnLlRhZ1IDdGFnIlMKEERlbGV0ZVRhZ1JlcXVlc3QSEwoCaWQYASABKAlCA+BBAlICaWQSKgoOZW52aXJvbm1lbnRfaWQYAiABKAlCA+BBAlINZW52aXJvbm1lbnRJZCITChFEZWxldGVUYWdSZXNwb25zZSKnBAoPTGlzdFRhZ3NSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgCIAEoA1IIcGFnZVNpemUSFgoGY3Vyc29yGAMgASgJUgZjdXJzb3ISQQoIb3JkZXJfYnkYBCABKA4yJi5idWNrZXRlZXIudGFnLkxpc3RUYWdzUmVxdWVzdC5PcmRlckJ5UgdvcmRlckJ5ElYKD29yZGVyX2RpcmVjdGlvbhgFIAEoDjItLmJ1Y2tldGVlci50YWcuTGlzdFRhZ3NSZXF1ZXN0Lk9yZGVyRGlyZWN0aW9uUg5vcmRlckRpcmVjdGlvbhIlCg5zZWFyY2hfa2V5d29yZBgGIAEoCVINc2VhcmNoS2V5d29yZBIlCg5lbnZpcm9ubWVudF9pZBgHIAEoCVINZW52aXJvbm1lbnRJZBInCg9vcmdhbml6YXRpb25faWQYCCABKAlSDm9yZ2FuaXphdGlvbklkEj4KC2VudGl0eV90eXBlGAkgASgOMh0uYnVja2V0ZWVyLnRhZy5UYWcuRW50aXR5VHlwZVIKZW50aXR5VHlwZSJiCgdPcmRlckJ5EgsKB0RFRkFVTFQQABIICgROQU1FEAESDgoKQ1JFQVRFRF9BVBACEg4KClVQREFURURfQVQQAxIPCgtFTlRJVFlfVFlQRRAEEg8KC0VOVklST05NRU5UEAUiIwoOT3JkZXJEaXJlY3Rpb24SBwoDQVNDEAASCAoEREVTQxABSgQIARACInMKEExpc3RUYWdzUmVzcG9uc2USJgoEdGFncxgBIAMoCzISLmJ1Y2tldGVlci50YWcuVGFnUgR0YWdzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEh8KC3RvdGFsX2NvdW50GAMgASgDUgp0b3RhbENvdW50MowMCgpUYWdTZXJ2aWNlEvYDCghMaXN0VGFncxIeLmJ1Y2tldGVlci50YWcuTGlzdFRhZ3NSZXF1ZXN0Gh8uYnVja2V0ZWVyLnRhZy5MaXN0VGFnc1Jlc3BvbnNlIqgDkkGUAwoDdGFnEgRMaXN0GgpMaXN0IHRhZ3MuKg93ZWIudjEudGFnLmxpc3RKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIKEggvdjEvdGFncxKCBAoJQ3JlYXRlVGFnEh8uYnVja2V0ZWVyLnRhZy5DcmVhdGVUYWdSZXF1ZXN0GiAuYnVja2V0ZWVyLnRhZy5DcmVhdGVUYWdSZXNwb25zZSKxA5JBmwMKA3RhZxIGQ3JlYXRlGg1DcmVhdGUgYSB0YWcuKhF3ZWIudjEudGFnLmNyZWF0ZUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAgwiBy92MS90YWc6ASoS/wMKCURlbGV0ZVRhZxIfLmJ1Y2tldGVlci50YWcuRGVsZXRlVGFnUmVxdWVzdBogLmJ1Y2tldGVlci50YWcuRGVsZXRlVGFnUmVzcG9uc2UirgOSQZsDCgN0YWcSBkRlbGV0ZRoNRGVsZXRlIGEgdGFnLioRd2ViLnYxLnRhZy5kZWxldGVKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIJKgcvdjEvdGFnQi1aK2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by90YWdiBnByb3RvMw== - coderefDescriptor: CrcGCiJwcm90by9jb2RlcmVmL2NvZGVfcmVmZXJlbmNlLnByb3RvEhFidWNrZXRlZXIuY29kZXJlZiLCBQoNQ29kZVJlZmVyZW5jZRIOCgJpZBgBIAEoCVICaWQSHQoKZmVhdHVyZV9pZBgCIAEoCVIJZmVhdHVyZUlkEhsKCWZpbGVfcGF0aBgDIAEoCVIIZmlsZVBhdGgSHwoLbGluZV9udW1iZXIYBCABKAVSCmxpbmVOdW1iZXISIQoMY29kZV9zbmlwcGV0GAUgASgJUgtjb2RlU25pcHBldBIhCgxjb250ZW50X2hhc2gYBiABKAlSC2NvbnRlbnRIYXNoEhgKB2FsaWFzZXMYByADKAlSB2FsaWFzZXMSJwoPcmVwb3NpdG9yeV9uYW1lGAggASgJUg5yZXBvc2l0b3J5TmFtZRIpChByZXBvc2l0b3J5X293bmVyGAkgASgJUg9yZXBvc2l0b3J5T3duZXISWAoPcmVwb3NpdG9yeV90eXBlGAogASgOMi8uYnVja2V0ZWVyLmNvZGVyZWYuQ29kZVJlZmVyZW5jZS5SZXBvc2l0b3J5VHlwZVIOcmVwb3NpdG9yeVR5cGUSKwoRcmVwb3NpdG9yeV9icmFuY2gYCyABKAlSEHJlcG9zaXRvcnlCcmFuY2gSHwoLY29tbWl0X2hhc2gYDCABKAlSCmNvbW1pdEhhc2gSJQoOZW52aXJvbm1lbnRfaWQYDSABKAlSDWVudmlyb25tZW50SWQSHQoKY3JlYXRlZF9hdBgOIAEoA1IJY3JlYXRlZEF0Eh0KCnVwZGF0ZWRfYXQYDyABKANSCXVwZGF0ZWRBdBIdCgpzb3VyY2VfdXJsGBAgASgJUglzb3VyY2VVcmwiZAoOUmVwb3NpdG9yeVR5cGUSHwobUkVQT1NJVE9SWV9UWVBFX1VOU1BFQ0lGSUVEEAASCgoGR0lUSFVCEAESCgoGR0lUTEFCEAISDQoJQklUQlVDS0VUEAMSCgoGQ1VTVE9NEARCMVovZ2l0aHViLmNvbS9idWNrZXRlZXItaW8vYnVja2V0ZWVyL3Byb3RvL2NvZGVyZWZiBnByb3RvMwqHBQoVZ29vZ2xlL2FwaS9odHRwLnByb3RvEgpnb29nbGUuYXBpInkKBEh0dHASKgoFcnVsZXMYASADKAsyFC5nb29nbGUuYXBpLkh0dHBSdWxlUgVydWxlcxJFCh9mdWxseV9kZWNvZGVfcmVzZXJ2ZWRfZXhwYW5zaW9uGAIgASgIUhxmdWxseURlY29kZVJlc2VydmVkRXhwYW5zaW9uIrUCCghIdHRwUnVsZRIaCghzZWxlY3RvchgBIAEoCVIIc2VsZWN0b3ISEgoDZ2V0GAIgASgJSABSA2dldBISCgNwdXQYAyABKAlIAFIDcHV0EhQKBHBvc3QYBCABKAlIAFIEcG9zdBIYCgZkZWxldGUYBSABKAlIAFIGZGVsZXRlEhYKBXBhdGNoGAYgASgJSABSBXBhdGNoEjcKBmN1c3RvbRgIIAEoCzIdLmdvb2dsZS5hcGkuQ3VzdG9tSHR0cFBhdHRlcm5IAFIGY3VzdG9tEhIKBGJvZHkYByABKAlSBGJvZHkSRQoTYWRkaXRpb25hbF9iaW5kaW5ncxgLIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSEmFkZGl0aW9uYWxCaW5kaW5nc0IJCgdwYXR0ZXJuIjsKEUN1c3RvbUh0dHBQYXR0ZXJuEhIKBGtpbmQYASABKAlSBGtpbmQSEgoEcGF0aBgCIAEoCVIEcGF0aEJqCg5jb20uZ29vZ2xlLmFwaUIJSHR0cFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25z+AEBogIER0FQSWIGcHJvdG8zCuFGCiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIk0KEUZpbGVEZXNjcmlwdG9yU2V0EjgKBGZpbGUYASADKAsyJC5nb29nbGUucHJvdG9idWYuRmlsZURlc2NyaXB0b3JQcm90b1IEZmlsZSL+BAoTRmlsZURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEhgKB3BhY2thZ2UYAiABKAlSB3BhY2thZ2USHgoKZGVwZW5kZW5jeRgDIAMoCVIKZGVwZW5kZW5jeRIrChFwdWJsaWNfZGVwZW5kZW5jeRgKIAMoBVIQcHVibGljRGVwZW5kZW5jeRInCg93ZWFrX2RlcGVuZGVuY3kYCyADKAVSDndlYWtEZXBlbmRlbmN5EkMKDG1lc3NhZ2VfdHlwZRgEIAMoCzIgLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG9SC21lc3NhZ2VUeXBlEkEKCWVudW1fdHlwZRgFIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvUghlbnVtVHlwZRJBCgdzZXJ2aWNlGAYgAygLMicuZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VEZXNjcmlwdG9yUHJvdG9SB3NlcnZpY2USQwoJZXh0ZW5zaW9uGAcgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvUglleHRlbnNpb24SNgoHb3B0aW9ucxgIIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9uc1IHb3B0aW9ucxJJChBzb3VyY2VfY29kZV9pbmZvGAkgASgLMh8uZ29vZ2xlLnByb3RvYnVmLlNvdXJjZUNvZGVJbmZvUg5zb3VyY2VDb2RlSW5mbxIWCgZzeW50YXgYDCABKAlSBnN5bnRheBIYCgdlZGl0aW9uGA0gASgJUgdlZGl0aW9uIrkGCg9EZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRI7CgVmaWVsZBgCIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90b1IFZmllbGQSQwoJZXh0ZW5zaW9uGAYgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvUglleHRlbnNpb24SQQoLbmVzdGVkX3R5cGUYAyADKAsyIC5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvUgpuZXN0ZWRUeXBlEkEKCWVudW1fdHlwZRgEIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvUghlbnVtVHlwZRJYCg9leHRlbnNpb25fcmFuZ2UYBSADKAsyLy5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvLkV4dGVuc2lvblJhbmdlUg5leHRlbnNpb25SYW5nZRJECgpvbmVvZl9kZWNsGAggAygLMiUuZ29vZ2xlLnByb3RvYnVmLk9uZW9mRGVzY3JpcHRvclByb3RvUglvbmVvZkRlY2wSOQoHb3B0aW9ucxgHIAEoCzIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9uc1IHb3B0aW9ucxJVCg5yZXNlcnZlZF9yYW5nZRgJIAMoCzIuLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG8uUmVzZXJ2ZWRSYW5nZVINcmVzZXJ2ZWRSYW5nZRIjCg1yZXNlcnZlZF9uYW1lGAogAygJUgxyZXNlcnZlZE5hbWUaegoORXh0ZW5zaW9uUmFuZ2USFAoFc3RhcnQYASABKAVSBXN0YXJ0EhAKA2VuZBgCIAEoBVIDZW5kEkAKB29wdGlvbnMYAyABKAsyJi5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2VPcHRpb25zUgdvcHRpb25zGjcKDVJlc2VydmVkUmFuZ2USFAoFc3RhcnQYASABKAVSBXN0YXJ0EhAKA2VuZBgCIAEoBVIDZW5kIq0EChVFeHRlbnNpb25SYW5nZU9wdGlvbnMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24SWQoLZGVjbGFyYXRpb24YAiADKAsyMi5nb29nbGUucHJvdG9idWYuRXh0ZW5zaW9uUmFuZ2VPcHRpb25zLkRlY2xhcmF0aW9uQgOIAQJSC2RlY2xhcmF0aW9uEmgKDHZlcmlmaWNhdGlvbhgDIAEoDjI4Lmdvb2dsZS5wcm90b2J1Zi5FeHRlbnNpb25SYW5nZU9wdGlvbnMuVmVyaWZpY2F0aW9uU3RhdGU6ClVOVkVSSUZJRURSDHZlcmlmaWNhdGlvbhqzAQoLRGVjbGFyYXRpb24SFgoGbnVtYmVyGAEgASgFUgZudW1iZXISGwoJZnVsbF9uYW1lGAIgASgJUghmdWxsTmFtZRISCgR0eXBlGAMgASgJUgR0eXBlEiMKC2lzX3JlcGVhdGVkGAQgASgIQgIYAVIKaXNSZXBlYXRlZBIaCghyZXNlcnZlZBgFIAEoCFIIcmVzZXJ2ZWQSGgoIcmVwZWF0ZWQYBiABKAhSCHJlcGVhdGVkIjQKEVZlcmlmaWNhdGlvblN0YXRlEg8KC0RFQ0xBUkFUSU9OEAASDgoKVU5WRVJJRklFRBABKgkI6AcQgICAgAIiwQYKFEZpZWxkRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSFgoGbnVtYmVyGAMgASgFUgZudW1iZXISQQoFbGFiZWwYBCABKA4yKy5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uTGFiZWxSBWxhYmVsEj4KBHR5cGUYBSABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZVIEdHlwZRIbCgl0eXBlX25hbWUYBiABKAlSCHR5cGVOYW1lEhoKCGV4dGVuZGVlGAIgASgJUghleHRlbmRlZRIjCg1kZWZhdWx0X3ZhbHVlGAcgASgJUgxkZWZhdWx0VmFsdWUSHwoLb25lb2ZfaW5kZXgYCSABKAVSCm9uZW9mSW5kZXgSGwoJanNvbl9uYW1lGAogASgJUghqc29uTmFtZRI3CgdvcHRpb25zGAggASgLMh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9uc1IHb3B0aW9ucxInCg9wcm90bzNfb3B0aW9uYWwYESABKAhSDnByb3RvM09wdGlvbmFsIrYCCgRUeXBlEg8KC1RZUEVfRE9VQkxFEAESDgoKVFlQRV9GTE9BVBACEg4KClRZUEVfSU5UNjQQAxIPCgtUWVBFX1VJTlQ2NBAEEg4KClRZUEVfSU5UMzIQBRIQCgxUWVBFX0ZJWEVENjQQBhIQCgxUWVBFX0ZJWEVEMzIQBxINCglUWVBFX0JPT0wQCBIPCgtUWVBFX1NUUklORxAJEg4KClRZUEVfR1JPVVAQChIQCgxUWVBFX01FU1NBR0UQCxIOCgpUWVBFX0JZVEVTEAwSDwoLVFlQRV9VSU5UMzIQDRINCglUWVBFX0VOVU0QDhIRCg1UWVBFX1NGSVhFRDMyEA8SEQoNVFlQRV9TRklYRUQ2NBAQEg8KC1RZUEVfU0lOVDMyEBESDwoLVFlQRV9TSU5UNjQQEiJDCgVMYWJlbBISCg5MQUJFTF9PUFRJT05BTBABEhIKDkxBQkVMX1JFUVVJUkVEEAISEgoOTEFCRUxfUkVQRUFURUQQAyJjChRPbmVvZkRlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEjcKB29wdGlvbnMYAiABKAsyHS5nb29nbGUucHJvdG9idWYuT25lb2ZPcHRpb25zUgdvcHRpb25zIuMCChNFbnVtRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSPwoFdmFsdWUYAiADKAsyKS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlRGVzY3JpcHRvclByb3RvUgV2YWx1ZRI2CgdvcHRpb25zGAMgASgLMhwuZ29vZ2xlLnByb3RvYnVmLkVudW1PcHRpb25zUgdvcHRpb25zEl0KDnJlc2VydmVkX3JhbmdlGAQgAygLMjYuZ29vZ2xlLnByb3RvYnVmLkVudW1EZXNjcmlwdG9yUHJvdG8uRW51bVJlc2VydmVkUmFuZ2VSDXJlc2VydmVkUmFuZ2USIwoNcmVzZXJ2ZWRfbmFtZRgFIAMoCVIMcmVzZXJ2ZWROYW1lGjsKEUVudW1SZXNlcnZlZFJhbmdlEhQKBXN0YXJ0GAEgASgFUgVzdGFydBIQCgNlbmQYAiABKAVSA2VuZCKDAQoYRW51bVZhbHVlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSFgoGbnVtYmVyGAIgASgFUgZudW1iZXISOwoHb3B0aW9ucxgDIAEoCzIhLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVPcHRpb25zUgdvcHRpb25zIqcBChZTZXJ2aWNlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSPgoGbWV0aG9kGAIgAygLMiYuZ29vZ2xlLnByb3RvYnVmLk1ldGhvZERlc2NyaXB0b3JQcm90b1IGbWV0aG9kEjkKB29wdGlvbnMYAyABKAsyHy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnNSB29wdGlvbnMiiQIKFU1ldGhvZERlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEh0KCmlucHV0X3R5cGUYAiABKAlSCWlucHV0VHlwZRIfCgtvdXRwdXRfdHlwZRgDIAEoCVIKb3V0cHV0VHlwZRI4CgdvcHRpb25zGAQgASgLMh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnNSB29wdGlvbnMSMAoQY2xpZW50X3N0cmVhbWluZxgFIAEoCDoFZmFsc2VSD2NsaWVudFN0cmVhbWluZxIwChBzZXJ2ZXJfc3RyZWFtaW5nGAYgASgIOgVmYWxzZVIPc2VydmVyU3RyZWFtaW5nIpEJCgtGaWxlT3B0aW9ucxIhCgxqYXZhX3BhY2thZ2UYASABKAlSC2phdmFQYWNrYWdlEjAKFGphdmFfb3V0ZXJfY2xhc3NuYW1lGAggASgJUhJqYXZhT3V0ZXJDbGFzc25hbWUSNQoTamF2YV9tdWx0aXBsZV9maWxlcxgKIAEoCDoFZmFsc2VSEWphdmFNdWx0aXBsZUZpbGVzEkQKHWphdmFfZ2VuZXJhdGVfZXF1YWxzX2FuZF9oYXNoGBQgASgIQgIYAVIZamF2YUdlbmVyYXRlRXF1YWxzQW5kSGFzaBI6ChZqYXZhX3N0cmluZ19jaGVja191dGY4GBsgASgIOgVmYWxzZVITamF2YVN0cmluZ0NoZWNrVXRmOBJTCgxvcHRpbWl6ZV9mb3IYCSABKA4yKS5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMuT3B0aW1pemVNb2RlOgVTUEVFRFILb3B0aW1pemVGb3ISHQoKZ29fcGFja2FnZRgLIAEoCVIJZ29QYWNrYWdlEjUKE2NjX2dlbmVyaWNfc2VydmljZXMYECABKAg6BWZhbHNlUhFjY0dlbmVyaWNTZXJ2aWNlcxI5ChVqYXZhX2dlbmVyaWNfc2VydmljZXMYESABKAg6BWZhbHNlUhNqYXZhR2VuZXJpY1NlcnZpY2VzEjUKE3B5X2dlbmVyaWNfc2VydmljZXMYEiABKAg6BWZhbHNlUhFweUdlbmVyaWNTZXJ2aWNlcxI3ChRwaHBfZ2VuZXJpY19zZXJ2aWNlcxgqIAEoCDoFZmFsc2VSEnBocEdlbmVyaWNTZXJ2aWNlcxIlCgpkZXByZWNhdGVkGBcgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBIuChBjY19lbmFibGVfYXJlbmFzGB8gASgIOgR0cnVlUg5jY0VuYWJsZUFyZW5hcxIqChFvYmpjX2NsYXNzX3ByZWZpeBgkIAEoCVIPb2JqY0NsYXNzUHJlZml4EikKEGNzaGFycF9uYW1lc3BhY2UYJSABKAlSD2NzaGFycE5hbWVzcGFjZRIhCgxzd2lmdF9wcmVmaXgYJyABKAlSC3N3aWZ0UHJlZml4EigKEHBocF9jbGFzc19wcmVmaXgYKCABKAlSDnBocENsYXNzUHJlZml4EiMKDXBocF9uYW1lc3BhY2UYKSABKAlSDHBocE5hbWVzcGFjZRI0ChZwaHBfbWV0YWRhdGFfbmFtZXNwYWNlGCwgASgJUhRwaHBNZXRhZGF0YU5hbWVzcGFjZRIhCgxydWJ5X3BhY2thZ2UYLSABKAlSC3J1YnlQYWNrYWdlElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uIjoKDE9wdGltaXplTW9kZRIJCgVTUEVFRBABEg0KCUNPREVfU0laRRACEhAKDExJVEVfUlVOVElNRRADKgkI6AcQgICAgAJKBAgmECciuwMKDk1lc3NhZ2VPcHRpb25zEjwKF21lc3NhZ2Vfc2V0X3dpcmVfZm9ybWF0GAEgASgIOgVmYWxzZVIUbWVzc2FnZVNldFdpcmVGb3JtYXQSTAofbm9fc3RhbmRhcmRfZGVzY3JpcHRvcl9hY2Nlc3NvchgCIAEoCDoFZmFsc2VSHG5vU3RhbmRhcmREZXNjcmlwdG9yQWNjZXNzb3ISJQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSGwoJbWFwX2VudHJ5GAcgASgIUghtYXBFbnRyeRJWCiZkZXByZWNhdGVkX2xlZ2FjeV9qc29uX2ZpZWxkX2NvbmZsaWN0cxgLIAEoCEICGAFSImRlcHJlY2F0ZWRMZWdhY3lKc29uRmllbGRDb25mbGljdHMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAkoECAQQBUoECAUQBkoECAYQB0oECAgQCUoECAkQCiKFCQoMRmllbGRPcHRpb25zEkEKBWN0eXBlGAEgASgOMiMuZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5DVHlwZToGU1RSSU5HUgVjdHlwZRIWCgZwYWNrZWQYAiABKAhSBnBhY2tlZBJHCgZqc3R5cGUYBiABKA4yJC5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLkpTVHlwZToJSlNfTk9STUFMUgZqc3R5cGUSGQoEbGF6eRgFIAEoCDoFZmFsc2VSBGxhenkSLgoPdW52ZXJpZmllZF9sYXp5GA8gASgIOgVmYWxzZVIOdW52ZXJpZmllZExhenkSJQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSGQoEd2VhaxgKIAEoCDoFZmFsc2VSBHdlYWsSKAoMZGVidWdfcmVkYWN0GBAgASgIOgVmYWxzZVILZGVidWdSZWRhY3QSSwoJcmV0ZW50aW9uGBEgASgOMi0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5PcHRpb25SZXRlbnRpb25SCXJldGVudGlvbhJKCgZ0YXJnZXQYEiABKA4yLi5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLk9wdGlvblRhcmdldFR5cGVCAhgBUgZ0YXJnZXQSSAoHdGFyZ2V0cxgTIAMoDjIuLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuT3B0aW9uVGFyZ2V0VHlwZVIHdGFyZ2V0cxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiIvCgVDVHlwZRIKCgZTVFJJTkcQABIICgRDT1JEEAESEAoMU1RSSU5HX1BJRUNFEAIiNQoGSlNUeXBlEg0KCUpTX05PUk1BTBAAEg0KCUpTX1NUUklORxABEg0KCUpTX05VTUJFUhACIlUKD09wdGlvblJldGVudGlvbhIVChFSRVRFTlRJT05fVU5LTk9XThAAEhUKEVJFVEVOVElPTl9SVU5USU1FEAESFAoQUkVURU5USU9OX1NPVVJDRRACIowCChBPcHRpb25UYXJnZXRUeXBlEhcKE1RBUkdFVF9UWVBFX1VOS05PV04QABIUChBUQVJHRVRfVFlQRV9GSUxFEAESHwobVEFSR0VUX1RZUEVfRVhURU5TSU9OX1JBTkdFEAISFwoTVEFSR0VUX1RZUEVfTUVTU0FHRRADEhUKEVRBUkdFVF9UWVBFX0ZJRUxEEAQSFQoRVEFSR0VUX1RZUEVfT05FT0YQBRIUChBUQVJHRVRfVFlQRV9FTlVNEAYSGgoWVEFSR0VUX1RZUEVfRU5VTV9FTlRSWRAHEhcKE1RBUkdFVF9UWVBFX1NFUlZJQ0UQCBIWChJUQVJHRVRfVFlQRV9NRVRIT0QQCSoJCOgHEICAgIACSgQIBBAFInMKDE9uZW9mT3B0aW9ucxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIpgCCgtFbnVtT3B0aW9ucxIfCgthbGxvd19hbGlhcxgCIAEoCFIKYWxsb3dBbGlhcxIlCgpkZXByZWNhdGVkGAMgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJWCiZkZXByZWNhdGVkX2xlZ2FjeV9qc29uX2ZpZWxkX2NvbmZsaWN0cxgGIAEoCEICGAFSImRlcHJlY2F0ZWRMZWdhY3lKc29uRmllbGRDb25mbGljdHMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAkoECAUQBiKeAQoQRW51bVZhbHVlT3B0aW9ucxIlCgpkZXByZWNhdGVkGAEgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIpwBCg5TZXJ2aWNlT3B0aW9ucxIlCgpkZXByZWNhdGVkGCEgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIuACCg1NZXRob2RPcHRpb25zEiUKCmRlcHJlY2F0ZWQYISABKAg6BWZhbHNlUgpkZXByZWNhdGVkEnEKEWlkZW1wb3RlbmN5X2xldmVsGCIgASgOMi8uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMuSWRlbXBvdGVuY3lMZXZlbDoTSURFTVBPVEVOQ1lfVU5LTk9XTlIQaWRlbXBvdGVuY3lMZXZlbBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiJQChBJZGVtcG90ZW5jeUxldmVsEhcKE0lERU1QT1RFTkNZX1VOS05PV04QABITCg9OT19TSURFX0VGRkVDVFMQARIOCgpJREVNUE9URU5UEAIqCQjoBxCAgICAAiKaAwoTVW5pbnRlcnByZXRlZE9wdGlvbhJBCgRuYW1lGAIgAygLMi0uZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb24uTmFtZVBhcnRSBG5hbWUSKQoQaWRlbnRpZmllcl92YWx1ZRgDIAEoCVIPaWRlbnRpZmllclZhbHVlEiwKEnBvc2l0aXZlX2ludF92YWx1ZRgEIAEoBFIQcG9zaXRpdmVJbnRWYWx1ZRIsChJuZWdhdGl2ZV9pbnRfdmFsdWUYBSABKANSEG5lZ2F0aXZlSW50VmFsdWUSIQoMZG91YmxlX3ZhbHVlGAYgASgBUgtkb3VibGVWYWx1ZRIhCgxzdHJpbmdfdmFsdWUYByABKAxSC3N0cmluZ1ZhbHVlEicKD2FnZ3JlZ2F0ZV92YWx1ZRgIIAEoCVIOYWdncmVnYXRlVmFsdWUaSgoITmFtZVBhcnQSGwoJbmFtZV9wYXJ0GAEgAigJUghuYW1lUGFydBIhCgxpc19leHRlbnNpb24YAiACKAhSC2lzRXh0ZW5zaW9uIqcCCg5Tb3VyY2VDb2RlSW5mbxJECghsb2NhdGlvbhgBIAMoCzIoLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb2RlSW5mby5Mb2NhdGlvblIIbG9jYXRpb24azgEKCExvY2F0aW9uEhYKBHBhdGgYASADKAVCAhABUgRwYXRoEhYKBHNwYW4YAiADKAVCAhABUgRzcGFuEikKEGxlYWRpbmdfY29tbWVudHMYAyABKAlSD2xlYWRpbmdDb21tZW50cxIrChF0cmFpbGluZ19jb21tZW50cxgEIAEoCVIQdHJhaWxpbmdDb21tZW50cxI6ChlsZWFkaW5nX2RldGFjaGVkX2NvbW1lbnRzGAYgAygJUhdsZWFkaW5nRGV0YWNoZWRDb21tZW50cyLQAgoRR2VuZXJhdGVkQ29kZUluZm8STQoKYW5ub3RhdGlvbhgBIAMoCzItLmdvb2dsZS5wcm90b2J1Zi5HZW5lcmF0ZWRDb2RlSW5mby5Bbm5vdGF0aW9uUgphbm5vdGF0aW9uGusBCgpBbm5vdGF0aW9uEhYKBHBhdGgYASADKAVCAhABUgRwYXRoEh8KC3NvdXJjZV9maWxlGAIgASgJUgpzb3VyY2VGaWxlEhQKBWJlZ2luGAMgASgFUgViZWdpbhIQCgNlbmQYBCABKAVSA2VuZBJSCghzZW1hbnRpYxgFIAEoDjI2Lmdvb2dsZS5wcm90b2J1Zi5HZW5lcmF0ZWRDb2RlSW5mby5Bbm5vdGF0aW9uLlNlbWFudGljUghzZW1hbnRpYyIoCghTZW1hbnRpYxIICgROT05FEAASBwoDU0VUEAESCQoFQUxJQVMQAkJ+ChNjb20uZ29vZ2xlLnByb3RvYnVmQhBEZXNjcmlwdG9yUHJvdG9zSAFaLWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2Rlc2NyaXB0b3JwYvgBAaICA0dQQqoCGkdvb2dsZS5Qcm90b2J1Zi5SZWZsZWN0aW9uCqgCChxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpGhVnb29nbGUvYXBpL2h0dHAucHJvdG8aIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCbgoOY29tLmdvb2dsZS5hcGlCEEFubm90YXRpb25zUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzMK6AMKH2dvb2dsZS9hcGkvZmllbGRfYmVoYXZpb3IucHJvdG8SCmdvb2dsZS5hcGkaIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvKrYBCg1GaWVsZEJlaGF2aW9yEh4KGkZJRUxEX0JFSEFWSU9SX1VOU1BFQ0lGSUVEEAASDAoIT1BUSU9OQUwQARIMCghSRVFVSVJFRBACEg8KC09VVFBVVF9PTkxZEAMSDgoKSU5QVVRfT05MWRAEEg0KCUlNTVVUQUJMRRAFEhIKDlVOT1JERVJFRF9MSVNUEAYSFQoRTk9OX0VNUFRZX0RFRkFVTFQQBxIOCgpJREVOVElGSUVSEAg6ZAoOZmllbGRfYmVoYXZpb3ISHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGJwIIAMoDjIZLmdvb2dsZS5hcGkuRmllbGRCZWhhdmlvckICEABSDWZpZWxkQmVoYXZpb3JCcAoOY29tLmdvb2dsZS5hcGlCEkZpZWxkQmVoYXZpb3JQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc6ICBEdBUEliBnByb3RvMwriBQocZ29vZ2xlL3Byb3RvYnVmL3N0cnVjdC5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIpgBCgZTdHJ1Y3QSOwoGZmllbGRzGAEgAygLMiMuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdC5GaWVsZHNFbnRyeVIGZmllbGRzGlEKC0ZpZWxkc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEisgIKBVZhbHVlEjsKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSABSCW51bGxWYWx1ZRIjCgxudW1iZXJfdmFsdWUYAiABKAFIAFILbnVtYmVyVmFsdWUSIwoMc3RyaW5nX3ZhbHVlGAMgASgJSABSC3N0cmluZ1ZhbHVlEh8KCmJvb2xfdmFsdWUYBCABKAhIAFIJYm9vbFZhbHVlEjwKDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAFILc3RydWN0VmFsdWUSOwoKbGlzdF92YWx1ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5MaXN0VmFsdWVIAFIJbGlzdFZhbHVlQgYKBGtpbmQiOwoJTGlzdFZhbHVlEi4KBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIGdmFsdWVzKhsKCU51bGxWYWx1ZRIOCgpOVUxMX1ZBTFVFEABCfwoTY29tLmdvb2dsZS5wcm90b2J1ZkILU3RydWN0UHJvdG9QAVovZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMva25vd24vc3RydWN0cGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMwqmPgoscHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9vcGVuYXBpdjIucHJvdG8SKWdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zGhxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvIrMICgdTd2FnZ2VyEhgKB3N3YWdnZXIYASABKAlSB3N3YWdnZXISQwoEaW5mbxgCIAEoCzIvLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkluZm9SBGluZm8SEgoEaG9zdBgDIAEoCVIEaG9zdBIbCgliYXNlX3BhdGgYBCABKAlSCGJhc2VQYXRoEksKB3NjaGVtZXMYBSADKA4yMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY2hlbWVSB3NjaGVtZXMSGgoIY29uc3VtZXMYBiADKAlSCGNvbnN1bWVzEhoKCHByb2R1Y2VzGAcgAygJUghwcm9kdWNlcxJfCglyZXNwb25zZXMYCiADKAsyQS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Td2FnZ2VyLlJlc3BvbnNlc0VudHJ5UglyZXNwb25zZXMScQoUc2VjdXJpdHlfZGVmaW5pdGlvbnMYCyABKAsyPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eURlZmluaXRpb25zUhNzZWN1cml0eURlZmluaXRpb25zEloKCHNlY3VyaXR5GAwgAygLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlSZXF1aXJlbWVudFIIc2VjdXJpdHkSQgoEdGFncxgNIAMoCzIuLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlRhZ1IEdGFncxJlCg1leHRlcm5hbF9kb2NzGA4gASgLMkAuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuRXh0ZXJuYWxEb2N1bWVudGF0aW9uUgxleHRlcm5hbERvY3MSYgoKZXh0ZW5zaW9ucxgPIAMoCzJCLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlN3YWdnZXIuRXh0ZW5zaW9uc0VudHJ5UgpleHRlbnNpb25zGnEKDlJlc3BvbnNlc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EkkKBXZhbHVlGAIgASgLMjMuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUmVzcG9uc2VSBXZhbHVlOgI4ARpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4AUoECAgQCUoECAkQCiLWBwoJT3BlcmF0aW9uEhIKBHRhZ3MYASADKAlSBHRhZ3MSGAoHc3VtbWFyeRgCIAEoCVIHc3VtbWFyeRIgCgtkZXNjcmlwdGlvbhgDIAEoCVILZGVzY3JpcHRpb24SZQoNZXh0ZXJuYWxfZG9jcxgEIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEiEKDG9wZXJhdGlvbl9pZBgFIAEoCVILb3BlcmF0aW9uSWQSGgoIY29uc3VtZXMYBiADKAlSCGNvbnN1bWVzEhoKCHByb2R1Y2VzGAcgAygJUghwcm9kdWNlcxJhCglyZXNwb25zZXMYCSADKAsyQy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5PcGVyYXRpb24uUmVzcG9uc2VzRW50cnlSCXJlc3BvbnNlcxJLCgdzY2hlbWVzGAogAygOMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1lUgdzY2hlbWVzEh4KCmRlcHJlY2F0ZWQYCyABKAhSCmRlcHJlY2F0ZWQSWgoIc2VjdXJpdHkYDCADKAsyPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVJlcXVpcmVtZW50UghzZWN1cml0eRJkCgpleHRlbnNpb25zGA0gAygLMkQuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuT3BlcmF0aW9uLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxJVCgpwYXJhbWV0ZXJzGA4gASgLMjUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuUGFyYW1ldGVyc1IKcGFyYW1ldGVycxpxCg5SZXNwb25zZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRJJCgV2YWx1ZRgCIAEoCzIzLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlUgV2YWx1ZToCOAEaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAFKBAgIEAkiYgoKUGFyYW1ldGVycxJUCgdoZWFkZXJzGAEgAygLMjouZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSGVhZGVyUGFyYW1ldGVyUgdoZWFkZXJzIqMCCg9IZWFkZXJQYXJhbWV0ZXISEgoEbmFtZRgBIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SUwoEdHlwZRgDIAEoDjI/LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkhlYWRlclBhcmFtZXRlci5UeXBlUgR0eXBlEhYKBmZvcm1hdBgEIAEoCVIGZm9ybWF0EhoKCHJlcXVpcmVkGAUgASgIUghyZXF1aXJlZCJFCgRUeXBlEgsKB1VOS05PV04QABIKCgZTVFJJTkcQARIKCgZOVU1CRVIQAhILCgdJTlRFR0VSEAMSCwoHQk9PTEVBThAESgQIBhAHSgQIBxAIItgBCgZIZWFkZXISIAoLZGVzY3JpcHRpb24YASABKAlSC2Rlc2NyaXB0aW9uEhIKBHR5cGUYAiABKAlSBHR5cGUSFgoGZm9ybWF0GAMgASgJUgZmb3JtYXQSGAoHZGVmYXVsdBgGIAEoCVIHZGVmYXVsdBIYCgdwYXR0ZXJuGA0gASgJUgdwYXR0ZXJuSgQIBBAFSgQIBRAGSgQIBxAISgQICBAJSgQICRAKSgQIChALSgQICxAMSgQIDBANSgQIDhAPSgQIDxAQSgQIEBARSgQIERASSgQIEhATIpoFCghSZXNwb25zZRIgCgtkZXNjcmlwdGlvbhgBIAEoCVILZGVzY3JpcHRpb24SSQoGc2NoZW1hGAIgASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NoZW1hUgZzY2hlbWESWgoHaGVhZGVycxgDIAMoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlLkhlYWRlcnNFbnRyeVIHaGVhZGVycxJdCghleGFtcGxlcxgEIAMoCzJBLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlJlc3BvbnNlLkV4YW1wbGVzRW50cnlSCGV4YW1wbGVzEmMKCmV4dGVuc2lvbnMYBSADKAsyQy5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5SZXNwb25zZS5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMabQoMSGVhZGVyc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EkcKBXZhbHVlGAIgASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSGVhZGVyUgV2YWx1ZToCOAEaOwoNRXhhbXBsZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBItYDCgRJbmZvEhQKBXRpdGxlGAEgASgJUgV0aXRsZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SKAoQdGVybXNfb2Zfc2VydmljZRgDIAEoCVIOdGVybXNPZlNlcnZpY2USTAoHY29udGFjdBgEIAEoCzIyLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkNvbnRhY3RSB2NvbnRhY3QSTAoHbGljZW5zZRgFIAEoCzIyLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkxpY2Vuc2VSB2xpY2Vuc2USGAoHdmVyc2lvbhgGIAEoCVIHdmVyc2lvbhJfCgpleHRlbnNpb25zGAcgAygLMj8uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSW5mby5FeHRlbnNpb25zRW50cnlSCmV4dGVuc2lvbnMaVQoPRXh0ZW5zaW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEiRQoHQ29udGFjdBISCgRuYW1lGAEgASgJUgRuYW1lEhAKA3VybBgCIAEoCVIDdXJsEhQKBWVtYWlsGAMgASgJUgVlbWFpbCIvCgdMaWNlbnNlEhIKBG5hbWUYASABKAlSBG5hbWUSEAoDdXJsGAIgASgJUgN1cmwiSwoVRXh0ZXJuYWxEb2N1bWVudGF0aW9uEiAKC2Rlc2NyaXB0aW9uGAEgASgJUgtkZXNjcmlwdGlvbhIQCgN1cmwYAiABKAlSA3VybCKqAgoGU2NoZW1hElYKC2pzb25fc2NoZW1hGAEgASgLMjUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYVIKanNvblNjaGVtYRIkCg1kaXNjcmltaW5hdG9yGAIgASgJUg1kaXNjcmltaW5hdG9yEhsKCXJlYWRfb25seRgDIAEoCFIIcmVhZE9ubHkSZQoNZXh0ZXJuYWxfZG9jcxgFIAEoCzJALmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkV4dGVybmFsRG9jdW1lbnRhdGlvblIMZXh0ZXJuYWxEb2NzEhgKB2V4YW1wbGUYBiABKAlSB2V4YW1wbGVKBAgEEAUi1woKCkpTT05TY2hlbWESEAoDcmVmGAMgASgJUgNyZWYSFAoFdGl0bGUYBSABKAlSBXRpdGxlEiAKC2Rlc2NyaXB0aW9uGAYgASgJUgtkZXNjcmlwdGlvbhIYCgdkZWZhdWx0GAcgASgJUgdkZWZhdWx0EhsKCXJlYWRfb25seRgIIAEoCFIIcmVhZE9ubHkSGAoHZXhhbXBsZRgJIAEoCVIHZXhhbXBsZRIfCgttdWx0aXBsZV9vZhgKIAEoAVIKbXVsdGlwbGVPZhIYCgdtYXhpbXVtGAsgASgBUgdtYXhpbXVtEisKEWV4Y2x1c2l2ZV9tYXhpbXVtGAwgASgIUhBleGNsdXNpdmVNYXhpbXVtEhgKB21pbmltdW0YDSABKAFSB21pbmltdW0SKwoRZXhjbHVzaXZlX21pbmltdW0YDiABKAhSEGV4Y2x1c2l2ZU1pbmltdW0SHQoKbWF4X2xlbmd0aBgPIAEoBFIJbWF4TGVuZ3RoEh0KCm1pbl9sZW5ndGgYECABKARSCW1pbkxlbmd0aBIYCgdwYXR0ZXJuGBEgASgJUgdwYXR0ZXJuEhsKCW1heF9pdGVtcxgUIAEoBFIIbWF4SXRlbXMSGwoJbWluX2l0ZW1zGBUgASgEUghtaW5JdGVtcxIhCgx1bmlxdWVfaXRlbXMYFiABKAhSC3VuaXF1ZUl0ZW1zEiUKDm1heF9wcm9wZXJ0aWVzGBggASgEUg1tYXhQcm9wZXJ0aWVzEiUKDm1pbl9wcm9wZXJ0aWVzGBkgASgEUg1taW5Qcm9wZXJ0aWVzEhoKCHJlcXVpcmVkGBogAygJUghyZXF1aXJlZBIUCgVhcnJheRgiIAMoCVIFYXJyYXkSXwoEdHlwZRgjIAMoDjJLLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLkpTT05TY2hlbWEuSlNPTlNjaGVtYVNpbXBsZVR5cGVzUgR0eXBlEhYKBmZvcm1hdBgkIAEoCVIGZm9ybWF0EhIKBGVudW0YLiADKAlSBGVudW0SegoTZmllbGRfY29uZmlndXJhdGlvbhjpByABKAsySC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hLkZpZWxkQ29uZmlndXJhdGlvblISZmllbGRDb25maWd1cmF0aW9uEmUKCmV4dGVuc2lvbnMYMCADKAsyRS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5KU09OU2NoZW1hLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxo8ChJGaWVsZENvbmZpZ3VyYXRpb24SJgoPcGF0aF9wYXJhbV9uYW1lGC8gASgJUg1wYXRoUGFyYW1OYW1lGlUKD0V4dGVuc2lvbnNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIncKFUpTT05TY2hlbWFTaW1wbGVUeXBlcxILCgdVTktOT1dOEAASCQoFQVJSQVkQARILCgdCT09MRUFOEAISCwoHSU5URUdFUhADEggKBE5VTEwQBBIKCgZOVU1CRVIQBRIKCgZPQkpFQ1QQBhIKCgZTVFJJTkcQB0oECAEQAkoECAIQA0oECAQQBUoECBIQE0oECBMQFEoECBcQGEoECBsQHEoECBwQHUoECB0QHkoECB4QIkoECCUQKkoECCoQK0oECCsQLiLZAgoDVGFnEhIKBG5hbWUYASABKAlSBG5hbWUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uEmUKDWV4dGVybmFsX2RvY3MYAyABKAsyQC5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5FeHRlcm5hbERvY3VtZW50YXRpb25SDGV4dGVybmFsRG9jcxJeCgpleHRlbnNpb25zGAQgAygLMj4uZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuVGFnLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASL3AQoTU2VjdXJpdHlEZWZpbml0aW9ucxJoCghzZWN1cml0eRgBIAMoCzJMLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5RGVmaW5pdGlvbnMuU2VjdXJpdHlFbnRyeVIIc2VjdXJpdHkadgoNU2VjdXJpdHlFbnRyeRIQCgNrZXkYASABKAlSA2tleRJPCgV2YWx1ZRgCIAEoCzI5LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lUgV2YWx1ZToCOAEi/wYKDlNlY3VyaXR5U2NoZW1lElIKBHR5cGUYASABKA4yPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5UeXBlUgR0eXBlEiAKC2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhISCgRuYW1lGAMgASgJUgRuYW1lEkwKAmluGAQgASgOMjwuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2VjdXJpdHlTY2hlbWUuSW5SAmluElIKBGZsb3cYBSABKA4yPi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TZWN1cml0eVNjaGVtZS5GbG93UgRmbG93EisKEWF1dGhvcml6YXRpb25fdXJsGAYgASgJUhBhdXRob3JpemF0aW9uVXJsEhsKCXRva2VuX3VybBgHIAEoCVIIdG9rZW5VcmwSSQoGc2NvcGVzGAggASgLMjEuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuU2NvcGVzUgZzY29wZXMSaQoKZXh0ZW5zaW9ucxgJIAMoCzJJLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5U2NoZW1lLkV4dGVuc2lvbnNFbnRyeVIKZXh0ZW5zaW9ucxpVCg9FeHRlbnNpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASJLCgRUeXBlEhAKDFRZUEVfSU5WQUxJRBAAEg4KClRZUEVfQkFTSUMQARIQCgxUWVBFX0FQSV9LRVkQAhIPCgtUWVBFX09BVVRIMhADIjEKAkluEg4KCklOX0lOVkFMSUQQABIMCghJTl9RVUVSWRABEg0KCUlOX0hFQURFUhACImoKBEZsb3cSEAoMRkxPV19JTlZBTElEEAASEQoNRkxPV19JTVBMSUNJVBABEhEKDUZMT1dfUEFTU1dPUkQQAhIUChBGTE9XX0FQUExJQ0FUSU9OEAMSFAoQRkxPV19BQ0NFU1NfQ09ERRAEIvYCChNTZWN1cml0eVJlcXVpcmVtZW50EooBChRzZWN1cml0eV9yZXF1aXJlbWVudBgBIAMoCzJXLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnQuU2VjdXJpdHlSZXF1aXJlbWVudEVudHJ5UhNzZWN1cml0eVJlcXVpcmVtZW50GjAKGFNlY3VyaXR5UmVxdWlyZW1lbnRWYWx1ZRIUCgVzY29wZRgBIAMoCVIFc2NvcGUanwEKGFNlY3VyaXR5UmVxdWlyZW1lbnRFbnRyeRIQCgNrZXkYASABKAlSA2tleRJtCgV2YWx1ZRgCIAEoCzJXLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNlY3VyaXR5UmVxdWlyZW1lbnQuU2VjdXJpdHlSZXF1aXJlbWVudFZhbHVlUgV2YWx1ZToCOAEilgEKBlNjb3BlcxJSCgVzY29wZRgBIAMoCzI8LmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlNjb3Blcy5TY29wZUVudHJ5UgVzY29wZRo4CgpTY29wZUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEqOwoGU2NoZW1lEgsKB1VOS05PV04QABIICgRIVFRQEAESCQoFSFRUUFMQAhIGCgJXUxADEgcKA1dTUxAEQkhaRmdpdGh1Yi5jb20vZ3JwYy1lY29zeXN0ZW0vZ3JwYy1nYXRld2F5L3YyL3Byb3RvYy1nZW4tb3BlbmFwaXYyL29wdGlvbnNiBnByb3RvMwr9BgoucHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9hbm5vdGF0aW9ucy5wcm90bxIpZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMaIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvGixwcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL29wZW5hcGl2Mi5wcm90bzp+ChFvcGVuYXBpdjJfc3dhZ2dlchIcLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9ucxiSCCABKAsyMi5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5Td2FnZ2VyUhBvcGVuYXBpdjJTd2FnZ2VyOoYBChNvcGVuYXBpdjJfb3BlcmF0aW9uEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYkgggASgLMjQuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuT3BlcmF0aW9uUhJvcGVuYXBpdjJPcGVyYXRpb246fgoQb3BlbmFwaXYyX3NjaGVtYRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiSCCABKAsyMS5ncnBjLmdhdGV3YXkucHJvdG9jX2dlbl9vcGVuYXBpdjIub3B0aW9ucy5TY2hlbWFSD29wZW5hcGl2MlNjaGVtYTp1Cg1vcGVuYXBpdjJfdGFnEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJIIIAEoCzIuLmdycGMuZ2F0ZXdheS5wcm90b2NfZ2VuX29wZW5hcGl2Mi5vcHRpb25zLlRhZ1IMb3BlbmFwaXYyVGFnOn4KD29wZW5hcGl2Ml9maWVsZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYkgggASgLMjUuZ3JwYy5nYXRld2F5LnByb3RvY19nZW5fb3BlbmFwaXYyLm9wdGlvbnMuSlNPTlNjaGVtYVIOb3BlbmFwaXYyRmllbGRCSFpGZ2l0aHViLmNvbS9ncnBjLWVjb3N5c3RlbS9ncnBjLWdhdGV3YXkvdjIvcHJvdG9jLWdlbi1vcGVuYXBpdjIvb3B0aW9uc2IGcHJvdG8zCrszChtwcm90by9jb2RlcmVmL3NlcnZpY2UucHJvdG8SEWJ1Y2tldGVlci5jb2RlcmVmGiJwcm90by9jb2RlcmVmL2NvZGVfcmVmZXJlbmNlLnByb3RvGhxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvGh9nb29nbGUvYXBpL2ZpZWxkX2JlaGF2aW9yLnByb3RvGi5wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL2Fubm90YXRpb25zLnByb3RvIloKF0dldENvZGVSZWZlcmVuY2VSZXF1ZXN0EhMKAmlkGAEgASgJQgPgQQJSAmlkEioKDmVudmlyb25tZW50X2lkGAIgASgJQgPgQQJSDWVudmlyb25tZW50SWQiYwoYR2V0Q29kZVJlZmVyZW5jZVJlc3BvbnNlEkcKDmNvZGVfcmVmZXJlbmNlGAEgASgLMiAuYnVja2V0ZWVyLmNvZGVyZWYuQ29kZVJlZmVyZW5jZVINY29kZVJlZmVyZW5jZSK2BQoZTGlzdENvZGVSZWZlcmVuY2VzUmVxdWVzdBIqCg5lbnZpcm9ubWVudF9pZBgBIAEoCUID4EECUg1lbnZpcm9ubWVudElkEiIKCmZlYXR1cmVfaWQYAiABKAlCA+BBAlIJZmVhdHVyZUlkEicKD3JlcG9zaXRvcnlfbmFtZRgDIAEoCVIOcmVwb3NpdG9yeU5hbWUSKQoQcmVwb3NpdG9yeV9vd25lchgEIAEoCVIPcmVwb3NpdG9yeU93bmVyElgKD3JlcG9zaXRvcnlfdHlwZRgFIAEoDjIvLmJ1Y2tldGVlci5jb2RlcmVmLkNvZGVSZWZlcmVuY2UuUmVwb3NpdG9yeVR5cGVSDnJlcG9zaXRvcnlUeXBlEisKEXJlcG9zaXRvcnlfYnJhbmNoGAYgASgJUhByZXBvc2l0b3J5QnJhbmNoEhYKBmN1cnNvchgHIAEoCVIGY3Vyc29yEhsKCXBhZ2Vfc2l6ZRgIIAEoA1IIcGFnZVNpemUSTwoIb3JkZXJfYnkYCSABKA4yNC5idWNrZXRlZXIuY29kZXJlZi5MaXN0Q29kZVJlZmVyZW5jZXNSZXF1ZXN0Lk9yZGVyQnlSB29yZGVyQnkSZAoPb3JkZXJfZGlyZWN0aW9uGAogASgOMjsuYnVja2V0ZWVyLmNvZGVyZWYuTGlzdENvZGVSZWZlcmVuY2VzUmVxdWVzdC5PcmRlckRpcmVjdGlvblIOb3JkZXJEaXJlY3Rpb24SJQoOZmlsZV9leHRlbnNpb24YCyABKAlSDWZpbGVFeHRlbnNpb24iNgoHT3JkZXJCeRILCgdERUZBVUxUEAASDgoKQ1JFQVRFRF9BVBABEg4KClVQREFURURfQVQQAiIjCg5PcmRlckRpcmVjdGlvbhIHCgNBU0MQABIICgRERVNDEAEioAEKGkxpc3RDb2RlUmVmZXJlbmNlc1Jlc3BvbnNlEkkKD2NvZGVfcmVmZXJlbmNlcxgBIAMoCzIgLmJ1Y2tldGVlci5jb2RlcmVmLkNvZGVSZWZlcmVuY2VSDmNvZGVSZWZlcmVuY2VzEhYKBmN1cnNvchgCIAEoCVIGY3Vyc29yEh8KC3RvdGFsX2NvdW50GAMgASgDUgp0b3RhbENvdW50IqkEChpDcmVhdGVDb2RlUmVmZXJlbmNlUmVxdWVzdBIiCgpmZWF0dXJlX2lkGAEgASgJQgPgQQJSCWZlYXR1cmVJZBIqCg5lbnZpcm9ubWVudF9pZBgCIAEoCUID4EECUg1lbnZpcm9ubWVudElkEiAKCWZpbGVfcGF0aBgDIAEoCUID4EECUghmaWxlUGF0aBIkCgtsaW5lX251bWJlchgEIAEoBUID4EECUgpsaW5lTnVtYmVyEiYKDGNvZGVfc25pcHBldBgFIAEoCUID4EECUgtjb2RlU25pcHBldBImCgxjb250ZW50X2hhc2gYBiABKAlCA+BBAlILY29udGVudEhhc2gSGAoHYWxpYXNlcxgHIAMoCVIHYWxpYXNlcxIsCg9yZXBvc2l0b3J5X25hbWUYCCABKAlCA+BBAlIOcmVwb3NpdG9yeU5hbWUSLgoQcmVwb3NpdG9yeV9vd25lchgJIAEoCUID4EECUg9yZXBvc2l0b3J5T3duZXISXQoPcmVwb3NpdG9yeV90eXBlGAogASgOMi8uYnVja2V0ZWVyLmNvZGVyZWYuQ29kZVJlZmVyZW5jZS5SZXBvc2l0b3J5VHlwZUID4EECUg5yZXBvc2l0b3J5VHlwZRIrChFyZXBvc2l0b3J5X2JyYW5jaBgLIAEoCVIQcmVwb3NpdG9yeUJyYW5jaBIfCgtjb21taXRfaGFzaBgMIAEoCVIKY29tbWl0SGFzaCJmChtDcmVhdGVDb2RlUmVmZXJlbmNlUmVzcG9uc2USRwoOY29kZV9yZWZlcmVuY2UYASABKAsyIC5idWNrZXRlZXIuY29kZXJlZi5Db2RlUmVmZXJlbmNlUg1jb2RlUmVmZXJlbmNlIosEChpVcGRhdGVDb2RlUmVmZXJlbmNlUmVxdWVzdBITCgJpZBgBIAEoCUID4EECUgJpZBIqCg5lbnZpcm9ubWVudF9pZBgCIAEoCUID4EECUg1lbnZpcm9ubWVudElkEiAKCWZpbGVfcGF0aBgDIAEoCUID4EECUghmaWxlUGF0aBIkCgtsaW5lX251bWJlchgEIAEoBUID4EECUgpsaW5lTnVtYmVyEiYKDGNvZGVfc25pcHBldBgFIAEoCUID4EECUgtjb2RlU25pcHBldBImCgxjb250ZW50X2hhc2gYBiABKAlCA+BBAlILY29udGVudEhhc2gSGAoHYWxpYXNlcxgHIAMoCVIHYWxpYXNlcxInCg9yZXBvc2l0b3J5X25hbWUYCCABKAlSDnJlcG9zaXRvcnlOYW1lEikKEHJlcG9zaXRvcnlfb3duZXIYCSABKAlSD3JlcG9zaXRvcnlPd25lchJYCg9yZXBvc2l0b3J5X3R5cGUYCiABKA4yLy5idWNrZXRlZXIuY29kZXJlZi5Db2RlUmVmZXJlbmNlLlJlcG9zaXRvcnlUeXBlUg5yZXBvc2l0b3J5VHlwZRIrChFyZXBvc2l0b3J5X2JyYW5jaBgLIAEoCVIQcmVwb3NpdG9yeUJyYW5jaBIfCgtjb21taXRfaGFzaBgMIAEoCVIKY29tbWl0SGFzaCJmChtVcGRhdGVDb2RlUmVmZXJlbmNlUmVzcG9uc2USRwoOY29kZV9yZWZlcmVuY2UYASABKAsyIC5idWNrZXRlZXIuY29kZXJlZi5Db2RlUmVmZXJlbmNlUg1jb2RlUmVmZXJlbmNlIl0KGkRlbGV0ZUNvZGVSZWZlcmVuY2VSZXF1ZXN0EhMKAmlkGAEgASgJQgPgQQJSAmlkEioKDmVudmlyb25tZW50X2lkGAIgASgJQgPgQQJSDWVudmlyb25tZW50SWQiHQobRGVsZXRlQ29kZVJlZmVyZW5jZVJlc3BvbnNlMpUeChRDb2RlUmVmZXJlbmNlU2VydmljZRL3BQoQR2V0Q29kZVJlZmVyZW5jZRIqLmJ1Y2tldGVlci5jb2RlcmVmLkdldENvZGVSZWZlcmVuY2VSZXF1ZXN0GisuYnVja2V0ZWVyLmNvZGVyZWYuR2V0Q29kZVJlZmVyZW5jZVJlc3BvbnNlIokFkkHlBAoOQ29kZSBSZWZlcmVuY2USA0dldBobR2V0IGEgY29kZSByZWZlcmVuY2UgYnkgSUQuKhl3ZWIudjEuY29kZV9yZWZlcmVuY2UuZ2V0SrQBCgM0MDASrAEKOlJldHVybmVkIGZvciBiYWQgcmVxdWVzdHMgdGhhdCBtYXkgaGF2ZSBmYWlsZWQgdmFsaWRhdGlvbi4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiVgoQYXBwbGljYXRpb24vanNvbhJCeyAiY29kZSI6IDMsICJtZXNzYWdlIjogImludmFsaWQgYXJndW1lbnRzIGVycm9yIiwgImRldGFpbHMiOiBbXSB9SrIBCgM0MDESqgEKPVJlcXVlc3QgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQgKGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkKS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiUQoQYXBwbGljYXRpb24vanNvbhI9eyAiY29kZSI6IDE2LCAibWVzc2FnZSI6ICJub3QgYXV0aGVudGljYXRlZCIsICJkZXRhaWxzIjogW10gfUqpAQoDNDAzEqEBCjhSZXF1ZXN0IGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJNChBhcHBsaWNhdGlvbi9qc29uEjl7ICJjb2RlIjogNywgIm1lc3NhZ2UiOiAibm90IGF1dGhvcml6ZWQiLCAiZGV0YWlscyI6IFtdIH2C0+STAhoSGC92MS9jb2RlX3JlZmVyZW5jZXMve2lkfRLgBAoSTGlzdENvZGVSZWZlcmVuY2VzEiwuYnVja2V0ZWVyLmNvZGVyZWYuTGlzdENvZGVSZWZlcmVuY2VzUmVxdWVzdBotLmJ1Y2tldGVlci5jb2RlcmVmLkxpc3RDb2RlUmVmZXJlbmNlc1Jlc3BvbnNlIuwDkkHNAwoOQ29kZSBSZWZlcmVuY2USBExpc3QaLUxpc3QgY29kZSByZWZlcmVuY2VzIHdpdGggb3B0aW9uYWwgZmlsdGVyaW5nLioad2ViLnYxLmNvZGVfcmVmZXJlbmNlLmxpc3RKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIVEhMvdjEvY29kZV9yZWZlcmVuY2VzErAGChNDcmVhdGVDb2RlUmVmZXJlbmNlEi0uYnVja2V0ZWVyLmNvZGVyZWYuQ3JlYXRlQ29kZVJlZmVyZW5jZVJlcXVlc3QaLi5idWNrZXRlZXIuY29kZXJlZi5DcmVhdGVDb2RlUmVmZXJlbmNlUmVzcG9uc2UiuQWSQZcFCg5Db2RlIFJlZmVyZW5jZRIGQ3JlYXRlGkdDcmVhdGUgYSBuZXcgY29kZSByZWZlcmVuY2UuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGEgYFdSSVRFYCByb2xlLiocd2ViLnYxLmNvZGVfcmVmZXJlbmNlLmNyZWF0ZUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIYIhMvdjEvY29kZV9yZWZlcmVuY2VzOgEqErsGChNVcGRhdGVDb2RlUmVmZXJlbmNlEi0uYnVja2V0ZWVyLmNvZGVyZWYuVXBkYXRlQ29kZVJlZmVyZW5jZVJlcXVlc3QaLi5idWNrZXRlZXIuY29kZXJlZi5VcGRhdGVDb2RlUmVmZXJlbmNlUmVzcG9uc2UixAWSQZ0FCg5Db2RlIFJlZmVyZW5jZRIGVXBkYXRlGk1VcGRhdGUgYW4gZXhpc3RpbmcgY29kZSByZWZlcmVuY2UuIFRvIGNhbGwgdGhpcyBBUEksIHlvdSBuZWVkIGEgYFdSSVRFYCByb2xlLiocd2ViLnYxLmNvZGVfcmVmZXJlbmNlLnVwZGF0ZUq0AQoDNDAwEqwBCjpSZXR1cm5lZCBmb3IgYmFkIHJlcXVlc3RzIHRoYXQgbWF5IGhhdmUgZmFpbGVkIHZhbGlkYXRpb24uEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlYKEGFwcGxpY2F0aW9uL2pzb24SQnsgImNvZGUiOiAzLCAibWVzc2FnZSI6ICJpbnZhbGlkIGFyZ3VtZW50cyBlcnJvciIsICJkZXRhaWxzIjogW10gfUqyAQoDNDAxEqoBCj1SZXF1ZXN0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkIChhdXRoZW50aWNhdGlvbiByZXF1aXJlZCkuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIlEKEGFwcGxpY2F0aW9uL2pzb24SPXsgImNvZGUiOiAxNiwgIm1lc3NhZ2UiOiAibm90IGF1dGhlbnRpY2F0ZWQiLCAiZGV0YWlscyI6IFtdIH1KqQEKAzQwMxKhAQo4UmVxdWVzdCBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXNvdXJjZS4SFgoUGhIuZ29vZ2xlLnJwYy5TdGF0dXMiTQoQYXBwbGljYXRpb24vanNvbhI5eyAiY29kZSI6IDcsICJtZXNzYWdlIjogIm5vdCBhdXRob3JpemVkIiwgImRldGFpbHMiOiBbXSB9gtPkkwIdMhgvdjEvY29kZV9yZWZlcmVuY2VzL3tpZH06ASoSrgYKE0RlbGV0ZUNvZGVSZWZlcmVuY2USLS5idWNrZXRlZXIuY29kZXJlZi5EZWxldGVDb2RlUmVmZXJlbmNlUmVxdWVzdBouLmJ1Y2tldGVlci5jb2RlcmVmLkRlbGV0ZUNvZGVSZWZlcmVuY2VSZXNwb25zZSK3BZJBkwUKDkNvZGUgUmVmZXJlbmNlEgZEZWxldGUaQ0RlbGV0ZSBhIGNvZGUgcmVmZXJlbmNlLiBUbyBjYWxsIHRoaXMgQVBJLCB5b3UgbmVlZCBhIGBXUklURWAgcm9sZS4qHHdlYi52MS5jb2RlX3JlZmVyZW5jZS5kZWxldGVKtAEKAzQwMBKsAQo6UmV0dXJuZWQgZm9yIGJhZCByZXF1ZXN0cyB0aGF0IG1heSBoYXZlIGZhaWxlZCB2YWxpZGF0aW9uLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJWChBhcHBsaWNhdGlvbi9qc29uEkJ7ICJjb2RlIjogMywgIm1lc3NhZ2UiOiAiaW52YWxpZCBhcmd1bWVudHMgZXJyb3IiLCAiZGV0YWlscyI6IFtdIH1KsgEKAzQwMRKqAQo9UmVxdWVzdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCAoYXV0aGVudGljYXRpb24gcmVxdWlyZWQpLhIWChQaEi5nb29nbGUucnBjLlN0YXR1cyJRChBhcHBsaWNhdGlvbi9qc29uEj17ICJjb2RlIjogMTYsICJtZXNzYWdlIjogIm5vdCBhdXRoZW50aWNhdGVkIiwgImRldGFpbHMiOiBbXSB9SqkBCgM0MDMSoQEKOFJlcXVlc3QgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2UuEhYKFBoSLmdvb2dsZS5ycGMuU3RhdHVzIk0KEGFwcGxpY2F0aW9uL2pzb24SOXsgImNvZGUiOiA3LCAibWVzc2FnZSI6ICJub3QgYXV0aG9yaXplZCIsICJkZXRhaWxzIjogW10gfYLT5JMCGioYL3YxL2NvZGVfcmVmZXJlbmNlcy97aWR9QjFaL2dpdGh1Yi5jb20vYnVja2V0ZWVyLWlvL2J1Y2tldGVlci9wcm90by9jb2RlcmVmYgZwcm90bzM= service: type: ClusterIP grpcPort: 9000 diff --git a/pkg/domainevent/domain/message.go b/pkg/domainevent/domain/message.go index ac8a91de7..6dd2525e1 100644 --- a/pkg/domainevent/domain/message.go +++ b/pkg/domainevent/domain/message.go @@ -431,6 +431,14 @@ func LocalizedMessage(eventType proto.Event_Type, localizer locale.Localizer) *p localizer.MustLocalizeWithTemplate(locale.Experiment), ), } + case proto.Event_EXPERIMENT_UPDATED: + return &proto.LocalizedMessage{ + Locale: localizer.GetLocale(), + Message: localizer.MustLocalizeWithTemplate( + locale.UpdatedTemplate, + localizer.MustLocalizeWithTemplate(locale.Goal), + ), + } case proto.Event_EXPERIMENT_DELETED: return &proto.LocalizedMessage{ Locale: localizer.GetLocale(), diff --git a/pkg/experiment/api/error.go b/pkg/experiment/api/error.go index b559009a8..6f6c7b4e7 100644 --- a/pkg/experiment/api/error.go +++ b/pkg/experiment/api/error.go @@ -30,6 +30,7 @@ var ( statusInvalidGoalID = gstatus.New(codes.InvalidArgument, "experiment: invalid goal id") statusGoalNameRequired = gstatus.New(codes.InvalidArgument, "experiment: goal name must be specified") statusPeriodTooLong = gstatus.New(codes.InvalidArgument, "experiment: period too long") + statusPeriodInvalid = gstatus.New(codes.InvalidArgument, "experiment: period is invalid") statusInvalidOrderBy = gstatus.New(codes.InvalidArgument, "expriment: order_by is invalid") statusNotFound = gstatus.New(codes.NotFound, "experiment: not found") statusGoalNotFound = gstatus.New(codes.NotFound, "experiment: goal not found") diff --git a/pkg/experiment/api/experiment.go b/pkg/experiment/api/experiment.go index e12e2c478..011fbd3f4 100644 --- a/pkg/experiment/api/experiment.go +++ b/pkg/experiment/api/experiment.go @@ -19,6 +19,7 @@ import ( "errors" "strconv" + pb "github.com/golang/protobuf/proto" "github.com/jinzhu/copier" "go.uber.org/zap" "google.golang.org/genproto/googleapis/rpc/errdetails" @@ -655,6 +656,11 @@ func (s *experimentService) UpdateExperiment( if err != nil { return nil, err } + if req.ChangeExperimentPeriodCommand == nil && + req.ChangeNameCommand == nil && + req.ChangeDescriptionCommand == nil { + return s.updateExperimentNoCommand(ctx, req, editor, localizer) + } if err := validateUpdateExperimentRequest(req, localizer); err != nil { return nil, err } @@ -730,7 +736,106 @@ func (s *experimentService) UpdateExperiment( return experimentStorage.UpdateExperiment(ctx, experiment, req.EnvironmentId) }) if err != nil { - if err == v2es.ErrExperimentNotFound || err == v2es.ErrExperimentUnexpectedAffectedRows { + if errors.Is(err, v2es.ErrExperimentNotFound) || errors.Is(err, v2es.ErrExperimentUnexpectedAffectedRows) { + 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 experiment", + 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 &proto.UpdateExperimentResponse{}, nil +} + +func (s *experimentService) updateExperimentNoCommand( + ctx context.Context, + req *proto.UpdateExperimentRequest, + editor *eventproto.Editor, + localizer locale.Localizer, +) (*proto.UpdateExperimentResponse, error) { + err := validateUpdateExperimentNoCommandRequest(req, localizer) + if err != nil { + s.logger.Error( + "Failed validate update experiment no command req", + log.FieldsFromImcomingContext(ctx).AddFields( + zap.Error(err), + zap.String("environmentId", req.EnvironmentId), + )..., + ) + return nil, err + } + + err = s.mysqlClient.RunInTransactionV2(ctx, func(ctxWithTx context.Context, _ mysql.Transaction) error { + experimentStorage := v2es.NewExperimentStorage(s.mysqlClient) + experiment, err := experimentStorage.GetExperiment(ctxWithTx, req.Id, req.EnvironmentId) + if err != nil { + return err + } + updated, err := experiment.Update( + req.Name, + req.Description, + req.StartAt, + req.StopAt, + req.Status, + req.Archived, + ) + if err != nil { + return err + } + + var eventMsg pb.Message + if req.Archived != nil { + eventMsg = &eventproto.ExperimentArchivedEvent{ + Id: req.Id, + } + } else { + eventMsg = &eventproto.ExperimentUpdatedEvent{ + Id: experiment.Id, + Name: updated.Name, + Description: updated.Description, + StartAt: updated.StartAt, + StopAt: updated.StopAt, + Status: updated.Status, + } + } + event, err := domainevent.NewEvent( + editor, + eventproto.Event_EXPERIMENT, + experiment.Id, + eventproto.Event_EXPERIMENT_UPDATED, + eventMsg, + req.EnvironmentId, + updated, + experiment, + ) + if err != nil { + return err + } + if err := s.publisher.Publish(ctxWithTx, event); err != nil { + return err + } + return experimentStorage.UpdateExperiment(ctxWithTx, updated, req.EnvironmentId) + }) + if err != nil { + if errors.Is(err, v2es.ErrExperimentNotFound) || errors.Is(err, v2es.ErrExperimentUnexpectedAffectedRows) { dt, err := statusNotFound.WithDetails(&errdetails.LocalizedMessage{ Locale: localizer.GetLocale(), Message: localizer.MustLocalize(locale.NotFoundError), @@ -782,6 +887,53 @@ func validateUpdateExperimentRequest(req *proto.UpdateExperimentRequest, localiz return nil } +func validateUpdateExperimentNoCommandRequest( + req *proto.UpdateExperimentRequest, + localizer locale.Localizer, +) error { + if req.Id == "" { + dt, err := statusExperimentIDRequired.WithDetails(&errdetails.LocalizedMessage{ + Locale: localizer.GetLocale(), + Message: localizer.MustLocalizeWithTemplate(locale.RequiredFieldTemplate, "id"), + }) + if err != nil { + return statusInternal.Err() + } + return dt.Err() + } + if req.Name != nil && req.Name.Value == "" { + dt, err := statusExperimentNameRequired.WithDetails(&errdetails.LocalizedMessage{ + Locale: localizer.GetLocale(), + Message: localizer.MustLocalizeWithTemplate(locale.RequiredFieldTemplate, "name"), + }) + if err != nil { + return statusInternal.Err() + } + return dt.Err() + } + if (req.StartAt != nil && req.StopAt == nil) || + (req.StartAt == nil && req.StopAt != nil) { + dt, err := statusPeriodInvalid.WithDetails(&errdetails.LocalizedMessage{ + Locale: localizer.GetLocale(), + Message: localizer.MustLocalizeWithTemplate(locale.InvalidArgumentError, "period"), + }) + if err != nil { + return statusInternal.Err() + } + return dt.Err() + } + if req.StartAt != nil && req.StopAt != nil { + if err := validateExperimentPeriod( + req.StartAt.Value, + req.StopAt.Value, + localizer, + ); err != nil { + return err + } + } + return nil +} + func (s *experimentService) StartExperiment( ctx context.Context, req *proto.StartExperimentRequest, diff --git a/pkg/experiment/api/experiment_test.go b/pkg/experiment/api/experiment_test.go index e5a3d2e84..ca52baf52 100644 --- a/pkg/experiment/api/experiment_test.go +++ b/pkg/experiment/api/experiment_test.go @@ -25,6 +25,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" v2es "github.com/bucketeer-io/bucketeer/pkg/experiment/storage/v2" "github.com/bucketeer-io/bucketeer/pkg/locale" @@ -467,6 +468,9 @@ func TestUpdateExperimentMySQL(t *testing.T) { req: &experimentproto.UpdateExperimentRequest{ Id: "id-0", EnvironmentId: "ns0", + ChangeNameCommand: &experimentproto.ChangeExperimentNameCommand{ + Name: "new-name", + }, }, expectedErr: createError(statusNotFound, localizer.MustLocalize(locale.NotFoundError)), }, @@ -495,6 +499,101 @@ func TestUpdateExperimentMySQL(t *testing.T) { } } +func TestUpdateExperimentNoCommandMySQL(t *testing.T) { + t.Parallel() + mockController := gomock.NewController(t) + defer mockController.Finish() + + ctx := createContextWithTokenAndMetadata(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() + } + + patterns := []struct { + desc string + setup func(*experimentService) + req *experimentproto.UpdateExperimentRequest + expectedErr error + }{ + { + desc: "error id required", + setup: nil, + req: &experimentproto.UpdateExperimentRequest{ + EnvironmentId: "ns0", + }, + expectedErr: createError(statusExperimentIDRequired, localizer.MustLocalizeWithTemplate(locale.RequiredFieldTemplate, "id")), + }, + { + desc: "period too long", + setup: nil, + req: &experimentproto.UpdateExperimentRequest{ + Id: "id-1", + StartAt: wrapperspb.Int64(time.Now().Unix()), + StopAt: wrapperspb.Int64(time.Now().AddDate(0, 0, 31).Unix()), + EnvironmentId: "ns0", + }, + expectedErr: createError(statusPeriodTooLong, localizer.MustLocalizeWithTemplate(locale.InvalidArgumentError, "period")), + }, + { + desc: "invalid period input", + setup: nil, + req: &experimentproto.UpdateExperimentRequest{ + Id: "id-1", + StartAt: wrapperspb.Int64(time.Now().Unix()), + StopAt: nil, + EnvironmentId: "ns0", + }, + expectedErr: createError(statusPeriodInvalid, localizer.MustLocalizeWithTemplate(locale.InvalidArgumentError, "period")), + }, + { + desc: "experiment not found", + setup: func(s *experimentService) { + s.mysqlClient.(*mysqlmock.MockClient).EXPECT().RunInTransactionV2( + gomock.Any(), gomock.Any(), + ).Return(v2es.ErrExperimentNotFound) + }, + req: &experimentproto.UpdateExperimentRequest{ + Id: "id-0", + EnvironmentId: "ns0", + Name: wrapperspb.String("new-name"), + }, + expectedErr: createError(statusNotFound, localizer.MustLocalize(locale.NotFoundError)), + }, + { + desc: "success", + setup: func(s *experimentService) { + s.mysqlClient.(*mysqlmock.MockClient).EXPECT().RunInTransactionV2( + gomock.Any(), gomock.Any(), + ).Return(nil) + }, + req: &experimentproto.UpdateExperimentRequest{ + Id: "id-1", + Name: wrapperspb.String("new-name"), + StartAt: wrapperspb.Int64(time.Now().Unix()), + StopAt: wrapperspb.Int64(time.Now().AddDate(0, 0, 1).Unix()), + EnvironmentId: "ns0", + }, + expectedErr: nil, + }, + } + for _, p := range patterns { + service := createExperimentService(mockController, nil, nil, nil) + if p.setup != nil { + p.setup(service) + } + _, err := service.UpdateExperiment(ctx, p.req) + assert.Equal(t, p.expectedErr, err) + } +} + func TestStartExperimentMySQL(t *testing.T) { t.Parallel() mockController := gomock.NewController(t) diff --git a/pkg/experiment/domain/experiment.go b/pkg/experiment/domain/experiment.go index 056144074..765195238 100644 --- a/pkg/experiment/domain/experiment.go +++ b/pkg/experiment/domain/experiment.go @@ -19,6 +19,9 @@ import ( "math" "time" + "github.com/jinzhu/copier" + "google.golang.org/protobuf/types/known/wrapperspb" + "github.com/bucketeer-io/bucketeer/pkg/uuid" experimentproto "github.com/bucketeer-io/bucketeer/proto/experiment" featureproto "github.com/bucketeer-io/bucketeer/proto/feature" @@ -89,6 +92,84 @@ func removeDuplicated(args []string) []string { return results } +func (e *Experiment) Update( + name *wrapperspb.StringValue, + description *wrapperspb.StringValue, + startAt *wrapperspb.Int64Value, + stopAt *wrapperspb.Int64Value, + status *experimentproto.UpdateExperimentRequest_UpdatedStatus, + archived *wrapperspb.BoolValue, +) (*Experiment, error) { + updated := &Experiment{} + err := copier.Copy(&updated, e) + if err != nil { + return nil, err + } + + now := time.Now().Unix() + + if name != nil { + updated.Experiment.Name = name.Value + } + + if description != nil { + updated.Experiment.Description = description.Value + } + + if startAt != nil && stopAt != nil { + err = e.validatePeriod(startAt.Value, stopAt.Value) + if err != nil { + return nil, err + } + updated.Experiment.StartAt = startAt.Value + updated.Experiment.StopAt = stopAt.Value + } + + if archived != nil { + updated.Experiment.Archived = archived.Value + } + + if status != nil { + err = updated.updateStatus(status.Status, now) + if err != nil { + return nil, err + } + } + + updated.UpdatedAt = now + + return updated, nil +} + +func (e *Experiment) updateStatus(status experimentproto.Experiment_Status, now int64) error { + switch status { + case experimentproto.Experiment_RUNNING: + if e.Status != experimentproto.Experiment_WAITING { + return ErrExperimentStatusInvalid + } + if e.StartAt > now { + return ErrExperimentBeforeStart + } + e.Status = experimentproto.Experiment_RUNNING + case experimentproto.Experiment_STOPPED: + if e.Status != experimentproto.Experiment_WAITING && e.Status != experimentproto.Experiment_RUNNING { + return ErrExperimentStatusInvalid + } + if e.StopAt > now { + return ErrExperimentBeforeStop + } + e.Status = experimentproto.Experiment_STOPPED + case experimentproto.Experiment_FORCE_STOPPED: + e.Status = experimentproto.Experiment_FORCE_STOPPED + e.StoppedAt = now + e.UpdatedAt = now + default: + return ErrExperimentStatusInvalid + } + + return nil +} + func (e *Experiment) Start() error { if e.Status != experimentproto.Experiment_WAITING { return ErrExperimentStatusInvalid diff --git a/pkg/experiment/domain/experiment_test.go b/pkg/experiment/domain/experiment_test.go index 9b9ecb082..70b3a98fc 100644 --- a/pkg/experiment/domain/experiment_test.go +++ b/pkg/experiment/domain/experiment_test.go @@ -22,6 +22,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "google.golang.org/protobuf/types/known/wrapperspb" experimentproto "github.com/bucketeer-io/bucketeer/proto/experiment" featureproto "github.com/bucketeer-io/bucketeer/proto/feature" @@ -484,6 +485,121 @@ func TestIsNotFinished(t *testing.T) { } } +func TestUpdateExperiment(t *testing.T) { + t.Parallel() + experiment := newExperiment(t) + now := time.Now().Unix() + + patterns := []struct { + desc string + experiment *Experiment + setup func(*Experiment) + name *wrapperspb.StringValue + description *wrapperspb.StringValue + startAt *wrapperspb.Int64Value + stopAt *wrapperspb.Int64Value + status *experimentproto.UpdateExperimentRequest_UpdatedStatus + archived *wrapperspb.BoolValue + expected *Experiment + expectedErr error + }{ + { + desc: "success", + experiment: experiment, + setup: nil, + name: wrapperspb.String("newName"), + description: wrapperspb.String("newDesc"), + expected: &Experiment{ + Experiment: &experimentproto.Experiment{ + Id: experiment.Id, + Name: "newName", + Description: "newDesc", + Status: experiment.Status, + StartAt: experiment.StartAt, + StopAt: experiment.StopAt, + StoppedAt: experiment.StoppedAt, + CreatedAt: experiment.CreatedAt, + UpdatedAt: experiment.UpdatedAt, + Archived: experiment.Archived, + Deleted: experiment.Deleted, + }, + }, + }, + { + desc: "success update status", + experiment: experiment, + setup: func(e *Experiment) { + e.Status = experimentproto.Experiment_RUNNING + }, + status: &experimentproto.UpdateExperimentRequest_UpdatedStatus{ + Status: experimentproto.Experiment_STOPPED, + }, + expected: &Experiment{ + Experiment: &experimentproto.Experiment{ + Id: experiment.Id, + Name: experiment.Name, + Description: experiment.Description, + Status: experimentproto.Experiment_STOPPED, + StartAt: experiment.StartAt, + StopAt: experiment.StopAt, + StoppedAt: experiment.StoppedAt, + CreatedAt: experiment.CreatedAt, + UpdatedAt: experiment.UpdatedAt, + Archived: experiment.Archived, + Deleted: experiment.Deleted, + }, + }, + }, + { + desc: "error invalid status", + experiment: experiment, + setup: func(e *Experiment) { + e.Status = experimentproto.Experiment_STOPPED + }, + status: &experimentproto.UpdateExperimentRequest_UpdatedStatus{ + Status: experimentproto.Experiment_WAITING, + }, + expected: nil, + expectedErr: ErrExperimentStatusInvalid, + }, + { + desc: "error start at after stop at", + experiment: experiment, + startAt: wrapperspb.Int64(now), + stopAt: wrapperspb.Int64(now - 1000), + expected: nil, + expectedErr: ErrExperimentStartIsAfterStop, + }, + { + desc: "error before now", + experiment: experiment, + startAt: wrapperspb.Int64(now - 1000), + stopAt: wrapperspb.Int64(now - 1), + expected: nil, + expectedErr: ErrExperimentStopIsBeforeNow, + }, + } + for _, p := range patterns { + t.Run(p.desc, func(t *testing.T) { + if p.setup != nil { + p.setup(p.experiment) + } + updated, err := p.experiment.Update(p.name, p.description, p.startAt, p.stopAt, p.status, p.archived) + if p.expectedErr != nil { + assert.Equal(t, p.expectedErr, err) + } else { + assert.NoError(t, err) + assert.Equal(t, p.expected.Name, updated.Name) + assert.Equal(t, p.expected.Description, updated.Description) + assert.Equal(t, p.expected.Status, updated.Status) + assert.Equal(t, p.expected.StartAt, updated.StartAt) + assert.Equal(t, p.expected.StopAt, updated.StopAt) + assert.Equal(t, p.expected.StoppedAt, updated.StoppedAt) + } + }) + } +} + func newExperiment(t *testing.T) *Experiment { t.Helper() featureID := "id" diff --git a/pkg/experiment/storage/v2/experiment.go b/pkg/experiment/storage/v2/experiment.go index 073a3fc7a..0b41af185 100644 --- a/pkg/experiment/storage/v2/experiment.go +++ b/pkg/experiment/storage/v2/experiment.go @@ -35,6 +35,10 @@ var ( selectExperimentsSQL string //go:embed sql/experiment/count_experiment.sql countExperimentSQL string + //go:embed sql/experiment/update_experiment.sql + updateExperimentSQL string + //go:embed sql/experiment/insert_experiment.sql + insertExperimentSQL string ) type ExperimentStorage interface { @@ -62,36 +66,9 @@ func (s *experimentStorage) CreateExperiment( e *domain.Experiment, environmentId string, ) error { - query := ` - INSERT INTO experiment ( - id, - goal_id, - feature_id, - feature_version, - variations, - start_at, - stop_at, - stopped, - stopped_at, - created_at, - updated_at, - archived, - deleted, - goal_ids, - name, - description, - base_variation_id, - status, - maintainer, - environment_id - ) VALUES ( - ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, - ?, ?, ?, ?, ?, ?, ?, ?, ?, ? - ) - ` _, err := s.qe.ExecContext( ctx, - query, + insertExperimentSQL, e.Id, e.GoalId, e.FeatureId, @@ -127,35 +104,9 @@ func (s *experimentStorage) UpdateExperiment( e *domain.Experiment, environmentId string, ) error { - query := ` - UPDATE - experiment - SET - goal_id = ?, - feature_id = ?, - feature_version = ?, - variations = ?, - start_at = ?, - stop_at = ?, - stopped = ?, - stopped_at = ?, - created_at = ?, - updated_at = ?, - archived = ?, - deleted = ?, - goal_ids = ?, - name = ?, - description = ?, - base_variation_id = ?, - maintainer = ?, - status = ? - WHERE - id = ? AND - environment_id = ? - ` result, err := s.qe.ExecContext( ctx, - query, + updateExperimentSQL, e.GoalId, e.FeatureId, e.FeatureVersion, diff --git a/pkg/experiment/storage/v2/sql/experiment/insert_experiment.sql b/pkg/experiment/storage/v2/sql/experiment/insert_experiment.sql new file mode 100644 index 000000000..e441ac294 --- /dev/null +++ b/pkg/experiment/storage/v2/sql/experiment/insert_experiment.sql @@ -0,0 +1,25 @@ +INSERT INTO experiment ( + id, + goal_id, + feature_id, + feature_version, + variations, + start_at, + stop_at, + stopped, + stopped_at, + created_at, + updated_at, + archived, + deleted, + goal_ids, + name, + description, + base_variation_id, + status, + maintainer, + environment_id +) VALUES ( + ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, + ?, ?, ?, ?, ?, ?, ?, ?, ?, ? +) \ No newline at end of file diff --git a/pkg/experiment/storage/v2/sql/experiment/update_experiment.sql b/pkg/experiment/storage/v2/sql/experiment/update_experiment.sql new file mode 100644 index 000000000..2697dcd77 --- /dev/null +++ b/pkg/experiment/storage/v2/sql/experiment/update_experiment.sql @@ -0,0 +1,24 @@ +UPDATE + experiment +SET + goal_id = ?, + feature_id = ?, + feature_version = ?, + variations = ?, + start_at = ?, + stop_at = ?, + stopped = ?, + stopped_at = ?, + created_at = ?, + updated_at = ?, + archived = ?, + deleted = ?, + goal_ids = ?, + name = ?, + description = ?, + base_variation_id = ?, + maintainer = ?, + status = ? +WHERE + id = ? AND + environment_id = ? \ No newline at end of file diff --git a/proto/auditlog/proto_descriptor.pb b/proto/auditlog/proto_descriptor.pb index 0c97326d7..a6dfff27f 100644 Binary files a/proto/auditlog/proto_descriptor.pb and b/proto/auditlog/proto_descriptor.pb differ diff --git a/proto/event/domain/event.pb.go b/proto/event/domain/event.pb.go index e74608916..4b2c791f1 100644 --- a/proto/event/domain/event.pb.go +++ b/proto/event/domain/event.pb.go @@ -196,6 +196,7 @@ const ( Event_EXPERIMENT_STARTED Event_Type = 208 Event_EXPERIMENT_FINISHED Event_Type = 209 Event_EXPERIMENT_ARCHIVED Event_Type = 210 + Event_EXPERIMENT_UPDATED Event_Type = 211 // Deprecated: Do not use. Event_ACCOUNT_CREATED Event_Type = 300 // Deprecated: Do not use. @@ -389,6 +390,7 @@ var ( 208: "EXPERIMENT_STARTED", 209: "EXPERIMENT_FINISHED", 210: "EXPERIMENT_ARCHIVED", + 211: "EXPERIMENT_UPDATED", 300: "ACCOUNT_CREATED", 301: "ACCOUNT_ROLE_CHANGED", 302: "ACCOUNT_ENABLED", @@ -570,6 +572,7 @@ var ( "EXPERIMENT_STARTED": 208, "EXPERIMENT_FINISHED": 209, "EXPERIMENT_ARCHIVED": 210, + "EXPERIMENT_UPDATED": 211, "ACCOUNT_CREATED": 300, "ACCOUNT_ROLE_CHANGED": 301, "ACCOUNT_ENABLED": 302, @@ -4227,6 +4230,93 @@ func (x *ExperimentDescriptionChangedEvent) GetDescription() string { return "" } +type ExperimentUpdatedEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description"` + StartAt int64 `protobuf:"varint,4,opt,name=start_at,json=startAt,proto3" json:"start_at"` + StopAt int64 `protobuf:"varint,5,opt,name=stop_at,json=stopAt,proto3" json:"stop_at"` + Status experiment.Experiment_Status `protobuf:"varint,6,opt,name=status,proto3,enum=bucketeer.experiment.Experiment_Status" json:"status"` +} + +func (x *ExperimentUpdatedEvent) Reset() { + *x = ExperimentUpdatedEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_event_domain_event_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExperimentUpdatedEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExperimentUpdatedEvent) ProtoMessage() {} + +func (x *ExperimentUpdatedEvent) ProtoReflect() protoreflect.Message { + mi := &file_proto_event_domain_event_proto_msgTypes[55] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExperimentUpdatedEvent.ProtoReflect.Descriptor instead. +func (*ExperimentUpdatedEvent) Descriptor() ([]byte, []int) { + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{55} +} + +func (x *ExperimentUpdatedEvent) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ExperimentUpdatedEvent) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ExperimentUpdatedEvent) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *ExperimentUpdatedEvent) GetStartAt() int64 { + if x != nil { + return x.StartAt + } + return 0 +} + +func (x *ExperimentUpdatedEvent) GetStopAt() int64 { + if x != nil { + return x.StopAt + } + return 0 +} + +func (x *ExperimentUpdatedEvent) GetStatus() experiment.Experiment_Status { + if x != nil { + return x.Status + } + return experiment.Experiment_WAITING +} + type ExperimentStartedEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4236,7 +4326,7 @@ type ExperimentStartedEvent struct { func (x *ExperimentStartedEvent) Reset() { *x = ExperimentStartedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[55] + mi := &file_proto_event_domain_event_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4249,7 +4339,7 @@ func (x *ExperimentStartedEvent) String() string { func (*ExperimentStartedEvent) ProtoMessage() {} func (x *ExperimentStartedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[55] + mi := &file_proto_event_domain_event_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4262,7 +4352,7 @@ func (x *ExperimentStartedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use ExperimentStartedEvent.ProtoReflect.Descriptor instead. func (*ExperimentStartedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{55} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{56} } type ExperimentFinishedEvent struct { @@ -4274,7 +4364,7 @@ type ExperimentFinishedEvent struct { func (x *ExperimentFinishedEvent) Reset() { *x = ExperimentFinishedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[56] + mi := &file_proto_event_domain_event_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4287,7 +4377,7 @@ func (x *ExperimentFinishedEvent) String() string { func (*ExperimentFinishedEvent) ProtoMessage() {} func (x *ExperimentFinishedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[56] + mi := &file_proto_event_domain_event_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4300,7 +4390,7 @@ func (x *ExperimentFinishedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use ExperimentFinishedEvent.ProtoReflect.Descriptor instead. func (*ExperimentFinishedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{56} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{57} } type AccountV2CreatedEvent struct { @@ -4326,7 +4416,7 @@ type AccountV2CreatedEvent struct { func (x *AccountV2CreatedEvent) Reset() { *x = AccountV2CreatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[57] + mi := &file_proto_event_domain_event_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4339,7 +4429,7 @@ func (x *AccountV2CreatedEvent) String() string { func (*AccountV2CreatedEvent) ProtoMessage() {} func (x *AccountV2CreatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[57] + mi := &file_proto_event_domain_event_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4352,7 +4442,7 @@ func (x *AccountV2CreatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AccountV2CreatedEvent.ProtoReflect.Descriptor instead. func (*AccountV2CreatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{57} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{58} } func (x *AccountV2CreatedEvent) GetEmail() string { @@ -4458,7 +4548,7 @@ type AccountV2UpdatedEvent struct { func (x *AccountV2UpdatedEvent) Reset() { *x = AccountV2UpdatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[58] + mi := &file_proto_event_domain_event_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4471,7 +4561,7 @@ func (x *AccountV2UpdatedEvent) String() string { func (*AccountV2UpdatedEvent) ProtoMessage() {} func (x *AccountV2UpdatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[58] + mi := &file_proto_event_domain_event_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4484,7 +4574,7 @@ func (x *AccountV2UpdatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AccountV2UpdatedEvent.ProtoReflect.Descriptor instead. func (*AccountV2UpdatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{58} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{59} } func (x *AccountV2UpdatedEvent) GetEmail() string { @@ -4513,7 +4603,7 @@ type AccountV2NameChangedEvent struct { func (x *AccountV2NameChangedEvent) Reset() { *x = AccountV2NameChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[59] + mi := &file_proto_event_domain_event_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4526,7 +4616,7 @@ func (x *AccountV2NameChangedEvent) String() string { func (*AccountV2NameChangedEvent) ProtoMessage() {} func (x *AccountV2NameChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[59] + mi := &file_proto_event_domain_event_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4539,7 +4629,7 @@ func (x *AccountV2NameChangedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AccountV2NameChangedEvent.ProtoReflect.Descriptor instead. func (*AccountV2NameChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{59} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{60} } func (x *AccountV2NameChangedEvent) GetEmail() string { @@ -4568,7 +4658,7 @@ type AccountV2AvatarImageURLChangedEvent struct { func (x *AccountV2AvatarImageURLChangedEvent) Reset() { *x = AccountV2AvatarImageURLChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[60] + mi := &file_proto_event_domain_event_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4581,7 +4671,7 @@ func (x *AccountV2AvatarImageURLChangedEvent) String() string { func (*AccountV2AvatarImageURLChangedEvent) ProtoMessage() {} func (x *AccountV2AvatarImageURLChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[60] + mi := &file_proto_event_domain_event_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4594,7 +4684,7 @@ func (x *AccountV2AvatarImageURLChangedEvent) ProtoReflect() protoreflect.Messag // Deprecated: Use AccountV2AvatarImageURLChangedEvent.ProtoReflect.Descriptor instead. func (*AccountV2AvatarImageURLChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{60} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{61} } func (x *AccountV2AvatarImageURLChangedEvent) GetEmail() string { @@ -4623,7 +4713,7 @@ type AccountV2TagsChangedEvent struct { func (x *AccountV2TagsChangedEvent) Reset() { *x = AccountV2TagsChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[61] + mi := &file_proto_event_domain_event_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4636,7 +4726,7 @@ func (x *AccountV2TagsChangedEvent) String() string { func (*AccountV2TagsChangedEvent) ProtoMessage() {} func (x *AccountV2TagsChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[61] + mi := &file_proto_event_domain_event_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4649,7 +4739,7 @@ func (x *AccountV2TagsChangedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AccountV2TagsChangedEvent.ProtoReflect.Descriptor instead. func (*AccountV2TagsChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{61} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{62} } func (x *AccountV2TagsChangedEvent) GetEmail() string { @@ -4678,7 +4768,7 @@ type AccountV2OrganizationRoleChangedEvent struct { func (x *AccountV2OrganizationRoleChangedEvent) Reset() { *x = AccountV2OrganizationRoleChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[62] + mi := &file_proto_event_domain_event_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4691,7 +4781,7 @@ func (x *AccountV2OrganizationRoleChangedEvent) String() string { func (*AccountV2OrganizationRoleChangedEvent) ProtoMessage() {} func (x *AccountV2OrganizationRoleChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[62] + mi := &file_proto_event_domain_event_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4704,7 +4794,7 @@ func (x *AccountV2OrganizationRoleChangedEvent) ProtoReflect() protoreflect.Mess // Deprecated: Use AccountV2OrganizationRoleChangedEvent.ProtoReflect.Descriptor instead. func (*AccountV2OrganizationRoleChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{62} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{63} } func (x *AccountV2OrganizationRoleChangedEvent) GetEmail() string { @@ -4733,7 +4823,7 @@ type AccountV2EnvironmentRolesChangedEvent struct { func (x *AccountV2EnvironmentRolesChangedEvent) Reset() { *x = AccountV2EnvironmentRolesChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[63] + mi := &file_proto_event_domain_event_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4746,7 +4836,7 @@ func (x *AccountV2EnvironmentRolesChangedEvent) String() string { func (*AccountV2EnvironmentRolesChangedEvent) ProtoMessage() {} func (x *AccountV2EnvironmentRolesChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[63] + mi := &file_proto_event_domain_event_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4759,7 +4849,7 @@ func (x *AccountV2EnvironmentRolesChangedEvent) ProtoReflect() protoreflect.Mess // Deprecated: Use AccountV2EnvironmentRolesChangedEvent.ProtoReflect.Descriptor instead. func (*AccountV2EnvironmentRolesChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{63} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{64} } func (x *AccountV2EnvironmentRolesChangedEvent) GetEmail() string { @@ -4787,7 +4877,7 @@ type AccountV2EnabledEvent struct { func (x *AccountV2EnabledEvent) Reset() { *x = AccountV2EnabledEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[64] + mi := &file_proto_event_domain_event_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4800,7 +4890,7 @@ func (x *AccountV2EnabledEvent) String() string { func (*AccountV2EnabledEvent) ProtoMessage() {} func (x *AccountV2EnabledEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[64] + mi := &file_proto_event_domain_event_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4813,7 +4903,7 @@ func (x *AccountV2EnabledEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AccountV2EnabledEvent.ProtoReflect.Descriptor instead. func (*AccountV2EnabledEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{64} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{65} } func (x *AccountV2EnabledEvent) GetEmail() string { @@ -4834,7 +4924,7 @@ type AccountV2DisabledEvent struct { func (x *AccountV2DisabledEvent) Reset() { *x = AccountV2DisabledEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[65] + mi := &file_proto_event_domain_event_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4847,7 +4937,7 @@ func (x *AccountV2DisabledEvent) String() string { func (*AccountV2DisabledEvent) ProtoMessage() {} func (x *AccountV2DisabledEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[65] + mi := &file_proto_event_domain_event_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4860,7 +4950,7 @@ func (x *AccountV2DisabledEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AccountV2DisabledEvent.ProtoReflect.Descriptor instead. func (*AccountV2DisabledEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{65} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{66} } func (x *AccountV2DisabledEvent) GetEmail() string { @@ -4881,7 +4971,7 @@ type AccountV2DeletedEvent struct { func (x *AccountV2DeletedEvent) Reset() { *x = AccountV2DeletedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[66] + mi := &file_proto_event_domain_event_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4894,7 +4984,7 @@ func (x *AccountV2DeletedEvent) String() string { func (*AccountV2DeletedEvent) ProtoMessage() {} func (x *AccountV2DeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[66] + mi := &file_proto_event_domain_event_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4907,7 +4997,7 @@ func (x *AccountV2DeletedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AccountV2DeletedEvent.ProtoReflect.Descriptor instead. func (*AccountV2DeletedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{66} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{67} } func (x *AccountV2DeletedEvent) GetEmail() string { @@ -4932,7 +5022,7 @@ type SearchFilterCreatedEvent struct { func (x *SearchFilterCreatedEvent) Reset() { *x = SearchFilterCreatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[67] + mi := &file_proto_event_domain_event_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4945,7 +5035,7 @@ func (x *SearchFilterCreatedEvent) String() string { func (*SearchFilterCreatedEvent) ProtoMessage() {} func (x *SearchFilterCreatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[67] + mi := &file_proto_event_domain_event_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4958,7 +5048,7 @@ func (x *SearchFilterCreatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchFilterCreatedEvent.ProtoReflect.Descriptor instead. func (*SearchFilterCreatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{67} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{68} } func (x *SearchFilterCreatedEvent) GetName() string { @@ -5008,7 +5098,7 @@ type SearchFilterNameChangedEvent struct { func (x *SearchFilterNameChangedEvent) Reset() { *x = SearchFilterNameChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[68] + mi := &file_proto_event_domain_event_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5021,7 +5111,7 @@ func (x *SearchFilterNameChangedEvent) String() string { func (*SearchFilterNameChangedEvent) ProtoMessage() {} func (x *SearchFilterNameChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[68] + mi := &file_proto_event_domain_event_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5034,7 +5124,7 @@ func (x *SearchFilterNameChangedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchFilterNameChangedEvent.ProtoReflect.Descriptor instead. func (*SearchFilterNameChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{68} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{69} } func (x *SearchFilterNameChangedEvent) GetId() string { @@ -5063,7 +5153,7 @@ type SearchFilterQueryChangedEvent struct { func (x *SearchFilterQueryChangedEvent) Reset() { *x = SearchFilterQueryChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[69] + mi := &file_proto_event_domain_event_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5076,7 +5166,7 @@ func (x *SearchFilterQueryChangedEvent) String() string { func (*SearchFilterQueryChangedEvent) ProtoMessage() {} func (x *SearchFilterQueryChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[69] + mi := &file_proto_event_domain_event_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5089,7 +5179,7 @@ func (x *SearchFilterQueryChangedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchFilterQueryChangedEvent.ProtoReflect.Descriptor instead. func (*SearchFilterQueryChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{69} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{70} } func (x *SearchFilterQueryChangedEvent) GetId() string { @@ -5118,7 +5208,7 @@ type SearchFilterDefaultChangedEvent struct { func (x *SearchFilterDefaultChangedEvent) Reset() { *x = SearchFilterDefaultChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[70] + mi := &file_proto_event_domain_event_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5131,7 +5221,7 @@ func (x *SearchFilterDefaultChangedEvent) String() string { func (*SearchFilterDefaultChangedEvent) ProtoMessage() {} func (x *SearchFilterDefaultChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[70] + mi := &file_proto_event_domain_event_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5144,7 +5234,7 @@ func (x *SearchFilterDefaultChangedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchFilterDefaultChangedEvent.ProtoReflect.Descriptor instead. func (*SearchFilterDefaultChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{70} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{71} } func (x *SearchFilterDefaultChangedEvent) GetId() string { @@ -5172,7 +5262,7 @@ type SearchFilterDeletedEvent struct { func (x *SearchFilterDeletedEvent) Reset() { *x = SearchFilterDeletedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[71] + mi := &file_proto_event_domain_event_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5185,7 +5275,7 @@ func (x *SearchFilterDeletedEvent) String() string { func (*SearchFilterDeletedEvent) ProtoMessage() {} func (x *SearchFilterDeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[71] + mi := &file_proto_event_domain_event_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5198,7 +5288,7 @@ func (x *SearchFilterDeletedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchFilterDeletedEvent.ProtoReflect.Descriptor instead. func (*SearchFilterDeletedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{71} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{72} } func (x *SearchFilterDeletedEvent) GetId() string { @@ -5226,7 +5316,7 @@ type APIKeyCreatedEvent struct { func (x *APIKeyCreatedEvent) Reset() { *x = APIKeyCreatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[72] + mi := &file_proto_event_domain_event_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5239,7 +5329,7 @@ func (x *APIKeyCreatedEvent) String() string { func (*APIKeyCreatedEvent) ProtoMessage() {} func (x *APIKeyCreatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[72] + mi := &file_proto_event_domain_event_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5252,7 +5342,7 @@ func (x *APIKeyCreatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use APIKeyCreatedEvent.ProtoReflect.Descriptor instead. func (*APIKeyCreatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{72} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{73} } func (x *APIKeyCreatedEvent) GetId() string { @@ -5322,7 +5412,7 @@ type APIKeyChangedEvent struct { func (x *APIKeyChangedEvent) Reset() { *x = APIKeyChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[73] + mi := &file_proto_event_domain_event_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5335,7 +5425,7 @@ func (x *APIKeyChangedEvent) String() string { func (*APIKeyChangedEvent) ProtoMessage() {} func (x *APIKeyChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[73] + mi := &file_proto_event_domain_event_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5348,7 +5438,7 @@ func (x *APIKeyChangedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use APIKeyChangedEvent.ProtoReflect.Descriptor instead. func (*APIKeyChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{73} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{74} } func (x *APIKeyChangedEvent) GetId() string { @@ -5370,7 +5460,7 @@ type APIKeyNameChangedEvent struct { func (x *APIKeyNameChangedEvent) Reset() { *x = APIKeyNameChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[74] + mi := &file_proto_event_domain_event_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5383,7 +5473,7 @@ func (x *APIKeyNameChangedEvent) String() string { func (*APIKeyNameChangedEvent) ProtoMessage() {} func (x *APIKeyNameChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[74] + mi := &file_proto_event_domain_event_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5396,7 +5486,7 @@ func (x *APIKeyNameChangedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use APIKeyNameChangedEvent.ProtoReflect.Descriptor instead. func (*APIKeyNameChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{74} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{75} } func (x *APIKeyNameChangedEvent) GetId() string { @@ -5424,7 +5514,7 @@ type APIKeyEnabledEvent struct { func (x *APIKeyEnabledEvent) Reset() { *x = APIKeyEnabledEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[75] + mi := &file_proto_event_domain_event_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5437,7 +5527,7 @@ func (x *APIKeyEnabledEvent) String() string { func (*APIKeyEnabledEvent) ProtoMessage() {} func (x *APIKeyEnabledEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[75] + mi := &file_proto_event_domain_event_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5450,7 +5540,7 @@ func (x *APIKeyEnabledEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use APIKeyEnabledEvent.ProtoReflect.Descriptor instead. func (*APIKeyEnabledEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{75} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{76} } func (x *APIKeyEnabledEvent) GetId() string { @@ -5471,7 +5561,7 @@ type APIKeyDisabledEvent struct { func (x *APIKeyDisabledEvent) Reset() { *x = APIKeyDisabledEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[76] + mi := &file_proto_event_domain_event_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5484,7 +5574,7 @@ func (x *APIKeyDisabledEvent) String() string { func (*APIKeyDisabledEvent) ProtoMessage() {} func (x *APIKeyDisabledEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[76] + mi := &file_proto_event_domain_event_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5497,7 +5587,7 @@ func (x *APIKeyDisabledEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use APIKeyDisabledEvent.ProtoReflect.Descriptor instead. func (*APIKeyDisabledEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{76} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{77} } func (x *APIKeyDisabledEvent) GetId() string { @@ -5520,7 +5610,7 @@ type SegmentCreatedEvent struct { func (x *SegmentCreatedEvent) Reset() { *x = SegmentCreatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[77] + mi := &file_proto_event_domain_event_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5533,7 +5623,7 @@ func (x *SegmentCreatedEvent) String() string { func (*SegmentCreatedEvent) ProtoMessage() {} func (x *SegmentCreatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[77] + mi := &file_proto_event_domain_event_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5546,7 +5636,7 @@ func (x *SegmentCreatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SegmentCreatedEvent.ProtoReflect.Descriptor instead. func (*SegmentCreatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{77} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{78} } func (x *SegmentCreatedEvent) GetId() string { @@ -5581,7 +5671,7 @@ type SegmentDeletedEvent struct { func (x *SegmentDeletedEvent) Reset() { *x = SegmentDeletedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[78] + mi := &file_proto_event_domain_event_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5594,7 +5684,7 @@ func (x *SegmentDeletedEvent) String() string { func (*SegmentDeletedEvent) ProtoMessage() {} func (x *SegmentDeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[78] + mi := &file_proto_event_domain_event_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5607,7 +5697,7 @@ func (x *SegmentDeletedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SegmentDeletedEvent.ProtoReflect.Descriptor instead. func (*SegmentDeletedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{78} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{79} } func (x *SegmentDeletedEvent) GetId() string { @@ -5630,7 +5720,7 @@ type SegmentUpdatedEvent struct { func (x *SegmentUpdatedEvent) Reset() { *x = SegmentUpdatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[79] + mi := &file_proto_event_domain_event_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5643,7 +5733,7 @@ func (x *SegmentUpdatedEvent) String() string { func (*SegmentUpdatedEvent) ProtoMessage() {} func (x *SegmentUpdatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[79] + mi := &file_proto_event_domain_event_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5656,7 +5746,7 @@ func (x *SegmentUpdatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SegmentUpdatedEvent.ProtoReflect.Descriptor instead. func (*SegmentUpdatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{79} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{80} } func (x *SegmentUpdatedEvent) GetId() string { @@ -5692,7 +5782,7 @@ type SegmentNameChangedEvent struct { func (x *SegmentNameChangedEvent) Reset() { *x = SegmentNameChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[80] + mi := &file_proto_event_domain_event_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5705,7 +5795,7 @@ func (x *SegmentNameChangedEvent) String() string { func (*SegmentNameChangedEvent) ProtoMessage() {} func (x *SegmentNameChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[80] + mi := &file_proto_event_domain_event_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5718,7 +5808,7 @@ func (x *SegmentNameChangedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SegmentNameChangedEvent.ProtoReflect.Descriptor instead. func (*SegmentNameChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{80} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{81} } func (x *SegmentNameChangedEvent) GetId() string { @@ -5747,7 +5837,7 @@ type SegmentDescriptionChangedEvent struct { func (x *SegmentDescriptionChangedEvent) Reset() { *x = SegmentDescriptionChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[81] + mi := &file_proto_event_domain_event_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5760,7 +5850,7 @@ func (x *SegmentDescriptionChangedEvent) String() string { func (*SegmentDescriptionChangedEvent) ProtoMessage() {} func (x *SegmentDescriptionChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[81] + mi := &file_proto_event_domain_event_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5773,7 +5863,7 @@ func (x *SegmentDescriptionChangedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SegmentDescriptionChangedEvent.ProtoReflect.Descriptor instead. func (*SegmentDescriptionChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{81} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{82} } func (x *SegmentDescriptionChangedEvent) GetId() string { @@ -5802,7 +5892,7 @@ type SegmentRuleAddedEvent struct { func (x *SegmentRuleAddedEvent) Reset() { *x = SegmentRuleAddedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[82] + mi := &file_proto_event_domain_event_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5815,7 +5905,7 @@ func (x *SegmentRuleAddedEvent) String() string { func (*SegmentRuleAddedEvent) ProtoMessage() {} func (x *SegmentRuleAddedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[82] + mi := &file_proto_event_domain_event_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5828,7 +5918,7 @@ func (x *SegmentRuleAddedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SegmentRuleAddedEvent.ProtoReflect.Descriptor instead. func (*SegmentRuleAddedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{82} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{83} } func (x *SegmentRuleAddedEvent) GetId() string { @@ -5857,7 +5947,7 @@ type SegmentRuleDeletedEvent struct { func (x *SegmentRuleDeletedEvent) Reset() { *x = SegmentRuleDeletedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[83] + mi := &file_proto_event_domain_event_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5870,7 +5960,7 @@ func (x *SegmentRuleDeletedEvent) String() string { func (*SegmentRuleDeletedEvent) ProtoMessage() {} func (x *SegmentRuleDeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[83] + mi := &file_proto_event_domain_event_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5883,7 +5973,7 @@ func (x *SegmentRuleDeletedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SegmentRuleDeletedEvent.ProtoReflect.Descriptor instead. func (*SegmentRuleDeletedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{83} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{84} } func (x *SegmentRuleDeletedEvent) GetId() string { @@ -5913,7 +6003,7 @@ type SegmentRuleClauseAddedEvent struct { func (x *SegmentRuleClauseAddedEvent) Reset() { *x = SegmentRuleClauseAddedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[84] + mi := &file_proto_event_domain_event_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5926,7 +6016,7 @@ func (x *SegmentRuleClauseAddedEvent) String() string { func (*SegmentRuleClauseAddedEvent) ProtoMessage() {} func (x *SegmentRuleClauseAddedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[84] + mi := &file_proto_event_domain_event_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5939,7 +6029,7 @@ func (x *SegmentRuleClauseAddedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SegmentRuleClauseAddedEvent.ProtoReflect.Descriptor instead. func (*SegmentRuleClauseAddedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{84} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{85} } func (x *SegmentRuleClauseAddedEvent) GetSegmentId() string { @@ -5976,7 +6066,7 @@ type SegmentRuleClauseDeletedEvent struct { func (x *SegmentRuleClauseDeletedEvent) Reset() { *x = SegmentRuleClauseDeletedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[85] + mi := &file_proto_event_domain_event_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5989,7 +6079,7 @@ func (x *SegmentRuleClauseDeletedEvent) String() string { func (*SegmentRuleClauseDeletedEvent) ProtoMessage() {} func (x *SegmentRuleClauseDeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[85] + mi := &file_proto_event_domain_event_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6002,7 +6092,7 @@ func (x *SegmentRuleClauseDeletedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SegmentRuleClauseDeletedEvent.ProtoReflect.Descriptor instead. func (*SegmentRuleClauseDeletedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{85} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{86} } func (x *SegmentRuleClauseDeletedEvent) GetSegmentId() string { @@ -6040,7 +6130,7 @@ type SegmentClauseAttributeChangedEvent struct { func (x *SegmentClauseAttributeChangedEvent) Reset() { *x = SegmentClauseAttributeChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[86] + mi := &file_proto_event_domain_event_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6053,7 +6143,7 @@ func (x *SegmentClauseAttributeChangedEvent) String() string { func (*SegmentClauseAttributeChangedEvent) ProtoMessage() {} func (x *SegmentClauseAttributeChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[86] + mi := &file_proto_event_domain_event_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6066,7 +6156,7 @@ func (x *SegmentClauseAttributeChangedEvent) ProtoReflect() protoreflect.Message // Deprecated: Use SegmentClauseAttributeChangedEvent.ProtoReflect.Descriptor instead. func (*SegmentClauseAttributeChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{86} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{87} } func (x *SegmentClauseAttributeChangedEvent) GetSegmentId() string { @@ -6111,7 +6201,7 @@ type SegmentClauseOperatorChangedEvent struct { func (x *SegmentClauseOperatorChangedEvent) Reset() { *x = SegmentClauseOperatorChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[87] + mi := &file_proto_event_domain_event_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6124,7 +6214,7 @@ func (x *SegmentClauseOperatorChangedEvent) String() string { func (*SegmentClauseOperatorChangedEvent) ProtoMessage() {} func (x *SegmentClauseOperatorChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[87] + mi := &file_proto_event_domain_event_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6137,7 +6227,7 @@ func (x *SegmentClauseOperatorChangedEvent) ProtoReflect() protoreflect.Message // Deprecated: Use SegmentClauseOperatorChangedEvent.ProtoReflect.Descriptor instead. func (*SegmentClauseOperatorChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{87} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{88} } func (x *SegmentClauseOperatorChangedEvent) GetSegmentId() string { @@ -6182,7 +6272,7 @@ type SegmentClauseValueAddedEvent struct { func (x *SegmentClauseValueAddedEvent) Reset() { *x = SegmentClauseValueAddedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[88] + mi := &file_proto_event_domain_event_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6195,7 +6285,7 @@ func (x *SegmentClauseValueAddedEvent) String() string { func (*SegmentClauseValueAddedEvent) ProtoMessage() {} func (x *SegmentClauseValueAddedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[88] + mi := &file_proto_event_domain_event_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6208,7 +6298,7 @@ func (x *SegmentClauseValueAddedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SegmentClauseValueAddedEvent.ProtoReflect.Descriptor instead. func (*SegmentClauseValueAddedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{88} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{89} } func (x *SegmentClauseValueAddedEvent) GetSegmentId() string { @@ -6253,7 +6343,7 @@ type SegmentClauseValueRemovedEvent struct { func (x *SegmentClauseValueRemovedEvent) Reset() { *x = SegmentClauseValueRemovedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[89] + mi := &file_proto_event_domain_event_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6266,7 +6356,7 @@ func (x *SegmentClauseValueRemovedEvent) String() string { func (*SegmentClauseValueRemovedEvent) ProtoMessage() {} func (x *SegmentClauseValueRemovedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[89] + mi := &file_proto_event_domain_event_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6279,7 +6369,7 @@ func (x *SegmentClauseValueRemovedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SegmentClauseValueRemovedEvent.ProtoReflect.Descriptor instead. func (*SegmentClauseValueRemovedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{89} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{90} } func (x *SegmentClauseValueRemovedEvent) GetSegmentId() string { @@ -6323,7 +6413,7 @@ type SegmentUserAddedEvent struct { func (x *SegmentUserAddedEvent) Reset() { *x = SegmentUserAddedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[90] + mi := &file_proto_event_domain_event_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6336,7 +6426,7 @@ func (x *SegmentUserAddedEvent) String() string { func (*SegmentUserAddedEvent) ProtoMessage() {} func (x *SegmentUserAddedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[90] + mi := &file_proto_event_domain_event_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6349,7 +6439,7 @@ func (x *SegmentUserAddedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SegmentUserAddedEvent.ProtoReflect.Descriptor instead. func (*SegmentUserAddedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{90} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{91} } func (x *SegmentUserAddedEvent) GetSegmentId() string { @@ -6386,7 +6476,7 @@ type SegmentUserDeletedEvent struct { func (x *SegmentUserDeletedEvent) Reset() { *x = SegmentUserDeletedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[91] + mi := &file_proto_event_domain_event_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6399,7 +6489,7 @@ func (x *SegmentUserDeletedEvent) String() string { func (*SegmentUserDeletedEvent) ProtoMessage() {} func (x *SegmentUserDeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[91] + mi := &file_proto_event_domain_event_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6412,7 +6502,7 @@ func (x *SegmentUserDeletedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SegmentUserDeletedEvent.ProtoReflect.Descriptor instead. func (*SegmentUserDeletedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{91} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{92} } func (x *SegmentUserDeletedEvent) GetSegmentId() string { @@ -6449,7 +6539,7 @@ type SegmentBulkUploadUsersEvent struct { func (x *SegmentBulkUploadUsersEvent) Reset() { *x = SegmentBulkUploadUsersEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[92] + mi := &file_proto_event_domain_event_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6462,7 +6552,7 @@ func (x *SegmentBulkUploadUsersEvent) String() string { func (*SegmentBulkUploadUsersEvent) ProtoMessage() {} func (x *SegmentBulkUploadUsersEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[92] + mi := &file_proto_event_domain_event_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6475,7 +6565,7 @@ func (x *SegmentBulkUploadUsersEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SegmentBulkUploadUsersEvent.ProtoReflect.Descriptor instead. func (*SegmentBulkUploadUsersEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{92} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{93} } func (x *SegmentBulkUploadUsersEvent) GetSegmentId() string { @@ -6513,7 +6603,7 @@ type SegmentBulkUploadUsersStatusChangedEvent struct { func (x *SegmentBulkUploadUsersStatusChangedEvent) Reset() { *x = SegmentBulkUploadUsersStatusChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[93] + mi := &file_proto_event_domain_event_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6526,7 +6616,7 @@ func (x *SegmentBulkUploadUsersStatusChangedEvent) String() string { func (*SegmentBulkUploadUsersStatusChangedEvent) ProtoMessage() {} func (x *SegmentBulkUploadUsersStatusChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[93] + mi := &file_proto_event_domain_event_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6539,7 +6629,7 @@ func (x *SegmentBulkUploadUsersStatusChangedEvent) ProtoReflect() protoreflect.M // Deprecated: Use SegmentBulkUploadUsersStatusChangedEvent.ProtoReflect.Descriptor instead. func (*SegmentBulkUploadUsersStatusChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{93} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{94} } func (x *SegmentBulkUploadUsersStatusChangedEvent) GetSegmentId() string { @@ -6588,7 +6678,7 @@ type EnvironmentCreatedEvent struct { func (x *EnvironmentCreatedEvent) Reset() { *x = EnvironmentCreatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[94] + mi := &file_proto_event_domain_event_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6601,7 +6691,7 @@ func (x *EnvironmentCreatedEvent) String() string { func (*EnvironmentCreatedEvent) ProtoMessage() {} func (x *EnvironmentCreatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[94] + mi := &file_proto_event_domain_event_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6614,7 +6704,7 @@ func (x *EnvironmentCreatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use EnvironmentCreatedEvent.ProtoReflect.Descriptor instead. func (*EnvironmentCreatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{94} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{95} } func (x *EnvironmentCreatedEvent) GetId() string { @@ -6685,7 +6775,7 @@ type EnvironmentRenamedEvent struct { func (x *EnvironmentRenamedEvent) Reset() { *x = EnvironmentRenamedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[95] + mi := &file_proto_event_domain_event_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6698,7 +6788,7 @@ func (x *EnvironmentRenamedEvent) String() string { func (*EnvironmentRenamedEvent) ProtoMessage() {} func (x *EnvironmentRenamedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[95] + mi := &file_proto_event_domain_event_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6711,7 +6801,7 @@ func (x *EnvironmentRenamedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use EnvironmentRenamedEvent.ProtoReflect.Descriptor instead. func (*EnvironmentRenamedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{95} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{96} } func (x *EnvironmentRenamedEvent) GetId() string { @@ -6740,7 +6830,7 @@ type EnvironmentDescriptionChangedEvent struct { func (x *EnvironmentDescriptionChangedEvent) Reset() { *x = EnvironmentDescriptionChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[96] + mi := &file_proto_event_domain_event_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6753,7 +6843,7 @@ func (x *EnvironmentDescriptionChangedEvent) String() string { func (*EnvironmentDescriptionChangedEvent) ProtoMessage() {} func (x *EnvironmentDescriptionChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[96] + mi := &file_proto_event_domain_event_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6766,7 +6856,7 @@ func (x *EnvironmentDescriptionChangedEvent) ProtoReflect() protoreflect.Message // Deprecated: Use EnvironmentDescriptionChangedEvent.ProtoReflect.Descriptor instead. func (*EnvironmentDescriptionChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{96} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{97} } func (x *EnvironmentDescriptionChangedEvent) GetId() string { @@ -6795,7 +6885,7 @@ type EnvironmentDeletedEvent struct { func (x *EnvironmentDeletedEvent) Reset() { *x = EnvironmentDeletedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[97] + mi := &file_proto_event_domain_event_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6808,7 +6898,7 @@ func (x *EnvironmentDeletedEvent) String() string { func (*EnvironmentDeletedEvent) ProtoMessage() {} func (x *EnvironmentDeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[97] + mi := &file_proto_event_domain_event_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6821,7 +6911,7 @@ func (x *EnvironmentDeletedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use EnvironmentDeletedEvent.ProtoReflect.Descriptor instead. func (*EnvironmentDeletedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{97} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{98} } func (x *EnvironmentDeletedEvent) GetId() string { @@ -6857,7 +6947,7 @@ type EnvironmentV2CreatedEvent struct { func (x *EnvironmentV2CreatedEvent) Reset() { *x = EnvironmentV2CreatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[98] + mi := &file_proto_event_domain_event_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6870,7 +6960,7 @@ func (x *EnvironmentV2CreatedEvent) String() string { func (*EnvironmentV2CreatedEvent) ProtoMessage() {} func (x *EnvironmentV2CreatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[98] + mi := &file_proto_event_domain_event_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6883,7 +6973,7 @@ func (x *EnvironmentV2CreatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use EnvironmentV2CreatedEvent.ProtoReflect.Descriptor instead. func (*EnvironmentV2CreatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{98} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{99} } func (x *EnvironmentV2CreatedEvent) GetId() string { @@ -6963,7 +7053,7 @@ type EnvironmentV2RenamedEvent struct { func (x *EnvironmentV2RenamedEvent) Reset() { *x = EnvironmentV2RenamedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[99] + mi := &file_proto_event_domain_event_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6976,7 +7066,7 @@ func (x *EnvironmentV2RenamedEvent) String() string { func (*EnvironmentV2RenamedEvent) ProtoMessage() {} func (x *EnvironmentV2RenamedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[99] + mi := &file_proto_event_domain_event_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6989,7 +7079,7 @@ func (x *EnvironmentV2RenamedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use EnvironmentV2RenamedEvent.ProtoReflect.Descriptor instead. func (*EnvironmentV2RenamedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{99} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{100} } func (x *EnvironmentV2RenamedEvent) GetId() string { @@ -7035,7 +7125,7 @@ type EnvironmentV2DescriptionChangedEvent struct { func (x *EnvironmentV2DescriptionChangedEvent) Reset() { *x = EnvironmentV2DescriptionChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[100] + mi := &file_proto_event_domain_event_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7048,7 +7138,7 @@ func (x *EnvironmentV2DescriptionChangedEvent) String() string { func (*EnvironmentV2DescriptionChangedEvent) ProtoMessage() {} func (x *EnvironmentV2DescriptionChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[100] + mi := &file_proto_event_domain_event_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7061,7 +7151,7 @@ func (x *EnvironmentV2DescriptionChangedEvent) ProtoReflect() protoreflect.Messa // Deprecated: Use EnvironmentV2DescriptionChangedEvent.ProtoReflect.Descriptor instead. func (*EnvironmentV2DescriptionChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{100} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{101} } func (x *EnvironmentV2DescriptionChangedEvent) GetId() string { @@ -7113,7 +7203,7 @@ type EnvironmentV2RequireCommentChangedEvent struct { func (x *EnvironmentV2RequireCommentChangedEvent) Reset() { *x = EnvironmentV2RequireCommentChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[101] + mi := &file_proto_event_domain_event_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7126,7 +7216,7 @@ func (x *EnvironmentV2RequireCommentChangedEvent) String() string { func (*EnvironmentV2RequireCommentChangedEvent) ProtoMessage() {} func (x *EnvironmentV2RequireCommentChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[101] + mi := &file_proto_event_domain_event_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7139,7 +7229,7 @@ func (x *EnvironmentV2RequireCommentChangedEvent) ProtoReflect() protoreflect.Me // Deprecated: Use EnvironmentV2RequireCommentChangedEvent.ProtoReflect.Descriptor instead. func (*EnvironmentV2RequireCommentChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{101} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{102} } func (x *EnvironmentV2RequireCommentChangedEvent) GetId() string { @@ -7183,7 +7273,7 @@ type EnvironmentV2ArchivedEvent struct { func (x *EnvironmentV2ArchivedEvent) Reset() { *x = EnvironmentV2ArchivedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[102] + mi := &file_proto_event_domain_event_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7196,7 +7286,7 @@ func (x *EnvironmentV2ArchivedEvent) String() string { func (*EnvironmentV2ArchivedEvent) ProtoMessage() {} func (x *EnvironmentV2ArchivedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[102] + mi := &file_proto_event_domain_event_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7209,7 +7299,7 @@ func (x *EnvironmentV2ArchivedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use EnvironmentV2ArchivedEvent.ProtoReflect.Descriptor instead. func (*EnvironmentV2ArchivedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{102} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{103} } func (x *EnvironmentV2ArchivedEvent) GetId() string { @@ -7246,7 +7336,7 @@ type EnvironmentV2UnarchivedEvent struct { func (x *EnvironmentV2UnarchivedEvent) Reset() { *x = EnvironmentV2UnarchivedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[103] + mi := &file_proto_event_domain_event_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7259,7 +7349,7 @@ func (x *EnvironmentV2UnarchivedEvent) String() string { func (*EnvironmentV2UnarchivedEvent) ProtoMessage() {} func (x *EnvironmentV2UnarchivedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[103] + mi := &file_proto_event_domain_event_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7272,7 +7362,7 @@ func (x *EnvironmentV2UnarchivedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use EnvironmentV2UnarchivedEvent.ProtoReflect.Descriptor instead. func (*EnvironmentV2UnarchivedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{103} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{104} } func (x *EnvironmentV2UnarchivedEvent) GetId() string { @@ -7312,7 +7402,7 @@ type AutoOpsRuleCreatedEvent struct { func (x *AutoOpsRuleCreatedEvent) Reset() { *x = AutoOpsRuleCreatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[104] + mi := &file_proto_event_domain_event_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7325,7 +7415,7 @@ func (x *AutoOpsRuleCreatedEvent) String() string { func (*AutoOpsRuleCreatedEvent) ProtoMessage() {} func (x *AutoOpsRuleCreatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[104] + mi := &file_proto_event_domain_event_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7338,7 +7428,7 @@ func (x *AutoOpsRuleCreatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AutoOpsRuleCreatedEvent.ProtoReflect.Descriptor instead. func (*AutoOpsRuleCreatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{104} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{105} } func (x *AutoOpsRuleCreatedEvent) GetFeatureId() string { @@ -7392,7 +7482,7 @@ type AutoOpsRuleStoppedEvent struct { func (x *AutoOpsRuleStoppedEvent) Reset() { *x = AutoOpsRuleStoppedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[105] + mi := &file_proto_event_domain_event_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7405,7 +7495,7 @@ func (x *AutoOpsRuleStoppedEvent) String() string { func (*AutoOpsRuleStoppedEvent) ProtoMessage() {} func (x *AutoOpsRuleStoppedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[105] + mi := &file_proto_event_domain_event_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7418,7 +7508,7 @@ func (x *AutoOpsRuleStoppedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AutoOpsRuleStoppedEvent.ProtoReflect.Descriptor instead. func (*AutoOpsRuleStoppedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{105} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{106} } type AutoOpsRuleDeletedEvent struct { @@ -7430,7 +7520,7 @@ type AutoOpsRuleDeletedEvent struct { func (x *AutoOpsRuleDeletedEvent) Reset() { *x = AutoOpsRuleDeletedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[106] + mi := &file_proto_event_domain_event_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7443,7 +7533,7 @@ func (x *AutoOpsRuleDeletedEvent) String() string { func (*AutoOpsRuleDeletedEvent) ProtoMessage() {} func (x *AutoOpsRuleDeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[106] + mi := &file_proto_event_domain_event_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7456,7 +7546,7 @@ func (x *AutoOpsRuleDeletedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AutoOpsRuleDeletedEvent.ProtoReflect.Descriptor instead. func (*AutoOpsRuleDeletedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{106} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{107} } type AutoOpsRuleOpsTypeChangedEvent struct { @@ -7470,7 +7560,7 @@ type AutoOpsRuleOpsTypeChangedEvent struct { func (x *AutoOpsRuleOpsTypeChangedEvent) Reset() { *x = AutoOpsRuleOpsTypeChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[107] + mi := &file_proto_event_domain_event_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7483,7 +7573,7 @@ func (x *AutoOpsRuleOpsTypeChangedEvent) String() string { func (*AutoOpsRuleOpsTypeChangedEvent) ProtoMessage() {} func (x *AutoOpsRuleOpsTypeChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[107] + mi := &file_proto_event_domain_event_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7496,7 +7586,7 @@ func (x *AutoOpsRuleOpsTypeChangedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AutoOpsRuleOpsTypeChangedEvent.ProtoReflect.Descriptor instead. func (*AutoOpsRuleOpsTypeChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{107} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{108} } func (x *AutoOpsRuleOpsTypeChangedEvent) GetOpsType() autoops.OpsType { @@ -7517,7 +7607,7 @@ type AutoOpsRuleTriggeredAtChangedEvent struct { func (x *AutoOpsRuleTriggeredAtChangedEvent) Reset() { *x = AutoOpsRuleTriggeredAtChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[108] + mi := &file_proto_event_domain_event_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7530,7 +7620,7 @@ func (x *AutoOpsRuleTriggeredAtChangedEvent) String() string { func (*AutoOpsRuleTriggeredAtChangedEvent) ProtoMessage() {} func (x *AutoOpsRuleTriggeredAtChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[108] + mi := &file_proto_event_domain_event_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7543,7 +7633,7 @@ func (x *AutoOpsRuleTriggeredAtChangedEvent) ProtoReflect() protoreflect.Message // Deprecated: Use AutoOpsRuleTriggeredAtChangedEvent.ProtoReflect.Descriptor instead. func (*AutoOpsRuleTriggeredAtChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{108} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{109} } type AutoOpsRuleOpsStatusChangedEvent struct { @@ -7557,7 +7647,7 @@ type AutoOpsRuleOpsStatusChangedEvent struct { func (x *AutoOpsRuleOpsStatusChangedEvent) Reset() { *x = AutoOpsRuleOpsStatusChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[109] + mi := &file_proto_event_domain_event_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7570,7 +7660,7 @@ func (x *AutoOpsRuleOpsStatusChangedEvent) String() string { func (*AutoOpsRuleOpsStatusChangedEvent) ProtoMessage() {} func (x *AutoOpsRuleOpsStatusChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[109] + mi := &file_proto_event_domain_event_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7583,7 +7673,7 @@ func (x *AutoOpsRuleOpsStatusChangedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AutoOpsRuleOpsStatusChangedEvent.ProtoReflect.Descriptor instead. func (*AutoOpsRuleOpsStatusChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{109} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{110} } func (x *AutoOpsRuleOpsStatusChangedEvent) GetOpsStatus() autoops.AutoOpsStatus { @@ -7605,7 +7695,7 @@ type OpsEventRateClauseAddedEvent struct { func (x *OpsEventRateClauseAddedEvent) Reset() { *x = OpsEventRateClauseAddedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[110] + mi := &file_proto_event_domain_event_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7618,7 +7708,7 @@ func (x *OpsEventRateClauseAddedEvent) String() string { func (*OpsEventRateClauseAddedEvent) ProtoMessage() {} func (x *OpsEventRateClauseAddedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[110] + mi := &file_proto_event_domain_event_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7631,7 +7721,7 @@ func (x *OpsEventRateClauseAddedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OpsEventRateClauseAddedEvent.ProtoReflect.Descriptor instead. func (*OpsEventRateClauseAddedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{110} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{111} } func (x *OpsEventRateClauseAddedEvent) GetClauseId() string { @@ -7660,7 +7750,7 @@ type OpsEventRateClauseChangedEvent struct { func (x *OpsEventRateClauseChangedEvent) Reset() { *x = OpsEventRateClauseChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[111] + mi := &file_proto_event_domain_event_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7673,7 +7763,7 @@ func (x *OpsEventRateClauseChangedEvent) String() string { func (*OpsEventRateClauseChangedEvent) ProtoMessage() {} func (x *OpsEventRateClauseChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[111] + mi := &file_proto_event_domain_event_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7686,7 +7776,7 @@ func (x *OpsEventRateClauseChangedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OpsEventRateClauseChangedEvent.ProtoReflect.Descriptor instead. func (*OpsEventRateClauseChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{111} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{112} } func (x *OpsEventRateClauseChangedEvent) GetClauseId() string { @@ -7714,7 +7804,7 @@ type AutoOpsRuleClauseDeletedEvent struct { func (x *AutoOpsRuleClauseDeletedEvent) Reset() { *x = AutoOpsRuleClauseDeletedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[112] + mi := &file_proto_event_domain_event_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7727,7 +7817,7 @@ func (x *AutoOpsRuleClauseDeletedEvent) String() string { func (*AutoOpsRuleClauseDeletedEvent) ProtoMessage() {} func (x *AutoOpsRuleClauseDeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[112] + mi := &file_proto_event_domain_event_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7740,7 +7830,7 @@ func (x *AutoOpsRuleClauseDeletedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AutoOpsRuleClauseDeletedEvent.ProtoReflect.Descriptor instead. func (*AutoOpsRuleClauseDeletedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{112} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{113} } func (x *AutoOpsRuleClauseDeletedEvent) GetClauseId() string { @@ -7762,7 +7852,7 @@ type DatetimeClauseAddedEvent struct { func (x *DatetimeClauseAddedEvent) Reset() { *x = DatetimeClauseAddedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[113] + mi := &file_proto_event_domain_event_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7775,7 +7865,7 @@ func (x *DatetimeClauseAddedEvent) String() string { func (*DatetimeClauseAddedEvent) ProtoMessage() {} func (x *DatetimeClauseAddedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[113] + mi := &file_proto_event_domain_event_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7788,7 +7878,7 @@ func (x *DatetimeClauseAddedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use DatetimeClauseAddedEvent.ProtoReflect.Descriptor instead. func (*DatetimeClauseAddedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{113} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{114} } func (x *DatetimeClauseAddedEvent) GetClauseId() string { @@ -7817,7 +7907,7 @@ type DatetimeClauseChangedEvent struct { func (x *DatetimeClauseChangedEvent) Reset() { *x = DatetimeClauseChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[114] + mi := &file_proto_event_domain_event_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7830,7 +7920,7 @@ func (x *DatetimeClauseChangedEvent) String() string { func (*DatetimeClauseChangedEvent) ProtoMessage() {} func (x *DatetimeClauseChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[114] + mi := &file_proto_event_domain_event_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7843,7 +7933,7 @@ func (x *DatetimeClauseChangedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use DatetimeClauseChangedEvent.ProtoReflect.Descriptor instead. func (*DatetimeClauseChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{114} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{115} } func (x *DatetimeClauseChangedEvent) GetClauseId() string { @@ -7873,7 +7963,7 @@ type PushCreatedEvent struct { func (x *PushCreatedEvent) Reset() { *x = PushCreatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[115] + mi := &file_proto_event_domain_event_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7886,7 +7976,7 @@ func (x *PushCreatedEvent) String() string { func (*PushCreatedEvent) ProtoMessage() {} func (x *PushCreatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[115] + mi := &file_proto_event_domain_event_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7899,7 +7989,7 @@ func (x *PushCreatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use PushCreatedEvent.ProtoReflect.Descriptor instead. func (*PushCreatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{115} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{116} } func (x *PushCreatedEvent) GetFcmServiceAccount() string { @@ -7932,7 +8022,7 @@ type PushDeletedEvent struct { func (x *PushDeletedEvent) Reset() { *x = PushDeletedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[116] + mi := &file_proto_event_domain_event_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7945,7 +8035,7 @@ func (x *PushDeletedEvent) String() string { func (*PushDeletedEvent) ProtoMessage() {} func (x *PushDeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[116] + mi := &file_proto_event_domain_event_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7958,7 +8048,7 @@ func (x *PushDeletedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use PushDeletedEvent.ProtoReflect.Descriptor instead. func (*PushDeletedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{116} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{117} } type PushTagsAddedEvent struct { @@ -7972,7 +8062,7 @@ type PushTagsAddedEvent struct { func (x *PushTagsAddedEvent) Reset() { *x = PushTagsAddedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[117] + mi := &file_proto_event_domain_event_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7985,7 +8075,7 @@ func (x *PushTagsAddedEvent) String() string { func (*PushTagsAddedEvent) ProtoMessage() {} func (x *PushTagsAddedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[117] + mi := &file_proto_event_domain_event_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7998,7 +8088,7 @@ func (x *PushTagsAddedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use PushTagsAddedEvent.ProtoReflect.Descriptor instead. func (*PushTagsAddedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{117} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{118} } func (x *PushTagsAddedEvent) GetTags() []string { @@ -8019,7 +8109,7 @@ type PushTagsDeletedEvent struct { func (x *PushTagsDeletedEvent) Reset() { *x = PushTagsDeletedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[118] + mi := &file_proto_event_domain_event_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8032,7 +8122,7 @@ func (x *PushTagsDeletedEvent) String() string { func (*PushTagsDeletedEvent) ProtoMessage() {} func (x *PushTagsDeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[118] + mi := &file_proto_event_domain_event_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8045,7 +8135,7 @@ func (x *PushTagsDeletedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use PushTagsDeletedEvent.ProtoReflect.Descriptor instead. func (*PushTagsDeletedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{118} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{119} } func (x *PushTagsDeletedEvent) GetTags() []string { @@ -8066,7 +8156,7 @@ type PushRenamedEvent struct { func (x *PushRenamedEvent) Reset() { *x = PushRenamedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[119] + mi := &file_proto_event_domain_event_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8079,7 +8169,7 @@ func (x *PushRenamedEvent) String() string { func (*PushRenamedEvent) ProtoMessage() {} func (x *PushRenamedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[119] + mi := &file_proto_event_domain_event_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8092,7 +8182,7 @@ func (x *PushRenamedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use PushRenamedEvent.ProtoReflect.Descriptor instead. func (*PushRenamedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{119} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{120} } func (x *PushRenamedEvent) GetName() string { @@ -8113,7 +8203,7 @@ type PushTagsUpdatedEvent struct { func (x *PushTagsUpdatedEvent) Reset() { *x = PushTagsUpdatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[120] + mi := &file_proto_event_domain_event_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8126,7 +8216,7 @@ func (x *PushTagsUpdatedEvent) String() string { func (*PushTagsUpdatedEvent) ProtoMessage() {} func (x *PushTagsUpdatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[120] + mi := &file_proto_event_domain_event_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8139,7 +8229,7 @@ func (x *PushTagsUpdatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use PushTagsUpdatedEvent.ProtoReflect.Descriptor instead. func (*PushTagsUpdatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{120} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{121} } func (x *PushTagsUpdatedEvent) GetTags() []string { @@ -8161,7 +8251,7 @@ type PushUpdatedEvent struct { func (x *PushUpdatedEvent) Reset() { *x = PushUpdatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[121] + mi := &file_proto_event_domain_event_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8174,7 +8264,7 @@ func (x *PushUpdatedEvent) String() string { func (*PushUpdatedEvent) ProtoMessage() {} func (x *PushUpdatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[121] + mi := &file_proto_event_domain_event_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8187,7 +8277,7 @@ func (x *PushUpdatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use PushUpdatedEvent.ProtoReflect.Descriptor instead. func (*PushUpdatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{121} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{122} } func (x *PushUpdatedEvent) GetName() *wrapperspb.StringValue { @@ -8218,7 +8308,7 @@ type SubscriptionCreatedEvent struct { func (x *SubscriptionCreatedEvent) Reset() { *x = SubscriptionCreatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[122] + mi := &file_proto_event_domain_event_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8231,7 +8321,7 @@ func (x *SubscriptionCreatedEvent) String() string { func (*SubscriptionCreatedEvent) ProtoMessage() {} func (x *SubscriptionCreatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[122] + mi := &file_proto_event_domain_event_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8244,7 +8334,7 @@ func (x *SubscriptionCreatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionCreatedEvent.ProtoReflect.Descriptor instead. func (*SubscriptionCreatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{122} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{123} } func (x *SubscriptionCreatedEvent) GetSourceTypes() []notification.Subscription_SourceType { @@ -8284,7 +8374,7 @@ type SubscriptionDeletedEvent struct { func (x *SubscriptionDeletedEvent) Reset() { *x = SubscriptionDeletedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[123] + mi := &file_proto_event_domain_event_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8297,7 +8387,7 @@ func (x *SubscriptionDeletedEvent) String() string { func (*SubscriptionDeletedEvent) ProtoMessage() {} func (x *SubscriptionDeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[123] + mi := &file_proto_event_domain_event_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8310,7 +8400,7 @@ func (x *SubscriptionDeletedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionDeletedEvent.ProtoReflect.Descriptor instead. func (*SubscriptionDeletedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{123} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{124} } type SubscriptionEnabledEvent struct { @@ -8322,7 +8412,7 @@ type SubscriptionEnabledEvent struct { func (x *SubscriptionEnabledEvent) Reset() { *x = SubscriptionEnabledEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[124] + mi := &file_proto_event_domain_event_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8335,7 +8425,7 @@ func (x *SubscriptionEnabledEvent) String() string { func (*SubscriptionEnabledEvent) ProtoMessage() {} func (x *SubscriptionEnabledEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[124] + mi := &file_proto_event_domain_event_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8348,7 +8438,7 @@ func (x *SubscriptionEnabledEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionEnabledEvent.ProtoReflect.Descriptor instead. func (*SubscriptionEnabledEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{124} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{125} } type SubscriptionDisabledEvent struct { @@ -8360,7 +8450,7 @@ type SubscriptionDisabledEvent struct { func (x *SubscriptionDisabledEvent) Reset() { *x = SubscriptionDisabledEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[125] + mi := &file_proto_event_domain_event_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8373,7 +8463,7 @@ func (x *SubscriptionDisabledEvent) String() string { func (*SubscriptionDisabledEvent) ProtoMessage() {} func (x *SubscriptionDisabledEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[125] + mi := &file_proto_event_domain_event_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8386,7 +8476,7 @@ func (x *SubscriptionDisabledEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionDisabledEvent.ProtoReflect.Descriptor instead. func (*SubscriptionDisabledEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{125} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{126} } type SubscriptionSourceTypesAddedEvent struct { @@ -8400,7 +8490,7 @@ type SubscriptionSourceTypesAddedEvent struct { func (x *SubscriptionSourceTypesAddedEvent) Reset() { *x = SubscriptionSourceTypesAddedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[126] + mi := &file_proto_event_domain_event_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8413,7 +8503,7 @@ func (x *SubscriptionSourceTypesAddedEvent) String() string { func (*SubscriptionSourceTypesAddedEvent) ProtoMessage() {} func (x *SubscriptionSourceTypesAddedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[126] + mi := &file_proto_event_domain_event_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8426,7 +8516,7 @@ func (x *SubscriptionSourceTypesAddedEvent) ProtoReflect() protoreflect.Message // Deprecated: Use SubscriptionSourceTypesAddedEvent.ProtoReflect.Descriptor instead. func (*SubscriptionSourceTypesAddedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{126} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{127} } func (x *SubscriptionSourceTypesAddedEvent) GetSourceTypes() []notification.Subscription_SourceType { @@ -8447,7 +8537,7 @@ type SubscriptionSourceTypesDeletedEvent struct { func (x *SubscriptionSourceTypesDeletedEvent) Reset() { *x = SubscriptionSourceTypesDeletedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[127] + mi := &file_proto_event_domain_event_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8460,7 +8550,7 @@ func (x *SubscriptionSourceTypesDeletedEvent) String() string { func (*SubscriptionSourceTypesDeletedEvent) ProtoMessage() {} func (x *SubscriptionSourceTypesDeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[127] + mi := &file_proto_event_domain_event_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8473,7 +8563,7 @@ func (x *SubscriptionSourceTypesDeletedEvent) ProtoReflect() protoreflect.Messag // Deprecated: Use SubscriptionSourceTypesDeletedEvent.ProtoReflect.Descriptor instead. func (*SubscriptionSourceTypesDeletedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{127} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{128} } func (x *SubscriptionSourceTypesDeletedEvent) GetSourceTypes() []notification.Subscription_SourceType { @@ -8494,7 +8584,7 @@ type SubscriptionRenamedEvent struct { func (x *SubscriptionRenamedEvent) Reset() { *x = SubscriptionRenamedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[128] + mi := &file_proto_event_domain_event_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8507,7 +8597,7 @@ func (x *SubscriptionRenamedEvent) String() string { func (*SubscriptionRenamedEvent) ProtoMessage() {} func (x *SubscriptionRenamedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[128] + mi := &file_proto_event_domain_event_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8520,7 +8610,7 @@ func (x *SubscriptionRenamedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionRenamedEvent.ProtoReflect.Descriptor instead. func (*SubscriptionRenamedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{128} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{129} } func (x *SubscriptionRenamedEvent) GetName() string { @@ -8541,7 +8631,7 @@ type SubscriptionFeatureFlagTagsUpdatedEvent struct { func (x *SubscriptionFeatureFlagTagsUpdatedEvent) Reset() { *x = SubscriptionFeatureFlagTagsUpdatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[129] + mi := &file_proto_event_domain_event_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8554,7 +8644,7 @@ func (x *SubscriptionFeatureFlagTagsUpdatedEvent) String() string { func (*SubscriptionFeatureFlagTagsUpdatedEvent) ProtoMessage() {} func (x *SubscriptionFeatureFlagTagsUpdatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[129] + mi := &file_proto_event_domain_event_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8567,7 +8657,7 @@ func (x *SubscriptionFeatureFlagTagsUpdatedEvent) ProtoReflect() protoreflect.Me // Deprecated: Use SubscriptionFeatureFlagTagsUpdatedEvent.ProtoReflect.Descriptor instead. func (*SubscriptionFeatureFlagTagsUpdatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{129} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{130} } func (x *SubscriptionFeatureFlagTagsUpdatedEvent) GetFeatureFlagTags() []string { @@ -8592,7 +8682,7 @@ type SubscriptionUpdatedEvent struct { func (x *SubscriptionUpdatedEvent) Reset() { *x = SubscriptionUpdatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[130] + mi := &file_proto_event_domain_event_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8605,7 +8695,7 @@ func (x *SubscriptionUpdatedEvent) String() string { func (*SubscriptionUpdatedEvent) ProtoMessage() {} func (x *SubscriptionUpdatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[130] + mi := &file_proto_event_domain_event_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8618,7 +8708,7 @@ func (x *SubscriptionUpdatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionUpdatedEvent.ProtoReflect.Descriptor instead. func (*SubscriptionUpdatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{130} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{131} } func (x *SubscriptionUpdatedEvent) GetId() string { @@ -8669,7 +8759,7 @@ type AdminSubscriptionCreatedEvent struct { func (x *AdminSubscriptionCreatedEvent) Reset() { *x = AdminSubscriptionCreatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[131] + mi := &file_proto_event_domain_event_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8682,7 +8772,7 @@ func (x *AdminSubscriptionCreatedEvent) String() string { func (*AdminSubscriptionCreatedEvent) ProtoMessage() {} func (x *AdminSubscriptionCreatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[131] + mi := &file_proto_event_domain_event_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8695,7 +8785,7 @@ func (x *AdminSubscriptionCreatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AdminSubscriptionCreatedEvent.ProtoReflect.Descriptor instead. func (*AdminSubscriptionCreatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{131} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{132} } func (x *AdminSubscriptionCreatedEvent) GetSourceTypes() []notification.Subscription_SourceType { @@ -8728,7 +8818,7 @@ type AdminSubscriptionDeletedEvent struct { func (x *AdminSubscriptionDeletedEvent) Reset() { *x = AdminSubscriptionDeletedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[132] + mi := &file_proto_event_domain_event_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8741,7 +8831,7 @@ func (x *AdminSubscriptionDeletedEvent) String() string { func (*AdminSubscriptionDeletedEvent) ProtoMessage() {} func (x *AdminSubscriptionDeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[132] + mi := &file_proto_event_domain_event_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8754,7 +8844,7 @@ func (x *AdminSubscriptionDeletedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AdminSubscriptionDeletedEvent.ProtoReflect.Descriptor instead. func (*AdminSubscriptionDeletedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{132} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{133} } type AdminSubscriptionEnabledEvent struct { @@ -8766,7 +8856,7 @@ type AdminSubscriptionEnabledEvent struct { func (x *AdminSubscriptionEnabledEvent) Reset() { *x = AdminSubscriptionEnabledEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[133] + mi := &file_proto_event_domain_event_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8779,7 +8869,7 @@ func (x *AdminSubscriptionEnabledEvent) String() string { func (*AdminSubscriptionEnabledEvent) ProtoMessage() {} func (x *AdminSubscriptionEnabledEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[133] + mi := &file_proto_event_domain_event_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8792,7 +8882,7 @@ func (x *AdminSubscriptionEnabledEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AdminSubscriptionEnabledEvent.ProtoReflect.Descriptor instead. func (*AdminSubscriptionEnabledEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{133} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{134} } type AdminSubscriptionDisabledEvent struct { @@ -8804,7 +8894,7 @@ type AdminSubscriptionDisabledEvent struct { func (x *AdminSubscriptionDisabledEvent) Reset() { *x = AdminSubscriptionDisabledEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[134] + mi := &file_proto_event_domain_event_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8817,7 +8907,7 @@ func (x *AdminSubscriptionDisabledEvent) String() string { func (*AdminSubscriptionDisabledEvent) ProtoMessage() {} func (x *AdminSubscriptionDisabledEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[134] + mi := &file_proto_event_domain_event_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8830,7 +8920,7 @@ func (x *AdminSubscriptionDisabledEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AdminSubscriptionDisabledEvent.ProtoReflect.Descriptor instead. func (*AdminSubscriptionDisabledEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{134} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{135} } type AdminSubscriptionSourceTypesAddedEvent struct { @@ -8844,7 +8934,7 @@ type AdminSubscriptionSourceTypesAddedEvent struct { func (x *AdminSubscriptionSourceTypesAddedEvent) Reset() { *x = AdminSubscriptionSourceTypesAddedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[135] + mi := &file_proto_event_domain_event_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8857,7 +8947,7 @@ func (x *AdminSubscriptionSourceTypesAddedEvent) String() string { func (*AdminSubscriptionSourceTypesAddedEvent) ProtoMessage() {} func (x *AdminSubscriptionSourceTypesAddedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[135] + mi := &file_proto_event_domain_event_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8870,7 +8960,7 @@ func (x *AdminSubscriptionSourceTypesAddedEvent) ProtoReflect() protoreflect.Mes // Deprecated: Use AdminSubscriptionSourceTypesAddedEvent.ProtoReflect.Descriptor instead. func (*AdminSubscriptionSourceTypesAddedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{135} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{136} } func (x *AdminSubscriptionSourceTypesAddedEvent) GetSourceTypes() []notification.Subscription_SourceType { @@ -8891,7 +8981,7 @@ type AdminSubscriptionSourceTypesDeletedEvent struct { func (x *AdminSubscriptionSourceTypesDeletedEvent) Reset() { *x = AdminSubscriptionSourceTypesDeletedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[136] + mi := &file_proto_event_domain_event_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8904,7 +8994,7 @@ func (x *AdminSubscriptionSourceTypesDeletedEvent) String() string { func (*AdminSubscriptionSourceTypesDeletedEvent) ProtoMessage() {} func (x *AdminSubscriptionSourceTypesDeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[136] + mi := &file_proto_event_domain_event_proto_msgTypes[137] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8917,7 +9007,7 @@ func (x *AdminSubscriptionSourceTypesDeletedEvent) ProtoReflect() protoreflect.M // Deprecated: Use AdminSubscriptionSourceTypesDeletedEvent.ProtoReflect.Descriptor instead. func (*AdminSubscriptionSourceTypesDeletedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{136} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{137} } func (x *AdminSubscriptionSourceTypesDeletedEvent) GetSourceTypes() []notification.Subscription_SourceType { @@ -8938,7 +9028,7 @@ type AdminSubscriptionRenamedEvent struct { func (x *AdminSubscriptionRenamedEvent) Reset() { *x = AdminSubscriptionRenamedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[137] + mi := &file_proto_event_domain_event_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8951,7 +9041,7 @@ func (x *AdminSubscriptionRenamedEvent) String() string { func (*AdminSubscriptionRenamedEvent) ProtoMessage() {} func (x *AdminSubscriptionRenamedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[137] + mi := &file_proto_event_domain_event_proto_msgTypes[138] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8964,7 +9054,7 @@ func (x *AdminSubscriptionRenamedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AdminSubscriptionRenamedEvent.ProtoReflect.Descriptor instead. func (*AdminSubscriptionRenamedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{137} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{138} } func (x *AdminSubscriptionRenamedEvent) GetName() string { @@ -8993,7 +9083,7 @@ type ProjectCreatedEvent struct { func (x *ProjectCreatedEvent) Reset() { *x = ProjectCreatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[138] + mi := &file_proto_event_domain_event_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9006,7 +9096,7 @@ func (x *ProjectCreatedEvent) String() string { func (*ProjectCreatedEvent) ProtoMessage() {} func (x *ProjectCreatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[138] + mi := &file_proto_event_domain_event_proto_msgTypes[139] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9019,7 +9109,7 @@ func (x *ProjectCreatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectCreatedEvent.ProtoReflect.Descriptor instead. func (*ProjectCreatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{138} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{139} } func (x *ProjectCreatedEvent) GetId() string { @@ -9097,7 +9187,7 @@ type ProjectDescriptionChangedEvent struct { func (x *ProjectDescriptionChangedEvent) Reset() { *x = ProjectDescriptionChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[139] + mi := &file_proto_event_domain_event_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9110,7 +9200,7 @@ func (x *ProjectDescriptionChangedEvent) String() string { func (*ProjectDescriptionChangedEvent) ProtoMessage() {} func (x *ProjectDescriptionChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[139] + mi := &file_proto_event_domain_event_proto_msgTypes[140] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9123,7 +9213,7 @@ func (x *ProjectDescriptionChangedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectDescriptionChangedEvent.ProtoReflect.Descriptor instead. func (*ProjectDescriptionChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{139} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{140} } func (x *ProjectDescriptionChangedEvent) GetId() string { @@ -9152,7 +9242,7 @@ type ProjectRenamedEvent struct { func (x *ProjectRenamedEvent) Reset() { *x = ProjectRenamedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[140] + mi := &file_proto_event_domain_event_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9165,7 +9255,7 @@ func (x *ProjectRenamedEvent) String() string { func (*ProjectRenamedEvent) ProtoMessage() {} func (x *ProjectRenamedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[140] + mi := &file_proto_event_domain_event_proto_msgTypes[141] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9178,7 +9268,7 @@ func (x *ProjectRenamedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectRenamedEvent.ProtoReflect.Descriptor instead. func (*ProjectRenamedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{140} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{141} } func (x *ProjectRenamedEvent) GetId() string { @@ -9206,7 +9296,7 @@ type ProjectEnabledEvent struct { func (x *ProjectEnabledEvent) Reset() { *x = ProjectEnabledEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[141] + mi := &file_proto_event_domain_event_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9219,7 +9309,7 @@ func (x *ProjectEnabledEvent) String() string { func (*ProjectEnabledEvent) ProtoMessage() {} func (x *ProjectEnabledEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[141] + mi := &file_proto_event_domain_event_proto_msgTypes[142] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9232,7 +9322,7 @@ func (x *ProjectEnabledEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectEnabledEvent.ProtoReflect.Descriptor instead. func (*ProjectEnabledEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{141} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{142} } func (x *ProjectEnabledEvent) GetId() string { @@ -9253,7 +9343,7 @@ type ProjectDisabledEvent struct { func (x *ProjectDisabledEvent) Reset() { *x = ProjectDisabledEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[142] + mi := &file_proto_event_domain_event_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9266,7 +9356,7 @@ func (x *ProjectDisabledEvent) String() string { func (*ProjectDisabledEvent) ProtoMessage() {} func (x *ProjectDisabledEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[142] + mi := &file_proto_event_domain_event_proto_msgTypes[143] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9279,7 +9369,7 @@ func (x *ProjectDisabledEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectDisabledEvent.ProtoReflect.Descriptor instead. func (*ProjectDisabledEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{142} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{143} } func (x *ProjectDisabledEvent) GetId() string { @@ -9308,7 +9398,7 @@ type ProjectTrialCreatedEvent struct { func (x *ProjectTrialCreatedEvent) Reset() { *x = ProjectTrialCreatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[143] + mi := &file_proto_event_domain_event_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9321,7 +9411,7 @@ func (x *ProjectTrialCreatedEvent) String() string { func (*ProjectTrialCreatedEvent) ProtoMessage() {} func (x *ProjectTrialCreatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[143] + mi := &file_proto_event_domain_event_proto_msgTypes[144] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9334,7 +9424,7 @@ func (x *ProjectTrialCreatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectTrialCreatedEvent.ProtoReflect.Descriptor instead. func (*ProjectTrialCreatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{143} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{144} } func (x *ProjectTrialCreatedEvent) GetId() string { @@ -9411,7 +9501,7 @@ type ProjectTrialConvertedEvent struct { func (x *ProjectTrialConvertedEvent) Reset() { *x = ProjectTrialConvertedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[144] + mi := &file_proto_event_domain_event_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9424,7 +9514,7 @@ func (x *ProjectTrialConvertedEvent) String() string { func (*ProjectTrialConvertedEvent) ProtoMessage() {} func (x *ProjectTrialConvertedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[144] + mi := &file_proto_event_domain_event_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9437,7 +9527,7 @@ func (x *ProjectTrialConvertedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use ProjectTrialConvertedEvent.ProtoReflect.Descriptor instead. func (*ProjectTrialConvertedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{144} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{145} } func (x *ProjectTrialConvertedEvent) GetId() string { @@ -9458,7 +9548,7 @@ type PrerequisiteAddedEvent struct { func (x *PrerequisiteAddedEvent) Reset() { *x = PrerequisiteAddedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[145] + mi := &file_proto_event_domain_event_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9471,7 +9561,7 @@ func (x *PrerequisiteAddedEvent) String() string { func (*PrerequisiteAddedEvent) ProtoMessage() {} func (x *PrerequisiteAddedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[145] + mi := &file_proto_event_domain_event_proto_msgTypes[146] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9484,7 +9574,7 @@ func (x *PrerequisiteAddedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use PrerequisiteAddedEvent.ProtoReflect.Descriptor instead. func (*PrerequisiteAddedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{145} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{146} } func (x *PrerequisiteAddedEvent) GetPrerequisite() *feature.Prerequisite { @@ -9505,7 +9595,7 @@ type PrerequisiteVariationChangedEvent struct { func (x *PrerequisiteVariationChangedEvent) Reset() { *x = PrerequisiteVariationChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[146] + mi := &file_proto_event_domain_event_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9518,7 +9608,7 @@ func (x *PrerequisiteVariationChangedEvent) String() string { func (*PrerequisiteVariationChangedEvent) ProtoMessage() {} func (x *PrerequisiteVariationChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[146] + mi := &file_proto_event_domain_event_proto_msgTypes[147] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9531,7 +9621,7 @@ func (x *PrerequisiteVariationChangedEvent) ProtoReflect() protoreflect.Message // Deprecated: Use PrerequisiteVariationChangedEvent.ProtoReflect.Descriptor instead. func (*PrerequisiteVariationChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{146} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{147} } func (x *PrerequisiteVariationChangedEvent) GetPrerequisite() *feature.Prerequisite { @@ -9552,7 +9642,7 @@ type PrerequisiteRemovedEvent struct { func (x *PrerequisiteRemovedEvent) Reset() { *x = PrerequisiteRemovedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[147] + mi := &file_proto_event_domain_event_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9565,7 +9655,7 @@ func (x *PrerequisiteRemovedEvent) String() string { func (*PrerequisiteRemovedEvent) ProtoMessage() {} func (x *PrerequisiteRemovedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[147] + mi := &file_proto_event_domain_event_proto_msgTypes[148] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9578,7 +9668,7 @@ func (x *PrerequisiteRemovedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use PrerequisiteRemovedEvent.ProtoReflect.Descriptor instead. func (*PrerequisiteRemovedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{147} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{148} } func (x *PrerequisiteRemovedEvent) GetFeatureId() string { @@ -9604,7 +9694,7 @@ type ProgressiveRolloutCreatedEvent struct { func (x *ProgressiveRolloutCreatedEvent) Reset() { *x = ProgressiveRolloutCreatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[148] + mi := &file_proto_event_domain_event_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9617,7 +9707,7 @@ func (x *ProgressiveRolloutCreatedEvent) String() string { func (*ProgressiveRolloutCreatedEvent) ProtoMessage() {} func (x *ProgressiveRolloutCreatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[148] + mi := &file_proto_event_domain_event_proto_msgTypes[149] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9630,7 +9720,7 @@ func (x *ProgressiveRolloutCreatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use ProgressiveRolloutCreatedEvent.ProtoReflect.Descriptor instead. func (*ProgressiveRolloutCreatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{148} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{149} } func (x *ProgressiveRolloutCreatedEvent) GetId() string { @@ -9689,7 +9779,7 @@ type ProgressiveRolloutStoppedEvent struct { func (x *ProgressiveRolloutStoppedEvent) Reset() { *x = ProgressiveRolloutStoppedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[149] + mi := &file_proto_event_domain_event_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9702,7 +9792,7 @@ func (x *ProgressiveRolloutStoppedEvent) String() string { func (*ProgressiveRolloutStoppedEvent) ProtoMessage() {} func (x *ProgressiveRolloutStoppedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[149] + mi := &file_proto_event_domain_event_proto_msgTypes[150] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9715,7 +9805,7 @@ func (x *ProgressiveRolloutStoppedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use ProgressiveRolloutStoppedEvent.ProtoReflect.Descriptor instead. func (*ProgressiveRolloutStoppedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{149} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{150} } func (x *ProgressiveRolloutStoppedEvent) GetId() string { @@ -9757,7 +9847,7 @@ type ProgressiveRolloutDeletedEvent struct { func (x *ProgressiveRolloutDeletedEvent) Reset() { *x = ProgressiveRolloutDeletedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[150] + mi := &file_proto_event_domain_event_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9770,7 +9860,7 @@ func (x *ProgressiveRolloutDeletedEvent) String() string { func (*ProgressiveRolloutDeletedEvent) ProtoMessage() {} func (x *ProgressiveRolloutDeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[150] + mi := &file_proto_event_domain_event_proto_msgTypes[151] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9783,7 +9873,7 @@ func (x *ProgressiveRolloutDeletedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use ProgressiveRolloutDeletedEvent.ProtoReflect.Descriptor instead. func (*ProgressiveRolloutDeletedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{150} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{151} } func (x *ProgressiveRolloutDeletedEvent) GetId() string { @@ -9804,7 +9894,7 @@ type ProgressiveRolloutScheduleTriggeredAtChangedEvent struct { func (x *ProgressiveRolloutScheduleTriggeredAtChangedEvent) Reset() { *x = ProgressiveRolloutScheduleTriggeredAtChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[151] + mi := &file_proto_event_domain_event_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9817,7 +9907,7 @@ func (x *ProgressiveRolloutScheduleTriggeredAtChangedEvent) String() string { func (*ProgressiveRolloutScheduleTriggeredAtChangedEvent) ProtoMessage() {} func (x *ProgressiveRolloutScheduleTriggeredAtChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[151] + mi := &file_proto_event_domain_event_proto_msgTypes[152] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9830,7 +9920,7 @@ func (x *ProgressiveRolloutScheduleTriggeredAtChangedEvent) ProtoReflect() proto // Deprecated: Use ProgressiveRolloutScheduleTriggeredAtChangedEvent.ProtoReflect.Descriptor instead. func (*ProgressiveRolloutScheduleTriggeredAtChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{151} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{152} } func (x *ProgressiveRolloutScheduleTriggeredAtChangedEvent) GetScheduleId() string { @@ -9860,7 +9950,7 @@ type OrganizationCreatedEvent struct { func (x *OrganizationCreatedEvent) Reset() { *x = OrganizationCreatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[152] + mi := &file_proto_event_domain_event_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9873,7 +9963,7 @@ func (x *OrganizationCreatedEvent) String() string { func (*OrganizationCreatedEvent) ProtoMessage() {} func (x *OrganizationCreatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[152] + mi := &file_proto_event_domain_event_proto_msgTypes[153] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9886,7 +9976,7 @@ func (x *OrganizationCreatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OrganizationCreatedEvent.ProtoReflect.Descriptor instead. func (*OrganizationCreatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{152} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{153} } func (x *OrganizationCreatedEvent) GetId() string { @@ -9971,7 +10061,7 @@ type OrganizationDescriptionChangedEvent struct { func (x *OrganizationDescriptionChangedEvent) Reset() { *x = OrganizationDescriptionChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[153] + mi := &file_proto_event_domain_event_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9984,7 +10074,7 @@ func (x *OrganizationDescriptionChangedEvent) String() string { func (*OrganizationDescriptionChangedEvent) ProtoMessage() {} func (x *OrganizationDescriptionChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[153] + mi := &file_proto_event_domain_event_proto_msgTypes[154] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9997,7 +10087,7 @@ func (x *OrganizationDescriptionChangedEvent) ProtoReflect() protoreflect.Messag // Deprecated: Use OrganizationDescriptionChangedEvent.ProtoReflect.Descriptor instead. func (*OrganizationDescriptionChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{153} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{154} } func (x *OrganizationDescriptionChangedEvent) GetId() string { @@ -10026,7 +10116,7 @@ type OrganizationOwnerEmailChangedEvent struct { func (x *OrganizationOwnerEmailChangedEvent) Reset() { *x = OrganizationOwnerEmailChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[154] + mi := &file_proto_event_domain_event_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10039,7 +10129,7 @@ func (x *OrganizationOwnerEmailChangedEvent) String() string { func (*OrganizationOwnerEmailChangedEvent) ProtoMessage() {} func (x *OrganizationOwnerEmailChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[154] + mi := &file_proto_event_domain_event_proto_msgTypes[155] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10052,7 +10142,7 @@ func (x *OrganizationOwnerEmailChangedEvent) ProtoReflect() protoreflect.Message // Deprecated: Use OrganizationOwnerEmailChangedEvent.ProtoReflect.Descriptor instead. func (*OrganizationOwnerEmailChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{154} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{155} } func (x *OrganizationOwnerEmailChangedEvent) GetId() string { @@ -10081,7 +10171,7 @@ type OrganizationNameChangedEvent struct { func (x *OrganizationNameChangedEvent) Reset() { *x = OrganizationNameChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[155] + mi := &file_proto_event_domain_event_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10094,7 +10184,7 @@ func (x *OrganizationNameChangedEvent) String() string { func (*OrganizationNameChangedEvent) ProtoMessage() {} func (x *OrganizationNameChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[155] + mi := &file_proto_event_domain_event_proto_msgTypes[156] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10107,7 +10197,7 @@ func (x *OrganizationNameChangedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OrganizationNameChangedEvent.ProtoReflect.Descriptor instead. func (*OrganizationNameChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{155} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{156} } func (x *OrganizationNameChangedEvent) GetId() string { @@ -10135,7 +10225,7 @@ type OrganizationEnabledEvent struct { func (x *OrganizationEnabledEvent) Reset() { *x = OrganizationEnabledEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[156] + mi := &file_proto_event_domain_event_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10148,7 +10238,7 @@ func (x *OrganizationEnabledEvent) String() string { func (*OrganizationEnabledEvent) ProtoMessage() {} func (x *OrganizationEnabledEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[156] + mi := &file_proto_event_domain_event_proto_msgTypes[157] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10161,7 +10251,7 @@ func (x *OrganizationEnabledEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OrganizationEnabledEvent.ProtoReflect.Descriptor instead. func (*OrganizationEnabledEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{156} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{157} } func (x *OrganizationEnabledEvent) GetId() string { @@ -10182,7 +10272,7 @@ type OrganizationDisabledEvent struct { func (x *OrganizationDisabledEvent) Reset() { *x = OrganizationDisabledEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[157] + mi := &file_proto_event_domain_event_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10195,7 +10285,7 @@ func (x *OrganizationDisabledEvent) String() string { func (*OrganizationDisabledEvent) ProtoMessage() {} func (x *OrganizationDisabledEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[157] + mi := &file_proto_event_domain_event_proto_msgTypes[158] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10208,7 +10298,7 @@ func (x *OrganizationDisabledEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OrganizationDisabledEvent.ProtoReflect.Descriptor instead. func (*OrganizationDisabledEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{157} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{158} } func (x *OrganizationDisabledEvent) GetId() string { @@ -10229,7 +10319,7 @@ type OrganizationArchivedEvent struct { func (x *OrganizationArchivedEvent) Reset() { *x = OrganizationArchivedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[158] + mi := &file_proto_event_domain_event_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10242,7 +10332,7 @@ func (x *OrganizationArchivedEvent) String() string { func (*OrganizationArchivedEvent) ProtoMessage() {} func (x *OrganizationArchivedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[158] + mi := &file_proto_event_domain_event_proto_msgTypes[159] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10255,7 +10345,7 @@ func (x *OrganizationArchivedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OrganizationArchivedEvent.ProtoReflect.Descriptor instead. func (*OrganizationArchivedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{158} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{159} } func (x *OrganizationArchivedEvent) GetId() string { @@ -10276,7 +10366,7 @@ type OrganizationUnarchivedEvent struct { func (x *OrganizationUnarchivedEvent) Reset() { *x = OrganizationUnarchivedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[159] + mi := &file_proto_event_domain_event_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10289,7 +10379,7 @@ func (x *OrganizationUnarchivedEvent) String() string { func (*OrganizationUnarchivedEvent) ProtoMessage() {} func (x *OrganizationUnarchivedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[159] + mi := &file_proto_event_domain_event_proto_msgTypes[160] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10302,7 +10392,7 @@ func (x *OrganizationUnarchivedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OrganizationUnarchivedEvent.ProtoReflect.Descriptor instead. func (*OrganizationUnarchivedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{159} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{160} } func (x *OrganizationUnarchivedEvent) GetId() string { @@ -10323,7 +10413,7 @@ type OrganizationTrialConvertedEvent struct { func (x *OrganizationTrialConvertedEvent) Reset() { *x = OrganizationTrialConvertedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[160] + mi := &file_proto_event_domain_event_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10336,7 +10426,7 @@ func (x *OrganizationTrialConvertedEvent) String() string { func (*OrganizationTrialConvertedEvent) ProtoMessage() {} func (x *OrganizationTrialConvertedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[160] + mi := &file_proto_event_domain_event_proto_msgTypes[161] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10349,7 +10439,7 @@ func (x *OrganizationTrialConvertedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use OrganizationTrialConvertedEvent.ProtoReflect.Descriptor instead. func (*OrganizationTrialConvertedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{160} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{161} } func (x *OrganizationTrialConvertedEvent) GetId() string { @@ -10378,7 +10468,7 @@ type FlagTriggerCreatedEvent struct { func (x *FlagTriggerCreatedEvent) Reset() { *x = FlagTriggerCreatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[161] + mi := &file_proto_event_domain_event_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10391,7 +10481,7 @@ func (x *FlagTriggerCreatedEvent) String() string { func (*FlagTriggerCreatedEvent) ProtoMessage() {} func (x *FlagTriggerCreatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[161] + mi := &file_proto_event_domain_event_proto_msgTypes[162] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10404,7 +10494,7 @@ func (x *FlagTriggerCreatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use FlagTriggerCreatedEvent.ProtoReflect.Descriptor instead. func (*FlagTriggerCreatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{161} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{162} } func (x *FlagTriggerCreatedEvent) GetId() string { @@ -10484,7 +10574,7 @@ type FlagTriggerResetEvent struct { func (x *FlagTriggerResetEvent) Reset() { *x = FlagTriggerResetEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[162] + mi := &file_proto_event_domain_event_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10497,7 +10587,7 @@ func (x *FlagTriggerResetEvent) String() string { func (*FlagTriggerResetEvent) ProtoMessage() {} func (x *FlagTriggerResetEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[162] + mi := &file_proto_event_domain_event_proto_msgTypes[163] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10510,7 +10600,7 @@ func (x *FlagTriggerResetEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use FlagTriggerResetEvent.ProtoReflect.Descriptor instead. func (*FlagTriggerResetEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{162} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{163} } func (x *FlagTriggerResetEvent) GetId() string { @@ -10555,7 +10645,7 @@ type FlagTriggerDescriptionChangedEvent struct { func (x *FlagTriggerDescriptionChangedEvent) Reset() { *x = FlagTriggerDescriptionChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[163] + mi := &file_proto_event_domain_event_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10568,7 +10658,7 @@ func (x *FlagTriggerDescriptionChangedEvent) String() string { func (*FlagTriggerDescriptionChangedEvent) ProtoMessage() {} func (x *FlagTriggerDescriptionChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[163] + mi := &file_proto_event_domain_event_proto_msgTypes[164] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10581,7 +10671,7 @@ func (x *FlagTriggerDescriptionChangedEvent) ProtoReflect() protoreflect.Message // Deprecated: Use FlagTriggerDescriptionChangedEvent.ProtoReflect.Descriptor instead. func (*FlagTriggerDescriptionChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{163} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{164} } func (x *FlagTriggerDescriptionChangedEvent) GetId() string { @@ -10625,7 +10715,7 @@ type FlagTriggerDisabledEvent struct { func (x *FlagTriggerDisabledEvent) Reset() { *x = FlagTriggerDisabledEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[164] + mi := &file_proto_event_domain_event_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10638,7 +10728,7 @@ func (x *FlagTriggerDisabledEvent) String() string { func (*FlagTriggerDisabledEvent) ProtoMessage() {} func (x *FlagTriggerDisabledEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[164] + mi := &file_proto_event_domain_event_proto_msgTypes[165] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10651,7 +10741,7 @@ func (x *FlagTriggerDisabledEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use FlagTriggerDisabledEvent.ProtoReflect.Descriptor instead. func (*FlagTriggerDisabledEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{164} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{165} } func (x *FlagTriggerDisabledEvent) GetId() string { @@ -10688,7 +10778,7 @@ type FlagTriggerEnabledEvent struct { func (x *FlagTriggerEnabledEvent) Reset() { *x = FlagTriggerEnabledEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[165] + mi := &file_proto_event_domain_event_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10701,7 +10791,7 @@ func (x *FlagTriggerEnabledEvent) String() string { func (*FlagTriggerEnabledEvent) ProtoMessage() {} func (x *FlagTriggerEnabledEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[165] + mi := &file_proto_event_domain_event_proto_msgTypes[166] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10714,7 +10804,7 @@ func (x *FlagTriggerEnabledEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use FlagTriggerEnabledEvent.ProtoReflect.Descriptor instead. func (*FlagTriggerEnabledEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{165} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{166} } func (x *FlagTriggerEnabledEvent) GetId() string { @@ -10751,7 +10841,7 @@ type FlagTriggerDeletedEvent struct { func (x *FlagTriggerDeletedEvent) Reset() { *x = FlagTriggerDeletedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[166] + mi := &file_proto_event_domain_event_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10764,7 +10854,7 @@ func (x *FlagTriggerDeletedEvent) String() string { func (*FlagTriggerDeletedEvent) ProtoMessage() {} func (x *FlagTriggerDeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[166] + mi := &file_proto_event_domain_event_proto_msgTypes[167] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10777,7 +10867,7 @@ func (x *FlagTriggerDeletedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use FlagTriggerDeletedEvent.ProtoReflect.Descriptor instead. func (*FlagTriggerDeletedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{166} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{167} } func (x *FlagTriggerDeletedEvent) GetId() string { @@ -10816,7 +10906,7 @@ type FlagTriggerUsageUpdatedEvent struct { func (x *FlagTriggerUsageUpdatedEvent) Reset() { *x = FlagTriggerUsageUpdatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[167] + mi := &file_proto_event_domain_event_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10829,7 +10919,7 @@ func (x *FlagTriggerUsageUpdatedEvent) String() string { func (*FlagTriggerUsageUpdatedEvent) ProtoMessage() {} func (x *FlagTriggerUsageUpdatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[167] + mi := &file_proto_event_domain_event_proto_msgTypes[168] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10842,7 +10932,7 @@ func (x *FlagTriggerUsageUpdatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use FlagTriggerUsageUpdatedEvent.ProtoReflect.Descriptor instead. func (*FlagTriggerUsageUpdatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{167} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{168} } func (x *FlagTriggerUsageUpdatedEvent) GetId() string { @@ -10892,7 +10982,7 @@ type AccountV2FirstNameChangedEvent struct { func (x *AccountV2FirstNameChangedEvent) Reset() { *x = AccountV2FirstNameChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[168] + mi := &file_proto_event_domain_event_proto_msgTypes[169] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10905,7 +10995,7 @@ func (x *AccountV2FirstNameChangedEvent) String() string { func (*AccountV2FirstNameChangedEvent) ProtoMessage() {} func (x *AccountV2FirstNameChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[168] + mi := &file_proto_event_domain_event_proto_msgTypes[169] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10918,7 +11008,7 @@ func (x *AccountV2FirstNameChangedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AccountV2FirstNameChangedEvent.ProtoReflect.Descriptor instead. func (*AccountV2FirstNameChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{168} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{169} } func (x *AccountV2FirstNameChangedEvent) GetEmail() string { @@ -10947,7 +11037,7 @@ type AccountV2LastNameChangedEvent struct { func (x *AccountV2LastNameChangedEvent) Reset() { *x = AccountV2LastNameChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[169] + mi := &file_proto_event_domain_event_proto_msgTypes[170] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10960,7 +11050,7 @@ func (x *AccountV2LastNameChangedEvent) String() string { func (*AccountV2LastNameChangedEvent) ProtoMessage() {} func (x *AccountV2LastNameChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[169] + mi := &file_proto_event_domain_event_proto_msgTypes[170] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10973,7 +11063,7 @@ func (x *AccountV2LastNameChangedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AccountV2LastNameChangedEvent.ProtoReflect.Descriptor instead. func (*AccountV2LastNameChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{169} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{170} } func (x *AccountV2LastNameChangedEvent) GetEmail() string { @@ -11002,7 +11092,7 @@ type AccountV2LanguageChangedEvent struct { func (x *AccountV2LanguageChangedEvent) Reset() { *x = AccountV2LanguageChangedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[170] + mi := &file_proto_event_domain_event_proto_msgTypes[171] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11015,7 +11105,7 @@ func (x *AccountV2LanguageChangedEvent) String() string { func (*AccountV2LanguageChangedEvent) ProtoMessage() {} func (x *AccountV2LanguageChangedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[170] + mi := &file_proto_event_domain_event_proto_msgTypes[171] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11028,7 +11118,7 @@ func (x *AccountV2LanguageChangedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AccountV2LanguageChangedEvent.ProtoReflect.Descriptor instead. func (*AccountV2LanguageChangedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{170} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{171} } func (x *AccountV2LanguageChangedEvent) GetEmail() string { @@ -11061,7 +11151,7 @@ type TagCreatedEvent struct { func (x *TagCreatedEvent) Reset() { *x = TagCreatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[171] + mi := &file_proto_event_domain_event_proto_msgTypes[172] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11074,7 +11164,7 @@ func (x *TagCreatedEvent) String() string { func (*TagCreatedEvent) ProtoMessage() {} func (x *TagCreatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[171] + mi := &file_proto_event_domain_event_proto_msgTypes[172] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11087,7 +11177,7 @@ func (x *TagCreatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use TagCreatedEvent.ProtoReflect.Descriptor instead. func (*TagCreatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{171} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{172} } func (x *TagCreatedEvent) GetId() string { @@ -11144,7 +11234,7 @@ type TagDeletedEvent struct { func (x *TagDeletedEvent) Reset() { *x = TagDeletedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[172] + mi := &file_proto_event_domain_event_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11157,7 +11247,7 @@ func (x *TagDeletedEvent) String() string { func (*TagDeletedEvent) ProtoMessage() {} func (x *TagDeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[172] + mi := &file_proto_event_domain_event_proto_msgTypes[173] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11170,7 +11260,7 @@ func (x *TagDeletedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use TagDeletedEvent.ProtoReflect.Descriptor instead. func (*TagDeletedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{172} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{173} } func (x *TagDeletedEvent) GetId() string { @@ -11212,7 +11302,7 @@ type CodeReferenceCreatedEvent struct { func (x *CodeReferenceCreatedEvent) Reset() { *x = CodeReferenceCreatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[173] + mi := &file_proto_event_domain_event_proto_msgTypes[174] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11225,7 +11315,7 @@ func (x *CodeReferenceCreatedEvent) String() string { func (*CodeReferenceCreatedEvent) ProtoMessage() {} func (x *CodeReferenceCreatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[173] + mi := &file_proto_event_domain_event_proto_msgTypes[174] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11238,7 +11328,7 @@ func (x *CodeReferenceCreatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use CodeReferenceCreatedEvent.ProtoReflect.Descriptor instead. func (*CodeReferenceCreatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{173} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{174} } func (x *CodeReferenceCreatedEvent) GetId() string { @@ -11366,7 +11456,7 @@ type CodeReferenceUpdatedEvent struct { func (x *CodeReferenceUpdatedEvent) Reset() { *x = CodeReferenceUpdatedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[174] + mi := &file_proto_event_domain_event_proto_msgTypes[175] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11379,7 +11469,7 @@ func (x *CodeReferenceUpdatedEvent) String() string { func (*CodeReferenceUpdatedEvent) ProtoMessage() {} func (x *CodeReferenceUpdatedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[174] + mi := &file_proto_event_domain_event_proto_msgTypes[175] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11392,7 +11482,7 @@ func (x *CodeReferenceUpdatedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use CodeReferenceUpdatedEvent.ProtoReflect.Descriptor instead. func (*CodeReferenceUpdatedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{174} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{175} } func (x *CodeReferenceUpdatedEvent) GetId() string { @@ -11477,7 +11567,7 @@ type CodeReferenceDeletedEvent struct { func (x *CodeReferenceDeletedEvent) Reset() { *x = CodeReferenceDeletedEvent{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[175] + mi := &file_proto_event_domain_event_proto_msgTypes[176] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11490,7 +11580,7 @@ func (x *CodeReferenceDeletedEvent) String() string { func (*CodeReferenceDeletedEvent) ProtoMessage() {} func (x *CodeReferenceDeletedEvent) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[175] + mi := &file_proto_event_domain_event_proto_msgTypes[176] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11503,7 +11593,7 @@ func (x *CodeReferenceDeletedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use CodeReferenceDeletedEvent.ProtoReflect.Descriptor instead. func (*CodeReferenceDeletedEvent) Descriptor() ([]byte, []int) { - return file_proto_event_domain_event_proto_rawDescGZIP(), []int{175} + return file_proto_event_domain_event_proto_rawDescGZIP(), []int{176} } func (x *CodeReferenceDeletedEvent) GetId() string { @@ -11533,7 +11623,7 @@ type Editor_PublicAPIEditor struct { func (x *Editor_PublicAPIEditor) Reset() { *x = Editor_PublicAPIEditor{} if protoimpl.UnsafeEnabled { - mi := &file_proto_event_domain_event_proto_msgTypes[176] + mi := &file_proto_event_domain_event_proto_msgTypes[177] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11546,7 +11636,7 @@ func (x *Editor_PublicAPIEditor) String() string { func (*Editor_PublicAPIEditor) ProtoMessage() {} func (x *Editor_PublicAPIEditor) ProtoReflect() protoreflect.Message { - mi := &file_proto_event_domain_event_proto_msgTypes[176] + mi := &file_proto_event_domain_event_proto_msgTypes[177] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11630,1041 +11720,1049 @@ var file_proto_event_domain_event_proto_rawDesc = []byte{ 0x1a, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x61, 0x67, 0x2f, 0x74, 0x61, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x67, 0x6f, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x22, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x65, - 0x66, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa3, 0x30, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x49, - 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x36, - 0x0a, 0x06, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x06, - 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x41, 0x64, 0x6d, 0x69, - 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x74, 0x6f, 0x1a, 0x21, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, + 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x64, + 0x65, 0x72, 0x65, 0x66, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbc, 0x30, 0x0a, 0x05, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x12, 0x49, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, + 0x65, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x2e, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x12, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, - 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xa9, 0x02, 0x0a, 0x0a, - 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x45, - 0x41, 0x54, 0x55, 0x52, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x47, 0x4f, 0x41, 0x4c, 0x10, - 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x10, - 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x03, 0x12, 0x0a, - 0x0a, 0x06, 0x41, 0x50, 0x49, 0x4b, 0x45, 0x59, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, - 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x4e, 0x56, 0x49, 0x52, - 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x44, 0x4d, 0x49, - 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x41, - 0x55, 0x54, 0x4f, 0x4f, 0x50, 0x53, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x10, 0x08, 0x12, 0x08, 0x0a, - 0x04, 0x50, 0x55, 0x53, 0x48, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x55, 0x42, 0x53, 0x43, - 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x4d, - 0x49, 0x4e, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, - 0x0b, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x0c, 0x12, 0x17, - 0x0a, 0x13, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x49, 0x56, 0x45, 0x5f, 0x52, 0x4f, - 0x4c, 0x4c, 0x4f, 0x55, 0x54, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x52, 0x47, 0x41, 0x4e, - 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0f, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x4c, 0x41, - 0x47, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x10, 0x10, 0x12, 0x07, 0x0a, 0x03, 0x54, - 0x41, 0x47, 0x10, 0x11, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x45, 0x46, 0x10, - 0x12, 0x22, 0x04, 0x08, 0x0d, 0x10, 0x0d, 0x22, 0xdc, 0x29, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, - 0x0f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, - 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x52, 0x45, - 0x4e, 0x41, 0x4d, 0x45, 0x44, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x45, 0x41, 0x54, 0x55, - 0x52, 0x45, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, - 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, - 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x44, 0x45, - 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x05, 0x12, 0x1f, 0x0a, 0x1b, 0x46, 0x45, 0x41, 0x54, 0x55, - 0x52, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, - 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x08, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x45, 0x41, 0x54, - 0x55, 0x52, 0x45, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, - 0x44, 0x45, 0x44, 0x10, 0x09, 0x12, 0x1d, 0x0a, 0x19, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, - 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, - 0x45, 0x44, 0x10, 0x0a, 0x12, 0x21, 0x0a, 0x1d, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, - 0x4f, 0x46, 0x46, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, - 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x0b, 0x12, 0x1b, 0x0a, 0x17, 0x56, 0x41, 0x52, 0x49, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, - 0x45, 0x44, 0x10, 0x0c, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x41, 0x52, 0x49, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x0d, - 0x12, 0x21, 0x0a, 0x1d, 0x56, 0x41, 0x52, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, - 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, - 0x44, 0x10, 0x0e, 0x12, 0x18, 0x0a, 0x14, 0x56, 0x41, 0x52, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x0f, 0x12, 0x1a, 0x0a, - 0x16, 0x56, 0x41, 0x52, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, - 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x10, 0x12, 0x16, 0x0a, 0x12, 0x46, 0x45, 0x41, - 0x54, 0x55, 0x52, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, - 0x11, 0x12, 0x21, 0x0a, 0x1d, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x52, 0x55, 0x4c, - 0x45, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, - 0x45, 0x44, 0x10, 0x12, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, - 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x13, 0x12, 0x15, - 0x0a, 0x11, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x41, 0x44, - 0x44, 0x45, 0x44, 0x10, 0x14, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x43, 0x4c, - 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x15, 0x12, 0x1f, - 0x0a, 0x1b, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x5f, 0x53, 0x54, 0x52, - 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x16, 0x12, - 0x21, 0x0a, 0x1d, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x4f, 0x55, 0x54, 0x5f, - 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, - 0x10, 0x17, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x18, - 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, - 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x19, 0x12, 0x16, 0x0a, - 0x12, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x41, 0x44, - 0x44, 0x45, 0x44, 0x10, 0x1a, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, - 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x1b, 0x12, - 0x24, 0x0a, 0x20, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, - 0x4c, 0x54, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, - 0x47, 0x45, 0x44, 0x10, 0x1c, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, - 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x1d, 0x12, 0x17, 0x0a, 0x13, - 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x52, 0x45, 0x4d, 0x4f, - 0x56, 0x45, 0x44, 0x10, 0x1e, 0x12, 0x1f, 0x0a, 0x1b, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, - 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x43, 0x52, 0x45, 0x4d, 0x45, - 0x4e, 0x54, 0x45, 0x44, 0x10, 0x1f, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, - 0x45, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x44, 0x10, 0x20, 0x12, 0x12, 0x0a, 0x0e, - 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x43, 0x4c, 0x4f, 0x4e, 0x45, 0x44, 0x10, 0x21, - 0x12, 0x16, 0x0a, 0x12, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x41, 0x52, - 0x43, 0x48, 0x49, 0x56, 0x45, 0x44, 0x10, 0x23, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x41, 0x4d, 0x50, - 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x45, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x54, 0x10, - 0x22, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x52, 0x45, 0x52, 0x45, 0x51, 0x55, 0x49, 0x53, 0x49, 0x54, - 0x45, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x24, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x45, - 0x52, 0x45, 0x51, 0x55, 0x49, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, - 0x44, 0x10, 0x25, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x45, 0x52, 0x45, 0x51, 0x55, 0x49, 0x53, - 0x49, 0x54, 0x45, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, - 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x26, 0x12, 0x1f, 0x0a, 0x1b, 0x46, 0x45, 0x41, 0x54, 0x55, - 0x52, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x53, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x43, - 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x27, 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x45, 0x41, 0x54, - 0x55, 0x52, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x28, 0x12, 0x10, 0x0a, - 0x0c, 0x47, 0x4f, 0x41, 0x4c, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x64, 0x12, - 0x10, 0x0a, 0x0c, 0x47, 0x4f, 0x41, 0x4c, 0x5f, 0x52, 0x45, 0x4e, 0x41, 0x4d, 0x45, 0x44, 0x10, - 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x47, 0x4f, 0x41, 0x4c, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, - 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x66, 0x12, - 0x10, 0x0a, 0x0c, 0x47, 0x4f, 0x41, 0x4c, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, - 0x67, 0x12, 0x11, 0x0a, 0x0d, 0x47, 0x4f, 0x41, 0x4c, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, - 0x45, 0x44, 0x10, 0x68, 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x4f, 0x41, 0x4c, 0x5f, 0x55, 0x50, 0x44, - 0x41, 0x54, 0x45, 0x44, 0x10, 0x69, 0x12, 0x17, 0x0a, 0x12, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, - 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xc8, 0x01, 0x12, - 0x17, 0x0a, 0x12, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, - 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0xc9, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x45, 0x58, 0x50, 0x45, - 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x5f, - 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xca, 0x01, 0x12, 0x1f, 0x0a, 0x1a, 0x45, 0x58, - 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x41, 0x54, - 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xcb, 0x01, 0x12, 0x17, 0x0a, 0x12, 0x45, - 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, - 0x44, 0x10, 0xcc, 0x01, 0x12, 0x1e, 0x0a, 0x19, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, - 0x4e, 0x54, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, - 0x44, 0x10, 0xcd, 0x01, 0x12, 0x1c, 0x0a, 0x17, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, - 0x4e, 0x54, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, - 0xce, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, - 0x5f, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, - 0x4e, 0x47, 0x45, 0x44, 0x10, 0xcf, 0x01, 0x12, 0x17, 0x0a, 0x12, 0x45, 0x58, 0x50, 0x45, 0x52, - 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0xd0, 0x01, - 0x12, 0x18, 0x0a, 0x13, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x46, - 0x49, 0x4e, 0x49, 0x53, 0x48, 0x45, 0x44, 0x10, 0xd1, 0x01, 0x12, 0x18, 0x0a, 0x13, 0x45, 0x58, - 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, - 0x44, 0x10, 0xd2, 0x01, 0x12, 0x18, 0x0a, 0x0f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, - 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xac, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d, - 0x0a, 0x14, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x43, - 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xad, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, - 0x0f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, - 0x10, 0xae, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x19, 0x0a, 0x10, 0x41, 0x43, 0x43, 0x4f, 0x55, - 0x4e, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xaf, 0x02, 0x1a, 0x02, - 0x08, 0x01, 0x12, 0x18, 0x0a, 0x0f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x44, 0x45, - 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xb0, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x17, 0x0a, 0x12, - 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, - 0x45, 0x44, 0x10, 0xb1, 0x02, 0x12, 0x1c, 0x0a, 0x17, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, - 0x5f, 0x56, 0x32, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, - 0x10, 0xb2, 0x02, 0x12, 0x28, 0x0a, 0x23, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, - 0x32, 0x5f, 0x41, 0x56, 0x41, 0x54, 0x41, 0x52, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x55, - 0x52, 0x4c, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xb3, 0x02, 0x12, 0x29, 0x0a, - 0x24, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x4f, 0x52, 0x47, 0x41, - 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x43, 0x48, - 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xb4, 0x02, 0x12, 0x29, 0x0a, 0x24, 0x41, 0x43, 0x43, 0x4f, - 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, - 0x4e, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, - 0x10, 0xb5, 0x02, 0x12, 0x17, 0x0a, 0x12, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, - 0x32, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xb6, 0x02, 0x12, 0x18, 0x0a, 0x13, - 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, - 0x4c, 0x45, 0x44, 0x10, 0xb7, 0x02, 0x12, 0x17, 0x0a, 0x12, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, - 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xb8, 0x02, 0x12, - 0x25, 0x0a, 0x20, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x43, 0x52, - 0x45, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x5f, 0x46, 0x49, 0x4c, - 0x54, 0x45, 0x52, 0x10, 0xb9, 0x02, 0x12, 0x2a, 0x0a, 0x25, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, - 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x5f, 0x46, 0x49, 0x4c, 0x54, - 0x45, 0x52, 0x5f, 0x4e, 0x41, 0x4e, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, - 0xba, 0x02, 0x12, 0x2b, 0x0a, 0x26, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, - 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x51, - 0x55, 0x45, 0x52, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xbb, 0x02, 0x12, - 0x2d, 0x0a, 0x28, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x53, 0x45, - 0x41, 0x52, 0x43, 0x48, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x41, - 0x55, 0x4c, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xbc, 0x02, 0x12, 0x25, - 0x0a, 0x20, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x53, 0x45, 0x41, - 0x52, 0x43, 0x48, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, - 0x45, 0x44, 0x10, 0xbd, 0x02, 0x12, 0x22, 0x0a, 0x1d, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, - 0x5f, 0x56, 0x32, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x43, - 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xbe, 0x02, 0x12, 0x21, 0x0a, 0x1c, 0x41, 0x43, 0x43, - 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x4e, 0x41, 0x4d, - 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xbf, 0x02, 0x12, 0x20, 0x0a, 0x1b, - 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x4c, 0x41, 0x4e, 0x47, 0x55, - 0x41, 0x47, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xc0, 0x02, 0x12, 0x17, - 0x0a, 0x12, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x55, 0x50, 0x44, - 0x41, 0x54, 0x45, 0x44, 0x10, 0xc1, 0x02, 0x12, 0x1c, 0x0a, 0x17, 0x41, 0x43, 0x43, 0x4f, 0x55, - 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, - 0x45, 0x44, 0x10, 0xc2, 0x02, 0x12, 0x13, 0x0a, 0x0e, 0x41, 0x50, 0x49, 0x4b, 0x45, 0x59, 0x5f, - 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x90, 0x03, 0x12, 0x18, 0x0a, 0x13, 0x41, 0x50, - 0x49, 0x4b, 0x45, 0x59, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, - 0x44, 0x10, 0x91, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x41, 0x50, 0x49, 0x4b, 0x45, 0x59, 0x5f, 0x45, - 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x92, 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x41, 0x50, 0x49, - 0x4b, 0x45, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x93, 0x03, 0x12, - 0x13, 0x0a, 0x0e, 0x41, 0x50, 0x49, 0x4b, 0x45, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, - 0x44, 0x10, 0x94, 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, - 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xf4, 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x53, 0x45, - 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xf5, 0x03, - 0x12, 0x19, 0x0a, 0x14, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x4e, 0x41, 0x4d, 0x45, - 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xf6, 0x03, 0x12, 0x20, 0x0a, 0x1b, 0x53, - 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xf7, 0x03, 0x12, 0x17, 0x0a, - 0x12, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x41, 0x44, - 0x44, 0x45, 0x44, 0x10, 0xf8, 0x03, 0x12, 0x19, 0x0a, 0x14, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, - 0x54, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xf9, - 0x03, 0x12, 0x1e, 0x0a, 0x19, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x55, 0x4c, - 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0xfa, - 0x03, 0x12, 0x20, 0x0a, 0x1b, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x55, 0x4c, - 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, - 0x10, 0xfb, 0x03, 0x12, 0x25, 0x0a, 0x20, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, - 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, - 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xfc, 0x03, 0x12, 0x24, 0x0a, 0x1f, 0x53, 0x45, - 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x4f, 0x50, 0x45, - 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xfd, 0x03, - 0x12, 0x1f, 0x0a, 0x1a, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x41, 0x55, - 0x53, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0xfe, - 0x03, 0x12, 0x21, 0x0a, 0x1c, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x41, - 0x55, 0x53, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, - 0x44, 0x10, 0xff, 0x03, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, - 0x55, 0x53, 0x45, 0x52, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x80, 0x04, 0x12, 0x19, 0x0a, - 0x14, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, - 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x81, 0x04, 0x12, 0x1e, 0x0a, 0x19, 0x53, 0x45, 0x47, 0x4d, - 0x45, 0x4e, 0x54, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x5f, - 0x55, 0x53, 0x45, 0x52, 0x53, 0x10, 0x82, 0x04, 0x12, 0x2d, 0x0a, 0x28, 0x53, 0x45, 0x47, 0x4d, - 0x45, 0x4e, 0x54, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x5f, - 0x55, 0x53, 0x45, 0x52, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x48, 0x41, - 0x4e, 0x47, 0x45, 0x44, 0x10, 0x83, 0x04, 0x12, 0x14, 0x0a, 0x0f, 0x53, 0x45, 0x47, 0x4d, 0x45, - 0x4e, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x84, 0x04, 0x12, 0x18, 0x0a, - 0x13, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x52, 0x45, - 0x41, 0x54, 0x45, 0x44, 0x10, 0xd8, 0x04, 0x12, 0x18, 0x0a, 0x13, 0x45, 0x4e, 0x56, 0x49, 0x52, - 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x4e, 0x41, 0x4d, 0x45, 0x44, 0x10, 0xd9, - 0x04, 0x12, 0x24, 0x0a, 0x1f, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, + 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x36, 0x0a, 0x06, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, + 0x72, 0x52, 0x06, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x41, + 0x64, 0x6d, 0x69, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, + 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xa9, + 0x02, 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, + 0x07, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x47, 0x4f, + 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, + 0x4e, 0x54, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, + 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x50, 0x49, 0x4b, 0x45, 0x59, 0x10, 0x04, 0x12, 0x0b, 0x0a, + 0x07, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x4e, + 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x41, + 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x07, 0x12, 0x10, + 0x0a, 0x0c, 0x41, 0x55, 0x54, 0x4f, 0x4f, 0x50, 0x53, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x10, 0x08, + 0x12, 0x08, 0x0a, 0x04, 0x50, 0x55, 0x53, 0x48, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x55, + 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12, 0x16, 0x0a, 0x12, + 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x0b, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x10, + 0x0c, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x49, 0x56, 0x45, + 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x4f, 0x55, 0x54, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x52, + 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0f, 0x12, 0x10, 0x0a, 0x0c, + 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x10, 0x10, 0x12, 0x07, + 0x0a, 0x03, 0x54, 0x41, 0x47, 0x10, 0x11, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x44, 0x45, 0x52, + 0x45, 0x46, 0x10, 0x12, 0x22, 0x04, 0x08, 0x0d, 0x10, 0x0d, 0x22, 0xf5, 0x29, 0x0a, 0x04, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, + 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, + 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, + 0x5f, 0x52, 0x45, 0x4e, 0x41, 0x4d, 0x45, 0x44, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x45, + 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, + 0x14, 0x0a, 0x10, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, + 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, + 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x05, 0x12, 0x1f, 0x0a, 0x1b, 0x46, 0x45, + 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x08, 0x12, 0x1b, 0x0a, 0x17, 0x46, + 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x09, 0x12, 0x1d, 0x0a, 0x19, 0x46, 0x45, 0x41, 0x54, + 0x55, 0x52, 0x45, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, + 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x21, 0x0a, 0x1d, 0x46, 0x45, 0x41, 0x54, 0x55, + 0x52, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x0b, 0x12, 0x1b, 0x0a, 0x17, 0x56, 0x41, + 0x52, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x43, 0x48, + 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x0c, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x41, 0x52, 0x49, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, + 0x44, 0x10, 0x0d, 0x12, 0x21, 0x0a, 0x1d, 0x56, 0x41, 0x52, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, - 0x4e, 0x47, 0x45, 0x44, 0x10, 0xda, 0x04, 0x12, 0x18, 0x0a, 0x13, 0x45, 0x4e, 0x56, 0x49, 0x52, - 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xdb, - 0x04, 0x12, 0x1b, 0x0a, 0x16, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, - 0x5f, 0x56, 0x32, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xdc, 0x04, 0x12, 0x1b, - 0x0a, 0x16, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x32, - 0x5f, 0x52, 0x45, 0x4e, 0x41, 0x4d, 0x45, 0x44, 0x10, 0xdd, 0x04, 0x12, 0x27, 0x0a, 0x22, 0x45, - 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x44, 0x45, - 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, - 0x44, 0x10, 0xde, 0x04, 0x12, 0x1c, 0x0a, 0x17, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, - 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x44, 0x10, - 0xdf, 0x04, 0x12, 0x1e, 0x0a, 0x19, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, - 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x55, 0x4e, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x44, 0x10, - 0xe0, 0x04, 0x12, 0x2b, 0x0a, 0x26, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, - 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x5f, 0x43, 0x4f, 0x4d, - 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xe1, 0x04, 0x12, - 0x1e, 0x0a, 0x15, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, - 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xbc, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, - 0x1e, 0x0a, 0x15, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, - 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xbe, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, - 0x1f, 0x0a, 0x16, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, - 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xbf, 0x05, 0x1a, 0x02, 0x08, 0x01, - 0x12, 0x19, 0x0a, 0x14, 0x41, 0x55, 0x54, 0x4f, 0x4f, 0x50, 0x53, 0x5f, 0x52, 0x55, 0x4c, 0x45, - 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xa0, 0x06, 0x12, 0x19, 0x0a, 0x14, 0x41, - 0x55, 0x54, 0x4f, 0x4f, 0x50, 0x53, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, - 0x54, 0x45, 0x44, 0x10, 0xa1, 0x06, 0x12, 0x22, 0x0a, 0x1d, 0x41, 0x55, 0x54, 0x4f, 0x4f, 0x50, - 0x53, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x4f, 0x50, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xa2, 0x06, 0x12, 0x20, 0x0a, 0x1b, 0x41, 0x55, - 0x54, 0x4f, 0x4f, 0x50, 0x53, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, - 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xa3, 0x06, 0x12, 0x2a, 0x0a, 0x21, - 0x41, 0x55, 0x54, 0x4f, 0x4f, 0x50, 0x53, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x52, 0x49, - 0x47, 0x47, 0x45, 0x52, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, - 0x44, 0x10, 0xa4, 0x06, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x53, 0x5f, - 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, - 0x45, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0xa5, 0x06, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, - 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4c, 0x41, - 0x55, 0x53, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xa6, 0x06, 0x12, 0x1a, - 0x0a, 0x15, 0x44, 0x41, 0x54, 0x45, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, - 0x45, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0xa7, 0x06, 0x12, 0x1c, 0x0a, 0x17, 0x44, 0x41, - 0x54, 0x45, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x43, 0x48, - 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xa8, 0x06, 0x12, 0x19, 0x0a, 0x14, 0x41, 0x55, 0x54, 0x4f, - 0x4f, 0x50, 0x53, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, - 0x10, 0xa9, 0x06, 0x12, 0x24, 0x0a, 0x1f, 0x41, 0x55, 0x54, 0x4f, 0x4f, 0x50, 0x53, 0x5f, 0x52, - 0x55, 0x4c, 0x45, 0x5f, 0x4f, 0x50, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, - 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xaa, 0x06, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x55, 0x53, - 0x48, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x84, 0x07, 0x12, 0x11, 0x0a, 0x0c, - 0x50, 0x55, 0x53, 0x48, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x85, 0x07, 0x12, - 0x14, 0x0a, 0x0f, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x41, 0x44, 0x44, - 0x45, 0x44, 0x10, 0x86, 0x07, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x54, 0x41, - 0x47, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x87, 0x07, 0x12, 0x11, 0x0a, - 0x0c, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x52, 0x45, 0x4e, 0x41, 0x4d, 0x45, 0x44, 0x10, 0x88, 0x07, - 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, - 0x10, 0x89, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xe8, 0x07, 0x12, 0x19, - 0x0a, 0x14, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, - 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xe9, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x53, 0x55, 0x42, - 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, - 0x44, 0x10, 0xea, 0x07, 0x12, 0x1a, 0x0a, 0x15, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xeb, 0x07, - 0x12, 0x23, 0x0a, 0x1e, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x44, 0x44, - 0x45, 0x44, 0x10, 0xec, 0x07, 0x12, 0x25, 0x0a, 0x20, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, - 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xed, 0x07, 0x12, 0x19, 0x0a, 0x14, - 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x4e, - 0x41, 0x4d, 0x45, 0x44, 0x10, 0xee, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x53, 0x55, 0x42, 0x53, 0x43, - 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, - 0xef, 0x07, 0x12, 0x2b, 0x0a, 0x26, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, - 0x54, 0x41, 0x47, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0xf0, 0x07, 0x12, - 0x1f, 0x0a, 0x1a, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, - 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xcc, 0x08, - 0x12, 0x1f, 0x0a, 0x1a, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, - 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xcd, - 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, - 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, - 0xce, 0x08, 0x12, 0x20, 0x0a, 0x1b, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x53, 0x55, 0x42, 0x53, - 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, - 0x44, 0x10, 0xcf, 0x08, 0x12, 0x29, 0x0a, 0x24, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x53, 0x55, - 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, - 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0xd0, 0x08, 0x12, - 0x2b, 0x0a, 0x26, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, - 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xd1, 0x08, 0x12, 0x1f, 0x0a, 0x1a, + 0x4e, 0x47, 0x45, 0x44, 0x10, 0x0e, 0x12, 0x18, 0x0a, 0x14, 0x56, 0x41, 0x52, 0x49, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x0f, + 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x41, 0x52, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, + 0x45, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x10, 0x12, 0x16, 0x0a, 0x12, + 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x41, 0x44, 0x44, + 0x45, 0x44, 0x10, 0x11, 0x12, 0x21, 0x0a, 0x1d, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, + 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x43, 0x48, + 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x12, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x45, 0x41, 0x54, 0x55, + 0x52, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, + 0x13, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, + 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x14, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x55, 0x4c, 0x45, + 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, + 0x15, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x5f, + 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, + 0x10, 0x16, 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x4f, + 0x55, 0x54, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, + 0x47, 0x45, 0x44, 0x10, 0x17, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, + 0x44, 0x10, 0x18, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x4f, 0x50, + 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x19, + 0x12, 0x16, 0x0a, 0x12, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, + 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x1a, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4c, 0x41, 0x55, + 0x53, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, + 0x10, 0x1b, 0x12, 0x24, 0x0a, 0x20, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x44, 0x45, + 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x43, + 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x1c, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x45, 0x41, 0x54, + 0x55, 0x52, 0x45, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x1d, 0x12, + 0x17, 0x0a, 0x13, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x52, + 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x1e, 0x12, 0x1f, 0x0a, 0x1b, 0x46, 0x45, 0x41, 0x54, + 0x55, 0x52, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x43, 0x52, + 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x45, 0x44, 0x10, 0x1f, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x45, 0x41, + 0x54, 0x55, 0x52, 0x45, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x44, 0x10, 0x20, 0x12, + 0x12, 0x0a, 0x0e, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x43, 0x4c, 0x4f, 0x4e, 0x45, + 0x44, 0x10, 0x21, 0x12, 0x16, 0x0a, 0x12, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x55, + 0x4e, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x44, 0x10, 0x23, 0x12, 0x17, 0x0a, 0x13, 0x53, + 0x41, 0x4d, 0x50, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x45, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x53, + 0x45, 0x54, 0x10, 0x22, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x52, 0x45, 0x52, 0x45, 0x51, 0x55, 0x49, + 0x53, 0x49, 0x54, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x24, 0x12, 0x18, 0x0a, 0x14, + 0x50, 0x52, 0x45, 0x52, 0x45, 0x51, 0x55, 0x49, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x4d, + 0x4f, 0x56, 0x45, 0x44, 0x10, 0x25, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x45, 0x52, 0x45, 0x51, + 0x55, 0x49, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x56, 0x41, 0x52, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x26, 0x12, 0x1f, 0x0a, 0x1b, 0x46, 0x45, + 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x53, 0x5f, 0x4f, 0x52, 0x44, 0x45, + 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x27, 0x12, 0x13, 0x0a, 0x0f, 0x46, + 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x28, + 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x4f, 0x41, 0x4c, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, + 0x10, 0x64, 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x4f, 0x41, 0x4c, 0x5f, 0x52, 0x45, 0x4e, 0x41, 0x4d, + 0x45, 0x44, 0x10, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x47, 0x4f, 0x41, 0x4c, 0x5f, 0x44, 0x45, 0x53, + 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, + 0x10, 0x66, 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x4f, 0x41, 0x4c, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, + 0x45, 0x44, 0x10, 0x67, 0x12, 0x11, 0x0a, 0x0d, 0x47, 0x4f, 0x41, 0x4c, 0x5f, 0x41, 0x52, 0x43, + 0x48, 0x49, 0x56, 0x45, 0x44, 0x10, 0x68, 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x4f, 0x41, 0x4c, 0x5f, + 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x69, 0x12, 0x17, 0x0a, 0x12, 0x45, 0x58, 0x50, + 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, + 0xc8, 0x01, 0x12, 0x17, 0x0a, 0x12, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, + 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0xc9, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x45, + 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, + 0x41, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xca, 0x01, 0x12, 0x1f, 0x0a, + 0x1a, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x4f, 0x50, + 0x5f, 0x41, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xcb, 0x01, 0x12, 0x17, + 0x0a, 0x12, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x4c, + 0x45, 0x54, 0x45, 0x44, 0x10, 0xcc, 0x01, 0x12, 0x1e, 0x0a, 0x19, 0x45, 0x58, 0x50, 0x45, 0x52, + 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x43, 0x48, 0x41, + 0x4e, 0x47, 0x45, 0x44, 0x10, 0xcd, 0x01, 0x12, 0x1c, 0x0a, 0x17, 0x45, 0x58, 0x50, 0x45, 0x52, + 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, + 0x45, 0x44, 0x10, 0xce, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, + 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xcf, 0x01, 0x12, 0x17, 0x0a, 0x12, 0x45, 0x58, + 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, + 0x10, 0xd0, 0x01, 0x12, 0x18, 0x0a, 0x13, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, + 0x54, 0x5f, 0x46, 0x49, 0x4e, 0x49, 0x53, 0x48, 0x45, 0x44, 0x10, 0xd1, 0x01, 0x12, 0x18, 0x0a, + 0x13, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x52, 0x43, 0x48, + 0x49, 0x56, 0x45, 0x44, 0x10, 0xd2, 0x01, 0x12, 0x17, 0x0a, 0x12, 0x45, 0x58, 0x50, 0x45, 0x52, + 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0xd3, 0x01, + 0x12, 0x18, 0x0a, 0x0f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, + 0x54, 0x45, 0x44, 0x10, 0xac, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d, 0x0a, 0x14, 0x41, 0x43, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, + 0x45, 0x44, 0x10, 0xad, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x0f, 0x41, 0x43, 0x43, + 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xae, 0x02, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x19, 0x0a, 0x10, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x44, + 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xaf, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, + 0x0a, 0x0f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, + 0x44, 0x10, 0xb0, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x17, 0x0a, 0x12, 0x41, 0x43, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xb1, + 0x02, 0x12, 0x1c, 0x0a, 0x17, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, + 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xb2, 0x02, 0x12, + 0x28, 0x0a, 0x23, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x41, 0x56, + 0x41, 0x54, 0x41, 0x52, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x55, 0x52, 0x4c, 0x5f, 0x43, + 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xb3, 0x02, 0x12, 0x29, 0x0a, 0x24, 0x41, 0x43, 0x43, + 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, + 0x44, 0x10, 0xb4, 0x02, 0x12, 0x29, 0x0a, 0x24, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, + 0x56, 0x32, 0x5f, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x52, + 0x4f, 0x4c, 0x45, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xb5, 0x02, 0x12, + 0x17, 0x0a, 0x12, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x45, 0x4e, + 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xb6, 0x02, 0x12, 0x18, 0x0a, 0x13, 0x41, 0x43, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, + 0xb7, 0x02, 0x12, 0x17, 0x0a, 0x12, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, + 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xb8, 0x02, 0x12, 0x25, 0x0a, 0x20, 0x41, + 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, + 0x44, 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x10, + 0xb9, 0x02, 0x12, 0x2a, 0x0a, 0x25, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, + 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x4e, + 0x41, 0x4e, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xba, 0x02, 0x12, 0x2b, + 0x0a, 0x26, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x53, 0x45, 0x41, + 0x52, 0x43, 0x48, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, + 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xbb, 0x02, 0x12, 0x2d, 0x0a, 0x28, 0x41, + 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, + 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, + 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xbc, 0x02, 0x12, 0x25, 0x0a, 0x20, 0x41, 0x43, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x5f, + 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xbd, + 0x02, 0x12, 0x22, 0x0a, 0x1d, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, + 0x46, 0x49, 0x52, 0x53, 0x54, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, + 0x45, 0x44, 0x10, 0xbe, 0x02, 0x12, 0x21, 0x0a, 0x1c, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, + 0x5f, 0x56, 0x32, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x43, 0x48, + 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xbf, 0x02, 0x12, 0x20, 0x0a, 0x1b, 0x41, 0x43, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x4c, 0x41, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, 0x5f, + 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xc0, 0x02, 0x12, 0x17, 0x0a, 0x12, 0x41, 0x43, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, + 0x10, 0xc1, 0x02, 0x12, 0x1c, 0x0a, 0x17, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x56, + 0x32, 0x5f, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xc2, + 0x02, 0x12, 0x13, 0x0a, 0x0e, 0x41, 0x50, 0x49, 0x4b, 0x45, 0x59, 0x5f, 0x43, 0x52, 0x45, 0x41, + 0x54, 0x45, 0x44, 0x10, 0x90, 0x03, 0x12, 0x18, 0x0a, 0x13, 0x41, 0x50, 0x49, 0x4b, 0x45, 0x59, + 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x91, 0x03, + 0x12, 0x13, 0x0a, 0x0e, 0x41, 0x50, 0x49, 0x4b, 0x45, 0x59, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, + 0x45, 0x44, 0x10, 0x92, 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x41, 0x50, 0x49, 0x4b, 0x45, 0x59, 0x5f, + 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x93, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x41, + 0x50, 0x49, 0x4b, 0x45, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x94, 0x03, + 0x12, 0x14, 0x0a, 0x0f, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, + 0x54, 0x45, 0x44, 0x10, 0xf4, 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, + 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xf5, 0x03, 0x12, 0x19, 0x0a, 0x14, + 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x43, 0x48, 0x41, + 0x4e, 0x47, 0x45, 0x44, 0x10, 0xf6, 0x03, 0x12, 0x20, 0x0a, 0x1b, 0x53, 0x45, 0x47, 0x4d, 0x45, + 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, + 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xf7, 0x03, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x45, 0x47, + 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, + 0xf8, 0x03, 0x12, 0x19, 0x0a, 0x14, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x55, + 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xf9, 0x03, 0x12, 0x1e, 0x0a, + 0x19, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x43, 0x4c, + 0x41, 0x55, 0x53, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0xfa, 0x03, 0x12, 0x20, 0x0a, + 0x1b, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x43, 0x4c, + 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xfb, 0x03, 0x12, + 0x25, 0x0a, 0x20, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, + 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, + 0x47, 0x45, 0x44, 0x10, 0xfc, 0x03, 0x12, 0x24, 0x0a, 0x1f, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, + 0x54, 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, + 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xfd, 0x03, 0x12, 0x1f, 0x0a, 0x1a, + 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x56, + 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0xfe, 0x03, 0x12, 0x21, 0x0a, + 0x1c, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, + 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0xff, 0x03, + 0x12, 0x17, 0x0a, 0x12, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, + 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x80, 0x04, 0x12, 0x19, 0x0a, 0x14, 0x53, 0x45, 0x47, + 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, + 0x44, 0x10, 0x81, 0x04, 0x12, 0x1e, 0x0a, 0x19, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, + 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x55, 0x53, 0x45, 0x52, + 0x53, 0x10, 0x82, 0x04, 0x12, 0x2d, 0x0a, 0x28, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, + 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x55, 0x53, 0x45, 0x52, + 0x53, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, + 0x10, 0x83, 0x04, 0x12, 0x14, 0x0a, 0x0f, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x55, + 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x84, 0x04, 0x12, 0x18, 0x0a, 0x13, 0x45, 0x4e, 0x56, + 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, + 0x10, 0xd8, 0x04, 0x12, 0x18, 0x0a, 0x13, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, + 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x4e, 0x41, 0x4d, 0x45, 0x44, 0x10, 0xd9, 0x04, 0x12, 0x24, 0x0a, + 0x1f, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x53, + 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, + 0x10, 0xda, 0x04, 0x12, 0x18, 0x0a, 0x13, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, + 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xdb, 0x04, 0x12, 0x1b, 0x0a, + 0x16, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, + 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xdc, 0x04, 0x12, 0x1b, 0x0a, 0x16, 0x45, 0x4e, + 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x52, 0x45, 0x4e, + 0x41, 0x4d, 0x45, 0x44, 0x10, 0xdd, 0x04, 0x12, 0x27, 0x0a, 0x22, 0x45, 0x4e, 0x56, 0x49, 0x52, + 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x32, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, + 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xde, 0x04, + 0x12, 0x1c, 0x0a, 0x17, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, + 0x56, 0x32, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x44, 0x10, 0xdf, 0x04, 0x12, 0x1e, + 0x0a, 0x19, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x32, + 0x5f, 0x55, 0x4e, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x44, 0x10, 0xe0, 0x04, 0x12, 0x2b, + 0x0a, 0x26, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x32, + 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, + 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xe1, 0x04, 0x12, 0x1e, 0x0a, 0x15, 0x41, + 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x43, 0x52, 0x45, + 0x41, 0x54, 0x45, 0x44, 0x10, 0xbc, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, 0x0a, 0x15, 0x41, + 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x45, 0x4e, 0x41, + 0x42, 0x4c, 0x45, 0x44, 0x10, 0xbe, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1f, 0x0a, 0x16, 0x41, + 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x44, 0x49, 0x53, + 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xbf, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x19, 0x0a, 0x14, + 0x41, 0x55, 0x54, 0x4f, 0x4f, 0x50, 0x53, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x43, 0x52, 0x45, + 0x41, 0x54, 0x45, 0x44, 0x10, 0xa0, 0x06, 0x12, 0x19, 0x0a, 0x14, 0x41, 0x55, 0x54, 0x4f, 0x4f, + 0x50, 0x53, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, + 0xa1, 0x06, 0x12, 0x22, 0x0a, 0x1d, 0x41, 0x55, 0x54, 0x4f, 0x4f, 0x50, 0x53, 0x5f, 0x52, 0x55, + 0x4c, 0x45, 0x5f, 0x4f, 0x50, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, + 0x47, 0x45, 0x44, 0x10, 0xa2, 0x06, 0x12, 0x20, 0x0a, 0x1b, 0x41, 0x55, 0x54, 0x4f, 0x4f, 0x50, + 0x53, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x45, + 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xa3, 0x06, 0x12, 0x2a, 0x0a, 0x21, 0x41, 0x55, 0x54, 0x4f, + 0x4f, 0x50, 0x53, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, + 0x45, 0x44, 0x5f, 0x41, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xa4, 0x06, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x41, 0x44, + 0x44, 0x45, 0x44, 0x10, 0xa5, 0x06, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x53, 0x5f, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, + 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xa6, 0x06, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x41, + 0x54, 0x45, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x41, 0x44, + 0x44, 0x45, 0x44, 0x10, 0xa7, 0x06, 0x12, 0x1c, 0x0a, 0x17, 0x44, 0x41, 0x54, 0x45, 0x54, 0x49, + 0x4d, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, + 0x44, 0x10, 0xa8, 0x06, 0x12, 0x19, 0x0a, 0x14, 0x41, 0x55, 0x54, 0x4f, 0x4f, 0x50, 0x53, 0x5f, + 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0xa9, 0x06, 0x12, + 0x24, 0x0a, 0x1f, 0x41, 0x55, 0x54, 0x4f, 0x4f, 0x50, 0x53, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, + 0x4f, 0x50, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, + 0x45, 0x44, 0x10, 0xaa, 0x06, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x43, 0x52, + 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x84, 0x07, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x55, 0x53, 0x48, + 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x85, 0x07, 0x12, 0x14, 0x0a, 0x0f, 0x50, + 0x55, 0x53, 0x48, 0x5f, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x86, + 0x07, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x44, + 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x87, 0x07, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x55, 0x53, + 0x48, 0x5f, 0x52, 0x45, 0x4e, 0x41, 0x4d, 0x45, 0x44, 0x10, 0x88, 0x07, 0x12, 0x11, 0x0a, 0x0c, + 0x50, 0x55, 0x53, 0x48, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x89, 0x07, 0x12, + 0x19, 0x0a, 0x14, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xe8, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x53, 0x55, + 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, + 0x45, 0x44, 0x10, 0xe9, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, + 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xea, 0x07, + 0x12, 0x1a, 0x0a, 0x15, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xeb, 0x07, 0x12, 0x23, 0x0a, 0x1e, + 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4f, 0x55, + 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0xec, + 0x07, 0x12, 0x25, 0x0a, 0x20, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, + 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xed, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x53, 0x55, 0x42, 0x53, + 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x4e, 0x41, 0x4d, 0x45, 0x44, + 0x10, 0xee, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0xef, 0x07, 0x12, 0x2b, + 0x0a, 0x26, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, + 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x54, 0x41, 0x47, 0x53, + 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0xf0, 0x07, 0x12, 0x1f, 0x0a, 0x1a, 0x41, + 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xcc, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x4e, 0x41, 0x4d, 0x45, 0x44, 0x10, 0xd2, 0x08, 0x12, 0x14, 0x0a, - 0x0f, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, - 0x10, 0xb0, 0x09, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x44, - 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, - 0x45, 0x44, 0x10, 0xb1, 0x09, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, - 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xb2, 0x09, 0x12, 0x15, 0x0a, 0x10, 0x50, - 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, - 0xb3, 0x09, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x52, - 0x49, 0x41, 0x4c, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xb4, 0x09, 0x12, 0x1c, - 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x52, 0x49, 0x41, 0x4c, 0x5f, - 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, 0x54, 0x45, 0x44, 0x10, 0xb5, 0x09, 0x12, 0x14, 0x0a, 0x0f, - 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x4e, 0x41, 0x4d, 0x45, 0x44, 0x10, - 0xb6, 0x09, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x49, 0x56, - 0x45, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, - 0x44, 0x10, 0xf8, 0x0a, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, - 0x49, 0x56, 0x45, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, - 0x54, 0x45, 0x44, 0x10, 0xf9, 0x0a, 0x12, 0x36, 0x0a, 0x31, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, - 0x53, 0x53, 0x49, 0x56, 0x45, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x4f, 0x55, 0x54, 0x5f, 0x53, 0x43, - 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x45, 0x44, - 0x5f, 0x41, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xfa, 0x0a, 0x12, 0x20, + 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xcd, 0x08, 0x12, 0x1f, 0x0a, + 0x1a, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xce, 0x08, 0x12, 0x20, + 0x0a, 0x1b, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xcf, 0x08, + 0x12, 0x29, 0x0a, 0x24, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, + 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0xd0, 0x08, 0x12, 0x2b, 0x0a, 0x26, 0x41, + 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, + 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xd1, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x41, 0x44, 0x4d, 0x49, + 0x4e, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, + 0x45, 0x4e, 0x41, 0x4d, 0x45, 0x44, 0x10, 0xd2, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x52, 0x4f, + 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xb0, 0x09, 0x12, + 0x20, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x52, + 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xb1, + 0x09, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x45, 0x4e, 0x41, + 0x42, 0x4c, 0x45, 0x44, 0x10, 0xb2, 0x09, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x52, 0x4f, 0x4a, 0x45, + 0x43, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xb3, 0x09, 0x12, 0x1a, + 0x0a, 0x15, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x52, 0x49, 0x41, 0x4c, 0x5f, + 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xb4, 0x09, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x52, + 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x52, 0x49, 0x41, 0x4c, 0x5f, 0x43, 0x4f, 0x4e, 0x56, + 0x45, 0x52, 0x54, 0x45, 0x44, 0x10, 0xb5, 0x09, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x4a, + 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x4e, 0x41, 0x4d, 0x45, 0x44, 0x10, 0xb6, 0x09, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x49, 0x56, 0x45, 0x5f, 0x52, 0x4f, - 0x4c, 0x4c, 0x4f, 0x55, 0x54, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0xfb, 0x0a, - 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xdc, 0x0b, 0x12, 0x1e, 0x0a, 0x19, 0x4f, - 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x41, 0x4d, 0x45, - 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xdd, 0x0b, 0x12, 0x25, 0x0a, 0x20, 0x4f, - 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x53, 0x43, - 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, - 0xde, 0x0b, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xdf, 0x0b, 0x12, 0x1a, 0x0a, - 0x15, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x49, - 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xe0, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x52, 0x47, - 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, - 0x45, 0x44, 0x10, 0xe1, 0x0b, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x44, - 0x10, 0xe2, 0x0b, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x41, 0x4c, 0x5f, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, - 0x54, 0x45, 0x44, 0x10, 0xe3, 0x0b, 0x12, 0x25, 0x0a, 0x20, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, - 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x45, 0x4d, 0x41, - 0x49, 0x4c, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xe4, 0x0b, 0x12, 0x19, 0x0a, - 0x14, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x43, 0x52, - 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xc1, 0x0c, 0x12, 0x17, 0x0a, 0x12, 0x46, 0x4c, 0x41, 0x47, - 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x54, 0x10, 0xc2, - 0x0c, 0x12, 0x25, 0x0a, 0x20, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, - 0x52, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, - 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xc3, 0x0c, 0x12, 0x1a, 0x0a, 0x15, 0x46, 0x4c, 0x41, 0x47, - 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, - 0x44, 0x10, 0xc4, 0x0c, 0x12, 0x19, 0x0a, 0x14, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x54, 0x52, 0x49, - 0x47, 0x47, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xc5, 0x0c, 0x12, - 0x19, 0x0a, 0x14, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, - 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xc6, 0x0c, 0x12, 0x1f, 0x0a, 0x1a, 0x46, 0x4c, - 0x41, 0x47, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x55, 0x53, 0x41, 0x47, 0x45, - 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0xc7, 0x0c, 0x12, 0x10, 0x0a, 0x0b, 0x54, - 0x41, 0x47, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xa5, 0x0d, 0x12, 0x10, 0x0a, - 0x0b, 0x54, 0x41, 0x47, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xa6, 0x0d, 0x12, - 0x1b, 0x0a, 0x16, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, - 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x88, 0x0e, 0x12, 0x1b, 0x0a, 0x16, - 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x55, - 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x89, 0x0e, 0x12, 0x1b, 0x0a, 0x16, 0x43, 0x4f, 0x44, - 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, - 0x54, 0x45, 0x44, 0x10, 0x8a, 0x0e, 0x22, 0x06, 0x08, 0x94, 0x0a, 0x10, 0x94, 0x0a, 0x22, 0x06, - 0x08, 0x95, 0x0a, 0x10, 0x95, 0x0a, 0x22, 0x06, 0x08, 0x96, 0x0a, 0x10, 0x96, 0x0a, 0x22, 0x06, - 0x08, 0x97, 0x0a, 0x10, 0x97, 0x0a, 0x22, 0x06, 0x08, 0x98, 0x0a, 0x10, 0x98, 0x0a, 0x22, 0x06, - 0x08, 0x99, 0x0a, 0x10, 0x99, 0x0a, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x22, 0x8c, 0x02, 0x0a, - 0x06, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x19, 0x0a, - 0x08, 0x69, 0x73, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x69, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x5a, 0x0a, 0x11, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, - 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x65, 0x65, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x50, - 0x49, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, - 0x70, 0x69, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x1a, 0x5b, 0x0a, 0x0f, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x41, 0x50, 0x49, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x44, 0x0a, 0x07, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x22, 0xf3, 0x04, 0x0a, 0x13, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, - 0x73, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x0a, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x58, 0x0a, 0x1a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6f, 0x6e, 0x5f, - 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x06, 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, 0x17, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4f, 0x6e, 0x56, 0x61, 0x72, - 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x5a, 0x0a, 0x1b, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x07, 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, 0x18, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4f, 0x66, 0x66, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x4f, 0x0a, 0x0e, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, - 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x45, 0x0a, 0x0d, - 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, - 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, - 0x73, 0x69, 0x74, 0x65, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, - 0x74, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, - 0x65, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x0c, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, - 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x22, 0x66, 0x0a, 0x13, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, - 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, - 0x75, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, - 0x01, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x44, 0x61, 0x74, 0x61, 0x22, - 0x25, 0x0a, 0x13, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x26, 0x0a, 0x14, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x26, - 0x0a, 0x14, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, - 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x28, 0x0a, 0x16, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x4c, 0x4c, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xf8, 0x0a, + 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x49, 0x56, 0x45, 0x5f, + 0x52, 0x4f, 0x4c, 0x4c, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, + 0xf9, 0x0a, 0x12, 0x36, 0x0a, 0x31, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x49, 0x56, + 0x45, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x4f, 0x55, 0x54, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, + 0x4c, 0x45, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x5f, + 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xfa, 0x0a, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x52, + 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x49, 0x56, 0x45, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x4f, 0x55, + 0x54, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0xfb, 0x0a, 0x12, 0x19, 0x0a, 0x14, + 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, + 0x41, 0x54, 0x45, 0x44, 0x10, 0xdc, 0x0b, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x52, 0x47, 0x41, 0x4e, + 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x43, 0x48, 0x41, + 0x4e, 0x47, 0x45, 0x44, 0x10, 0xdd, 0x0b, 0x12, 0x25, 0x0a, 0x20, 0x4f, 0x52, 0x47, 0x41, 0x4e, + 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xde, 0x0b, 0x12, 0x19, + 0x0a, 0x14, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, + 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xdf, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x52, 0x47, + 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, + 0x45, 0x44, 0x10, 0xe0, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x44, 0x10, 0xe1, + 0x0b, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x55, 0x4e, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x44, 0x10, 0xe2, 0x0b, 0x12, + 0x21, 0x0a, 0x1c, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x54, 0x52, 0x49, 0x41, 0x4c, 0x5f, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, 0x54, 0x45, 0x44, 0x10, + 0xe3, 0x0b, 0x12, 0x25, 0x0a, 0x20, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x5f, 0x43, + 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0xe4, 0x0b, 0x12, 0x19, 0x0a, 0x14, 0x46, 0x4c, 0x41, + 0x47, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, + 0x44, 0x10, 0xc1, 0x0c, 0x12, 0x17, 0x0a, 0x12, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x54, 0x52, 0x49, + 0x47, 0x47, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x54, 0x10, 0xc2, 0x0c, 0x12, 0x25, 0x0a, + 0x20, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x44, 0x45, + 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, + 0x44, 0x10, 0xc3, 0x0c, 0x12, 0x1a, 0x0a, 0x15, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x54, 0x52, 0x49, + 0x47, 0x47, 0x45, 0x52, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xc4, 0x0c, + 0x12, 0x19, 0x0a, 0x14, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, + 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0xc5, 0x0c, 0x12, 0x19, 0x0a, 0x14, 0x46, + 0x4c, 0x41, 0x47, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x4c, 0x45, + 0x54, 0x45, 0x44, 0x10, 0xc6, 0x0c, 0x12, 0x1f, 0x0a, 0x1a, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x54, + 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x55, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x55, 0x50, 0x44, + 0x41, 0x54, 0x45, 0x44, 0x10, 0xc7, 0x0c, 0x12, 0x10, 0x0a, 0x0b, 0x54, 0x41, 0x47, 0x5f, 0x43, + 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0xa5, 0x0d, 0x12, 0x10, 0x0a, 0x0b, 0x54, 0x41, 0x47, + 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0xa6, 0x0d, 0x12, 0x1b, 0x0a, 0x16, 0x43, + 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x43, 0x52, + 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x88, 0x0e, 0x12, 0x1b, 0x0a, 0x16, 0x43, 0x4f, 0x44, 0x45, + 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, + 0x45, 0x44, 0x10, 0x89, 0x0e, 0x12, 0x1b, 0x0a, 0x16, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, + 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, + 0x8a, 0x0e, 0x22, 0x06, 0x08, 0x94, 0x0a, 0x10, 0x94, 0x0a, 0x22, 0x06, 0x08, 0x95, 0x0a, 0x10, + 0x95, 0x0a, 0x22, 0x06, 0x08, 0x96, 0x0a, 0x10, 0x96, 0x0a, 0x22, 0x06, 0x08, 0x97, 0x0a, 0x10, + 0x97, 0x0a, 0x22, 0x06, 0x08, 0x98, 0x0a, 0x10, 0x98, 0x0a, 0x22, 0x06, 0x08, 0x99, 0x0a, 0x10, + 0x99, 0x0a, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x22, 0x8c, 0x02, 0x0a, 0x06, 0x45, 0x64, 0x69, + 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, + 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x5a, 0x0a, 0x11, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x45, 0x64, 0x69, + 0x74, 0x6f, 0x72, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x50, 0x49, 0x45, 0x64, 0x69, + 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x70, 0x69, 0x45, 0x64, + 0x69, 0x74, 0x6f, 0x72, 0x1a, 0x5b, 0x0a, 0x0f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x50, + 0x49, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1e, 0x0a, + 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x44, 0x0a, 0x07, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x6e, 0x65, 0x77, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xf3, 0x04, + 0x0a, 0x13, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x75, + 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, + 0x3c, 0x0a, 0x0a, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, + 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x0a, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, + 0x1a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 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, 0x17, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4f, 0x6e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x5a, 0x0a, 0x1b, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x07, 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, 0x18, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x4f, 0x66, 0x66, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x4f, 0x0a, 0x0e, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x45, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x72, + 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, + 0x52, 0x0d, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x73, 0x12, + 0x2d, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x33, + 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x73, 0x22, 0x66, 0x0a, 0x13, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, + 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x44, 0x61, 0x74, 0x61, 0x22, 0x25, 0x0a, 0x13, 0x46, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x26, 0x0a, 0x14, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x44, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x26, 0x0a, 0x14, 0x46, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x28, 0x0a, 0x16, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x55, 0x6e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x25, 0x0a, 0x13, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x22, 0x2d, 0x0a, 0x1b, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x2f, 0x0a, 0x1d, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x22, 0x39, 0x0a, 0x13, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x52, + 0x0a, 0x1e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x22, 0x25, 0x0a, 0x13, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2d, 0x0a, 0x1b, 0x45, 0x76, 0x61, 0x6c, 0x75, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2f, 0x0a, 0x1d, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x53, - 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x39, 0x0a, 0x13, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x52, 0x0a, 0x1e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, + 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x56, 0x0a, 0x1f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4f, 0x66, 0x66, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x66, 0x66, 0x5f, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x66, + 0x66, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x68, 0x0a, 0x1a, 0x46, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, + 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x51, 0x0a, 0x1c, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x56, 0x0a, 0x1f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x4f, 0x66, 0x66, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x66, 0x66, - 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x6f, 0x66, 0x66, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x68, - 0x0a, 0x1a, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x09, - 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x76, - 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x51, 0x0a, 0x1c, 0x46, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x61, 0x72, 0x69, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x61, 0x0a, 0x1a, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x5e, - 0x0a, 0x19, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x73, - 0x0a, 0x20, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, - 0x6e, 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, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x5c, 0x0a, 0x17, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x55, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1d, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x61, 0x0a, 0x1a, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, + 0x45, 0x76, 0x65, 0x6e, 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, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x5e, 0x0a, 0x19, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x73, 0x0a, 0x20, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, - 0x72, 0x22, 0x5e, 0x0a, 0x19, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, - 0x72, 0x22, 0x54, 0x0a, 0x15, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x75, 0x6c, 0x65, - 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x72, 0x75, - 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6c, - 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x1e, 0x46, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x74, 0x72, - 0x61, 0x74, 0x65, 0x67, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, + 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x5c, 0x0a, 0x17, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, + 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, - 0x49, 0x64, 0x12, 0x37, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, - 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, - 0x79, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0x59, 0x0a, 0x1d, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x19, 0x0a, 0x08, 0x72, - 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, - 0x75, 0x6c, 0x65, 0x49, 0x64, 0x73, 0x22, 0x42, 0x0a, 0x17, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x98, 0x01, 0x0a, 0x20, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x69, 0x78, 0x65, 0x64, 0x53, 0x74, 0x72, 0x61, 0x74, - 0x65, 0x67, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x17, - 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, - 0x65, 0x67, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x46, 0x69, - 0x78, 0x65, 0x64, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x08, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0x9c, 0x01, 0x0a, 0x22, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x17, 0x0a, 0x07, 0x72, - 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, - 0x6c, 0x65, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, - 0x18, 0x03, 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, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, - 0x75, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x65, 0x67, 0x79, 0x22, 0x81, 0x01, 0x0a, 0x14, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6c, 0x61, - 0x75, 0x73, 0x65, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x17, 0x0a, 0x07, - 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, - 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, - 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, - 0x52, 0x06, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x22, 0x60, 0x0a, 0x16, 0x52, 0x75, 0x6c, 0x65, - 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, - 0x6e, 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, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x1b, 0x43, - 0x6c, 0x61, 0x75, 0x73, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, + 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x5e, 0x0a, + 0x19, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, - 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x22, 0xa4, 0x01, 0x0a, 0x1a, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x17, - 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x6c, - 0x61, 0x75, 0x73, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x75, 0x0a, 0x15, 0x43, 0x6c, 0x61, 0x75, 0x73, - 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, - 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x77, - 0x0a, 0x17, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, + 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x54, 0x0a, + 0x15, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x41, 0x64, 0x64, 0x65, + 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, + 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, + 0x75, 0x6c, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x1e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, + 0x79, 0x45, 0x76, 0x65, 0x6e, 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, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x37, + 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x08, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0x59, 0x0a, 0x1d, 0x46, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x19, 0x0a, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x49, + 0x64, 0x73, 0x22, 0x42, 0x0a, 0x17, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x75, 0x6c, + 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, + 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x98, 0x01, 0x0a, 0x20, 0x46, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x46, 0x69, 0x78, 0x65, 0x64, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x17, 0x0a, 0x07, 0x72, 0x75, + 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, + 0x65, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, + 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x46, 0x69, 0x78, 0x65, 0x64, 0x53, + 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, + 0x79, 0x22, 0x9c, 0x01, 0x0a, 0x22, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x6f, 0x6c, + 0x6c, 0x6f, 0x75, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, + 0x12, 0x3e, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x03, 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, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x53, 0x74, + 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, + 0x22, 0x81, 0x01, 0x0a, 0x14, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x41, + 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, - 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x6d, 0x0a, 0x22, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, - 0x79, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x37, 0x0a, - 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x08, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0x38, 0x0a, 0x14, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x54, 0x61, 0x67, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, - 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, - 0x22, 0x3a, 0x0a, 0x16, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x64, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x52, 0x06, 0x63, 0x6c, + 0x61, 0x75, 0x73, 0x65, 0x22, 0x60, 0x0a, 0x16, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6c, 0x61, 0x75, + 0x73, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x17, 0x0a, + 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x1b, 0x43, 0x6c, 0x61, 0x75, 0x73, + 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, + 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0xa4, 0x01, 0x0a, + 0x1a, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x17, 0x0a, 0x07, 0x72, 0x75, + 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, + 0x65, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, + 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, + 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x22, 0x75, 0x0a, 0x15, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x17, 0x0a, 0x07, 0x72, + 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, + 0x6c, 0x65, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x77, 0x0a, 0x17, 0x43, 0x6c, + 0x61, 0x75, 0x73, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, + 0x45, 0x76, 0x65, 0x6e, 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, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x6d, 0x0a, 0x22, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x37, 0x0a, 0x08, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, + 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, + 0x67, 0x79, 0x22, 0x38, 0x0a, 0x14, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x54, 0x61, 0x67, + 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x4a, 0x0a, 0x1e, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xb5, 0x04, 0x0a, 0x12, 0x46, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x0a, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, - 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, - 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, - 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, - 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0f, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, - 0x23, 0x0a, 0x0d, 0x6f, 0x66, 0x66, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x66, 0x66, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x09, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x69, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, - 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x0e, 0x76, 0x61, 0x72, 0x69, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x56, 0x61, 0x72, - 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x76, 0x61, 0x72, 0x69, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x45, 0x0a, 0x0d, 0x70, 0x72, 0x65, - 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, - 0x65, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x73, - 0x22, 0x44, 0x0a, 0x1d, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, - 0x69, 0x6e, 0x67, 0x53, 0x65, 0x65, 0x64, 0x52, 0x65, 0x73, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, - 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, - 0x6e, 0x67, 0x53, 0x65, 0x65, 0x64, 0x22, 0x84, 0x02, 0x0a, 0x10, 0x47, 0x6f, 0x61, 0x6c, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x3a, 0x0a, 0x16, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x4a, 0x0a, 0x1e, 0x46, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xb5, 0x04, 0x0a, 0x12, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x52, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, - 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x6f, 0x61, 0x6c, 0x2e, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0e, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x94, 0x01, - 0x0a, 0x10, 0x47, 0x6f, 0x61, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x12, 0x3c, 0x0a, 0x0a, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, + 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x33, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, + 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, + 0x6c, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x2e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6f, + 0x66, 0x66, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x66, 0x66, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, + 0x74, 0x61, 0x67, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x0e, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x45, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, + 0x69, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x2e, 0x50, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x52, 0x0d, 0x70, + 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x73, 0x22, 0x44, 0x0a, 0x1d, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x53, + 0x65, 0x65, 0x64, 0x52, 0x65, 0x73, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, + 0x0d, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x65, + 0x65, 0x64, 0x22, 0x84, 0x02, 0x0a, 0x10, 0x47, 0x6f, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, + 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x52, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, + 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, + 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x6f, 0x61, 0x6c, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x94, 0x01, 0x0a, 0x10, 0x47, 0x6f, + 0x61, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 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, + 0x03, 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, + 0x22, 0x36, 0x0a, 0x10, 0x47, 0x6f, 0x61, 0x6c, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4f, 0x0a, 0x1b, 0x47, 0x6f, 0x61, 0x6c, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x23, 0x0a, 0x11, 0x47, 0x6f, 0x61, + 0x6c, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x22, + 0x0a, 0x10, 0x47, 0x6f, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 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, 0x03, 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, 0x22, 0x36, 0x0a, 0x10, 0x47, 0x6f, 0x61, 0x6c, 0x52, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4f, 0x0a, 0x1b, - 0x47, 0x6f, 0x61, 0x6c, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x23, 0x0a, - 0x11, 0x47, 0x6f, 0x61, 0x6c, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x45, 0x76, 0x65, + 0x69, 0x64, 0x22, 0xf3, 0x03, 0x0a, 0x16, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, + 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, + 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, + 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x0a, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x07, 0x67, 0x6f, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x67, 0x6f, 0x61, 0x6c, 0x49, 0x64, + 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x41, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, + 0x74, 0x6f, 0x70, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, + 0x6f, 0x70, 0x41, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x12, 0x1d, + 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, + 0x6f, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x67, + 0x6f, 0x61, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, + 0x62, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x61, 0x73, 0x65, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x16, 0x45, 0x78, 0x70, 0x65, + 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x22, 0x22, 0x0a, 0x10, 0x47, 0x6f, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x41, + 0x74, 0x22, 0x29, 0x0a, 0x17, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x41, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x28, 0x0a, 0x16, + 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xf3, 0x03, 0x0a, 0x16, 0x45, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, - 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x66, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x0a, 0x76, 0x61, 0x72, - 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x76, 0x61, 0x72, - 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x07, 0x67, 0x6f, 0x61, 0x6c, 0x5f, - 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x67, 0x6f, - 0x61, 0x6c, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x61, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x41, 0x74, 0x12, - 0x17, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, 0x41, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x70, - 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x19, 0x0a, 0x08, 0x67, 0x6f, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x07, 0x67, 0x6f, 0x61, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x2a, 0x0a, 0x11, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x61, 0x73, - 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x16, - 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0x41, 0x74, 0x22, 0x29, 0x0a, 0x17, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x22, 0x28, 0x0a, 0x16, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4a, 0x0a, 0x1d, 0x45, 0x78, - 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x74, 0x43, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4a, 0x0a, 0x1d, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, + 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x41, 0x74, 0x22, 0x47, 0x0a, 0x1c, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, + 0x53, 0x74, 0x6f, 0x70, 0x41, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, 0x41, 0x74, 0x22, 0x62, 0x0a, 0x1c, 0x45, + 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x41, 0x74, 0x22, 0x47, 0x0a, 0x1c, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, - 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x74, 0x61, 0x72, 0x74, 0x41, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x61, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, 0x41, 0x74, 0x22, + 0x40, 0x0a, 0x1a, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x55, 0x0a, 0x21, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x61, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, 0x41, 0x74, 0x22, - 0x62, 0x0a, 0x1c, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x72, - 0x69, 0x6f, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x41, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, - 0x6f, 0x70, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x6f, - 0x70, 0x41, 0x74, 0x22, 0x40, 0x0a, 0x1a, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x55, 0x0a, 0x21, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x18, 0x0a, 0x16, - 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, - 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x19, 0x0a, 0x17, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, - 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x22, 0x92, 0x04, 0x0a, 0x15, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, - 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x5b, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, - 0x32, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x59, 0x0a, 0x11, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x2e, 0x45, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x10, - 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, - 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, - 0x72, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x66, 0x69, 0x72, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x73, - 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, - 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, - 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, - 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x56, 0x0a, 0x15, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x56, 0x32, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x45, - 0x0a, 0x19, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x4e, 0x61, 0x6d, 0x65, 0x43, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd3, 0x01, 0x0a, 0x16, 0x45, 0x78, 0x70, + 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x41, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x61, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, 0x41, 0x74, 0x12, 0x3f, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, + 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x18, + 0x0a, 0x16, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x19, 0x0a, 0x17, 0x45, 0x78, 0x70, 0x65, + 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x22, 0x92, 0x04, 0x0a, 0x15, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, + 0x32, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x76, 0x61, 0x74, 0x61, + 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, + 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x5b, 0x0a, 0x11, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, + 0x72, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x56, 0x32, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x59, 0x0a, 0x11, 0x65, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, + 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, + 0x52, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x6c, + 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1d, + 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x66, 0x69, 0x72, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6c, 0x61, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, + 0x75, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, + 0x75, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0d, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x56, 0x0a, 0x15, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x56, 0x32, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x22, 0x45, 0x0a, 0x19, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x4e, 0x61, 0x6d, + 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x65, 0x0a, 0x23, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x56, 0x32, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, + 0x52, 0x4c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x22, 0x45, + 0x0a, 0x19, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x54, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x65, 0x0a, 0x23, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x56, 0x32, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x4c, + 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x9a, 0x01, 0x0a, 0x25, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x56, 0x32, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x6f, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x5b, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x2e, 0x52, + 0x6f, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, + 0x6c, 0x65, 0x22, 0x98, 0x01, 0x0a, 0x25, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, + 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, - 0x69, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x76, - 0x61, 0x74, 0x61, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x22, 0x45, 0x0a, 0x19, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x54, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, - 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x61, 0x67, 0x73, 0x22, 0x9a, 0x01, 0x0a, 0x25, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, - 0x32, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, - 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x12, 0x5b, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, - 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x2e, 0x52, 0x6f, 0x6c, - 0x65, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, - 0x22, 0x98, 0x01, 0x0a, 0x25, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x45, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x12, 0x59, 0x0a, 0x11, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, - 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x22, 0x2d, 0x0a, 0x15, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x2e, 0x0a, 0x16, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x2d, 0x0a, 0x15, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0xd7, 0x01, 0x0a, 0x18, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x51, 0x75, + 0x69, 0x6c, 0x12, 0x59, 0x0a, 0x11, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x2e, 0x45, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x10, 0x65, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x22, 0x2d, 0x0a, + 0x15, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x2e, 0x0a, 0x16, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x2d, 0x0a, 0x15, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0xd7, 0x01, 0x0a, 0x18, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x12, 0x43, 0x0a, 0x0a, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, + 0x65, 0x72, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x54, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 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, 0x12, 0x25, + 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x42, 0x0a, 0x1c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x45, 0x0a, 0x1d, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x12, 0x43, 0x0a, 0x0a, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, - 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x54, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x54, 0x79, 0x70, 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, 0x12, 0x25, 0x0a, 0x0e, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x22, 0x42, 0x0a, 0x1c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, + 0x22, 0x58, 0x0a, 0x1f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x45, 0x0a, 0x1d, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x22, 0x58, - 0x0a, 0x1f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x2a, 0x0a, 0x18, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x22, 0xff, 0x01, 0x0a, 0x12, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x32, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, - 0x6f, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, - 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, - 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1e, 0x0a, - 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x17, 0x0a, - 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x22, 0x24, 0x0a, 0x12, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x3c, 0x0a, 0x16, - 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x2a, 0x0a, 0x18, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x24, 0x0a, 0x12, 0x41, 0x50, - 0x49, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x22, 0x25, 0x0a, 0x13, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5b, 0x0a, 0x13, 0x53, 0x65, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x25, 0x0a, 0x13, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x13, - 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 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, 0x03, 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, 0x22, 0x3d, 0x0a, 0x17, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xff, 0x01, 0x0a, 0x12, 0x41, 0x50, 0x49, 0x4b, 0x65, + 0x79, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x32, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, + 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, + 0x17, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x22, 0x24, 0x0a, 0x12, 0x41, 0x50, 0x49, 0x4b, + 0x65, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x3c, + 0x0a, 0x16, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x24, 0x0a, 0x12, + 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x25, 0x0a, 0x13, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x44, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5b, 0x0a, 0x13, 0x53, 0x65, 0x67, + 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x52, 0x0a, 0x1e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x44, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x54, 0x0a, 0x15, 0x53, 0x65, 0x67, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, 0x42, - 0x0a, 0x17, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6c, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, - 0x49, 0x64, 0x22, 0x88, 0x01, 0x0a, 0x1b, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x75, - 0x6c, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, - 0x6e, 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, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x6c, - 0x61, 0x75, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, - 0x6c, 0x61, 0x75, 0x73, 0x65, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x22, 0x74, 0x0a, - 0x1d, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6c, 0x61, 0x75, - 0x73, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x75, 0x73, - 0x65, 0x49, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x22, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x43, - 0x6c, 0x61, 0x75, 0x73, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x72, 0x75, 0x6c, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, - 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x49, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0xb8, 0x01, - 0x0a, 0x21, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, - 0x65, 0x6e, 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, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, - 0x6c, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x43, - 0x6c, 0x61, 0x75, 0x73, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x89, 0x01, 0x0a, 0x1c, 0x53, 0x65, 0x67, - 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, - 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x67, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x25, 0x0a, 0x13, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x97, 0x01, + 0x0a, 0x13, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 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, 0x03, 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, 0x22, 0x3d, 0x0a, 0x17, 0x53, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x52, 0x0a, 0x1e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x54, 0x0a, 0x15, 0x53, 0x65, + 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, + 0x22, 0x42, 0x0a, 0x17, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, + 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, + 0x6c, 0x65, 0x49, 0x64, 0x22, 0x88, 0x01, 0x0a, 0x1b, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, + 0x76, 0x65, 0x6e, 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, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x06, + 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x2e, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x22, + 0x74, 0x0a, 0x1d, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6c, + 0x61, 0x75, 0x73, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x75, + 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x61, + 0x75, 0x73, 0x65, 0x49, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x22, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x72, + 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, + 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x49, + 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, + 0xb8, 0x01, 0x0a, 0x21, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x61, 0x75, 0x73, + 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, + 0x45, 0x76, 0x65, 0x6e, 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, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, + 0x09, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x08, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x2e, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x89, 0x01, 0x0a, 0x1c, 0x53, + 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x72, 0x75, + 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, + 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x49, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1e, 0x53, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, - 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x15, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x19, 0x0a, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 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, 0x22, 0x8f, 0x01, 0x0a, 0x17, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1d, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x15, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, @@ -12672,222 +12770,293 @@ var file_proto_event_domain_event_proto_rawDesc = []byte{ 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, 0x22, 0xb3, 0x01, 0x0a, 0x1b, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x45, - 0x76, 0x65, 0x6e, 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, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x21, 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, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 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, 0x22, 0xd6, 0x01, 0x0a, 0x28, 0x53, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x55, 0x73, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 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, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 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, 0x14, 0x0a, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0xf4, 0x01, 0x0a, 0x17, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, - 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, - 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x17, 0x45, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x56, 0x0a, 0x22, 0x45, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x47, 0x0a, 0x17, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x9e, 0x02, 0x0a, 0x19, 0x45, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x32, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, - 0x75, 0x72, 0x6c, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x75, 0x72, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x63, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x80, 0x01, 0x0a, 0x19, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x32, 0x52, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x6c, 0x64, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x6c, 0x64, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xbb, - 0x01, 0x0a, 0x24, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x32, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x74, 0x61, 0x74, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x17, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, + 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 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, 0x22, 0xb3, 0x01, 0x0a, 0x1b, 0x53, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x73, 0x65, 0x72, + 0x73, 0x45, 0x76, 0x65, 0x6e, 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, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 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, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 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, 0x22, 0xd6, 0x01, 0x0a, + 0x28, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 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, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 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, + 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xf4, 0x01, 0x0a, 0x17, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, + 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, + 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, + 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x17, + 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x56, 0x0a, 0x22, 0x45, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x47, 0x0a, 0x17, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, + 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x9e, 0x02, 0x0a, + 0x19, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x32, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, + 0x0a, 0x08, 0x75, 0x72, 0x6c, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x75, 0x72, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, + 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x80, 0x01, + 0x0a, 0x19, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x32, 0x52, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x6c, + 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x6c, + 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0xbb, 0x01, 0x0a, 0x24, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x56, 0x32, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, + 0x6f, 0x6c, 0x64, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x65, 0x77, 0x5f, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x6e, 0x65, 0x77, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x95, + 0x01, 0x0a, 0x27, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x32, + 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, + 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, + 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x43, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x5f, 0x0a, 0x1a, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x32, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x22, 0x61, 0x0a, 0x1c, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x32, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x6c, - 0x64, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x65, 0x77, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x65, - 0x77, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x95, 0x01, 0x0a, - 0x27, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x32, 0x52, 0x65, - 0x71, 0x75, 0x69, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x72, - 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x43, 0x6f, 0x6d, - 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x5f, 0x0a, 0x1a, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, - 0x65, 0x6e, 0x74, 0x56, 0x32, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x49, 0x64, 0x22, 0x61, 0x0a, 0x1c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x32, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x22, 0xa9, 0x02, 0x0a, 0x17, 0x41, 0x75, 0x74, - 0x6f, 0x4f, 0x70, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, - 0x76, 0x65, 0x6e, 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, 0x35, 0x0a, 0x08, 0x6f, 0x70, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, - 0x72, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x6f, 0x70, 0x73, 0x2e, 0x4f, 0x70, 0x73, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x07, 0x6f, 0x70, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x63, 0x6c, - 0x61, 0x75, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x6f, 0x70, 0x73, 0x2e, - 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x73, 0x12, - 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, - 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3f, 0x0a, - 0x0a, 0x6f, 0x70, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x20, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x75, - 0x74, 0x6f, 0x6f, 0x70, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x73, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x09, 0x6f, 0x70, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4a, 0x04, - 0x08, 0x04, 0x10, 0x05, 0x22, 0x19, 0x0a, 0x17, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x73, 0x52, - 0x75, 0x6c, 0x65, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, - 0x19, 0x0a, 0x17, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x57, 0x0a, 0x1e, 0x41, 0x75, - 0x74, 0x6f, 0x4f, 0x70, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x4f, 0x70, 0x73, 0x54, 0x79, 0x70, 0x65, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x08, - 0x6f, 0x70, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, - 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x6f, - 0x70, 0x73, 0x2e, 0x4f, 0x70, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x73, 0x54, - 0x79, 0x70, 0x65, 0x22, 0x24, 0x0a, 0x22, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x73, 0x52, 0x75, - 0x6c, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x41, 0x74, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x63, 0x0a, 0x20, 0x41, 0x75, 0x74, - 0x6f, 0x4f, 0x70, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x4f, 0x70, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, - 0x0a, 0x6f, 0x70, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x20, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x75, - 0x74, 0x6f, 0x6f, 0x70, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x73, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x09, 0x6f, 0x70, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x95, - 0x01, 0x0a, 0x1c, 0x4f, 0x70, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x43, - 0x6c, 0x61, 0x75, 0x73, 0x65, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x49, 0x64, 0x12, 0x58, 0x0a, 0x15, - 0x6f, 0x70, 0x73, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x63, - 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x6f, 0x70, 0x73, 0x2e, - 0x4f, 0x70, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x75, - 0x73, 0x65, 0x52, 0x12, 0x6f, 0x70, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, - 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x1e, 0x4f, 0x70, 0x73, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x61, - 0x75, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, - 0x61, 0x75, 0x73, 0x65, 0x49, 0x64, 0x12, 0x58, 0x0a, 0x15, 0x6f, 0x70, 0x73, 0x5f, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, - 0x72, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x6f, 0x70, 0x73, 0x2e, 0x4f, 0x70, 0x73, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x52, 0x12, 0x6f, 0x70, - 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, - 0x22, 0x3c, 0x0a, 0x1d, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x43, - 0x6c, 0x61, 0x75, 0x73, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, + 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x22, 0xa9, 0x02, 0x0a, 0x17, 0x41, + 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x35, 0x0a, 0x08, 0x6f, 0x70, 0x73, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x65, 0x65, 0x72, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x6f, 0x70, 0x73, 0x2e, 0x4f, 0x70, 0x73, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x07, + 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x6f, 0x70, + 0x73, 0x2e, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, + 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x3f, 0x0a, 0x0a, 0x6f, 0x70, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, + 0x61, 0x75, 0x74, 0x6f, 0x6f, 0x70, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x73, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x6f, 0x70, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x19, 0x0a, 0x17, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, + 0x73, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x22, 0x19, 0x0a, 0x17, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x73, 0x52, 0x75, 0x6c, 0x65, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x57, 0x0a, 0x1e, + 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x4f, 0x70, 0x73, 0x54, 0x79, + 0x70, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x35, + 0x0a, 0x08, 0x6f, 0x70, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1a, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x75, 0x74, + 0x6f, 0x6f, 0x70, 0x73, 0x2e, 0x4f, 0x70, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x6f, 0x70, + 0x73, 0x54, 0x79, 0x70, 0x65, 0x22, 0x24, 0x0a, 0x22, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x73, + 0x52, 0x75, 0x6c, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x41, 0x74, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x63, 0x0a, 0x20, 0x41, + 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x4f, 0x70, 0x73, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x3f, 0x0a, 0x0a, 0x6f, 0x70, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, + 0x61, 0x75, 0x74, 0x6f, 0x6f, 0x70, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x73, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x6f, 0x70, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x22, 0x95, 0x01, 0x0a, 0x1c, 0x4f, 0x70, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, + 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x49, 0x64, 0x22, 0x83, - 0x01, 0x0a, 0x18, 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, - 0x65, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x49, 0x64, 0x12, 0x58, + 0x0a, 0x15, 0x6f, 0x70, 0x73, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, + 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x6f, 0x70, + 0x73, 0x2e, 0x4f, 0x70, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x43, 0x6c, + 0x61, 0x75, 0x73, 0x65, 0x52, 0x12, 0x6f, 0x70, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x61, + 0x74, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x1e, 0x4f, 0x70, 0x73, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x49, 0x64, 0x12, 0x4a, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x65, - 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x75, - 0x74, 0x6f, 0x6f, 0x70, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6c, - 0x61, 0x75, 0x73, 0x65, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6c, - 0x61, 0x75, 0x73, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x1a, 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, - 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, + 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x49, 0x64, 0x12, 0x58, 0x0a, 0x15, 0x6f, 0x70, 0x73, 0x5f, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x65, 0x65, 0x72, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x6f, 0x70, 0x73, 0x2e, 0x4f, 0x70, 0x73, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x52, 0x12, + 0x6f, 0x70, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x61, 0x75, + 0x73, 0x65, 0x22, 0x3c, 0x0a, 0x1d, 0x41, 0x75, 0x74, 0x6f, 0x4f, 0x70, 0x73, 0x52, 0x75, 0x6c, + 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x49, 0x64, - 0x12, 0x4a, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, - 0x75, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x6f, 0x70, 0x73, 0x2e, 0x44, 0x61, - 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x52, 0x0e, 0x64, 0x61, - 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x22, 0x70, 0x0a, 0x10, - 0x50, 0x75, 0x73, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x2e, 0x0a, 0x13, 0x66, 0x63, 0x6d, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x66, - 0x63, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, - 0x74, 0x61, 0x67, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x12, - 0x0a, 0x10, 0x50, 0x75, 0x73, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x22, 0x28, 0x0a, 0x12, 0x50, 0x75, 0x73, 0x68, 0x54, 0x61, 0x67, 0x73, 0x41, 0x64, - 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x2a, 0x0a, 0x14, - 0x50, 0x75, 0x73, 0x68, 0x54, 0x61, 0x67, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x26, 0x0a, 0x10, 0x50, 0x75, 0x73, 0x68, - 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x2a, 0x0a, 0x14, 0x50, 0x75, 0x73, 0x68, 0x54, 0x61, 0x67, 0x73, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x58, 0x0a, 0x10, - 0x50, 0x75, 0x73, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 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, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0xef, 0x01, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x22, 0x83, 0x01, 0x0a, 0x18, 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6c, 0x61, + 0x75, 0x73, 0x65, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, + 0x09, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x49, 0x64, 0x12, 0x4a, 0x0a, 0x0f, 0x64, 0x61, + 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, + 0x61, 0x75, 0x74, 0x6f, 0x6f, 0x70, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, + 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, + 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x1a, 0x44, 0x61, 0x74, 0x65, 0x74, + 0x69, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, + 0x49, 0x64, 0x12, 0x4a, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, + 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x6f, 0x70, 0x73, 0x2e, + 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x52, 0x0e, + 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x22, 0x70, + 0x0a, 0x10, 0x50, 0x75, 0x73, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x66, 0x63, 0x6d, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x11, 0x66, 0x63, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, + 0x22, 0x12, 0x0a, 0x10, 0x50, 0x75, 0x73, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x22, 0x28, 0x0a, 0x12, 0x50, 0x75, 0x73, 0x68, 0x54, 0x61, 0x67, 0x73, + 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x2a, + 0x0a, 0x14, 0x50, 0x75, 0x73, 0x68, 0x54, 0x61, 0x67, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x26, 0x0a, 0x10, 0x50, 0x75, + 0x73, 0x68, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x50, 0x75, 0x73, 0x68, 0x54, 0x61, 0x67, 0x73, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x58, + 0x0a, 0x10, 0x50, 0x75, 0x73, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 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, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0xef, 0x01, 0x0a, 0x18, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x72, 0x65, 0x63, + 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x52, + 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, + 0x0a, 0x11, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, + 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x66, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x61, 0x67, 0x73, 0x22, 0x1a, 0x0a, 0x18, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x1a, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x22, 0x1b, 0x0a, 0x19, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, + 0x77, 0x0a, 0x21, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x79, 0x0a, 0x23, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x52, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, + 0x72, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x73, 0x22, 0x2e, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0x55, 0x0a, 0x27, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x61, + 0x67, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x2a, + 0x0a, 0x11, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, + 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x66, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x61, 0x67, 0x73, 0x22, 0x94, 0x02, 0x0a, 0x18, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 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, 0x52, 0x0a, 0x0c, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, + 0x2f, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x36, 0x0a, + 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x64, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x61, 0x67, + 0x73, 0x22, 0xc8, 0x01, 0x0a, 0x1d, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x62, 0x75, 0x63, 0x6b, @@ -12899,428 +13068,366 @@ var file_proto_event_domain_event_proto_rawDesc = []byte{ 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, - 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, 0x61, 0x67, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x46, 0x6c, 0x61, 0x67, 0x54, 0x61, 0x67, 0x73, 0x22, 0x1a, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x22, 0x1a, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x22, 0x1b, 0x0a, 0x19, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x77, 0x0a, - 0x21, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x65, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x79, 0x0a, 0x23, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, - 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, - 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x73, 0x22, 0x2e, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0x55, 0x0a, 0x27, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x61, 0x67, 0x73, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x11, - 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x74, 0x61, 0x67, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x46, 0x6c, 0x61, 0x67, 0x54, 0x61, 0x67, 0x73, 0x22, 0x94, 0x02, 0x0a, 0x18, 0x53, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 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, 0x52, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2f, 0x2e, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x66, - 0x6c, 0x61, 0x67, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, - 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x61, 0x67, 0x73, 0x22, - 0xc8, 0x01, 0x0a, 0x1d, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x52, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x65, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, - 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x65, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x72, 0x65, 0x63, - 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x41, 0x64, - 0x6d, 0x69, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x1f, 0x0a, 0x1d, 0x41, - 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x20, 0x0a, 0x1e, - 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x7c, - 0x0a, 0x26, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x41, 0x64, - 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2f, - 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x7e, 0x0a, 0x28, - 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2f, - 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x33, 0x0a, 0x1d, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0x8b, 0x02, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x72, 0x69, 0x61, 0x6c, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x23, 0x0a, - 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x45, 0x6d, 0x61, - 0x69, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x72, 0x6c, 0x5f, 0x63, 0x6f, 0x64, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x72, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x22, - 0x52, 0x0a, 0x1e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x39, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x25, - 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x26, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x90, 0x02, - 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x72, 0x69, 0x61, - 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x23, - 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x45, 0x6d, - 0x61, 0x69, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x72, 0x6c, 0x5f, 0x63, 0x6f, 0x64, - 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x72, 0x6c, 0x43, 0x6f, 0x64, 0x65, - 0x22, 0x2c, 0x0a, 0x1a, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x72, 0x69, 0x61, 0x6c, - 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5d, - 0x0a, 0x16, 0x50, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x41, 0x64, - 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x72, - 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x2e, 0x50, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x52, - 0x0c, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x22, 0x68, 0x0a, - 0x21, 0x50, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x56, 0x61, 0x72, - 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, - 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x65, - 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x72, 0x65, - 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x22, 0x39, 0x0a, 0x18, 0x50, 0x72, 0x65, 0x72, 0x65, - 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45, 0x76, - 0x65, 0x6e, 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, 0x22, 0xfb, 0x01, 0x0a, 0x1e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x76, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x75, - 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, - 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x6f, - 0x70, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, 0x76, 0x65, 0x52, 0x6f, - 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x22, 0xe5, 0x01, 0x0a, 0x1e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, 0x76, 0x65, - 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x45, 0x76, + 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x1f, 0x0a, + 0x1d, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x20, + 0x0a, 0x1e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x22, 0x7c, 0x0a, 0x26, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, + 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x0c, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, + 0x32, 0x2f, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x7e, + 0x0a, 0x28, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x0c, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, + 0x32, 0x2f, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x6e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x33, + 0x0a, 0x1d, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0x8b, 0x02, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, + 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x72, 0x69, + 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x12, + 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x45, + 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x72, 0x6c, 0x5f, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x72, 0x6c, 0x43, 0x6f, 0x64, + 0x65, 0x22, 0x52, 0x0a, 0x1e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x44, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, - 0x61, 0x75, 0x74, 0x6f, 0x6f, 0x70, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x76, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4e, 0x0a, 0x0a, 0x73, 0x74, 0x6f, - 0x70, 0x70, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x6f, 0x70, - 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, 0x76, 0x65, 0x52, 0x6f, 0x6c, - 0x6c, 0x6f, 0x75, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x42, 0x79, 0x52, 0x09, - 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x42, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, - 0x70, 0x70, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, - 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x41, 0x74, 0x22, 0x30, 0x0a, 0x1e, 0x50, 0x72, 0x6f, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x76, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x54, 0x0a, 0x31, 0x50, 0x72, + 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x39, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x25, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x26, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, + 0x90, 0x02, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x72, 0x69, 0x61, 0x6c, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, + 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x72, + 0x69, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x74, 0x72, 0x69, 0x61, 0x6c, + 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, + 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, + 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x72, 0x6c, 0x5f, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x72, 0x6c, 0x43, 0x6f, + 0x64, 0x65, 0x22, 0x2c, 0x0a, 0x1a, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x72, 0x69, + 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x22, 0x5d, 0x0a, 0x16, 0x50, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, + 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0c, 0x70, 0x72, + 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, + 0x65, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x22, + 0x68, 0x0a, 0x21, 0x50, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, + 0x73, 0x69, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x50, + 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x52, 0x0c, 0x70, 0x72, 0x65, + 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x22, 0x39, 0x0a, 0x18, 0x50, 0x72, 0x65, + 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, + 0x45, 0x76, 0x65, 0x6e, 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, 0x22, 0xfb, 0x01, 0x0a, 0x1e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x76, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x63, 0x6c, + 0x61, 0x75, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2a, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x75, 0x74, + 0x6f, 0x6f, 0x70, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, 0x76, 0x65, + 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x1e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x76, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x44, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, + 0x72, 0x2e, 0x61, 0x75, 0x74, 0x6f, 0x6f, 0x70, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x76, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4e, 0x0a, 0x0a, 0x73, + 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2f, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x61, 0x75, 0x74, 0x6f, + 0x6f, 0x70, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, 0x76, 0x65, 0x52, + 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x42, 0x79, + 0x52, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x42, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, + 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x09, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x41, 0x74, 0x22, 0x30, 0x0a, 0x1e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, 0x76, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, - 0x64, 0x41, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x64, - 0x22, 0xa8, 0x02, 0x0a, 0x18, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x54, 0x0a, 0x31, + 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, 0x76, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, + 0x75, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x65, 0x64, 0x41, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x49, 0x64, 0x22, 0xa8, 0x02, 0x0a, 0x18, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x72, 0x6c, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x72, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x72, 0x69, 0x61, + 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x1d, + 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x57, 0x0a, + 0x23, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x55, 0x0a, 0x22, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, + 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x42, 0x0a, + 0x1c, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x72, 0x6c, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x72, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, - 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x77, - 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x57, 0x0a, 0x23, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x65, 0x22, 0x2a, 0x0a, 0x18, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2b, 0x0a, + 0x19, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x19, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2d, 0x0a, 0x1b, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x31, 0x0a, 0x1f, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xe3, 0x02, 0x0a, 0x17, 0x46, 0x6c, + 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x23, 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, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 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, 0x2e, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0a, 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, + 0x89, 0x01, 0x0a, 0x15, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 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, 0x03, 0x10, 0x04, 0x22, 0xa2, 0x01, 0x0a, 0x22, + 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x55, 0x0a, 0x22, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x77, - 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x42, 0x0a, 0x1c, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0x2a, 0x0a, 0x18, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x19, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x19, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2d, 0x0a, 0x1b, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x22, 0x31, 0x0a, 0x1f, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, - 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xe3, 0x02, 0x0a, 0x17, 0x46, 0x6c, 0x61, 0x67, - 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, + 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x49, + 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 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, 0x03, 0x10, 0x04, + 0x22, 0x76, 0x0a, 0x18, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x44, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, + 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 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, 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, 0x75, 0x0a, 0x17, 0x46, 0x6c, 0x61, 0x67, + 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x49, 0x64, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x23, 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, - 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 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, 0x2e, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x0a, 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, 0x89, 0x01, - 0x0a, 0x15, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 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, 0x03, 0x10, 0x04, 0x22, 0xa2, 0x01, 0x0a, 0x22, 0x46, 0x6c, - 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, - 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 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, 0x03, 0x10, 0x04, 0x22, 0x76, - 0x0a, 0x18, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x44, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x49, 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, + 0x75, 0x0a, 0x17, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 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, 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, 0x75, 0x0a, 0x17, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x02, 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, 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, 0x75, 0x0a, - 0x17, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 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, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xcb, 0x01, 0x0a, 0x1c, 0x46, 0x6c, 0x61, 0x67, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 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, 0xcb, 0x01, 0x0a, 0x1c, 0x46, 0x6c, 0x61, 0x67, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 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, 0x55, 0x0a, 0x1e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x46, - 0x69, 0x72, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, - 0x72, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x66, 0x69, 0x72, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x52, 0x0a, 0x1d, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x4c, 0x61, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x51, 0x0a, - 0x1d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, - 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, - 0x22, 0xda, 0x01, 0x0a, 0x0f, 0x54, 0x61, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3e, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x54, 0x61, 0x67, 0x2e, - 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x48, 0x0a, - 0x0f, 0x54, 0x61, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 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, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xc9, 0x04, 0x0a, 0x19, 0x43, 0x6f, 0x64, 0x65, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, - 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x6e, 0x69, 0x70, 0x70, - 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x6e, - 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, - 0x73, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, - 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x72, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x79, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2f, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x64, 0x65, - 0x72, 0x65, 0x66, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x62, - 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1f, 0x0a, - 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x25, - 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x22, 0xdd, 0x02, 0x0a, 0x19, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1f, - 0x0a, 0x0b, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x6e, 0x69, 0x70, 0x70, - 0x65, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, - 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x62, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1f, 0x0a, 0x0b, - 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x25, 0x0a, - 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x22, 0x52, 0x0a, 0x19, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x08, 0x03, 0x10, 0x04, 0x22, 0x55, 0x0a, 0x1e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, + 0x32, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, + 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x66, 0x69, 0x72, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x52, 0x0a, 0x1d, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x4c, 0x61, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, + 0x51, 0x0a, 0x1d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x32, 0x4c, 0x61, 0x6e, 0x67, + 0x75, 0x61, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, + 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, + 0x67, 0x65, 0x22, 0xda, 0x01, 0x0a, 0x0f, 0x54, 0x61, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3e, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x74, 0x61, 0x67, 0x2e, 0x54, 0x61, + 0x67, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, + 0x48, 0x0a, 0x0f, 0x54, 0x61, 0x67, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, + 0x6e, 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, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xc9, 0x04, 0x0a, 0x19, 0x43, 0x6f, + 0x64, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, + 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, + 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x6e, 0x69, + 0x70, 0x70, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x64, 0x65, + 0x53, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, + 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x69, + 0x61, 0x73, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, + 0x10, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6f, 0x77, 0x6e, 0x65, + 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2f, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x63, 0x6f, + 0x64, 0x65, 0x72, 0x65, 0x66, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, + 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x36, 0x5a, 0x34, 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, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xdd, 0x02, 0x0a, 0x19, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, + 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x6e, 0x69, + 0x70, 0x70, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, + 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, + 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1f, + 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, + 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x52, 0x0a, 0x19, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, + 0x6e, 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, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x36, 0x5a, 0x34, 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, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2f, 0x64, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -13336,7 +13443,7 @@ func file_proto_event_domain_event_proto_rawDescGZIP() []byte { } var file_proto_event_domain_event_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_proto_event_domain_event_proto_msgTypes = make([]protoimpl.MessageInfo, 177) +var file_proto_event_domain_event_proto_msgTypes = make([]protoimpl.MessageInfo, 178) var file_proto_event_domain_event_proto_goTypes = []interface{}{ (Event_EntityType)(0), // 0: bucketeer.event.domain.Event.EntityType (Event_Type)(0), // 1: bucketeer.event.domain.Event.Type @@ -13395,249 +13502,252 @@ var file_proto_event_domain_event_proto_goTypes = []interface{}{ (*ExperimentPeriodChangedEvent)(nil), // 54: bucketeer.event.domain.ExperimentPeriodChangedEvent (*ExperimentNameChangedEvent)(nil), // 55: bucketeer.event.domain.ExperimentNameChangedEvent (*ExperimentDescriptionChangedEvent)(nil), // 56: bucketeer.event.domain.ExperimentDescriptionChangedEvent - (*ExperimentStartedEvent)(nil), // 57: bucketeer.event.domain.ExperimentStartedEvent - (*ExperimentFinishedEvent)(nil), // 58: bucketeer.event.domain.ExperimentFinishedEvent - (*AccountV2CreatedEvent)(nil), // 59: bucketeer.event.domain.AccountV2CreatedEvent - (*AccountV2UpdatedEvent)(nil), // 60: bucketeer.event.domain.AccountV2UpdatedEvent - (*AccountV2NameChangedEvent)(nil), // 61: bucketeer.event.domain.AccountV2NameChangedEvent - (*AccountV2AvatarImageURLChangedEvent)(nil), // 62: bucketeer.event.domain.AccountV2AvatarImageURLChangedEvent - (*AccountV2TagsChangedEvent)(nil), // 63: bucketeer.event.domain.AccountV2TagsChangedEvent - (*AccountV2OrganizationRoleChangedEvent)(nil), // 64: bucketeer.event.domain.AccountV2OrganizationRoleChangedEvent - (*AccountV2EnvironmentRolesChangedEvent)(nil), // 65: bucketeer.event.domain.AccountV2EnvironmentRolesChangedEvent - (*AccountV2EnabledEvent)(nil), // 66: bucketeer.event.domain.AccountV2EnabledEvent - (*AccountV2DisabledEvent)(nil), // 67: bucketeer.event.domain.AccountV2DisabledEvent - (*AccountV2DeletedEvent)(nil), // 68: bucketeer.event.domain.AccountV2DeletedEvent - (*SearchFilterCreatedEvent)(nil), // 69: bucketeer.event.domain.SearchFilterCreatedEvent - (*SearchFilterNameChangedEvent)(nil), // 70: bucketeer.event.domain.SearchFilterNameChangedEvent - (*SearchFilterQueryChangedEvent)(nil), // 71: bucketeer.event.domain.SearchFilterQueryChangedEvent - (*SearchFilterDefaultChangedEvent)(nil), // 72: bucketeer.event.domain.SearchFilterDefaultChangedEvent - (*SearchFilterDeletedEvent)(nil), // 73: bucketeer.event.domain.SearchFilterDeletedEvent - (*APIKeyCreatedEvent)(nil), // 74: bucketeer.event.domain.APIKeyCreatedEvent - (*APIKeyChangedEvent)(nil), // 75: bucketeer.event.domain.APIKeyChangedEvent - (*APIKeyNameChangedEvent)(nil), // 76: bucketeer.event.domain.APIKeyNameChangedEvent - (*APIKeyEnabledEvent)(nil), // 77: bucketeer.event.domain.APIKeyEnabledEvent - (*APIKeyDisabledEvent)(nil), // 78: bucketeer.event.domain.APIKeyDisabledEvent - (*SegmentCreatedEvent)(nil), // 79: bucketeer.event.domain.SegmentCreatedEvent - (*SegmentDeletedEvent)(nil), // 80: bucketeer.event.domain.SegmentDeletedEvent - (*SegmentUpdatedEvent)(nil), // 81: bucketeer.event.domain.SegmentUpdatedEvent - (*SegmentNameChangedEvent)(nil), // 82: bucketeer.event.domain.SegmentNameChangedEvent - (*SegmentDescriptionChangedEvent)(nil), // 83: bucketeer.event.domain.SegmentDescriptionChangedEvent - (*SegmentRuleAddedEvent)(nil), // 84: bucketeer.event.domain.SegmentRuleAddedEvent - (*SegmentRuleDeletedEvent)(nil), // 85: bucketeer.event.domain.SegmentRuleDeletedEvent - (*SegmentRuleClauseAddedEvent)(nil), // 86: bucketeer.event.domain.SegmentRuleClauseAddedEvent - (*SegmentRuleClauseDeletedEvent)(nil), // 87: bucketeer.event.domain.SegmentRuleClauseDeletedEvent - (*SegmentClauseAttributeChangedEvent)(nil), // 88: bucketeer.event.domain.SegmentClauseAttributeChangedEvent - (*SegmentClauseOperatorChangedEvent)(nil), // 89: bucketeer.event.domain.SegmentClauseOperatorChangedEvent - (*SegmentClauseValueAddedEvent)(nil), // 90: bucketeer.event.domain.SegmentClauseValueAddedEvent - (*SegmentClauseValueRemovedEvent)(nil), // 91: bucketeer.event.domain.SegmentClauseValueRemovedEvent - (*SegmentUserAddedEvent)(nil), // 92: bucketeer.event.domain.SegmentUserAddedEvent - (*SegmentUserDeletedEvent)(nil), // 93: bucketeer.event.domain.SegmentUserDeletedEvent - (*SegmentBulkUploadUsersEvent)(nil), // 94: bucketeer.event.domain.SegmentBulkUploadUsersEvent - (*SegmentBulkUploadUsersStatusChangedEvent)(nil), // 95: bucketeer.event.domain.SegmentBulkUploadUsersStatusChangedEvent - (*EnvironmentCreatedEvent)(nil), // 96: bucketeer.event.domain.EnvironmentCreatedEvent - (*EnvironmentRenamedEvent)(nil), // 97: bucketeer.event.domain.EnvironmentRenamedEvent - (*EnvironmentDescriptionChangedEvent)(nil), // 98: bucketeer.event.domain.EnvironmentDescriptionChangedEvent - (*EnvironmentDeletedEvent)(nil), // 99: bucketeer.event.domain.EnvironmentDeletedEvent - (*EnvironmentV2CreatedEvent)(nil), // 100: bucketeer.event.domain.EnvironmentV2CreatedEvent - (*EnvironmentV2RenamedEvent)(nil), // 101: bucketeer.event.domain.EnvironmentV2RenamedEvent - (*EnvironmentV2DescriptionChangedEvent)(nil), // 102: bucketeer.event.domain.EnvironmentV2DescriptionChangedEvent - (*EnvironmentV2RequireCommentChangedEvent)(nil), // 103: bucketeer.event.domain.EnvironmentV2RequireCommentChangedEvent - (*EnvironmentV2ArchivedEvent)(nil), // 104: bucketeer.event.domain.EnvironmentV2ArchivedEvent - (*EnvironmentV2UnarchivedEvent)(nil), // 105: bucketeer.event.domain.EnvironmentV2UnarchivedEvent - (*AutoOpsRuleCreatedEvent)(nil), // 106: bucketeer.event.domain.AutoOpsRuleCreatedEvent - (*AutoOpsRuleStoppedEvent)(nil), // 107: bucketeer.event.domain.AutoOpsRuleStoppedEvent - (*AutoOpsRuleDeletedEvent)(nil), // 108: bucketeer.event.domain.AutoOpsRuleDeletedEvent - (*AutoOpsRuleOpsTypeChangedEvent)(nil), // 109: bucketeer.event.domain.AutoOpsRuleOpsTypeChangedEvent - (*AutoOpsRuleTriggeredAtChangedEvent)(nil), // 110: bucketeer.event.domain.AutoOpsRuleTriggeredAtChangedEvent - (*AutoOpsRuleOpsStatusChangedEvent)(nil), // 111: bucketeer.event.domain.AutoOpsRuleOpsStatusChangedEvent - (*OpsEventRateClauseAddedEvent)(nil), // 112: bucketeer.event.domain.OpsEventRateClauseAddedEvent - (*OpsEventRateClauseChangedEvent)(nil), // 113: bucketeer.event.domain.OpsEventRateClauseChangedEvent - (*AutoOpsRuleClauseDeletedEvent)(nil), // 114: bucketeer.event.domain.AutoOpsRuleClauseDeletedEvent - (*DatetimeClauseAddedEvent)(nil), // 115: bucketeer.event.domain.DatetimeClauseAddedEvent - (*DatetimeClauseChangedEvent)(nil), // 116: bucketeer.event.domain.DatetimeClauseChangedEvent - (*PushCreatedEvent)(nil), // 117: bucketeer.event.domain.PushCreatedEvent - (*PushDeletedEvent)(nil), // 118: bucketeer.event.domain.PushDeletedEvent - (*PushTagsAddedEvent)(nil), // 119: bucketeer.event.domain.PushTagsAddedEvent - (*PushTagsDeletedEvent)(nil), // 120: bucketeer.event.domain.PushTagsDeletedEvent - (*PushRenamedEvent)(nil), // 121: bucketeer.event.domain.PushRenamedEvent - (*PushTagsUpdatedEvent)(nil), // 122: bucketeer.event.domain.PushTagsUpdatedEvent - (*PushUpdatedEvent)(nil), // 123: bucketeer.event.domain.PushUpdatedEvent - (*SubscriptionCreatedEvent)(nil), // 124: bucketeer.event.domain.SubscriptionCreatedEvent - (*SubscriptionDeletedEvent)(nil), // 125: bucketeer.event.domain.SubscriptionDeletedEvent - (*SubscriptionEnabledEvent)(nil), // 126: bucketeer.event.domain.SubscriptionEnabledEvent - (*SubscriptionDisabledEvent)(nil), // 127: bucketeer.event.domain.SubscriptionDisabledEvent - (*SubscriptionSourceTypesAddedEvent)(nil), // 128: bucketeer.event.domain.SubscriptionSourceTypesAddedEvent - (*SubscriptionSourceTypesDeletedEvent)(nil), // 129: bucketeer.event.domain.SubscriptionSourceTypesDeletedEvent - (*SubscriptionRenamedEvent)(nil), // 130: bucketeer.event.domain.SubscriptionRenamedEvent - (*SubscriptionFeatureFlagTagsUpdatedEvent)(nil), // 131: bucketeer.event.domain.SubscriptionFeatureFlagTagsUpdatedEvent - (*SubscriptionUpdatedEvent)(nil), // 132: bucketeer.event.domain.SubscriptionUpdatedEvent - (*AdminSubscriptionCreatedEvent)(nil), // 133: bucketeer.event.domain.AdminSubscriptionCreatedEvent - (*AdminSubscriptionDeletedEvent)(nil), // 134: bucketeer.event.domain.AdminSubscriptionDeletedEvent - (*AdminSubscriptionEnabledEvent)(nil), // 135: bucketeer.event.domain.AdminSubscriptionEnabledEvent - (*AdminSubscriptionDisabledEvent)(nil), // 136: bucketeer.event.domain.AdminSubscriptionDisabledEvent - (*AdminSubscriptionSourceTypesAddedEvent)(nil), // 137: bucketeer.event.domain.AdminSubscriptionSourceTypesAddedEvent - (*AdminSubscriptionSourceTypesDeletedEvent)(nil), // 138: bucketeer.event.domain.AdminSubscriptionSourceTypesDeletedEvent - (*AdminSubscriptionRenamedEvent)(nil), // 139: bucketeer.event.domain.AdminSubscriptionRenamedEvent - (*ProjectCreatedEvent)(nil), // 140: bucketeer.event.domain.ProjectCreatedEvent - (*ProjectDescriptionChangedEvent)(nil), // 141: bucketeer.event.domain.ProjectDescriptionChangedEvent - (*ProjectRenamedEvent)(nil), // 142: bucketeer.event.domain.ProjectRenamedEvent - (*ProjectEnabledEvent)(nil), // 143: bucketeer.event.domain.ProjectEnabledEvent - (*ProjectDisabledEvent)(nil), // 144: bucketeer.event.domain.ProjectDisabledEvent - (*ProjectTrialCreatedEvent)(nil), // 145: bucketeer.event.domain.ProjectTrialCreatedEvent - (*ProjectTrialConvertedEvent)(nil), // 146: bucketeer.event.domain.ProjectTrialConvertedEvent - (*PrerequisiteAddedEvent)(nil), // 147: bucketeer.event.domain.PrerequisiteAddedEvent - (*PrerequisiteVariationChangedEvent)(nil), // 148: bucketeer.event.domain.PrerequisiteVariationChangedEvent - (*PrerequisiteRemovedEvent)(nil), // 149: bucketeer.event.domain.PrerequisiteRemovedEvent - (*ProgressiveRolloutCreatedEvent)(nil), // 150: bucketeer.event.domain.ProgressiveRolloutCreatedEvent - (*ProgressiveRolloutStoppedEvent)(nil), // 151: bucketeer.event.domain.ProgressiveRolloutStoppedEvent - (*ProgressiveRolloutDeletedEvent)(nil), // 152: bucketeer.event.domain.ProgressiveRolloutDeletedEvent - (*ProgressiveRolloutScheduleTriggeredAtChangedEvent)(nil), // 153: bucketeer.event.domain.ProgressiveRolloutScheduleTriggeredAtChangedEvent - (*OrganizationCreatedEvent)(nil), // 154: bucketeer.event.domain.OrganizationCreatedEvent - (*OrganizationDescriptionChangedEvent)(nil), // 155: bucketeer.event.domain.OrganizationDescriptionChangedEvent - (*OrganizationOwnerEmailChangedEvent)(nil), // 156: bucketeer.event.domain.OrganizationOwnerEmailChangedEvent - (*OrganizationNameChangedEvent)(nil), // 157: bucketeer.event.domain.OrganizationNameChangedEvent - (*OrganizationEnabledEvent)(nil), // 158: bucketeer.event.domain.OrganizationEnabledEvent - (*OrganizationDisabledEvent)(nil), // 159: bucketeer.event.domain.OrganizationDisabledEvent - (*OrganizationArchivedEvent)(nil), // 160: bucketeer.event.domain.OrganizationArchivedEvent - (*OrganizationUnarchivedEvent)(nil), // 161: bucketeer.event.domain.OrganizationUnarchivedEvent - (*OrganizationTrialConvertedEvent)(nil), // 162: bucketeer.event.domain.OrganizationTrialConvertedEvent - (*FlagTriggerCreatedEvent)(nil), // 163: bucketeer.event.domain.FlagTriggerCreatedEvent - (*FlagTriggerResetEvent)(nil), // 164: bucketeer.event.domain.FlagTriggerResetEvent - (*FlagTriggerDescriptionChangedEvent)(nil), // 165: bucketeer.event.domain.FlagTriggerDescriptionChangedEvent - (*FlagTriggerDisabledEvent)(nil), // 166: bucketeer.event.domain.FlagTriggerDisabledEvent - (*FlagTriggerEnabledEvent)(nil), // 167: bucketeer.event.domain.FlagTriggerEnabledEvent - (*FlagTriggerDeletedEvent)(nil), // 168: bucketeer.event.domain.FlagTriggerDeletedEvent - (*FlagTriggerUsageUpdatedEvent)(nil), // 169: bucketeer.event.domain.FlagTriggerUsageUpdatedEvent - (*AccountV2FirstNameChangedEvent)(nil), // 170: bucketeer.event.domain.AccountV2FirstNameChangedEvent - (*AccountV2LastNameChangedEvent)(nil), // 171: bucketeer.event.domain.AccountV2LastNameChangedEvent - (*AccountV2LanguageChangedEvent)(nil), // 172: bucketeer.event.domain.AccountV2LanguageChangedEvent - (*TagCreatedEvent)(nil), // 173: bucketeer.event.domain.TagCreatedEvent - (*TagDeletedEvent)(nil), // 174: bucketeer.event.domain.TagDeletedEvent - (*CodeReferenceCreatedEvent)(nil), // 175: bucketeer.event.domain.CodeReferenceCreatedEvent - (*CodeReferenceUpdatedEvent)(nil), // 176: bucketeer.event.domain.CodeReferenceUpdatedEvent - (*CodeReferenceDeletedEvent)(nil), // 177: bucketeer.event.domain.CodeReferenceDeletedEvent - (*Editor_PublicAPIEditor)(nil), // 178: bucketeer.event.domain.Editor.PublicAPIEditor - (*anypb.Any)(nil), // 179: google.protobuf.Any - (*feature.Variation)(nil), // 180: bucketeer.feature.Variation - (*wrapperspb.Int32Value)(nil), // 181: google.protobuf.Int32Value - (feature.Feature_VariationType)(0), // 182: bucketeer.feature.Feature.VariationType - (*feature.Prerequisite)(nil), // 183: bucketeer.feature.Prerequisite - (*feature.Rule)(nil), // 184: bucketeer.feature.Rule - (*feature.Target)(nil), // 185: bucketeer.feature.Target - (*feature.Strategy)(nil), // 186: bucketeer.feature.Strategy - (*feature.FixedStrategy)(nil), // 187: bucketeer.feature.FixedStrategy - (*feature.RolloutStrategy)(nil), // 188: bucketeer.feature.RolloutStrategy - (*feature.Clause)(nil), // 189: bucketeer.feature.Clause - (feature.Clause_Operator)(0), // 190: bucketeer.feature.Clause.Operator - (experiment.Goal_ConnectionType)(0), // 191: bucketeer.experiment.Goal.ConnectionType - (*wrapperspb.StringValue)(nil), // 192: google.protobuf.StringValue - (account.AccountV2_Role_Organization)(0), // 193: bucketeer.account.AccountV2.Role.Organization - (*account.AccountV2_EnvironmentRole)(nil), // 194: bucketeer.account.AccountV2.EnvironmentRole - (account.FilterTargetType)(0), // 195: bucketeer.account.FilterTargetType - (account.APIKey_Role)(0), // 196: bucketeer.account.APIKey.Role - (feature.SegmentUser_State)(0), // 197: bucketeer.feature.SegmentUser.State - (feature.Segment_Status)(0), // 198: bucketeer.feature.Segment.Status - (autoops.OpsType)(0), // 199: bucketeer.autoops.OpsType - (*autoops.Clause)(nil), // 200: bucketeer.autoops.Clause - (autoops.AutoOpsStatus)(0), // 201: bucketeer.autoops.AutoOpsStatus - (*autoops.OpsEventRateClause)(nil), // 202: bucketeer.autoops.OpsEventRateClause - (*autoops.DatetimeClause)(nil), // 203: bucketeer.autoops.DatetimeClause - (notification.Subscription_SourceType)(0), // 204: bucketeer.notification.Subscription.SourceType - (*notification.Recipient)(nil), // 205: bucketeer.notification.Recipient - (*wrapperspb.BoolValue)(nil), // 206: google.protobuf.BoolValue - (autoops.ProgressiveRollout_Type)(0), // 207: bucketeer.autoops.ProgressiveRollout.Type - (autoops.ProgressiveRollout_Status)(0), // 208: bucketeer.autoops.ProgressiveRollout.Status - (autoops.ProgressiveRollout_StoppedBy)(0), // 209: bucketeer.autoops.ProgressiveRollout.StoppedBy - (feature.FlagTrigger_Type)(0), // 210: bucketeer.feature.FlagTrigger.Type - (feature.FlagTrigger_Action)(0), // 211: bucketeer.feature.FlagTrigger.Action - (tag.Tag_EntityType)(0), // 212: bucketeer.tag.Tag.EntityType - (coderef.CodeReference_RepositoryType)(0), // 213: bucketeer.coderef.CodeReference.RepositoryType + (*ExperimentUpdatedEvent)(nil), // 57: bucketeer.event.domain.ExperimentUpdatedEvent + (*ExperimentStartedEvent)(nil), // 58: bucketeer.event.domain.ExperimentStartedEvent + (*ExperimentFinishedEvent)(nil), // 59: bucketeer.event.domain.ExperimentFinishedEvent + (*AccountV2CreatedEvent)(nil), // 60: bucketeer.event.domain.AccountV2CreatedEvent + (*AccountV2UpdatedEvent)(nil), // 61: bucketeer.event.domain.AccountV2UpdatedEvent + (*AccountV2NameChangedEvent)(nil), // 62: bucketeer.event.domain.AccountV2NameChangedEvent + (*AccountV2AvatarImageURLChangedEvent)(nil), // 63: bucketeer.event.domain.AccountV2AvatarImageURLChangedEvent + (*AccountV2TagsChangedEvent)(nil), // 64: bucketeer.event.domain.AccountV2TagsChangedEvent + (*AccountV2OrganizationRoleChangedEvent)(nil), // 65: bucketeer.event.domain.AccountV2OrganizationRoleChangedEvent + (*AccountV2EnvironmentRolesChangedEvent)(nil), // 66: bucketeer.event.domain.AccountV2EnvironmentRolesChangedEvent + (*AccountV2EnabledEvent)(nil), // 67: bucketeer.event.domain.AccountV2EnabledEvent + (*AccountV2DisabledEvent)(nil), // 68: bucketeer.event.domain.AccountV2DisabledEvent + (*AccountV2DeletedEvent)(nil), // 69: bucketeer.event.domain.AccountV2DeletedEvent + (*SearchFilterCreatedEvent)(nil), // 70: bucketeer.event.domain.SearchFilterCreatedEvent + (*SearchFilterNameChangedEvent)(nil), // 71: bucketeer.event.domain.SearchFilterNameChangedEvent + (*SearchFilterQueryChangedEvent)(nil), // 72: bucketeer.event.domain.SearchFilterQueryChangedEvent + (*SearchFilterDefaultChangedEvent)(nil), // 73: bucketeer.event.domain.SearchFilterDefaultChangedEvent + (*SearchFilterDeletedEvent)(nil), // 74: bucketeer.event.domain.SearchFilterDeletedEvent + (*APIKeyCreatedEvent)(nil), // 75: bucketeer.event.domain.APIKeyCreatedEvent + (*APIKeyChangedEvent)(nil), // 76: bucketeer.event.domain.APIKeyChangedEvent + (*APIKeyNameChangedEvent)(nil), // 77: bucketeer.event.domain.APIKeyNameChangedEvent + (*APIKeyEnabledEvent)(nil), // 78: bucketeer.event.domain.APIKeyEnabledEvent + (*APIKeyDisabledEvent)(nil), // 79: bucketeer.event.domain.APIKeyDisabledEvent + (*SegmentCreatedEvent)(nil), // 80: bucketeer.event.domain.SegmentCreatedEvent + (*SegmentDeletedEvent)(nil), // 81: bucketeer.event.domain.SegmentDeletedEvent + (*SegmentUpdatedEvent)(nil), // 82: bucketeer.event.domain.SegmentUpdatedEvent + (*SegmentNameChangedEvent)(nil), // 83: bucketeer.event.domain.SegmentNameChangedEvent + (*SegmentDescriptionChangedEvent)(nil), // 84: bucketeer.event.domain.SegmentDescriptionChangedEvent + (*SegmentRuleAddedEvent)(nil), // 85: bucketeer.event.domain.SegmentRuleAddedEvent + (*SegmentRuleDeletedEvent)(nil), // 86: bucketeer.event.domain.SegmentRuleDeletedEvent + (*SegmentRuleClauseAddedEvent)(nil), // 87: bucketeer.event.domain.SegmentRuleClauseAddedEvent + (*SegmentRuleClauseDeletedEvent)(nil), // 88: bucketeer.event.domain.SegmentRuleClauseDeletedEvent + (*SegmentClauseAttributeChangedEvent)(nil), // 89: bucketeer.event.domain.SegmentClauseAttributeChangedEvent + (*SegmentClauseOperatorChangedEvent)(nil), // 90: bucketeer.event.domain.SegmentClauseOperatorChangedEvent + (*SegmentClauseValueAddedEvent)(nil), // 91: bucketeer.event.domain.SegmentClauseValueAddedEvent + (*SegmentClauseValueRemovedEvent)(nil), // 92: bucketeer.event.domain.SegmentClauseValueRemovedEvent + (*SegmentUserAddedEvent)(nil), // 93: bucketeer.event.domain.SegmentUserAddedEvent + (*SegmentUserDeletedEvent)(nil), // 94: bucketeer.event.domain.SegmentUserDeletedEvent + (*SegmentBulkUploadUsersEvent)(nil), // 95: bucketeer.event.domain.SegmentBulkUploadUsersEvent + (*SegmentBulkUploadUsersStatusChangedEvent)(nil), // 96: bucketeer.event.domain.SegmentBulkUploadUsersStatusChangedEvent + (*EnvironmentCreatedEvent)(nil), // 97: bucketeer.event.domain.EnvironmentCreatedEvent + (*EnvironmentRenamedEvent)(nil), // 98: bucketeer.event.domain.EnvironmentRenamedEvent + (*EnvironmentDescriptionChangedEvent)(nil), // 99: bucketeer.event.domain.EnvironmentDescriptionChangedEvent + (*EnvironmentDeletedEvent)(nil), // 100: bucketeer.event.domain.EnvironmentDeletedEvent + (*EnvironmentV2CreatedEvent)(nil), // 101: bucketeer.event.domain.EnvironmentV2CreatedEvent + (*EnvironmentV2RenamedEvent)(nil), // 102: bucketeer.event.domain.EnvironmentV2RenamedEvent + (*EnvironmentV2DescriptionChangedEvent)(nil), // 103: bucketeer.event.domain.EnvironmentV2DescriptionChangedEvent + (*EnvironmentV2RequireCommentChangedEvent)(nil), // 104: bucketeer.event.domain.EnvironmentV2RequireCommentChangedEvent + (*EnvironmentV2ArchivedEvent)(nil), // 105: bucketeer.event.domain.EnvironmentV2ArchivedEvent + (*EnvironmentV2UnarchivedEvent)(nil), // 106: bucketeer.event.domain.EnvironmentV2UnarchivedEvent + (*AutoOpsRuleCreatedEvent)(nil), // 107: bucketeer.event.domain.AutoOpsRuleCreatedEvent + (*AutoOpsRuleStoppedEvent)(nil), // 108: bucketeer.event.domain.AutoOpsRuleStoppedEvent + (*AutoOpsRuleDeletedEvent)(nil), // 109: bucketeer.event.domain.AutoOpsRuleDeletedEvent + (*AutoOpsRuleOpsTypeChangedEvent)(nil), // 110: bucketeer.event.domain.AutoOpsRuleOpsTypeChangedEvent + (*AutoOpsRuleTriggeredAtChangedEvent)(nil), // 111: bucketeer.event.domain.AutoOpsRuleTriggeredAtChangedEvent + (*AutoOpsRuleOpsStatusChangedEvent)(nil), // 112: bucketeer.event.domain.AutoOpsRuleOpsStatusChangedEvent + (*OpsEventRateClauseAddedEvent)(nil), // 113: bucketeer.event.domain.OpsEventRateClauseAddedEvent + (*OpsEventRateClauseChangedEvent)(nil), // 114: bucketeer.event.domain.OpsEventRateClauseChangedEvent + (*AutoOpsRuleClauseDeletedEvent)(nil), // 115: bucketeer.event.domain.AutoOpsRuleClauseDeletedEvent + (*DatetimeClauseAddedEvent)(nil), // 116: bucketeer.event.domain.DatetimeClauseAddedEvent + (*DatetimeClauseChangedEvent)(nil), // 117: bucketeer.event.domain.DatetimeClauseChangedEvent + (*PushCreatedEvent)(nil), // 118: bucketeer.event.domain.PushCreatedEvent + (*PushDeletedEvent)(nil), // 119: bucketeer.event.domain.PushDeletedEvent + (*PushTagsAddedEvent)(nil), // 120: bucketeer.event.domain.PushTagsAddedEvent + (*PushTagsDeletedEvent)(nil), // 121: bucketeer.event.domain.PushTagsDeletedEvent + (*PushRenamedEvent)(nil), // 122: bucketeer.event.domain.PushRenamedEvent + (*PushTagsUpdatedEvent)(nil), // 123: bucketeer.event.domain.PushTagsUpdatedEvent + (*PushUpdatedEvent)(nil), // 124: bucketeer.event.domain.PushUpdatedEvent + (*SubscriptionCreatedEvent)(nil), // 125: bucketeer.event.domain.SubscriptionCreatedEvent + (*SubscriptionDeletedEvent)(nil), // 126: bucketeer.event.domain.SubscriptionDeletedEvent + (*SubscriptionEnabledEvent)(nil), // 127: bucketeer.event.domain.SubscriptionEnabledEvent + (*SubscriptionDisabledEvent)(nil), // 128: bucketeer.event.domain.SubscriptionDisabledEvent + (*SubscriptionSourceTypesAddedEvent)(nil), // 129: bucketeer.event.domain.SubscriptionSourceTypesAddedEvent + (*SubscriptionSourceTypesDeletedEvent)(nil), // 130: bucketeer.event.domain.SubscriptionSourceTypesDeletedEvent + (*SubscriptionRenamedEvent)(nil), // 131: bucketeer.event.domain.SubscriptionRenamedEvent + (*SubscriptionFeatureFlagTagsUpdatedEvent)(nil), // 132: bucketeer.event.domain.SubscriptionFeatureFlagTagsUpdatedEvent + (*SubscriptionUpdatedEvent)(nil), // 133: bucketeer.event.domain.SubscriptionUpdatedEvent + (*AdminSubscriptionCreatedEvent)(nil), // 134: bucketeer.event.domain.AdminSubscriptionCreatedEvent + (*AdminSubscriptionDeletedEvent)(nil), // 135: bucketeer.event.domain.AdminSubscriptionDeletedEvent + (*AdminSubscriptionEnabledEvent)(nil), // 136: bucketeer.event.domain.AdminSubscriptionEnabledEvent + (*AdminSubscriptionDisabledEvent)(nil), // 137: bucketeer.event.domain.AdminSubscriptionDisabledEvent + (*AdminSubscriptionSourceTypesAddedEvent)(nil), // 138: bucketeer.event.domain.AdminSubscriptionSourceTypesAddedEvent + (*AdminSubscriptionSourceTypesDeletedEvent)(nil), // 139: bucketeer.event.domain.AdminSubscriptionSourceTypesDeletedEvent + (*AdminSubscriptionRenamedEvent)(nil), // 140: bucketeer.event.domain.AdminSubscriptionRenamedEvent + (*ProjectCreatedEvent)(nil), // 141: bucketeer.event.domain.ProjectCreatedEvent + (*ProjectDescriptionChangedEvent)(nil), // 142: bucketeer.event.domain.ProjectDescriptionChangedEvent + (*ProjectRenamedEvent)(nil), // 143: bucketeer.event.domain.ProjectRenamedEvent + (*ProjectEnabledEvent)(nil), // 144: bucketeer.event.domain.ProjectEnabledEvent + (*ProjectDisabledEvent)(nil), // 145: bucketeer.event.domain.ProjectDisabledEvent + (*ProjectTrialCreatedEvent)(nil), // 146: bucketeer.event.domain.ProjectTrialCreatedEvent + (*ProjectTrialConvertedEvent)(nil), // 147: bucketeer.event.domain.ProjectTrialConvertedEvent + (*PrerequisiteAddedEvent)(nil), // 148: bucketeer.event.domain.PrerequisiteAddedEvent + (*PrerequisiteVariationChangedEvent)(nil), // 149: bucketeer.event.domain.PrerequisiteVariationChangedEvent + (*PrerequisiteRemovedEvent)(nil), // 150: bucketeer.event.domain.PrerequisiteRemovedEvent + (*ProgressiveRolloutCreatedEvent)(nil), // 151: bucketeer.event.domain.ProgressiveRolloutCreatedEvent + (*ProgressiveRolloutStoppedEvent)(nil), // 152: bucketeer.event.domain.ProgressiveRolloutStoppedEvent + (*ProgressiveRolloutDeletedEvent)(nil), // 153: bucketeer.event.domain.ProgressiveRolloutDeletedEvent + (*ProgressiveRolloutScheduleTriggeredAtChangedEvent)(nil), // 154: bucketeer.event.domain.ProgressiveRolloutScheduleTriggeredAtChangedEvent + (*OrganizationCreatedEvent)(nil), // 155: bucketeer.event.domain.OrganizationCreatedEvent + (*OrganizationDescriptionChangedEvent)(nil), // 156: bucketeer.event.domain.OrganizationDescriptionChangedEvent + (*OrganizationOwnerEmailChangedEvent)(nil), // 157: bucketeer.event.domain.OrganizationOwnerEmailChangedEvent + (*OrganizationNameChangedEvent)(nil), // 158: bucketeer.event.domain.OrganizationNameChangedEvent + (*OrganizationEnabledEvent)(nil), // 159: bucketeer.event.domain.OrganizationEnabledEvent + (*OrganizationDisabledEvent)(nil), // 160: bucketeer.event.domain.OrganizationDisabledEvent + (*OrganizationArchivedEvent)(nil), // 161: bucketeer.event.domain.OrganizationArchivedEvent + (*OrganizationUnarchivedEvent)(nil), // 162: bucketeer.event.domain.OrganizationUnarchivedEvent + (*OrganizationTrialConvertedEvent)(nil), // 163: bucketeer.event.domain.OrganizationTrialConvertedEvent + (*FlagTriggerCreatedEvent)(nil), // 164: bucketeer.event.domain.FlagTriggerCreatedEvent + (*FlagTriggerResetEvent)(nil), // 165: bucketeer.event.domain.FlagTriggerResetEvent + (*FlagTriggerDescriptionChangedEvent)(nil), // 166: bucketeer.event.domain.FlagTriggerDescriptionChangedEvent + (*FlagTriggerDisabledEvent)(nil), // 167: bucketeer.event.domain.FlagTriggerDisabledEvent + (*FlagTriggerEnabledEvent)(nil), // 168: bucketeer.event.domain.FlagTriggerEnabledEvent + (*FlagTriggerDeletedEvent)(nil), // 169: bucketeer.event.domain.FlagTriggerDeletedEvent + (*FlagTriggerUsageUpdatedEvent)(nil), // 170: bucketeer.event.domain.FlagTriggerUsageUpdatedEvent + (*AccountV2FirstNameChangedEvent)(nil), // 171: bucketeer.event.domain.AccountV2FirstNameChangedEvent + (*AccountV2LastNameChangedEvent)(nil), // 172: bucketeer.event.domain.AccountV2LastNameChangedEvent + (*AccountV2LanguageChangedEvent)(nil), // 173: bucketeer.event.domain.AccountV2LanguageChangedEvent + (*TagCreatedEvent)(nil), // 174: bucketeer.event.domain.TagCreatedEvent + (*TagDeletedEvent)(nil), // 175: bucketeer.event.domain.TagDeletedEvent + (*CodeReferenceCreatedEvent)(nil), // 176: bucketeer.event.domain.CodeReferenceCreatedEvent + (*CodeReferenceUpdatedEvent)(nil), // 177: bucketeer.event.domain.CodeReferenceUpdatedEvent + (*CodeReferenceDeletedEvent)(nil), // 178: bucketeer.event.domain.CodeReferenceDeletedEvent + (*Editor_PublicAPIEditor)(nil), // 179: bucketeer.event.domain.Editor.PublicAPIEditor + (*anypb.Any)(nil), // 180: google.protobuf.Any + (*feature.Variation)(nil), // 181: bucketeer.feature.Variation + (*wrapperspb.Int32Value)(nil), // 182: google.protobuf.Int32Value + (feature.Feature_VariationType)(0), // 183: bucketeer.feature.Feature.VariationType + (*feature.Prerequisite)(nil), // 184: bucketeer.feature.Prerequisite + (*feature.Rule)(nil), // 185: bucketeer.feature.Rule + (*feature.Target)(nil), // 186: bucketeer.feature.Target + (*feature.Strategy)(nil), // 187: bucketeer.feature.Strategy + (*feature.FixedStrategy)(nil), // 188: bucketeer.feature.FixedStrategy + (*feature.RolloutStrategy)(nil), // 189: bucketeer.feature.RolloutStrategy + (*feature.Clause)(nil), // 190: bucketeer.feature.Clause + (feature.Clause_Operator)(0), // 191: bucketeer.feature.Clause.Operator + (experiment.Goal_ConnectionType)(0), // 192: bucketeer.experiment.Goal.ConnectionType + (*wrapperspb.StringValue)(nil), // 193: google.protobuf.StringValue + (experiment.Experiment_Status)(0), // 194: bucketeer.experiment.Experiment.Status + (account.AccountV2_Role_Organization)(0), // 195: bucketeer.account.AccountV2.Role.Organization + (*account.AccountV2_EnvironmentRole)(nil), // 196: bucketeer.account.AccountV2.EnvironmentRole + (account.FilterTargetType)(0), // 197: bucketeer.account.FilterTargetType + (account.APIKey_Role)(0), // 198: bucketeer.account.APIKey.Role + (feature.SegmentUser_State)(0), // 199: bucketeer.feature.SegmentUser.State + (feature.Segment_Status)(0), // 200: bucketeer.feature.Segment.Status + (autoops.OpsType)(0), // 201: bucketeer.autoops.OpsType + (*autoops.Clause)(nil), // 202: bucketeer.autoops.Clause + (autoops.AutoOpsStatus)(0), // 203: bucketeer.autoops.AutoOpsStatus + (*autoops.OpsEventRateClause)(nil), // 204: bucketeer.autoops.OpsEventRateClause + (*autoops.DatetimeClause)(nil), // 205: bucketeer.autoops.DatetimeClause + (notification.Subscription_SourceType)(0), // 206: bucketeer.notification.Subscription.SourceType + (*notification.Recipient)(nil), // 207: bucketeer.notification.Recipient + (*wrapperspb.BoolValue)(nil), // 208: google.protobuf.BoolValue + (autoops.ProgressiveRollout_Type)(0), // 209: bucketeer.autoops.ProgressiveRollout.Type + (autoops.ProgressiveRollout_Status)(0), // 210: bucketeer.autoops.ProgressiveRollout.Status + (autoops.ProgressiveRollout_StoppedBy)(0), // 211: bucketeer.autoops.ProgressiveRollout.StoppedBy + (feature.FlagTrigger_Type)(0), // 212: bucketeer.feature.FlagTrigger.Type + (feature.FlagTrigger_Action)(0), // 213: bucketeer.feature.FlagTrigger.Action + (tag.Tag_EntityType)(0), // 214: bucketeer.tag.Tag.EntityType + (coderef.CodeReference_RepositoryType)(0), // 215: bucketeer.coderef.CodeReference.RepositoryType } var file_proto_event_domain_event_proto_depIdxs = []int32{ 0, // 0: bucketeer.event.domain.Event.entity_type:type_name -> 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 - 179, // 3: bucketeer.event.domain.Event.data:type_name -> google.protobuf.Any + 180, // 3: bucketeer.event.domain.Event.data:type_name -> google.protobuf.Any 4, // 4: bucketeer.event.domain.Event.options:type_name -> bucketeer.event.domain.Options - 178, // 5: bucketeer.event.domain.Editor.public_api_editor:type_name -> bucketeer.event.domain.Editor.PublicAPIEditor - 180, // 6: bucketeer.event.domain.FeatureCreatedEvent.variations:type_name -> bucketeer.feature.Variation - 181, // 7: bucketeer.event.domain.FeatureCreatedEvent.default_on_variation_index:type_name -> google.protobuf.Int32Value - 181, // 8: bucketeer.event.domain.FeatureCreatedEvent.default_off_variation_index:type_name -> google.protobuf.Int32Value - 182, // 9: bucketeer.event.domain.FeatureCreatedEvent.variation_type:type_name -> bucketeer.feature.Feature.VariationType - 183, // 10: bucketeer.event.domain.FeatureCreatedEvent.prerequisites:type_name -> bucketeer.feature.Prerequisite - 184, // 11: bucketeer.event.domain.FeatureCreatedEvent.rules:type_name -> bucketeer.feature.Rule - 185, // 12: bucketeer.event.domain.FeatureCreatedEvent.targets:type_name -> bucketeer.feature.Target - 180, // 13: bucketeer.event.domain.FeatureVariationAddedEvent.variation:type_name -> bucketeer.feature.Variation - 184, // 14: bucketeer.event.domain.FeatureRuleAddedEvent.rule:type_name -> bucketeer.feature.Rule - 186, // 15: bucketeer.event.domain.FeatureChangeRuleStrategyEvent.strategy:type_name -> bucketeer.feature.Strategy - 187, // 16: bucketeer.event.domain.FeatureFixedStrategyChangedEvent.strategy:type_name -> bucketeer.feature.FixedStrategy - 188, // 17: bucketeer.event.domain.FeatureRolloutStrategyChangedEvent.strategy:type_name -> bucketeer.feature.RolloutStrategy - 189, // 18: bucketeer.event.domain.RuleClauseAddedEvent.clause:type_name -> bucketeer.feature.Clause - 190, // 19: bucketeer.event.domain.ClauseOperatorChangedEvent.operator:type_name -> bucketeer.feature.Clause.Operator - 186, // 20: bucketeer.event.domain.FeatureDefaultStrategyChangedEvent.strategy:type_name -> bucketeer.feature.Strategy - 180, // 21: bucketeer.event.domain.FeatureClonedEvent.variations:type_name -> bucketeer.feature.Variation - 185, // 22: bucketeer.event.domain.FeatureClonedEvent.targets:type_name -> bucketeer.feature.Target - 184, // 23: bucketeer.event.domain.FeatureClonedEvent.rules:type_name -> bucketeer.feature.Rule - 186, // 24: bucketeer.event.domain.FeatureClonedEvent.default_strategy:type_name -> bucketeer.feature.Strategy - 182, // 25: bucketeer.event.domain.FeatureClonedEvent.variation_type:type_name -> bucketeer.feature.Feature.VariationType - 183, // 26: bucketeer.event.domain.FeatureClonedEvent.prerequisites:type_name -> bucketeer.feature.Prerequisite - 191, // 27: bucketeer.event.domain.GoalCreatedEvent.connection_type:type_name -> bucketeer.experiment.Goal.ConnectionType - 192, // 28: bucketeer.event.domain.GoalUpdatedEvent.name:type_name -> google.protobuf.StringValue - 192, // 29: bucketeer.event.domain.GoalUpdatedEvent.description:type_name -> google.protobuf.StringValue - 180, // 30: bucketeer.event.domain.ExperimentCreatedEvent.variations:type_name -> bucketeer.feature.Variation - 193, // 31: bucketeer.event.domain.AccountV2CreatedEvent.organization_role:type_name -> bucketeer.account.AccountV2.Role.Organization - 194, // 32: bucketeer.event.domain.AccountV2CreatedEvent.environment_roles:type_name -> bucketeer.account.AccountV2.EnvironmentRole - 193, // 33: bucketeer.event.domain.AccountV2OrganizationRoleChangedEvent.organization_role:type_name -> bucketeer.account.AccountV2.Role.Organization - 194, // 34: bucketeer.event.domain.AccountV2EnvironmentRolesChangedEvent.environment_roles:type_name -> bucketeer.account.AccountV2.EnvironmentRole - 195, // 35: bucketeer.event.domain.SearchFilterCreatedEvent.TargetType:type_name -> bucketeer.account.FilterTargetType - 196, // 36: bucketeer.event.domain.APIKeyCreatedEvent.role:type_name -> bucketeer.account.APIKey.Role - 192, // 37: bucketeer.event.domain.SegmentUpdatedEvent.name:type_name -> google.protobuf.StringValue - 192, // 38: bucketeer.event.domain.SegmentUpdatedEvent.description:type_name -> google.protobuf.StringValue - 184, // 39: bucketeer.event.domain.SegmentRuleAddedEvent.rule:type_name -> bucketeer.feature.Rule - 189, // 40: bucketeer.event.domain.SegmentRuleClauseAddedEvent.clause:type_name -> bucketeer.feature.Clause - 190, // 41: bucketeer.event.domain.SegmentClauseOperatorChangedEvent.operator:type_name -> bucketeer.feature.Clause.Operator - 197, // 42: bucketeer.event.domain.SegmentUserAddedEvent.state:type_name -> bucketeer.feature.SegmentUser.State - 197, // 43: bucketeer.event.domain.SegmentUserDeletedEvent.state:type_name -> bucketeer.feature.SegmentUser.State - 198, // 44: bucketeer.event.domain.SegmentBulkUploadUsersEvent.status:type_name -> bucketeer.feature.Segment.Status - 197, // 45: bucketeer.event.domain.SegmentBulkUploadUsersEvent.state:type_name -> bucketeer.feature.SegmentUser.State - 198, // 46: bucketeer.event.domain.SegmentBulkUploadUsersStatusChangedEvent.status:type_name -> bucketeer.feature.Segment.Status - 197, // 47: bucketeer.event.domain.SegmentBulkUploadUsersStatusChangedEvent.state:type_name -> bucketeer.feature.SegmentUser.State - 199, // 48: bucketeer.event.domain.AutoOpsRuleCreatedEvent.ops_type:type_name -> bucketeer.autoops.OpsType - 200, // 49: bucketeer.event.domain.AutoOpsRuleCreatedEvent.clauses:type_name -> bucketeer.autoops.Clause - 201, // 50: bucketeer.event.domain.AutoOpsRuleCreatedEvent.ops_status:type_name -> bucketeer.autoops.AutoOpsStatus - 199, // 51: bucketeer.event.domain.AutoOpsRuleOpsTypeChangedEvent.ops_type:type_name -> bucketeer.autoops.OpsType - 201, // 52: bucketeer.event.domain.AutoOpsRuleOpsStatusChangedEvent.ops_status:type_name -> bucketeer.autoops.AutoOpsStatus - 202, // 53: bucketeer.event.domain.OpsEventRateClauseAddedEvent.ops_event_rate_clause:type_name -> bucketeer.autoops.OpsEventRateClause - 202, // 54: bucketeer.event.domain.OpsEventRateClauseChangedEvent.ops_event_rate_clause:type_name -> bucketeer.autoops.OpsEventRateClause - 203, // 55: bucketeer.event.domain.DatetimeClauseAddedEvent.datetime_clause:type_name -> bucketeer.autoops.DatetimeClause - 203, // 56: bucketeer.event.domain.DatetimeClauseChangedEvent.datetime_clause:type_name -> bucketeer.autoops.DatetimeClause - 192, // 57: bucketeer.event.domain.PushUpdatedEvent.name:type_name -> google.protobuf.StringValue - 204, // 58: bucketeer.event.domain.SubscriptionCreatedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType - 205, // 59: bucketeer.event.domain.SubscriptionCreatedEvent.recipient:type_name -> bucketeer.notification.Recipient - 204, // 60: bucketeer.event.domain.SubscriptionSourceTypesAddedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType - 204, // 61: bucketeer.event.domain.SubscriptionSourceTypesDeletedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType - 192, // 62: bucketeer.event.domain.SubscriptionUpdatedEvent.name:type_name -> google.protobuf.StringValue - 204, // 63: bucketeer.event.domain.SubscriptionUpdatedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType - 206, // 64: bucketeer.event.domain.SubscriptionUpdatedEvent.disabled:type_name -> google.protobuf.BoolValue - 204, // 65: bucketeer.event.domain.AdminSubscriptionCreatedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType - 205, // 66: bucketeer.event.domain.AdminSubscriptionCreatedEvent.recipient:type_name -> bucketeer.notification.Recipient - 204, // 67: bucketeer.event.domain.AdminSubscriptionSourceTypesAddedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType - 204, // 68: bucketeer.event.domain.AdminSubscriptionSourceTypesDeletedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType - 183, // 69: bucketeer.event.domain.PrerequisiteAddedEvent.prerequisite:type_name -> bucketeer.feature.Prerequisite - 183, // 70: bucketeer.event.domain.PrerequisiteVariationChangedEvent.prerequisite:type_name -> bucketeer.feature.Prerequisite - 179, // 71: bucketeer.event.domain.ProgressiveRolloutCreatedEvent.clause:type_name -> google.protobuf.Any - 207, // 72: bucketeer.event.domain.ProgressiveRolloutCreatedEvent.type:type_name -> bucketeer.autoops.ProgressiveRollout.Type - 208, // 73: bucketeer.event.domain.ProgressiveRolloutStoppedEvent.status:type_name -> bucketeer.autoops.ProgressiveRollout.Status - 209, // 74: bucketeer.event.domain.ProgressiveRolloutStoppedEvent.stopped_by:type_name -> bucketeer.autoops.ProgressiveRollout.StoppedBy - 210, // 75: bucketeer.event.domain.FlagTriggerCreatedEvent.type:type_name -> bucketeer.feature.FlagTrigger.Type - 211, // 76: bucketeer.event.domain.FlagTriggerCreatedEvent.action:type_name -> bucketeer.feature.FlagTrigger.Action - 212, // 77: bucketeer.event.domain.TagCreatedEvent.entity_type:type_name -> bucketeer.tag.Tag.EntityType - 213, // 78: bucketeer.event.domain.CodeReferenceCreatedEvent.repository_type:type_name -> bucketeer.coderef.CodeReference.RepositoryType - 79, // [79:79] is the sub-list for method output_type - 79, // [79:79] is the sub-list for method input_type - 79, // [79:79] is the sub-list for extension type_name - 79, // [79:79] is the sub-list for extension extendee - 0, // [0:79] is the sub-list for field type_name + 179, // 5: bucketeer.event.domain.Editor.public_api_editor:type_name -> bucketeer.event.domain.Editor.PublicAPIEditor + 181, // 6: bucketeer.event.domain.FeatureCreatedEvent.variations:type_name -> bucketeer.feature.Variation + 182, // 7: bucketeer.event.domain.FeatureCreatedEvent.default_on_variation_index:type_name -> google.protobuf.Int32Value + 182, // 8: bucketeer.event.domain.FeatureCreatedEvent.default_off_variation_index:type_name -> google.protobuf.Int32Value + 183, // 9: bucketeer.event.domain.FeatureCreatedEvent.variation_type:type_name -> bucketeer.feature.Feature.VariationType + 184, // 10: bucketeer.event.domain.FeatureCreatedEvent.prerequisites:type_name -> bucketeer.feature.Prerequisite + 185, // 11: bucketeer.event.domain.FeatureCreatedEvent.rules:type_name -> bucketeer.feature.Rule + 186, // 12: bucketeer.event.domain.FeatureCreatedEvent.targets:type_name -> bucketeer.feature.Target + 181, // 13: bucketeer.event.domain.FeatureVariationAddedEvent.variation:type_name -> bucketeer.feature.Variation + 185, // 14: bucketeer.event.domain.FeatureRuleAddedEvent.rule:type_name -> bucketeer.feature.Rule + 187, // 15: bucketeer.event.domain.FeatureChangeRuleStrategyEvent.strategy:type_name -> bucketeer.feature.Strategy + 188, // 16: bucketeer.event.domain.FeatureFixedStrategyChangedEvent.strategy:type_name -> bucketeer.feature.FixedStrategy + 189, // 17: bucketeer.event.domain.FeatureRolloutStrategyChangedEvent.strategy:type_name -> bucketeer.feature.RolloutStrategy + 190, // 18: bucketeer.event.domain.RuleClauseAddedEvent.clause:type_name -> bucketeer.feature.Clause + 191, // 19: bucketeer.event.domain.ClauseOperatorChangedEvent.operator:type_name -> bucketeer.feature.Clause.Operator + 187, // 20: bucketeer.event.domain.FeatureDefaultStrategyChangedEvent.strategy:type_name -> bucketeer.feature.Strategy + 181, // 21: bucketeer.event.domain.FeatureClonedEvent.variations:type_name -> bucketeer.feature.Variation + 186, // 22: bucketeer.event.domain.FeatureClonedEvent.targets:type_name -> bucketeer.feature.Target + 185, // 23: bucketeer.event.domain.FeatureClonedEvent.rules:type_name -> bucketeer.feature.Rule + 187, // 24: bucketeer.event.domain.FeatureClonedEvent.default_strategy:type_name -> bucketeer.feature.Strategy + 183, // 25: bucketeer.event.domain.FeatureClonedEvent.variation_type:type_name -> bucketeer.feature.Feature.VariationType + 184, // 26: bucketeer.event.domain.FeatureClonedEvent.prerequisites:type_name -> bucketeer.feature.Prerequisite + 192, // 27: bucketeer.event.domain.GoalCreatedEvent.connection_type:type_name -> bucketeer.experiment.Goal.ConnectionType + 193, // 28: bucketeer.event.domain.GoalUpdatedEvent.name:type_name -> google.protobuf.StringValue + 193, // 29: bucketeer.event.domain.GoalUpdatedEvent.description:type_name -> google.protobuf.StringValue + 181, // 30: bucketeer.event.domain.ExperimentCreatedEvent.variations:type_name -> bucketeer.feature.Variation + 194, // 31: bucketeer.event.domain.ExperimentUpdatedEvent.status:type_name -> bucketeer.experiment.Experiment.Status + 195, // 32: bucketeer.event.domain.AccountV2CreatedEvent.organization_role:type_name -> bucketeer.account.AccountV2.Role.Organization + 196, // 33: bucketeer.event.domain.AccountV2CreatedEvent.environment_roles:type_name -> bucketeer.account.AccountV2.EnvironmentRole + 195, // 34: bucketeer.event.domain.AccountV2OrganizationRoleChangedEvent.organization_role:type_name -> bucketeer.account.AccountV2.Role.Organization + 196, // 35: bucketeer.event.domain.AccountV2EnvironmentRolesChangedEvent.environment_roles:type_name -> bucketeer.account.AccountV2.EnvironmentRole + 197, // 36: bucketeer.event.domain.SearchFilterCreatedEvent.TargetType:type_name -> bucketeer.account.FilterTargetType + 198, // 37: bucketeer.event.domain.APIKeyCreatedEvent.role:type_name -> bucketeer.account.APIKey.Role + 193, // 38: bucketeer.event.domain.SegmentUpdatedEvent.name:type_name -> google.protobuf.StringValue + 193, // 39: bucketeer.event.domain.SegmentUpdatedEvent.description:type_name -> google.protobuf.StringValue + 185, // 40: bucketeer.event.domain.SegmentRuleAddedEvent.rule:type_name -> bucketeer.feature.Rule + 190, // 41: bucketeer.event.domain.SegmentRuleClauseAddedEvent.clause:type_name -> bucketeer.feature.Clause + 191, // 42: bucketeer.event.domain.SegmentClauseOperatorChangedEvent.operator:type_name -> bucketeer.feature.Clause.Operator + 199, // 43: bucketeer.event.domain.SegmentUserAddedEvent.state:type_name -> bucketeer.feature.SegmentUser.State + 199, // 44: bucketeer.event.domain.SegmentUserDeletedEvent.state:type_name -> bucketeer.feature.SegmentUser.State + 200, // 45: bucketeer.event.domain.SegmentBulkUploadUsersEvent.status:type_name -> bucketeer.feature.Segment.Status + 199, // 46: bucketeer.event.domain.SegmentBulkUploadUsersEvent.state:type_name -> bucketeer.feature.SegmentUser.State + 200, // 47: bucketeer.event.domain.SegmentBulkUploadUsersStatusChangedEvent.status:type_name -> bucketeer.feature.Segment.Status + 199, // 48: bucketeer.event.domain.SegmentBulkUploadUsersStatusChangedEvent.state:type_name -> bucketeer.feature.SegmentUser.State + 201, // 49: bucketeer.event.domain.AutoOpsRuleCreatedEvent.ops_type:type_name -> bucketeer.autoops.OpsType + 202, // 50: bucketeer.event.domain.AutoOpsRuleCreatedEvent.clauses:type_name -> bucketeer.autoops.Clause + 203, // 51: bucketeer.event.domain.AutoOpsRuleCreatedEvent.ops_status:type_name -> bucketeer.autoops.AutoOpsStatus + 201, // 52: bucketeer.event.domain.AutoOpsRuleOpsTypeChangedEvent.ops_type:type_name -> bucketeer.autoops.OpsType + 203, // 53: bucketeer.event.domain.AutoOpsRuleOpsStatusChangedEvent.ops_status:type_name -> bucketeer.autoops.AutoOpsStatus + 204, // 54: bucketeer.event.domain.OpsEventRateClauseAddedEvent.ops_event_rate_clause:type_name -> bucketeer.autoops.OpsEventRateClause + 204, // 55: bucketeer.event.domain.OpsEventRateClauseChangedEvent.ops_event_rate_clause:type_name -> bucketeer.autoops.OpsEventRateClause + 205, // 56: bucketeer.event.domain.DatetimeClauseAddedEvent.datetime_clause:type_name -> bucketeer.autoops.DatetimeClause + 205, // 57: bucketeer.event.domain.DatetimeClauseChangedEvent.datetime_clause:type_name -> bucketeer.autoops.DatetimeClause + 193, // 58: bucketeer.event.domain.PushUpdatedEvent.name:type_name -> google.protobuf.StringValue + 206, // 59: bucketeer.event.domain.SubscriptionCreatedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType + 207, // 60: bucketeer.event.domain.SubscriptionCreatedEvent.recipient:type_name -> bucketeer.notification.Recipient + 206, // 61: bucketeer.event.domain.SubscriptionSourceTypesAddedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType + 206, // 62: bucketeer.event.domain.SubscriptionSourceTypesDeletedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType + 193, // 63: bucketeer.event.domain.SubscriptionUpdatedEvent.name:type_name -> google.protobuf.StringValue + 206, // 64: bucketeer.event.domain.SubscriptionUpdatedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType + 208, // 65: bucketeer.event.domain.SubscriptionUpdatedEvent.disabled:type_name -> google.protobuf.BoolValue + 206, // 66: bucketeer.event.domain.AdminSubscriptionCreatedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType + 207, // 67: bucketeer.event.domain.AdminSubscriptionCreatedEvent.recipient:type_name -> bucketeer.notification.Recipient + 206, // 68: bucketeer.event.domain.AdminSubscriptionSourceTypesAddedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType + 206, // 69: bucketeer.event.domain.AdminSubscriptionSourceTypesDeletedEvent.source_types:type_name -> bucketeer.notification.Subscription.SourceType + 184, // 70: bucketeer.event.domain.PrerequisiteAddedEvent.prerequisite:type_name -> bucketeer.feature.Prerequisite + 184, // 71: bucketeer.event.domain.PrerequisiteVariationChangedEvent.prerequisite:type_name -> bucketeer.feature.Prerequisite + 180, // 72: bucketeer.event.domain.ProgressiveRolloutCreatedEvent.clause:type_name -> google.protobuf.Any + 209, // 73: bucketeer.event.domain.ProgressiveRolloutCreatedEvent.type:type_name -> bucketeer.autoops.ProgressiveRollout.Type + 210, // 74: bucketeer.event.domain.ProgressiveRolloutStoppedEvent.status:type_name -> bucketeer.autoops.ProgressiveRollout.Status + 211, // 75: bucketeer.event.domain.ProgressiveRolloutStoppedEvent.stopped_by:type_name -> bucketeer.autoops.ProgressiveRollout.StoppedBy + 212, // 76: bucketeer.event.domain.FlagTriggerCreatedEvent.type:type_name -> bucketeer.feature.FlagTrigger.Type + 213, // 77: bucketeer.event.domain.FlagTriggerCreatedEvent.action:type_name -> bucketeer.feature.FlagTrigger.Action + 214, // 78: bucketeer.event.domain.TagCreatedEvent.entity_type:type_name -> bucketeer.tag.Tag.EntityType + 215, // 79: bucketeer.event.domain.CodeReferenceCreatedEvent.repository_type:type_name -> bucketeer.coderef.CodeReference.RepositoryType + 80, // [80:80] is the sub-list for method output_type + 80, // [80:80] is the sub-list for method input_type + 80, // [80:80] is the sub-list for extension type_name + 80, // [80:80] is the sub-list for extension extendee + 0, // [0:80] is the sub-list for field type_name } func init() { file_proto_event_domain_event_proto_init() } @@ -14307,7 +14417,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExperimentStartedEvent); i { + switch v := v.(*ExperimentUpdatedEvent); i { case 0: return &v.state case 1: @@ -14319,7 +14429,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExperimentFinishedEvent); i { + switch v := v.(*ExperimentStartedEvent); i { case 0: return &v.state case 1: @@ -14331,7 +14441,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountV2CreatedEvent); i { + switch v := v.(*ExperimentFinishedEvent); i { case 0: return &v.state case 1: @@ -14343,7 +14453,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountV2UpdatedEvent); i { + switch v := v.(*AccountV2CreatedEvent); i { case 0: return &v.state case 1: @@ -14355,7 +14465,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountV2NameChangedEvent); i { + switch v := v.(*AccountV2UpdatedEvent); i { case 0: return &v.state case 1: @@ -14367,7 +14477,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountV2AvatarImageURLChangedEvent); i { + switch v := v.(*AccountV2NameChangedEvent); i { case 0: return &v.state case 1: @@ -14379,7 +14489,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountV2TagsChangedEvent); i { + switch v := v.(*AccountV2AvatarImageURLChangedEvent); i { case 0: return &v.state case 1: @@ -14391,7 +14501,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountV2OrganizationRoleChangedEvent); i { + switch v := v.(*AccountV2TagsChangedEvent); i { case 0: return &v.state case 1: @@ -14403,7 +14513,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountV2EnvironmentRolesChangedEvent); i { + switch v := v.(*AccountV2OrganizationRoleChangedEvent); i { case 0: return &v.state case 1: @@ -14415,7 +14525,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountV2EnabledEvent); i { + switch v := v.(*AccountV2EnvironmentRolesChangedEvent); i { case 0: return &v.state case 1: @@ -14427,7 +14537,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountV2DisabledEvent); i { + switch v := v.(*AccountV2EnabledEvent); i { case 0: return &v.state case 1: @@ -14439,7 +14549,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountV2DeletedEvent); i { + switch v := v.(*AccountV2DisabledEvent); i { case 0: return &v.state case 1: @@ -14451,7 +14561,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SearchFilterCreatedEvent); i { + switch v := v.(*AccountV2DeletedEvent); i { case 0: return &v.state case 1: @@ -14463,7 +14573,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SearchFilterNameChangedEvent); i { + switch v := v.(*SearchFilterCreatedEvent); i { case 0: return &v.state case 1: @@ -14475,7 +14585,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SearchFilterQueryChangedEvent); i { + switch v := v.(*SearchFilterNameChangedEvent); i { case 0: return &v.state case 1: @@ -14487,7 +14597,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SearchFilterDefaultChangedEvent); i { + switch v := v.(*SearchFilterQueryChangedEvent); i { case 0: return &v.state case 1: @@ -14499,7 +14609,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SearchFilterDeletedEvent); i { + switch v := v.(*SearchFilterDefaultChangedEvent); i { case 0: return &v.state case 1: @@ -14511,7 +14621,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*APIKeyCreatedEvent); i { + switch v := v.(*SearchFilterDeletedEvent); i { case 0: return &v.state case 1: @@ -14523,7 +14633,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*APIKeyChangedEvent); i { + switch v := v.(*APIKeyCreatedEvent); i { case 0: return &v.state case 1: @@ -14535,7 +14645,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*APIKeyNameChangedEvent); i { + switch v := v.(*APIKeyChangedEvent); i { case 0: return &v.state case 1: @@ -14547,7 +14657,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*APIKeyEnabledEvent); i { + switch v := v.(*APIKeyNameChangedEvent); i { case 0: return &v.state case 1: @@ -14559,7 +14669,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*APIKeyDisabledEvent); i { + switch v := v.(*APIKeyEnabledEvent); i { case 0: return &v.state case 1: @@ -14571,7 +14681,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.(*SegmentCreatedEvent); i { + switch v := v.(*APIKeyDisabledEvent); i { case 0: return &v.state case 1: @@ -14583,7 +14693,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.(*SegmentDeletedEvent); i { + switch v := v.(*SegmentCreatedEvent); i { case 0: return &v.state case 1: @@ -14595,7 +14705,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.(*SegmentUpdatedEvent); i { + switch v := v.(*SegmentDeletedEvent); i { case 0: return &v.state case 1: @@ -14607,7 +14717,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.(*SegmentNameChangedEvent); i { + switch v := v.(*SegmentUpdatedEvent); i { case 0: return &v.state case 1: @@ -14619,7 +14729,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.(*SegmentDescriptionChangedEvent); i { + switch v := v.(*SegmentNameChangedEvent); i { case 0: return &v.state case 1: @@ -14631,7 +14741,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.(*SegmentRuleAddedEvent); i { + switch v := v.(*SegmentDescriptionChangedEvent); i { case 0: return &v.state case 1: @@ -14643,7 +14753,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.(*SegmentRuleDeletedEvent); i { + switch v := v.(*SegmentRuleAddedEvent); i { case 0: return &v.state case 1: @@ -14655,7 +14765,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.(*SegmentRuleClauseAddedEvent); i { + switch v := v.(*SegmentRuleDeletedEvent); i { case 0: return &v.state case 1: @@ -14667,7 +14777,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.(*SegmentRuleClauseDeletedEvent); i { + switch v := v.(*SegmentRuleClauseAddedEvent); i { case 0: return &v.state case 1: @@ -14679,7 +14789,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.(*SegmentClauseAttributeChangedEvent); i { + switch v := v.(*SegmentRuleClauseDeletedEvent); i { case 0: return &v.state case 1: @@ -14691,7 +14801,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.(*SegmentClauseOperatorChangedEvent); i { + switch v := v.(*SegmentClauseAttributeChangedEvent); i { case 0: return &v.state case 1: @@ -14703,7 +14813,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.(*SegmentClauseValueAddedEvent); i { + switch v := v.(*SegmentClauseOperatorChangedEvent); i { case 0: return &v.state case 1: @@ -14715,7 +14825,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.(*SegmentClauseValueRemovedEvent); i { + switch v := v.(*SegmentClauseValueAddedEvent); i { case 0: return &v.state case 1: @@ -14727,7 +14837,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.(*SegmentUserAddedEvent); i { + switch v := v.(*SegmentClauseValueRemovedEvent); i { case 0: return &v.state case 1: @@ -14739,7 +14849,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.(*SegmentUserDeletedEvent); i { + switch v := v.(*SegmentUserAddedEvent); i { case 0: return &v.state case 1: @@ -14751,7 +14861,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.(*SegmentBulkUploadUsersEvent); i { + switch v := v.(*SegmentUserDeletedEvent); i { case 0: return &v.state case 1: @@ -14763,7 +14873,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.(*SegmentBulkUploadUsersStatusChangedEvent); i { + switch v := v.(*SegmentBulkUploadUsersEvent); i { case 0: return &v.state case 1: @@ -14775,7 +14885,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.(*EnvironmentCreatedEvent); i { + switch v := v.(*SegmentBulkUploadUsersStatusChangedEvent); i { case 0: return &v.state case 1: @@ -14787,7 +14897,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.(*EnvironmentRenamedEvent); i { + switch v := v.(*EnvironmentCreatedEvent); i { case 0: return &v.state case 1: @@ -14799,7 +14909,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.(*EnvironmentDescriptionChangedEvent); i { + switch v := v.(*EnvironmentRenamedEvent); i { case 0: return &v.state case 1: @@ -14811,7 +14921,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.(*EnvironmentDeletedEvent); i { + switch v := v.(*EnvironmentDescriptionChangedEvent); i { case 0: return &v.state case 1: @@ -14823,7 +14933,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.(*EnvironmentV2CreatedEvent); i { + switch v := v.(*EnvironmentDeletedEvent); i { case 0: return &v.state case 1: @@ -14835,7 +14945,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.(*EnvironmentV2RenamedEvent); i { + switch v := v.(*EnvironmentV2CreatedEvent); i { case 0: return &v.state case 1: @@ -14847,7 +14957,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.(*EnvironmentV2DescriptionChangedEvent); i { + switch v := v.(*EnvironmentV2RenamedEvent); i { case 0: return &v.state case 1: @@ -14859,7 +14969,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.(*EnvironmentV2RequireCommentChangedEvent); i { + switch v := v.(*EnvironmentV2DescriptionChangedEvent); i { case 0: return &v.state case 1: @@ -14871,7 +14981,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.(*EnvironmentV2ArchivedEvent); i { + switch v := v.(*EnvironmentV2RequireCommentChangedEvent); i { case 0: return &v.state case 1: @@ -14883,7 +14993,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.(*EnvironmentV2UnarchivedEvent); i { + switch v := v.(*EnvironmentV2ArchivedEvent); i { case 0: return &v.state case 1: @@ -14895,7 +15005,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.(*AutoOpsRuleCreatedEvent); i { + switch v := v.(*EnvironmentV2UnarchivedEvent); i { case 0: return &v.state case 1: @@ -14907,7 +15017,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.(*AutoOpsRuleStoppedEvent); i { + switch v := v.(*AutoOpsRuleCreatedEvent); i { case 0: return &v.state case 1: @@ -14919,7 +15029,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.(*AutoOpsRuleDeletedEvent); i { + switch v := v.(*AutoOpsRuleStoppedEvent); i { case 0: return &v.state case 1: @@ -14931,7 +15041,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.(*AutoOpsRuleOpsTypeChangedEvent); i { + switch v := v.(*AutoOpsRuleDeletedEvent); i { case 0: return &v.state case 1: @@ -14943,7 +15053,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.(*AutoOpsRuleTriggeredAtChangedEvent); i { + switch v := v.(*AutoOpsRuleOpsTypeChangedEvent); i { case 0: return &v.state case 1: @@ -14955,7 +15065,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.(*AutoOpsRuleOpsStatusChangedEvent); i { + switch v := v.(*AutoOpsRuleTriggeredAtChangedEvent); i { case 0: return &v.state case 1: @@ -14967,7 +15077,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.(*OpsEventRateClauseAddedEvent); i { + switch v := v.(*AutoOpsRuleOpsStatusChangedEvent); i { case 0: return &v.state case 1: @@ -14979,7 +15089,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.(*OpsEventRateClauseChangedEvent); i { + switch v := v.(*OpsEventRateClauseAddedEvent); i { case 0: return &v.state case 1: @@ -14991,7 +15101,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.(*AutoOpsRuleClauseDeletedEvent); i { + switch v := v.(*OpsEventRateClauseChangedEvent); i { case 0: return &v.state case 1: @@ -15003,7 +15113,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.(*DatetimeClauseAddedEvent); i { + switch v := v.(*AutoOpsRuleClauseDeletedEvent); i { case 0: return &v.state case 1: @@ -15015,7 +15125,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.(*DatetimeClauseChangedEvent); i { + switch v := v.(*DatetimeClauseAddedEvent); i { case 0: return &v.state case 1: @@ -15027,7 +15137,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.(*PushCreatedEvent); i { + switch v := v.(*DatetimeClauseChangedEvent); i { case 0: return &v.state case 1: @@ -15039,7 +15149,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.(*PushDeletedEvent); i { + switch v := v.(*PushCreatedEvent); i { case 0: return &v.state case 1: @@ -15051,7 +15161,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.(*PushTagsAddedEvent); i { + switch v := v.(*PushDeletedEvent); i { case 0: return &v.state case 1: @@ -15063,7 +15173,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.(*PushTagsDeletedEvent); i { + switch v := v.(*PushTagsAddedEvent); i { case 0: return &v.state case 1: @@ -15075,7 +15185,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.(*PushRenamedEvent); i { + switch v := v.(*PushTagsDeletedEvent); i { case 0: return &v.state case 1: @@ -15087,7 +15197,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.(*PushTagsUpdatedEvent); i { + switch v := v.(*PushRenamedEvent); i { case 0: return &v.state case 1: @@ -15099,7 +15209,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.(*PushUpdatedEvent); i { + switch v := v.(*PushTagsUpdatedEvent); i { case 0: return &v.state case 1: @@ -15111,7 +15221,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.(*SubscriptionCreatedEvent); i { + switch v := v.(*PushUpdatedEvent); i { case 0: return &v.state case 1: @@ -15123,7 +15233,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.(*SubscriptionDeletedEvent); i { + switch v := v.(*SubscriptionCreatedEvent); i { case 0: return &v.state case 1: @@ -15135,7 +15245,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.(*SubscriptionEnabledEvent); i { + switch v := v.(*SubscriptionDeletedEvent); i { case 0: return &v.state case 1: @@ -15147,7 +15257,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.(*SubscriptionDisabledEvent); i { + switch v := v.(*SubscriptionEnabledEvent); i { case 0: return &v.state case 1: @@ -15159,7 +15269,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.(*SubscriptionSourceTypesAddedEvent); i { + switch v := v.(*SubscriptionDisabledEvent); i { case 0: return &v.state case 1: @@ -15171,7 +15281,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.(*SubscriptionSourceTypesDeletedEvent); i { + switch v := v.(*SubscriptionSourceTypesAddedEvent); i { case 0: return &v.state case 1: @@ -15183,7 +15293,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.(*SubscriptionRenamedEvent); i { + switch v := v.(*SubscriptionSourceTypesDeletedEvent); i { case 0: return &v.state case 1: @@ -15195,7 +15305,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.(*SubscriptionFeatureFlagTagsUpdatedEvent); i { + switch v := v.(*SubscriptionRenamedEvent); i { case 0: return &v.state case 1: @@ -15207,7 +15317,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.(*SubscriptionUpdatedEvent); i { + switch v := v.(*SubscriptionFeatureFlagTagsUpdatedEvent); i { case 0: return &v.state case 1: @@ -15219,7 +15329,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.(*AdminSubscriptionCreatedEvent); i { + switch v := v.(*SubscriptionUpdatedEvent); i { case 0: return &v.state case 1: @@ -15231,7 +15341,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.(*AdminSubscriptionDeletedEvent); i { + switch v := v.(*AdminSubscriptionCreatedEvent); i { case 0: return &v.state case 1: @@ -15243,7 +15353,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.(*AdminSubscriptionEnabledEvent); i { + switch v := v.(*AdminSubscriptionDeletedEvent); i { case 0: return &v.state case 1: @@ -15255,7 +15365,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.(*AdminSubscriptionDisabledEvent); i { + switch v := v.(*AdminSubscriptionEnabledEvent); i { case 0: return &v.state case 1: @@ -15267,7 +15377,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.(*AdminSubscriptionSourceTypesAddedEvent); i { + switch v := v.(*AdminSubscriptionDisabledEvent); i { case 0: return &v.state case 1: @@ -15279,7 +15389,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.(*AdminSubscriptionSourceTypesDeletedEvent); i { + switch v := v.(*AdminSubscriptionSourceTypesAddedEvent); i { case 0: return &v.state case 1: @@ -15291,7 +15401,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.(*AdminSubscriptionRenamedEvent); i { + switch v := v.(*AdminSubscriptionSourceTypesDeletedEvent); i { case 0: return &v.state case 1: @@ -15303,7 +15413,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.(*ProjectCreatedEvent); i { + switch v := v.(*AdminSubscriptionRenamedEvent); i { case 0: return &v.state case 1: @@ -15315,7 +15425,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.(*ProjectDescriptionChangedEvent); i { + switch v := v.(*ProjectCreatedEvent); i { case 0: return &v.state case 1: @@ -15327,7 +15437,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.(*ProjectRenamedEvent); i { + switch v := v.(*ProjectDescriptionChangedEvent); i { case 0: return &v.state case 1: @@ -15339,7 +15449,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.(*ProjectEnabledEvent); i { + switch v := v.(*ProjectRenamedEvent); i { case 0: return &v.state case 1: @@ -15351,7 +15461,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.(*ProjectDisabledEvent); i { + switch v := v.(*ProjectEnabledEvent); i { case 0: return &v.state case 1: @@ -15363,7 +15473,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.(*ProjectTrialCreatedEvent); i { + switch v := v.(*ProjectDisabledEvent); i { case 0: return &v.state case 1: @@ -15375,7 +15485,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.(*ProjectTrialConvertedEvent); i { + switch v := v.(*ProjectTrialCreatedEvent); i { case 0: return &v.state case 1: @@ -15387,7 +15497,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.(*PrerequisiteAddedEvent); i { + switch v := v.(*ProjectTrialConvertedEvent); i { case 0: return &v.state case 1: @@ -15399,7 +15509,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.(*PrerequisiteVariationChangedEvent); i { + switch v := v.(*PrerequisiteAddedEvent); i { case 0: return &v.state case 1: @@ -15411,7 +15521,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.(*PrerequisiteRemovedEvent); i { + switch v := v.(*PrerequisiteVariationChangedEvent); i { case 0: return &v.state case 1: @@ -15423,7 +15533,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.(*ProgressiveRolloutCreatedEvent); i { + switch v := v.(*PrerequisiteRemovedEvent); i { case 0: return &v.state case 1: @@ -15435,7 +15545,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.(*ProgressiveRolloutStoppedEvent); i { + switch v := v.(*ProgressiveRolloutCreatedEvent); i { case 0: return &v.state case 1: @@ -15447,7 +15557,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.(*ProgressiveRolloutDeletedEvent); i { + switch v := v.(*ProgressiveRolloutStoppedEvent); i { case 0: return &v.state case 1: @@ -15459,7 +15569,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.(*ProgressiveRolloutScheduleTriggeredAtChangedEvent); i { + switch v := v.(*ProgressiveRolloutDeletedEvent); i { case 0: return &v.state case 1: @@ -15471,7 +15581,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.(*OrganizationCreatedEvent); i { + switch v := v.(*ProgressiveRolloutScheduleTriggeredAtChangedEvent); i { case 0: return &v.state case 1: @@ -15483,7 +15593,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.(*OrganizationDescriptionChangedEvent); i { + switch v := v.(*OrganizationCreatedEvent); i { case 0: return &v.state case 1: @@ -15495,7 +15605,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.(*OrganizationOwnerEmailChangedEvent); i { + switch v := v.(*OrganizationDescriptionChangedEvent); i { case 0: return &v.state case 1: @@ -15507,7 +15617,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.(*OrganizationNameChangedEvent); i { + switch v := v.(*OrganizationOwnerEmailChangedEvent); i { case 0: return &v.state case 1: @@ -15519,7 +15629,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.(*OrganizationEnabledEvent); i { + switch v := v.(*OrganizationNameChangedEvent); i { case 0: return &v.state case 1: @@ -15531,7 +15641,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.(*OrganizationDisabledEvent); i { + switch v := v.(*OrganizationEnabledEvent); i { case 0: return &v.state case 1: @@ -15543,7 +15653,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.(*OrganizationArchivedEvent); i { + switch v := v.(*OrganizationDisabledEvent); i { case 0: return &v.state case 1: @@ -15555,7 +15665,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.(*OrganizationUnarchivedEvent); i { + switch v := v.(*OrganizationArchivedEvent); i { case 0: return &v.state case 1: @@ -15567,7 +15677,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.(*OrganizationTrialConvertedEvent); i { + switch v := v.(*OrganizationUnarchivedEvent); i { case 0: return &v.state case 1: @@ -15579,7 +15689,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.(*FlagTriggerCreatedEvent); i { + switch v := v.(*OrganizationTrialConvertedEvent); i { case 0: return &v.state case 1: @@ -15591,7 +15701,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.(*FlagTriggerResetEvent); i { + switch v := v.(*FlagTriggerCreatedEvent); i { case 0: return &v.state case 1: @@ -15603,7 +15713,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.(*FlagTriggerDescriptionChangedEvent); i { + switch v := v.(*FlagTriggerResetEvent); i { case 0: return &v.state case 1: @@ -15615,7 +15725,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.(*FlagTriggerDisabledEvent); i { + switch v := v.(*FlagTriggerDescriptionChangedEvent); i { case 0: return &v.state case 1: @@ -15627,7 +15737,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.(*FlagTriggerEnabledEvent); i { + switch v := v.(*FlagTriggerDisabledEvent); i { case 0: return &v.state case 1: @@ -15639,7 +15749,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.(*FlagTriggerDeletedEvent); i { + switch v := v.(*FlagTriggerEnabledEvent); i { case 0: return &v.state case 1: @@ -15651,7 +15761,7 @@ 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.(*FlagTriggerUsageUpdatedEvent); i { + switch v := v.(*FlagTriggerDeletedEvent); i { case 0: return &v.state case 1: @@ -15663,7 +15773,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountV2FirstNameChangedEvent); i { + switch v := v.(*FlagTriggerUsageUpdatedEvent); i { case 0: return &v.state case 1: @@ -15675,7 +15785,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountV2LastNameChangedEvent); i { + switch v := v.(*AccountV2FirstNameChangedEvent); i { case 0: return &v.state case 1: @@ -15687,7 +15797,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountV2LanguageChangedEvent); i { + switch v := v.(*AccountV2LastNameChangedEvent); i { case 0: return &v.state case 1: @@ -15699,7 +15809,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TagCreatedEvent); i { + switch v := v.(*AccountV2LanguageChangedEvent); i { case 0: return &v.state case 1: @@ -15711,7 +15821,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TagDeletedEvent); i { + switch v := v.(*TagCreatedEvent); i { case 0: return &v.state case 1: @@ -15723,7 +15833,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CodeReferenceCreatedEvent); i { + switch v := v.(*TagDeletedEvent); i { case 0: return &v.state case 1: @@ -15735,7 +15845,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CodeReferenceUpdatedEvent); i { + switch v := v.(*CodeReferenceCreatedEvent); i { case 0: return &v.state case 1: @@ -15747,7 +15857,7 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CodeReferenceDeletedEvent); i { + switch v := v.(*CodeReferenceUpdatedEvent); i { case 0: return &v.state case 1: @@ -15759,6 +15869,18 @@ func file_proto_event_domain_event_proto_init() { } } file_proto_event_domain_event_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CodeReferenceDeletedEvent); 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[177].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Editor_PublicAPIEditor); i { case 0: return &v.state @@ -15777,7 +15899,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: 177, + NumMessages: 178, NumExtensions: 0, NumServices: 0, }, diff --git a/proto/event/domain/event.proto b/proto/event/domain/event.proto index 940bb4a9d..db4a090b9 100644 --- a/proto/event/domain/event.proto +++ b/proto/event/domain/event.proto @@ -39,6 +39,7 @@ import "proto/feature/flag_trigger.proto"; import "proto/account/search_filter.proto"; import "proto/tag/tag.proto"; import "proto/experiment/goal.proto"; +import "proto/experiment/experiment.proto"; import "proto/coderef/code_reference.proto"; message Event { @@ -120,6 +121,7 @@ message Event { EXPERIMENT_STARTED = 208; EXPERIMENT_FINISHED = 209; EXPERIMENT_ARCHIVED = 210; + EXPERIMENT_UPDATED = 211; ACCOUNT_CREATED = 300 [deprecated = true]; ACCOUNT_ROLE_CHANGED = 301 [deprecated = true]; ACCOUNT_ENABLED = 302 [deprecated = true]; @@ -591,6 +593,15 @@ message ExperimentDescriptionChangedEvent { string description = 2; } +message ExperimentUpdatedEvent { + string id = 1; + string name = 2; + string description = 3; + int64 start_at = 4; + int64 stop_at = 5; + experiment.Experiment.Status status = 6; +} + message ExperimentStartedEvent {} message ExperimentFinishedEvent {} diff --git a/proto/experiment/proto_descriptor.pb b/proto/experiment/proto_descriptor.pb index e136abc0e..7c2c15ea7 100644 Binary files a/proto/experiment/proto_descriptor.pb and b/proto/experiment/proto_descriptor.pb differ diff --git a/proto/experiment/service.pb.go b/proto/experiment/service.pb.go index 86d72351e..5f8610a6b 100644 --- a/proto/experiment/service.pb.go +++ b/proto/experiment/service.pb.go @@ -1483,11 +1483,20 @@ type UpdateExperimentRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` - ChangeExperimentPeriodCommand *ChangeExperimentPeriodCommand `protobuf:"bytes,5,opt,name=change_experiment_period_command,json=changeExperimentPeriodCommand,proto3" json:"change_experiment_period_command"` - ChangeNameCommand *ChangeExperimentNameCommand `protobuf:"bytes,6,opt,name=change_name_command,json=changeNameCommand,proto3" json:"change_name_command"` - ChangeDescriptionCommand *ChangeExperimentDescriptionCommand `protobuf:"bytes,7,opt,name=change_description_command,json=changeDescriptionCommand,proto3" json:"change_description_command"` - EnvironmentId string `protobuf:"bytes,8,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. + ChangeExperimentPeriodCommand *ChangeExperimentPeriodCommand `protobuf:"bytes,5,opt,name=change_experiment_period_command,json=changeExperimentPeriodCommand,proto3" json:"change_experiment_period_command"` + // Deprecated: Do not use. + ChangeNameCommand *ChangeExperimentNameCommand `protobuf:"bytes,6,opt,name=change_name_command,json=changeNameCommand,proto3" json:"change_name_command"` + // Deprecated: Do not use. + ChangeDescriptionCommand *ChangeExperimentDescriptionCommand `protobuf:"bytes,7,opt,name=change_description_command,json=changeDescriptionCommand,proto3" json:"change_description_command"` + EnvironmentId string `protobuf:"bytes,8,opt,name=environment_id,json=environmentId,proto3" json:"environment_id"` + Name *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=name,proto3" json:"name"` + Description *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=description,proto3" json:"description"` + StartAt *wrapperspb.Int64Value `protobuf:"bytes,11,opt,name=start_at,json=startAt,proto3" json:"start_at"` + StopAt *wrapperspb.Int64Value `protobuf:"bytes,12,opt,name=stop_at,json=stopAt,proto3" json:"stop_at"` + Archived *wrapperspb.BoolValue `protobuf:"bytes,13,opt,name=archived,proto3" json:"archived"` + Status *UpdateExperimentRequest_UpdatedStatus `protobuf:"bytes,14,opt,name=status,proto3" json:"status"` } func (x *UpdateExperimentRequest) Reset() { @@ -1529,6 +1538,7 @@ func (x *UpdateExperimentRequest) GetId() string { return "" } +// Deprecated: Do not use. func (x *UpdateExperimentRequest) GetChangeExperimentPeriodCommand() *ChangeExperimentPeriodCommand { if x != nil { return x.ChangeExperimentPeriodCommand @@ -1536,6 +1546,7 @@ func (x *UpdateExperimentRequest) GetChangeExperimentPeriodCommand() *ChangeExpe return nil } +// Deprecated: Do not use. func (x *UpdateExperimentRequest) GetChangeNameCommand() *ChangeExperimentNameCommand { if x != nil { return x.ChangeNameCommand @@ -1543,6 +1554,7 @@ func (x *UpdateExperimentRequest) GetChangeNameCommand() *ChangeExperimentNameCo return nil } +// Deprecated: Do not use. func (x *UpdateExperimentRequest) GetChangeDescriptionCommand() *ChangeExperimentDescriptionCommand { if x != nil { return x.ChangeDescriptionCommand @@ -1557,10 +1569,54 @@ func (x *UpdateExperimentRequest) GetEnvironmentId() string { return "" } +func (x *UpdateExperimentRequest) GetName() *wrapperspb.StringValue { + if x != nil { + return x.Name + } + return nil +} + +func (x *UpdateExperimentRequest) GetDescription() *wrapperspb.StringValue { + if x != nil { + return x.Description + } + return nil +} + +func (x *UpdateExperimentRequest) GetStartAt() *wrapperspb.Int64Value { + if x != nil { + return x.StartAt + } + return nil +} + +func (x *UpdateExperimentRequest) GetStopAt() *wrapperspb.Int64Value { + if x != nil { + return x.StopAt + } + return nil +} + +func (x *UpdateExperimentRequest) GetArchived() *wrapperspb.BoolValue { + if x != nil { + return x.Archived + } + return nil +} + +func (x *UpdateExperimentRequest) GetStatus() *UpdateExperimentRequest_UpdatedStatus { + if x != nil { + return x.Status + } + return nil +} + type UpdateExperimentResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Experiment *Experiment `protobuf:"bytes,1,opt,name=experiment,proto3" json:"experiment"` } func (x *UpdateExperimentResponse) Reset() { @@ -1595,6 +1651,13 @@ func (*UpdateExperimentResponse) Descriptor() ([]byte, []int) { return file_proto_experiment_service_proto_rawDescGZIP(), []int{19} } +func (x *UpdateExperimentResponse) GetExperiment() *Experiment { + if x != nil { + return x.Experiment + } + return nil +} + type StartExperimentRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2163,6 +2226,53 @@ func (x *ListExperimentsResponse_Summary) GetTotalStoppedCount() int64 { return 0 } +type UpdateExperimentRequest_UpdatedStatus struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status Experiment_Status `protobuf:"varint,1,opt,name=status,proto3,enum=bucketeer.experiment.Experiment_Status" json:"status"` +} + +func (x *UpdateExperimentRequest_UpdatedStatus) Reset() { + *x = UpdateExperimentRequest_UpdatedStatus{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_experiment_service_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateExperimentRequest_UpdatedStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateExperimentRequest_UpdatedStatus) ProtoMessage() {} + +func (x *UpdateExperimentRequest_UpdatedStatus) ProtoReflect() protoreflect.Message { + mi := &file_proto_experiment_service_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateExperimentRequest_UpdatedStatus.ProtoReflect.Descriptor instead. +func (*UpdateExperimentRequest_UpdatedStatus) Descriptor() ([]byte, []int) { + return file_proto_experiment_service_proto_rawDescGZIP(), []int{18, 0} +} + +func (x *UpdateExperimentRequest_UpdatedStatus) GetStatus() Experiment_Status { + if x != nil { + return x.Status + } + return Experiment_WAITING +} + var File_proto_experiment_service_proto protoreflect.FileDescriptor var file_proto_experiment_service_proto_rawDesc = []byte{ @@ -2441,317 +2551,246 @@ var file_proto_experiment_service_proto_rawDesc = []byte{ 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xbb, 0x03, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xee, 0x07, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 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, 0x7c, 0x0a, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x65, - 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x52, 0x1d, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, - 0x61, 0x0a, 0x13, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, - 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, - 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x12, 0x76, 0x0a, 0x1a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, - 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x12, 0x8f, 0x01, 0x0a, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x33, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, + 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, + 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 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, 0x1d, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, + 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x74, 0x0a, 0x13, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, + 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 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, 0x11, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x89, + 0x01, 0x0a, 0x1a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, + 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 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, 0x18, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x2a, 0x0a, 0x0e, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 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, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, - 0x04, 0x10, 0x05, 0x22, 0x1a, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, - 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x9d, 0x01, 0x0a, 0x16, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x46, 0x0a, 0x07, 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, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 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, 0x01, 0x10, 0x02, 0x22, - 0x19, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x17, 0x46, - 0x69, 0x6e, 0x69, 0x73, 0x68, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x47, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x46, - 0x69, 0x6e, 0x69, 0x73, 0x68, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 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, 0x01, 0x10, 0x02, 0x22, 0x1a, 0x0a, 0x18, - 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x15, 0x53, 0x74, 0x6f, - 0x70, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 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, 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, - 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x45, - 0x78, 0x70, 0x65, 0x72, 0x69, 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, 0x18, 0x0a, 0x16, 0x53, 0x74, 0x6f, 0x70, 0x45, 0x78, - 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xa1, 0x01, 0x0a, 0x18, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x45, 0x78, 0x70, 0x65, - 0x72, 0x69, 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, 0x48, 0x0a, - 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, - 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x45, 0x78, 0x70, + 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, 0x09, + 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, 0x0a, 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, 0x12, 0x36, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x61, 0x74, 0x18, 0x0b, 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, + 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x41, 0x74, + 0x12, 0x34, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x61, 0x74, 0x18, 0x0c, 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, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, + 0x73, 0x74, 0x6f, 0x70, 0x41, 0x74, 0x12, 0x65, 0x0a, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2d, 0x92, 0x41, 0x2a, 0x32, 0x28, 0x69, 0x66, 0x20, 0x74, 0x72, + 0x75, 0x65, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, + 0x6e, 0x74, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x64, 0x52, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x53, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, + 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, + 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x1a, 0x50, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, + 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, + 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, + 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x5c, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, + 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x78, + 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, + 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x16, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x78, + 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x46, 0x0a, 0x07, 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, 0x65, 0x78, 0x70, + 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 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, 0x1b, 0x0a, 0x19, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x45, - 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, - 0x72, 0x69, 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, 0x47, 0x0a, - 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, - 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, - 0x72, 0x69, 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, 0x1a, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x78, 0x70, - 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, - 0xbd, 0x28, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x82, 0x04, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x47, 0x6f, 0x61, - 0x6c, 0x12, 0x24, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, - 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x6f, 0x61, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, - 0x65, 0x74, 0x47, 0x6f, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa9, - 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x61, - 0x6c, 0x92, 0x41, 0x95, 0x03, 0x0a, 0x04, 0x67, 0x6f, 0x61, 0x6c, 0x12, 0x03, 0x47, 0x65, 0x74, - 0x1a, 0x0b, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x67, 0x6f, 0x61, 0x6c, 0x2e, 0x2a, 0x0f, 0x77, - 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x67, 0x6f, 0x61, 0x6c, 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, 0x8c, 0x04, 0x0a, 0x09, 0x4c, - 0x69, 0x73, 0x74, 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x12, 0x26, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, - 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x6f, 0x61, 0x6c, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xad, 0x03, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x92, 0x41, 0x98, - 0x03, 0x0a, 0x04, 0x67, 0x6f, 0x61, 0x6c, 0x12, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x0b, 0x4c, - 0x69, 0x73, 0x74, 0x20, 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x2e, 0x2a, 0x11, 0x77, 0x65, 0x62, 0x2e, - 0x76, 0x31, 0x2e, 0x67, 0x6f, 0x61, 0x6c, 0x73, 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, 0x97, 0x04, 0x0a, 0x0a, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x47, 0x6f, 0x61, 0x6c, 0x12, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x6f, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, - 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, - 0x6f, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb5, 0x03, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x0d, 0x22, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x61, 0x6c, 0x3a, 0x01, - 0x2a, 0x92, 0x41, 0x9e, 0x03, 0x0a, 0x04, 0x67, 0x6f, 0x61, 0x6c, 0x12, 0x06, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x1a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x67, 0x6f, - 0x61, 0x6c, 0x2e, 0x2a, 0x12, 0x77, 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x67, 0x6f, 0x61, 0x6c, - 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, 0x97, 0x04, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x6f, - 0x61, 0x6c, 0x12, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, - 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x47, 0x6f, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x6f, 0x61, 0x6c, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb5, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x32, 0x08, - 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x61, 0x6c, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x9e, 0x03, 0x0a, - 0x04, 0x67, 0x6f, 0x61, 0x6c, 0x12, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x1a, 0x0e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x67, 0x6f, 0x61, 0x6c, 0x2e, 0x2a, 0x12, 0x77, - 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x67, 0x6f, 0x61, 0x6c, 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, 0x64, 0x0a, - 0x0b, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x47, 0x6f, 0x61, 0x6c, 0x12, 0x28, 0x2e, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x47, 0x6f, 0x61, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, - 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x47, 0x6f, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x94, 0x04, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x6f, - 0x61, 0x6c, 0x12, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, - 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x47, 0x6f, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x6f, 0x61, 0x6c, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb2, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x2a, 0x08, - 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x61, 0x6c, 0x92, 0x41, 0x9e, 0x03, 0x0a, 0x04, 0x67, 0x6f, - 0x61, 0x6c, 0x12, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x1a, 0x0e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x20, 0x61, 0x20, 0x67, 0x6f, 0x61, 0x6c, 0x2e, 0x2a, 0x12, 0x77, 0x65, 0x62, 0x2e, - 0x76, 0x31, 0x2e, 0x67, 0x6f, 0x61, 0x6c, 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, 0xad, 0x04, 0x0a, 0x0d, 0x47, - 0x65, 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2a, 0x2e, 0x62, + 0x08, 0x01, 0x10, 0x02, 0x22, 0x19, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x78, 0x70, + 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x9f, 0x01, 0x0a, 0x17, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x47, 0x0a, 0x07, 0x63, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x65, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, + 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, 0x01, 0x10, + 0x02, 0x22, 0x1a, 0x0a, 0x18, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x45, 0x78, 0x70, 0x65, 0x72, + 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9b, 0x01, + 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x70, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 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, 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, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, - 0x47, 0x65, 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc2, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, - 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x92, 0x41, - 0xa8, 0x03, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x03, - 0x47, 0x65, 0x74, 0x1a, 0x12, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x70, 0x65, - 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x2a, 0x15, 0x77, 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, - 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 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, 0xb5, 0x04, 0x0a, 0x0f, 0x4c, - 0x69, 0x73, 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2c, - 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x62, + 0x53, 0x74, 0x6f, 0x70, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 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, 0x18, 0x0a, 0x16, 0x53, + 0x74, 0x6f, 0x70, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa1, 0x01, 0x0a, 0x18, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 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, 0x48, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, + 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 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, 0x1b, 0x0a, 0x19, 0x41, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 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, 0x47, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, + 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 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, 0x1a, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x8d, 0x2c, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, + 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x82, 0x04, 0x0a, 0x07, 0x47, + 0x65, 0x74, 0x47, 0x6f, 0x61, 0x6c, 0x12, 0x24, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, + 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, + 0x74, 0x47, 0x6f, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc4, 0x03, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x92, 0x41, 0xa9, 0x03, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x11, 0x4c, 0x69, 0x73, - 0x74, 0x20, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x2a, 0x16, - 0x77, 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x6c, 0x69, 0x73, 0x74, 0x4a, 0xb4, 0x01, 0x0a, 0x03, 0x34, 0x30, 0x30, 0x12, 0xac, + 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x6f, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0xa9, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x76, + 0x31, 0x2f, 0x67, 0x6f, 0x61, 0x6c, 0x92, 0x41, 0x95, 0x03, 0x0a, 0x04, 0x67, 0x6f, 0x61, 0x6c, + 0x12, 0x03, 0x47, 0x65, 0x74, 0x1a, 0x0b, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x67, 0x6f, 0x61, + 0x6c, 0x2e, 0x2a, 0x0f, 0x77, 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x67, 0x6f, 0x61, 0x6c, 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, + 0x8c, 0x04, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x12, 0x26, 0x2e, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, + 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, + 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xad, + 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x61, + 0x6c, 0x73, 0x92, 0x41, 0x98, 0x03, 0x0a, 0x04, 0x67, 0x6f, 0x61, 0x6c, 0x12, 0x04, 0x4c, 0x69, + 0x73, 0x74, 0x1a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x2e, 0x2a, + 0x11, 0x77, 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x67, 0x6f, 0x61, 0x6c, 0x73, 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, 0x97, + 0x04, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x6f, 0x61, 0x6c, 0x12, 0x27, 0x2e, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, + 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x6f, 0x61, 0x6c, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, + 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x47, 0x6f, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xb5, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x22, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x67, + 0x6f, 0x61, 0x6c, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x9e, 0x03, 0x0a, 0x04, 0x67, 0x6f, 0x61, 0x6c, + 0x12, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x1a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x20, 0x61, 0x20, 0x67, 0x6f, 0x61, 0x6c, 0x2e, 0x2a, 0x12, 0x77, 0x65, 0x62, 0x2e, 0x76, 0x31, + 0x2e, 0x67, 0x6f, 0x61, 0x6c, 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, 0x97, 0x04, 0x0a, 0x0a, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x47, 0x6f, 0x61, 0x6c, 0x12, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x6f, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, + 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x6f, + 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb5, 0x03, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x0d, 0x32, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x61, 0x6c, 0x3a, 0x01, 0x2a, + 0x92, 0x41, 0x9e, 0x03, 0x0a, 0x04, 0x67, 0x6f, 0x61, 0x6c, 0x12, 0x06, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x1a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x67, 0x6f, 0x61, + 0x6c, 0x2e, 0x2a, 0x12, 0x77, 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x67, 0x6f, 0x61, 0x6c, 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, @@ -2774,20 +2813,94 @@ var file_proto_experiment_service_proto_rawDesc = []byte{ 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, 0xc2, 0x04, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, - 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, - 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xce, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, - 0x0e, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x3a, - 0x01, 0x2a, 0x92, 0x41, 0xb1, 0x03, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x1a, 0x15, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, - 0x2e, 0x2a, 0x18, 0x77, 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, - 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0xb4, 0x01, 0x0a, 0x03, + 0x20, 0x7d, 0x12, 0x64, 0x0a, 0x0b, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x47, 0x6f, 0x61, + 0x6c, 0x12, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, + 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x47, 0x6f, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x47, 0x6f, 0x61, 0x6c, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x94, 0x04, 0x0a, 0x0a, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x47, 0x6f, 0x61, 0x6c, 0x12, 0x27, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x6f, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x28, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, + 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x6f, + 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb2, 0x03, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x0a, 0x2a, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x61, 0x6c, 0x92, 0x41, 0x9e, + 0x03, 0x0a, 0x04, 0x67, 0x6f, 0x61, 0x6c, 0x12, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x1a, + 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x20, 0x67, 0x6f, 0x61, 0x6c, 0x2e, 0x2a, + 0x12, 0x77, 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x67, 0x6f, 0x61, 0x6c, 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, + 0xad, 0x04, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x2a, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, + 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x70, 0x65, + 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, + 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc2, 0x03, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, + 0x65, 0x6e, 0x74, 0x92, 0x41, 0xa8, 0x03, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x03, 0x47, 0x65, 0x74, 0x1a, 0x12, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6e, + 0x20, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x2a, 0x15, 0x77, 0x65, + 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 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, + 0xb5, 0x04, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, + 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, + 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2d, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, + 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x70, + 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xc4, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x65, + 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x92, 0x41, 0xa9, 0x03, 0x0a, 0x0a, + 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x04, 0x4c, 0x69, 0x73, 0x74, + 0x1a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x2a, 0x16, 0x77, 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x65, 0x78, 0x70, 0x65, + 0x72, 0x69, 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, @@ -2810,54 +2923,120 @@ var file_proto_experiment_service_proto_rawDesc = []byte{ 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, 0x73, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x2e, 0x62, 0x75, + 0x22, 0x3a, 0x20, 0x5b, 0x5d, 0x20, 0x7d, 0x12, 0xc2, 0x04, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x2e, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, + 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, 0x0f, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x2c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, - 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x78, 0x70, 0x65, - 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, - 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, - 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, - 0x0a, 0x10, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x2d, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, - 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, - 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, - 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x45, - 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x0e, 0x53, 0x74, 0x6f, 0x70, 0x45, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, - 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x6f, - 0x70, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, - 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x45, 0x78, + 0x6e, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xce, 0x03, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x13, 0x22, 0x0e, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, + 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0xb1, 0x03, 0x0a, 0x0a, 0x65, 0x78, 0x70, + 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x1a, + 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x70, 0x65, 0x72, + 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x2a, 0x18, 0x77, 0x65, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x65, + 0x78, 0x70, 0x65, 0x72, 0x69, 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, 0xc2, 0x04, 0x0a, + 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x2d, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, + 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, + 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, + 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x76, 0x0a, 0x11, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x45, 0x78, 0x70, - 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x10, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2d, - 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, - 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, - 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, - 0x34, 0x5a, 0x32, 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, 0x65, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x22, 0xce, 0x03, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x32, 0x0e, 0x2f, 0x76, 0x31, 0x2f, 0x65, + 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0xb1, 0x03, + 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x06, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x1a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x20, + 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x2a, 0x18, 0x77, 0x65, 0x62, + 0x2e, 0x76, 0x31, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 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, 0x70, 0x0a, 0x0f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, + 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, + 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x45, + 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x10, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x45, 0x78, 0x70, + 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x46, + 0x69, 0x6e, 0x69, 0x73, 0x68, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, + 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x46, 0x69, + 0x6e, 0x69, 0x73, 0x68, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x0e, 0x53, 0x74, 0x6f, 0x70, + 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x2e, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, + 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, + 0x74, 0x6f, 0x70, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x11, 0x41, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x2e, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, + 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, + 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, + 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, + 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x73, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, + 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x65, 0x65, 0x72, 0x2e, 0x65, + 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x42, 0x34, 0x5a, 0x32, 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, + 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -2873,137 +3052,147 @@ func file_proto_experiment_service_proto_rawDescGZIP() []byte { } var file_proto_experiment_service_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_proto_experiment_service_proto_msgTypes = make([]protoimpl.MessageInfo, 31) +var file_proto_experiment_service_proto_msgTypes = make([]protoimpl.MessageInfo, 32) var file_proto_experiment_service_proto_goTypes = []interface{}{ - (ListGoalsRequest_OrderBy)(0), // 0: bucketeer.experiment.ListGoalsRequest.OrderBy - (ListGoalsRequest_OrderDirection)(0), // 1: bucketeer.experiment.ListGoalsRequest.OrderDirection - (ListExperimentsRequest_OrderBy)(0), // 2: bucketeer.experiment.ListExperimentsRequest.OrderBy - (ListExperimentsRequest_OrderDirection)(0), // 3: bucketeer.experiment.ListExperimentsRequest.OrderDirection - (*GetGoalRequest)(nil), // 4: bucketeer.experiment.GetGoalRequest - (*GetGoalResponse)(nil), // 5: bucketeer.experiment.GetGoalResponse - (*ListGoalsRequest)(nil), // 6: bucketeer.experiment.ListGoalsRequest - (*ListGoalsResponse)(nil), // 7: bucketeer.experiment.ListGoalsResponse - (*CreateGoalRequest)(nil), // 8: bucketeer.experiment.CreateGoalRequest - (*CreateGoalResponse)(nil), // 9: bucketeer.experiment.CreateGoalResponse - (*ArchiveGoalRequest)(nil), // 10: bucketeer.experiment.ArchiveGoalRequest - (*ArchiveGoalResponse)(nil), // 11: bucketeer.experiment.ArchiveGoalResponse - (*DeleteGoalRequest)(nil), // 12: bucketeer.experiment.DeleteGoalRequest - (*DeleteGoalResponse)(nil), // 13: bucketeer.experiment.DeleteGoalResponse - (*UpdateGoalRequest)(nil), // 14: bucketeer.experiment.UpdateGoalRequest - (*UpdateGoalResponse)(nil), // 15: bucketeer.experiment.UpdateGoalResponse - (*GetExperimentRequest)(nil), // 16: bucketeer.experiment.GetExperimentRequest - (*GetExperimentResponse)(nil), // 17: bucketeer.experiment.GetExperimentResponse - (*ListExperimentsRequest)(nil), // 18: bucketeer.experiment.ListExperimentsRequest - (*ListExperimentsResponse)(nil), // 19: bucketeer.experiment.ListExperimentsResponse - (*CreateExperimentRequest)(nil), // 20: bucketeer.experiment.CreateExperimentRequest - (*CreateExperimentResponse)(nil), // 21: bucketeer.experiment.CreateExperimentResponse - (*UpdateExperimentRequest)(nil), // 22: bucketeer.experiment.UpdateExperimentRequest - (*UpdateExperimentResponse)(nil), // 23: bucketeer.experiment.UpdateExperimentResponse - (*StartExperimentRequest)(nil), // 24: bucketeer.experiment.StartExperimentRequest - (*StartExperimentResponse)(nil), // 25: bucketeer.experiment.StartExperimentResponse - (*FinishExperimentRequest)(nil), // 26: bucketeer.experiment.FinishExperimentRequest - (*FinishExperimentResponse)(nil), // 27: bucketeer.experiment.FinishExperimentResponse - (*StopExperimentRequest)(nil), // 28: bucketeer.experiment.StopExperimentRequest - (*StopExperimentResponse)(nil), // 29: bucketeer.experiment.StopExperimentResponse - (*ArchiveExperimentRequest)(nil), // 30: bucketeer.experiment.ArchiveExperimentRequest - (*ArchiveExperimentResponse)(nil), // 31: bucketeer.experiment.ArchiveExperimentResponse - (*DeleteExperimentRequest)(nil), // 32: bucketeer.experiment.DeleteExperimentRequest - (*DeleteExperimentResponse)(nil), // 33: bucketeer.experiment.DeleteExperimentResponse - (*ListExperimentsResponse_Summary)(nil), // 34: bucketeer.experiment.ListExperimentsResponse.Summary - (*Goal)(nil), // 35: bucketeer.experiment.Goal - (*wrapperspb.BoolValue)(nil), // 36: google.protobuf.BoolValue - (*CreateGoalCommand)(nil), // 37: bucketeer.experiment.CreateGoalCommand - (Goal_ConnectionType)(0), // 38: bucketeer.experiment.Goal.ConnectionType - (*ArchiveGoalCommand)(nil), // 39: bucketeer.experiment.ArchiveGoalCommand - (*DeleteGoalCommand)(nil), // 40: bucketeer.experiment.DeleteGoalCommand - (*RenameGoalCommand)(nil), // 41: bucketeer.experiment.RenameGoalCommand - (*ChangeDescriptionGoalCommand)(nil), // 42: bucketeer.experiment.ChangeDescriptionGoalCommand - (*wrapperspb.StringValue)(nil), // 43: google.protobuf.StringValue - (*Experiment)(nil), // 44: bucketeer.experiment.Experiment - (*wrapperspb.Int32Value)(nil), // 45: google.protobuf.Int32Value - (Experiment_Status)(0), // 46: bucketeer.experiment.Experiment.Status - (*CreateExperimentCommand)(nil), // 47: bucketeer.experiment.CreateExperimentCommand - (*ChangeExperimentPeriodCommand)(nil), // 48: bucketeer.experiment.ChangeExperimentPeriodCommand - (*ChangeExperimentNameCommand)(nil), // 49: bucketeer.experiment.ChangeExperimentNameCommand - (*ChangeExperimentDescriptionCommand)(nil), // 50: bucketeer.experiment.ChangeExperimentDescriptionCommand - (*StartExperimentCommand)(nil), // 51: bucketeer.experiment.StartExperimentCommand - (*FinishExperimentCommand)(nil), // 52: bucketeer.experiment.FinishExperimentCommand - (*StopExperimentCommand)(nil), // 53: bucketeer.experiment.StopExperimentCommand - (*ArchiveExperimentCommand)(nil), // 54: bucketeer.experiment.ArchiveExperimentCommand - (*DeleteExperimentCommand)(nil), // 55: bucketeer.experiment.DeleteExperimentCommand + (ListGoalsRequest_OrderBy)(0), // 0: bucketeer.experiment.ListGoalsRequest.OrderBy + (ListGoalsRequest_OrderDirection)(0), // 1: bucketeer.experiment.ListGoalsRequest.OrderDirection + (ListExperimentsRequest_OrderBy)(0), // 2: bucketeer.experiment.ListExperimentsRequest.OrderBy + (ListExperimentsRequest_OrderDirection)(0), // 3: bucketeer.experiment.ListExperimentsRequest.OrderDirection + (*GetGoalRequest)(nil), // 4: bucketeer.experiment.GetGoalRequest + (*GetGoalResponse)(nil), // 5: bucketeer.experiment.GetGoalResponse + (*ListGoalsRequest)(nil), // 6: bucketeer.experiment.ListGoalsRequest + (*ListGoalsResponse)(nil), // 7: bucketeer.experiment.ListGoalsResponse + (*CreateGoalRequest)(nil), // 8: bucketeer.experiment.CreateGoalRequest + (*CreateGoalResponse)(nil), // 9: bucketeer.experiment.CreateGoalResponse + (*ArchiveGoalRequest)(nil), // 10: bucketeer.experiment.ArchiveGoalRequest + (*ArchiveGoalResponse)(nil), // 11: bucketeer.experiment.ArchiveGoalResponse + (*DeleteGoalRequest)(nil), // 12: bucketeer.experiment.DeleteGoalRequest + (*DeleteGoalResponse)(nil), // 13: bucketeer.experiment.DeleteGoalResponse + (*UpdateGoalRequest)(nil), // 14: bucketeer.experiment.UpdateGoalRequest + (*UpdateGoalResponse)(nil), // 15: bucketeer.experiment.UpdateGoalResponse + (*GetExperimentRequest)(nil), // 16: bucketeer.experiment.GetExperimentRequest + (*GetExperimentResponse)(nil), // 17: bucketeer.experiment.GetExperimentResponse + (*ListExperimentsRequest)(nil), // 18: bucketeer.experiment.ListExperimentsRequest + (*ListExperimentsResponse)(nil), // 19: bucketeer.experiment.ListExperimentsResponse + (*CreateExperimentRequest)(nil), // 20: bucketeer.experiment.CreateExperimentRequest + (*CreateExperimentResponse)(nil), // 21: bucketeer.experiment.CreateExperimentResponse + (*UpdateExperimentRequest)(nil), // 22: bucketeer.experiment.UpdateExperimentRequest + (*UpdateExperimentResponse)(nil), // 23: bucketeer.experiment.UpdateExperimentResponse + (*StartExperimentRequest)(nil), // 24: bucketeer.experiment.StartExperimentRequest + (*StartExperimentResponse)(nil), // 25: bucketeer.experiment.StartExperimentResponse + (*FinishExperimentRequest)(nil), // 26: bucketeer.experiment.FinishExperimentRequest + (*FinishExperimentResponse)(nil), // 27: bucketeer.experiment.FinishExperimentResponse + (*StopExperimentRequest)(nil), // 28: bucketeer.experiment.StopExperimentRequest + (*StopExperimentResponse)(nil), // 29: bucketeer.experiment.StopExperimentResponse + (*ArchiveExperimentRequest)(nil), // 30: bucketeer.experiment.ArchiveExperimentRequest + (*ArchiveExperimentResponse)(nil), // 31: bucketeer.experiment.ArchiveExperimentResponse + (*DeleteExperimentRequest)(nil), // 32: bucketeer.experiment.DeleteExperimentRequest + (*DeleteExperimentResponse)(nil), // 33: bucketeer.experiment.DeleteExperimentResponse + (*ListExperimentsResponse_Summary)(nil), // 34: bucketeer.experiment.ListExperimentsResponse.Summary + (*UpdateExperimentRequest_UpdatedStatus)(nil), // 35: bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus + (*Goal)(nil), // 36: bucketeer.experiment.Goal + (*wrapperspb.BoolValue)(nil), // 37: google.protobuf.BoolValue + (*CreateGoalCommand)(nil), // 38: bucketeer.experiment.CreateGoalCommand + (Goal_ConnectionType)(0), // 39: bucketeer.experiment.Goal.ConnectionType + (*ArchiveGoalCommand)(nil), // 40: bucketeer.experiment.ArchiveGoalCommand + (*DeleteGoalCommand)(nil), // 41: bucketeer.experiment.DeleteGoalCommand + (*RenameGoalCommand)(nil), // 42: bucketeer.experiment.RenameGoalCommand + (*ChangeDescriptionGoalCommand)(nil), // 43: bucketeer.experiment.ChangeDescriptionGoalCommand + (*wrapperspb.StringValue)(nil), // 44: google.protobuf.StringValue + (*Experiment)(nil), // 45: bucketeer.experiment.Experiment + (*wrapperspb.Int32Value)(nil), // 46: google.protobuf.Int32Value + (Experiment_Status)(0), // 47: bucketeer.experiment.Experiment.Status + (*CreateExperimentCommand)(nil), // 48: bucketeer.experiment.CreateExperimentCommand + (*ChangeExperimentPeriodCommand)(nil), // 49: bucketeer.experiment.ChangeExperimentPeriodCommand + (*ChangeExperimentNameCommand)(nil), // 50: bucketeer.experiment.ChangeExperimentNameCommand + (*ChangeExperimentDescriptionCommand)(nil), // 51: bucketeer.experiment.ChangeExperimentDescriptionCommand + (*wrapperspb.Int64Value)(nil), // 52: google.protobuf.Int64Value + (*StartExperimentCommand)(nil), // 53: bucketeer.experiment.StartExperimentCommand + (*FinishExperimentCommand)(nil), // 54: bucketeer.experiment.FinishExperimentCommand + (*StopExperimentCommand)(nil), // 55: bucketeer.experiment.StopExperimentCommand + (*ArchiveExperimentCommand)(nil), // 56: bucketeer.experiment.ArchiveExperimentCommand + (*DeleteExperimentCommand)(nil), // 57: bucketeer.experiment.DeleteExperimentCommand } var file_proto_experiment_service_proto_depIdxs = []int32{ - 35, // 0: bucketeer.experiment.GetGoalResponse.goal:type_name -> bucketeer.experiment.Goal + 36, // 0: bucketeer.experiment.GetGoalResponse.goal:type_name -> bucketeer.experiment.Goal 0, // 1: bucketeer.experiment.ListGoalsRequest.order_by:type_name -> bucketeer.experiment.ListGoalsRequest.OrderBy 1, // 2: bucketeer.experiment.ListGoalsRequest.order_direction:type_name -> bucketeer.experiment.ListGoalsRequest.OrderDirection - 36, // 3: bucketeer.experiment.ListGoalsRequest.is_in_use_status:type_name -> google.protobuf.BoolValue - 36, // 4: bucketeer.experiment.ListGoalsRequest.archived:type_name -> google.protobuf.BoolValue - 35, // 5: bucketeer.experiment.ListGoalsResponse.goals:type_name -> bucketeer.experiment.Goal - 37, // 6: bucketeer.experiment.CreateGoalRequest.command:type_name -> bucketeer.experiment.CreateGoalCommand - 38, // 7: bucketeer.experiment.CreateGoalRequest.connection_type:type_name -> bucketeer.experiment.Goal.ConnectionType - 35, // 8: bucketeer.experiment.CreateGoalResponse.goal:type_name -> bucketeer.experiment.Goal - 39, // 9: bucketeer.experiment.ArchiveGoalRequest.command:type_name -> bucketeer.experiment.ArchiveGoalCommand - 40, // 10: bucketeer.experiment.DeleteGoalRequest.command:type_name -> bucketeer.experiment.DeleteGoalCommand - 41, // 11: bucketeer.experiment.UpdateGoalRequest.rename_command:type_name -> bucketeer.experiment.RenameGoalCommand - 42, // 12: bucketeer.experiment.UpdateGoalRequest.change_description_command:type_name -> bucketeer.experiment.ChangeDescriptionGoalCommand - 43, // 13: bucketeer.experiment.UpdateGoalRequest.name:type_name -> google.protobuf.StringValue - 43, // 14: bucketeer.experiment.UpdateGoalRequest.description:type_name -> google.protobuf.StringValue - 36, // 15: bucketeer.experiment.UpdateGoalRequest.archived:type_name -> google.protobuf.BoolValue - 35, // 16: bucketeer.experiment.UpdateGoalResponse.goal:type_name -> bucketeer.experiment.Goal - 44, // 17: bucketeer.experiment.GetExperimentResponse.experiment:type_name -> bucketeer.experiment.Experiment - 45, // 18: bucketeer.experiment.ListExperimentsRequest.feature_version:type_name -> google.protobuf.Int32Value - 45, // 19: bucketeer.experiment.ListExperimentsRequest.status:type_name -> google.protobuf.Int32Value + 37, // 3: bucketeer.experiment.ListGoalsRequest.is_in_use_status:type_name -> google.protobuf.BoolValue + 37, // 4: bucketeer.experiment.ListGoalsRequest.archived:type_name -> google.protobuf.BoolValue + 36, // 5: bucketeer.experiment.ListGoalsResponse.goals:type_name -> bucketeer.experiment.Goal + 38, // 6: bucketeer.experiment.CreateGoalRequest.command:type_name -> bucketeer.experiment.CreateGoalCommand + 39, // 7: bucketeer.experiment.CreateGoalRequest.connection_type:type_name -> bucketeer.experiment.Goal.ConnectionType + 36, // 8: bucketeer.experiment.CreateGoalResponse.goal:type_name -> bucketeer.experiment.Goal + 40, // 9: bucketeer.experiment.ArchiveGoalRequest.command:type_name -> bucketeer.experiment.ArchiveGoalCommand + 41, // 10: bucketeer.experiment.DeleteGoalRequest.command:type_name -> bucketeer.experiment.DeleteGoalCommand + 42, // 11: bucketeer.experiment.UpdateGoalRequest.rename_command:type_name -> bucketeer.experiment.RenameGoalCommand + 43, // 12: bucketeer.experiment.UpdateGoalRequest.change_description_command:type_name -> bucketeer.experiment.ChangeDescriptionGoalCommand + 44, // 13: bucketeer.experiment.UpdateGoalRequest.name:type_name -> google.protobuf.StringValue + 44, // 14: bucketeer.experiment.UpdateGoalRequest.description:type_name -> google.protobuf.StringValue + 37, // 15: bucketeer.experiment.UpdateGoalRequest.archived:type_name -> google.protobuf.BoolValue + 36, // 16: bucketeer.experiment.UpdateGoalResponse.goal:type_name -> bucketeer.experiment.Goal + 45, // 17: bucketeer.experiment.GetExperimentResponse.experiment:type_name -> bucketeer.experiment.Experiment + 46, // 18: bucketeer.experiment.ListExperimentsRequest.feature_version:type_name -> google.protobuf.Int32Value + 46, // 19: bucketeer.experiment.ListExperimentsRequest.status:type_name -> google.protobuf.Int32Value 2, // 20: bucketeer.experiment.ListExperimentsRequest.order_by:type_name -> bucketeer.experiment.ListExperimentsRequest.OrderBy 3, // 21: bucketeer.experiment.ListExperimentsRequest.order_direction:type_name -> bucketeer.experiment.ListExperimentsRequest.OrderDirection - 36, // 22: bucketeer.experiment.ListExperimentsRequest.archived:type_name -> google.protobuf.BoolValue - 46, // 23: bucketeer.experiment.ListExperimentsRequest.statuses:type_name -> bucketeer.experiment.Experiment.Status - 44, // 24: bucketeer.experiment.ListExperimentsResponse.experiments:type_name -> bucketeer.experiment.Experiment + 37, // 22: bucketeer.experiment.ListExperimentsRequest.archived:type_name -> google.protobuf.BoolValue + 47, // 23: bucketeer.experiment.ListExperimentsRequest.statuses:type_name -> bucketeer.experiment.Experiment.Status + 45, // 24: bucketeer.experiment.ListExperimentsResponse.experiments:type_name -> bucketeer.experiment.Experiment 34, // 25: bucketeer.experiment.ListExperimentsResponse.summary:type_name -> bucketeer.experiment.ListExperimentsResponse.Summary - 47, // 26: bucketeer.experiment.CreateExperimentRequest.command:type_name -> bucketeer.experiment.CreateExperimentCommand - 44, // 27: bucketeer.experiment.CreateExperimentResponse.experiment:type_name -> bucketeer.experiment.Experiment - 48, // 28: bucketeer.experiment.UpdateExperimentRequest.change_experiment_period_command:type_name -> bucketeer.experiment.ChangeExperimentPeriodCommand - 49, // 29: bucketeer.experiment.UpdateExperimentRequest.change_name_command:type_name -> bucketeer.experiment.ChangeExperimentNameCommand - 50, // 30: bucketeer.experiment.UpdateExperimentRequest.change_description_command:type_name -> bucketeer.experiment.ChangeExperimentDescriptionCommand - 51, // 31: bucketeer.experiment.StartExperimentRequest.command:type_name -> bucketeer.experiment.StartExperimentCommand - 52, // 32: bucketeer.experiment.FinishExperimentRequest.command:type_name -> bucketeer.experiment.FinishExperimentCommand - 53, // 33: bucketeer.experiment.StopExperimentRequest.command:type_name -> bucketeer.experiment.StopExperimentCommand - 54, // 34: bucketeer.experiment.ArchiveExperimentRequest.command:type_name -> bucketeer.experiment.ArchiveExperimentCommand - 55, // 35: bucketeer.experiment.DeleteExperimentRequest.command:type_name -> bucketeer.experiment.DeleteExperimentCommand - 4, // 36: bucketeer.experiment.ExperimentService.GetGoal:input_type -> bucketeer.experiment.GetGoalRequest - 6, // 37: bucketeer.experiment.ExperimentService.ListGoals:input_type -> bucketeer.experiment.ListGoalsRequest - 8, // 38: bucketeer.experiment.ExperimentService.CreateGoal:input_type -> bucketeer.experiment.CreateGoalRequest - 14, // 39: bucketeer.experiment.ExperimentService.UpdateGoal:input_type -> bucketeer.experiment.UpdateGoalRequest - 10, // 40: bucketeer.experiment.ExperimentService.ArchiveGoal:input_type -> bucketeer.experiment.ArchiveGoalRequest - 12, // 41: bucketeer.experiment.ExperimentService.DeleteGoal:input_type -> bucketeer.experiment.DeleteGoalRequest - 16, // 42: bucketeer.experiment.ExperimentService.GetExperiment:input_type -> bucketeer.experiment.GetExperimentRequest - 18, // 43: bucketeer.experiment.ExperimentService.ListExperiments:input_type -> bucketeer.experiment.ListExperimentsRequest - 20, // 44: bucketeer.experiment.ExperimentService.CreateExperiment:input_type -> bucketeer.experiment.CreateExperimentRequest - 22, // 45: bucketeer.experiment.ExperimentService.UpdateExperiment:input_type -> bucketeer.experiment.UpdateExperimentRequest - 24, // 46: bucketeer.experiment.ExperimentService.StartExperiment:input_type -> bucketeer.experiment.StartExperimentRequest - 26, // 47: bucketeer.experiment.ExperimentService.FinishExperiment:input_type -> bucketeer.experiment.FinishExperimentRequest - 28, // 48: bucketeer.experiment.ExperimentService.StopExperiment:input_type -> bucketeer.experiment.StopExperimentRequest - 30, // 49: bucketeer.experiment.ExperimentService.ArchiveExperiment:input_type -> bucketeer.experiment.ArchiveExperimentRequest - 32, // 50: bucketeer.experiment.ExperimentService.DeleteExperiment:input_type -> bucketeer.experiment.DeleteExperimentRequest - 5, // 51: bucketeer.experiment.ExperimentService.GetGoal:output_type -> bucketeer.experiment.GetGoalResponse - 7, // 52: bucketeer.experiment.ExperimentService.ListGoals:output_type -> bucketeer.experiment.ListGoalsResponse - 9, // 53: bucketeer.experiment.ExperimentService.CreateGoal:output_type -> bucketeer.experiment.CreateGoalResponse - 15, // 54: bucketeer.experiment.ExperimentService.UpdateGoal:output_type -> bucketeer.experiment.UpdateGoalResponse - 11, // 55: bucketeer.experiment.ExperimentService.ArchiveGoal:output_type -> bucketeer.experiment.ArchiveGoalResponse - 13, // 56: bucketeer.experiment.ExperimentService.DeleteGoal:output_type -> bucketeer.experiment.DeleteGoalResponse - 17, // 57: bucketeer.experiment.ExperimentService.GetExperiment:output_type -> bucketeer.experiment.GetExperimentResponse - 19, // 58: bucketeer.experiment.ExperimentService.ListExperiments:output_type -> bucketeer.experiment.ListExperimentsResponse - 21, // 59: bucketeer.experiment.ExperimentService.CreateExperiment:output_type -> bucketeer.experiment.CreateExperimentResponse - 23, // 60: bucketeer.experiment.ExperimentService.UpdateExperiment:output_type -> bucketeer.experiment.UpdateExperimentResponse - 25, // 61: bucketeer.experiment.ExperimentService.StartExperiment:output_type -> bucketeer.experiment.StartExperimentResponse - 27, // 62: bucketeer.experiment.ExperimentService.FinishExperiment:output_type -> bucketeer.experiment.FinishExperimentResponse - 29, // 63: bucketeer.experiment.ExperimentService.StopExperiment:output_type -> bucketeer.experiment.StopExperimentResponse - 31, // 64: bucketeer.experiment.ExperimentService.ArchiveExperiment:output_type -> bucketeer.experiment.ArchiveExperimentResponse - 33, // 65: bucketeer.experiment.ExperimentService.DeleteExperiment:output_type -> bucketeer.experiment.DeleteExperimentResponse - 51, // [51:66] is the sub-list for method output_type - 36, // [36:51] is the sub-list for method input_type - 36, // [36:36] is the sub-list for extension type_name - 36, // [36:36] is the sub-list for extension extendee - 0, // [0:36] is the sub-list for field type_name + 48, // 26: bucketeer.experiment.CreateExperimentRequest.command:type_name -> bucketeer.experiment.CreateExperimentCommand + 45, // 27: bucketeer.experiment.CreateExperimentResponse.experiment:type_name -> bucketeer.experiment.Experiment + 49, // 28: bucketeer.experiment.UpdateExperimentRequest.change_experiment_period_command:type_name -> bucketeer.experiment.ChangeExperimentPeriodCommand + 50, // 29: bucketeer.experiment.UpdateExperimentRequest.change_name_command:type_name -> bucketeer.experiment.ChangeExperimentNameCommand + 51, // 30: bucketeer.experiment.UpdateExperimentRequest.change_description_command:type_name -> bucketeer.experiment.ChangeExperimentDescriptionCommand + 44, // 31: bucketeer.experiment.UpdateExperimentRequest.name:type_name -> google.protobuf.StringValue + 44, // 32: bucketeer.experiment.UpdateExperimentRequest.description:type_name -> google.protobuf.StringValue + 52, // 33: bucketeer.experiment.UpdateExperimentRequest.start_at:type_name -> google.protobuf.Int64Value + 52, // 34: bucketeer.experiment.UpdateExperimentRequest.stop_at:type_name -> google.protobuf.Int64Value + 37, // 35: bucketeer.experiment.UpdateExperimentRequest.archived:type_name -> google.protobuf.BoolValue + 35, // 36: bucketeer.experiment.UpdateExperimentRequest.status:type_name -> bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus + 45, // 37: bucketeer.experiment.UpdateExperimentResponse.experiment:type_name -> bucketeer.experiment.Experiment + 53, // 38: bucketeer.experiment.StartExperimentRequest.command:type_name -> bucketeer.experiment.StartExperimentCommand + 54, // 39: bucketeer.experiment.FinishExperimentRequest.command:type_name -> bucketeer.experiment.FinishExperimentCommand + 55, // 40: bucketeer.experiment.StopExperimentRequest.command:type_name -> bucketeer.experiment.StopExperimentCommand + 56, // 41: bucketeer.experiment.ArchiveExperimentRequest.command:type_name -> bucketeer.experiment.ArchiveExperimentCommand + 57, // 42: bucketeer.experiment.DeleteExperimentRequest.command:type_name -> bucketeer.experiment.DeleteExperimentCommand + 47, // 43: bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus.status:type_name -> bucketeer.experiment.Experiment.Status + 4, // 44: bucketeer.experiment.ExperimentService.GetGoal:input_type -> bucketeer.experiment.GetGoalRequest + 6, // 45: bucketeer.experiment.ExperimentService.ListGoals:input_type -> bucketeer.experiment.ListGoalsRequest + 8, // 46: bucketeer.experiment.ExperimentService.CreateGoal:input_type -> bucketeer.experiment.CreateGoalRequest + 14, // 47: bucketeer.experiment.ExperimentService.UpdateGoal:input_type -> bucketeer.experiment.UpdateGoalRequest + 10, // 48: bucketeer.experiment.ExperimentService.ArchiveGoal:input_type -> bucketeer.experiment.ArchiveGoalRequest + 12, // 49: bucketeer.experiment.ExperimentService.DeleteGoal:input_type -> bucketeer.experiment.DeleteGoalRequest + 16, // 50: bucketeer.experiment.ExperimentService.GetExperiment:input_type -> bucketeer.experiment.GetExperimentRequest + 18, // 51: bucketeer.experiment.ExperimentService.ListExperiments:input_type -> bucketeer.experiment.ListExperimentsRequest + 20, // 52: bucketeer.experiment.ExperimentService.CreateExperiment:input_type -> bucketeer.experiment.CreateExperimentRequest + 22, // 53: bucketeer.experiment.ExperimentService.UpdateExperiment:input_type -> bucketeer.experiment.UpdateExperimentRequest + 24, // 54: bucketeer.experiment.ExperimentService.StartExperiment:input_type -> bucketeer.experiment.StartExperimentRequest + 26, // 55: bucketeer.experiment.ExperimentService.FinishExperiment:input_type -> bucketeer.experiment.FinishExperimentRequest + 28, // 56: bucketeer.experiment.ExperimentService.StopExperiment:input_type -> bucketeer.experiment.StopExperimentRequest + 30, // 57: bucketeer.experiment.ExperimentService.ArchiveExperiment:input_type -> bucketeer.experiment.ArchiveExperimentRequest + 32, // 58: bucketeer.experiment.ExperimentService.DeleteExperiment:input_type -> bucketeer.experiment.DeleteExperimentRequest + 5, // 59: bucketeer.experiment.ExperimentService.GetGoal:output_type -> bucketeer.experiment.GetGoalResponse + 7, // 60: bucketeer.experiment.ExperimentService.ListGoals:output_type -> bucketeer.experiment.ListGoalsResponse + 9, // 61: bucketeer.experiment.ExperimentService.CreateGoal:output_type -> bucketeer.experiment.CreateGoalResponse + 15, // 62: bucketeer.experiment.ExperimentService.UpdateGoal:output_type -> bucketeer.experiment.UpdateGoalResponse + 11, // 63: bucketeer.experiment.ExperimentService.ArchiveGoal:output_type -> bucketeer.experiment.ArchiveGoalResponse + 13, // 64: bucketeer.experiment.ExperimentService.DeleteGoal:output_type -> bucketeer.experiment.DeleteGoalResponse + 17, // 65: bucketeer.experiment.ExperimentService.GetExperiment:output_type -> bucketeer.experiment.GetExperimentResponse + 19, // 66: bucketeer.experiment.ExperimentService.ListExperiments:output_type -> bucketeer.experiment.ListExperimentsResponse + 21, // 67: bucketeer.experiment.ExperimentService.CreateExperiment:output_type -> bucketeer.experiment.CreateExperimentResponse + 23, // 68: bucketeer.experiment.ExperimentService.UpdateExperiment:output_type -> bucketeer.experiment.UpdateExperimentResponse + 25, // 69: bucketeer.experiment.ExperimentService.StartExperiment:output_type -> bucketeer.experiment.StartExperimentResponse + 27, // 70: bucketeer.experiment.ExperimentService.FinishExperiment:output_type -> bucketeer.experiment.FinishExperimentResponse + 29, // 71: bucketeer.experiment.ExperimentService.StopExperiment:output_type -> bucketeer.experiment.StopExperimentResponse + 31, // 72: bucketeer.experiment.ExperimentService.ArchiveExperiment:output_type -> bucketeer.experiment.ArchiveExperimentResponse + 33, // 73: bucketeer.experiment.ExperimentService.DeleteExperiment:output_type -> bucketeer.experiment.DeleteExperimentResponse + 59, // [59:74] is the sub-list for method output_type + 44, // [44:59] is the sub-list for method input_type + 44, // [44:44] is the sub-list for extension type_name + 44, // [44:44] is the sub-list for extension extendee + 0, // [0:44] is the sub-list for field type_name } func init() { file_proto_experiment_service_proto_init() } @@ -3387,6 +3576,18 @@ func file_proto_experiment_service_proto_init() { return nil } } + file_proto_experiment_service_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateExperimentRequest_UpdatedStatus); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -3394,7 +3595,7 @@ func file_proto_experiment_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_proto_experiment_service_proto_rawDesc, NumEnums: 4, - NumMessages: 31, + NumMessages: 32, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/experiment/service.proto b/proto/experiment/service.proto index a9e668143..d8ab96692 100644 --- a/proto/experiment/service.proto +++ b/proto/experiment/service.proto @@ -208,19 +208,48 @@ message CreateExperimentResponse { } message UpdateExperimentRequest { - string id = 1; + message UpdatedStatus { + Experiment.Status status = 1; + } + string id = 1 [(google.api.field_behavior) = REQUIRED]; reserved 2; // ChangeStartAtExperimentCommand change_start_at_command = 2 // [deprecated = true]; reserved 3; // ChangeStopAtExperimentCommand change_stop_at_command = 3 // [deprecated = true]; reserved 4; - ChangeExperimentPeriodCommand change_experiment_period_command = 5; - ChangeExperimentNameCommand change_name_command = 6; - ChangeExperimentDescriptionCommand change_description_command = 7; - string environment_id = 8; + ChangeExperimentPeriodCommand change_experiment_period_command = 5 [ + deprecated = true, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + description: "deprecated" + } + ]; + ChangeExperimentNameCommand change_name_command = 6 [ + deprecated = true, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + description: "deprecated" + } + ]; + ChangeExperimentDescriptionCommand change_description_command = 7 [ + deprecated = true, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + description: "deprecated" + } + ]; + string environment_id = 8 [(google.api.field_behavior) = REQUIRED]; + google.protobuf.StringValue name = 9; + google.protobuf.StringValue description = 10; + google.protobuf.Int64Value start_at = 11; + google.protobuf.Int64Value stop_at = 12; + google.protobuf.BoolValue archived = 13 + [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + description: "if true, the experiment will be archived" + }]; + UpdatedStatus status = 14; } -message UpdateExperimentResponse {} +message UpdateExperimentResponse { + Experiment experiment = 1; +} message StartExperimentRequest { reserved 1; @@ -540,7 +569,40 @@ service ExperimentService { }; } rpc UpdateExperiment(UpdateExperimentRequest) - returns (UpdateExperimentResponse) {} + returns (UpdateExperimentResponse) { + option (google.api.http) = { + patch: "/v1/experiment" + body: "*" + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + summary: "Update" + description: "Update an experiment." + tags: "experiment" + operation_id: "web.v1.experiment.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 StartExperiment(StartExperimentRequest) returns (StartExperimentResponse) {} rpc FinishExperiment(FinishExperimentRequest) diff --git a/proto/proto.lock b/proto/proto.lock index d710673ab..b90aa6c3f 100644 --- a/proto/proto.lock +++ b/proto/proto.lock @@ -16077,6 +16077,10 @@ "name": "EXPERIMENT_ARCHIVED", "integer": 210 }, + { + "name": "EXPERIMENT_UPDATED", + "integer": 211 + }, { "name": "ACCOUNT_CREATED", "integer": 300, @@ -17814,6 +17818,41 @@ } ] }, + { + "name": "ExperimentUpdatedEvent", + "fields": [ + { + "id": 1, + "name": "id", + "type": "string" + }, + { + "id": 2, + "name": "name", + "type": "string" + }, + { + "id": 3, + "name": "description", + "type": "string" + }, + { + "id": 4, + "name": "start_at", + "type": "int64" + }, + { + "id": 5, + "name": "stop_at", + "type": "int64" + }, + { + "id": 6, + "name": "status", + "type": "experiment.Experiment.Status" + } + ] + }, { "name": "ExperimentStartedEvent" }, @@ -20126,6 +20165,9 @@ { "path": "proto/experiment/goal.proto" }, + { + "path": "proto/experiment/experiment.proto" + }, { "path": "proto/coderef/code_reference.proto" } @@ -22942,37 +22984,154 @@ { "id": 1, "name": "id", - "type": "string" + "type": "string", + "options": [ + { + "name": "(google.api.field_behavior)", + "value": "REQUIRED" + } + ] }, { "id": 5, "name": "change_experiment_period_command", - "type": "ChangeExperimentPeriodCommand" + "type": "ChangeExperimentPeriodCommand", + "options": [ + { + "name": "deprecated", + "value": "true" + }, + { + "name": "(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field)", + "aggregated": [ + { + "name": "description", + "value": "deprecated" + } + ] + } + ] }, { "id": 6, "name": "change_name_command", - "type": "ChangeExperimentNameCommand" + "type": "ChangeExperimentNameCommand", + "options": [ + { + "name": "deprecated", + "value": "true" + }, + { + "name": "(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field)", + "aggregated": [ + { + "name": "description", + "value": "deprecated" + } + ] + } + ] }, { "id": 7, "name": "change_description_command", - "type": "ChangeExperimentDescriptionCommand" + "type": "ChangeExperimentDescriptionCommand", + "options": [ + { + "name": "deprecated", + "value": "true" + }, + { + "name": "(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field)", + "aggregated": [ + { + "name": "description", + "value": "deprecated" + } + ] + } + ] }, { "id": 8, "name": "environment_id", - "type": "string" + "type": "string", + "options": [ + { + "name": "(google.api.field_behavior)", + "value": "REQUIRED" + } + ] + }, + { + "id": 9, + "name": "name", + "type": "google.protobuf.StringValue" + }, + { + "id": 10, + "name": "description", + "type": "google.protobuf.StringValue" + }, + { + "id": 11, + "name": "start_at", + "type": "google.protobuf.Int64Value" + }, + { + "id": 12, + "name": "stop_at", + "type": "google.protobuf.Int64Value" + }, + { + "id": 13, + "name": "archived", + "type": "google.protobuf.BoolValue", + "options": [ + { + "name": "(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field)", + "aggregated": [ + { + "name": "description", + "value": "if true, the experiment will be archived" + } + ] + } + ] + }, + { + "id": 14, + "name": "status", + "type": "UpdatedStatus" } ], "reserved_ids": [ 2, 3, 4 + ], + "messages": [ + { + "name": "UpdatedStatus", + "fields": [ + { + "id": 1, + "name": "status", + "type": "Experiment.Status" + } + ] + } ] }, { - "name": "UpdateExperimentResponse" + "name": "UpdateExperimentResponse", + "fields": [ + { + "id": 1, + "name": "experiment", + "type": "Experiment" + } + ] }, { "name": "StartExperimentRequest", @@ -24145,7 +24304,133 @@ { "name": "UpdateExperiment", "in_type": "UpdateExperimentRequest", - "out_type": "UpdateExperimentResponse" + "out_type": "UpdateExperimentResponse", + "options": [ + { + "name": "(google.api.http)", + "aggregated": [ + { + "name": "patch", + "value": "/v1/experiment" + }, + { + "name": "body", + "value": "*" + } + ] + }, + { + "name": "(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation)", + "aggregated": [ + { + "name": "summary", + "value": "Update" + }, + { + "name": "description", + "value": "Update an experiment." + }, + { + "name": "tags", + "value": "experiment" + }, + { + "name": "operation_id", + "value": "web.v1.experiment.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": "StartExperiment", diff --git a/test/e2e/experiment/experiment_test.go b/test/e2e/experiment/experiment_test.go index b0f8356ca..984fb3130 100644 --- a/test/e2e/experiment/experiment_test.go +++ b/test/e2e/experiment/experiment_test.go @@ -244,6 +244,59 @@ func TestUpdateExperiment(t *testing.T) { } } +func TestUpdateExperimentNoCommand(t *testing.T) { + t.Parallel() + ctx, cancel := context.WithTimeout(context.Background(), timeout) + defer cancel() + c := newExperimentClient(t) + defer c.Close() + featureID := createFeatureID(t) + createFeature(ctx, t, featureID) + goalIDs := createGoals(ctx, t, c, 1) + now := time.Now() + feature := getFeature(ctx, t, featureID) + startAt := time.Now() + stopAt := startAt.Local().Add(time.Hour * 1) + e := createExperimentWithMultiGoals(ctx, t, c, featureID, feature.Variations[0].Id, goalIDs, startAt, stopAt) + startAt = now.Local().Add(time.Minute * 30) + stopAt = now.Local().Add(time.Minute * 60) + newName := fmt.Sprintf("%s-new-exp-name-%s", prefixTestName, newUUID(t)) + if _, err := c.UpdateExperiment(ctx, &experimentproto.UpdateExperimentRequest{ + Id: e.Id, + Name: wrapperspb.String(newName), + StartAt: wrapperspb.Int64(startAt.Unix()), + StopAt: wrapperspb.Int64(stopAt.Unix()), + EnvironmentId: *environmentID, + }); err != nil { + t.Fatal(err) + } + getResp, err := c.GetExperiment(ctx, &experimentproto.GetExperimentRequest{ + Id: e.Id, + EnvironmentId: *environmentID, + }) + if err != nil { + t.Fatal(err) + } + if startAt.Unix() != getResp.Experiment.StartAt { + t.Fatalf("StartAt is not equal. Expected: %d, actual: %d", startAt.Unix(), getResp.Experiment.StartAt) + } + if stopAt.Unix() != getResp.Experiment.StopAt { + t.Fatalf("StopAt is not equal. Expected: %d, actual: %d", stopAt.Unix(), getResp.Experiment.StopAt) + } + if newName != getResp.Experiment.Name { + t.Fatalf("Name is not equal. Expected: %s, actual: %s", newName, getResp.Experiment.Name) + } + + _, err = c.DeleteExperiment(ctx, &experimentproto.DeleteExperimentRequest{ + Id: e.Id, + Command: &experimentproto.DeleteExperimentCommand{}, + EnvironmentId: *environmentID, + }) + if err != nil { + t.Fatal(err) + } +} + func TestCreateAndGetGoal(t *testing.T) { t.Parallel() ctx, cancel := context.WithTimeout(context.Background(), timeout) @@ -517,6 +570,73 @@ func TestStatusUpdateFromRunningToStopped(t *testing.T) { } } +func TestStatusUpdateFromRunningToStoppedNoCommand(t *testing.T) { + t.Parallel() + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + c := newExperimentClient(t) + defer c.Close() + featureID := createFeatureID(t) + createFeature(ctx, t, featureID) + goalIDs := createGoals(ctx, t, c, 1) + now := time.Now() + startAt := now.Local().Add(-4 * 24 * time.Hour) + stopAt := now.Local().Add(-3 * 24 * time.Hour) + feature := getFeature(ctx, t, featureID) + expected := createExperimentWithMultiGoals(ctx, t, c, featureID, feature.Variations[0].Id, goalIDs, startAt, stopAt) + resp, err := c.GetExperiment(ctx, &experimentproto.GetExperimentRequest{ + Id: expected.Id, + EnvironmentId: *environmentID, + }) + if err != nil { + t.Fatal(err) + } + if resp.Experiment.Status != experimentproto.Experiment_WAITING { + t.Fatalf("Experiment status is not waiting. actual: %d", resp.Experiment.Status) + } + if _, err = c.UpdateExperiment(ctx, &experimentproto.UpdateExperimentRequest{ + Id: expected.Id, + Status: &experimentproto.UpdateExperimentRequest_UpdatedStatus{ + Status: experimentproto.Experiment_RUNNING, + }, + EnvironmentId: *environmentID, + }); err != nil { + t.Fatal(err) + } + resp, err = c.GetExperiment(ctx, &experimentproto.GetExperimentRequest{ + Id: expected.Id, + EnvironmentId: *environmentID, + }) + if resp.Experiment.Status != experimentproto.Experiment_RUNNING { + t.Fatalf("Experiment status is not running. actual: %d", resp.Experiment.Status) + } + for i := 0; i < retryTimes; i++ { + resp, err = c.GetExperiment(ctx, &experimentproto.GetExperimentRequest{ + Id: expected.Id, + EnvironmentId: *environmentID, + }) + if err != nil { + t.Fatal(err) + } + if resp.Experiment.Status == experimentproto.Experiment_STOPPED { + break + } + if i == retryTimes-1 { + t.Fatalf(fmt.Sprintf("retry timeout: %s", resp.Experiment.Name)) + } + time.Sleep(time.Second) + } + + _, err = c.DeleteExperiment(ctx, &experimentproto.DeleteExperimentRequest{ + Id: resp.Experiment.Id, + Command: &experimentproto.DeleteExperimentCommand{}, + EnvironmentId: *environmentID, + }) + if err != nil { + t.Fatal(err) + } +} + func TestStatusUpdateFromWaitingToStopped(t *testing.T) { t.Parallel() ctx, cancel := context.WithCancel(context.Background()) 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 11b74ba44..c819c5974 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 @@ -23,6 +23,7 @@ import * as proto_feature_flag_trigger_pb from '../../../proto/feature/flag_trig import * as proto_account_search_filter_pb from '../../../proto/account/search_filter_pb'; import * as proto_tag_tag_pb from '../../../proto/tag/tag_pb'; import * as proto_experiment_goal_pb from '../../../proto/experiment/goal_pb'; +import * as proto_experiment_experiment_pb from '../../../proto/experiment/experiment_pb'; import * as proto_coderef_code_reference_pb from '../../../proto/coderef/code_reference_pb'; export class Event extends jspb.Message { @@ -182,6 +183,7 @@ export namespace Event { EXPERIMENT_STARTED: 208; EXPERIMENT_FINISHED: 209; EXPERIMENT_ARCHIVED: 210; + EXPERIMENT_UPDATED: 211; ACCOUNT_CREATED: 300; ACCOUNT_ROLE_CHANGED: 301; ACCOUNT_ENABLED: 302; @@ -2544,6 +2546,59 @@ export namespace ExperimentDescriptionChangedEvent { }; } +export class ExperimentUpdatedEvent extends jspb.Message { + getId(): string; + setId(value: string): void; + + getName(): string; + setName(value: string): void; + + getDescription(): string; + setDescription(value: string): void; + + getStartAt(): number; + setStartAt(value: number): void; + + getStopAt(): number; + setStopAt(value: number): void; + + getStatus(): proto_experiment_experiment_pb.Experiment.StatusMap[keyof proto_experiment_experiment_pb.Experiment.StatusMap]; + setStatus( + value: proto_experiment_experiment_pb.Experiment.StatusMap[keyof proto_experiment_experiment_pb.Experiment.StatusMap] + ): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ExperimentUpdatedEvent.AsObject; + static toObject( + includeInstance: boolean, + msg: ExperimentUpdatedEvent + ): ExperimentUpdatedEvent.AsObject; + static extensions: { [key: number]: jspb.ExtensionFieldInfo }; + static extensionsBinary: { + [key: number]: jspb.ExtensionFieldBinaryInfo; + }; + static serializeBinaryToWriter( + message: ExperimentUpdatedEvent, + writer: jspb.BinaryWriter + ): void; + static deserializeBinary(bytes: Uint8Array): ExperimentUpdatedEvent; + static deserializeBinaryFromReader( + message: ExperimentUpdatedEvent, + reader: jspb.BinaryReader + ): ExperimentUpdatedEvent; +} + +export namespace ExperimentUpdatedEvent { + export type AsObject = { + id: string; + name: string; + description: string; + startAt: number; + stopAt: number; + status: proto_experiment_experiment_pb.Experiment.StatusMap[keyof proto_experiment_experiment_pb.Experiment.StatusMap]; + }; +} + export class ExperimentStartedEvent extends jspb.Message { serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): ExperimentStartedEvent.AsObject; 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 8bc7a63b6..961498e12 100644 --- a/ui/web-v2/src/proto/event/domain/event_pb.js +++ b/ui/web-v2/src/proto/event/domain/event_pb.js @@ -65,6 +65,8 @@ var proto_tag_tag_pb = require('../../../proto/tag/tag_pb.js'); goog.object.extend(proto, proto_tag_tag_pb); var proto_experiment_goal_pb = require('../../../proto/experiment/goal_pb.js'); goog.object.extend(proto, proto_experiment_goal_pb); +var proto_experiment_experiment_pb = require('../../../proto/experiment/experiment_pb.js'); +goog.object.extend(proto, proto_experiment_experiment_pb); var proto_coderef_code_reference_pb = require('../../../proto/coderef/code_reference_pb.js'); goog.object.extend(proto, proto_coderef_code_reference_pb); goog.exportSymbol( @@ -400,6 +402,11 @@ goog.exportSymbol( null, global ); +goog.exportSymbol( + 'proto.bucketeer.event.domain.ExperimentUpdatedEvent', + null, + global +); goog.exportSymbol( 'proto.bucketeer.event.domain.FeatureArchivedEvent', null, @@ -2338,6 +2345,31 @@ if (goog.DEBUG && !COMPILED) { proto.bucketeer.event.domain.ExperimentDescriptionChangedEvent.displayName = 'proto.bucketeer.event.domain.ExperimentDescriptionChangedEvent'; } +/** + * 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.ExperimentUpdatedEvent = function (opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits( + proto.bucketeer.event.domain.ExperimentUpdatedEvent, + jspb.Message +); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.bucketeer.event.domain.ExperimentUpdatedEvent.displayName = + 'proto.bucketeer.event.domain.ExperimentUpdatedEvent'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -5864,6 +5896,7 @@ proto.bucketeer.event.domain.Event.Type = { EXPERIMENT_STARTED: 208, EXPERIMENT_FINISHED: 209, EXPERIMENT_ARCHIVED: 210, + EXPERIMENT_UPDATED: 211, ACCOUNT_CREATED: 300, ACCOUNT_ROLE_CHANGED: 301, ACCOUNT_ENABLED: 302, @@ -17730,6 +17763,289 @@ proto.bucketeer.event.domain.ExperimentDescriptionChangedEvent.prototype.setDesc return jspb.Message.setProto3StringField(this, 2, 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.ExperimentUpdatedEvent.prototype.toObject = + function (opt_includeInstance) { + return proto.bucketeer.event.domain.ExperimentUpdatedEvent.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.ExperimentUpdatedEvent} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ + proto.bucketeer.event.domain.ExperimentUpdatedEvent.toObject = function ( + includeInstance, + msg + ) { + var f, + obj = { + id: jspb.Message.getFieldWithDefault(msg, 1, ''), + name: jspb.Message.getFieldWithDefault(msg, 2, ''), + description: jspb.Message.getFieldWithDefault(msg, 3, ''), + startAt: jspb.Message.getFieldWithDefault(msg, 4, 0), + stopAt: jspb.Message.getFieldWithDefault(msg, 5, 0), + status: jspb.Message.getFieldWithDefault(msg, 6, 0) + }; + + 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.ExperimentUpdatedEvent} + */ +proto.bucketeer.event.domain.ExperimentUpdatedEvent.deserializeBinary = + function (bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.bucketeer.event.domain.ExperimentUpdatedEvent(); + return proto.bucketeer.event.domain.ExperimentUpdatedEvent.deserializeBinaryFromReader( + msg, + reader + ); + }; + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.bucketeer.event.domain.ExperimentUpdatedEvent} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.bucketeer.event.domain.ExperimentUpdatedEvent} + */ +proto.bucketeer.event.domain.ExperimentUpdatedEvent.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 = /** @type {string} */ (reader.readString()); + msg.setName(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setDescription(value); + break; + case 4: + var value = /** @type {number} */ (reader.readInt64()); + msg.setStartAt(value); + break; + case 5: + var value = /** @type {number} */ (reader.readInt64()); + msg.setStopAt(value); + break; + case 6: + var value = + /** @type {!proto.bucketeer.experiment.Experiment.Status} */ ( + reader.readEnum() + ); + msg.setStatus(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; + }; + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.bucketeer.event.domain.ExperimentUpdatedEvent.prototype.serializeBinary = + function () { + var writer = new jspb.BinaryWriter(); + proto.bucketeer.event.domain.ExperimentUpdatedEvent.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.ExperimentUpdatedEvent} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.bucketeer.event.domain.ExperimentUpdatedEvent.serializeBinaryToWriter = + function (message, writer) { + var f = undefined; + f = message.getId(); + if (f.length > 0) { + writer.writeString(1, f); + } + f = message.getName(); + if (f.length > 0) { + writer.writeString(2, f); + } + f = message.getDescription(); + if (f.length > 0) { + writer.writeString(3, f); + } + f = message.getStartAt(); + if (f !== 0) { + writer.writeInt64(4, f); + } + f = message.getStopAt(); + if (f !== 0) { + writer.writeInt64(5, f); + } + f = message.getStatus(); + if (f !== 0.0) { + writer.writeEnum(6, f); + } + }; + +/** + * optional string id = 1; + * @return {string} + */ +proto.bucketeer.event.domain.ExperimentUpdatedEvent.prototype.getId = + function () { + return /** @type {string} */ ( + jspb.Message.getFieldWithDefault(this, 1, '') + ); + }; + +/** + * @param {string} value + * @return {!proto.bucketeer.event.domain.ExperimentUpdatedEvent} returns this + */ +proto.bucketeer.event.domain.ExperimentUpdatedEvent.prototype.setId = function ( + value +) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + +/** + * optional string name = 2; + * @return {string} + */ +proto.bucketeer.event.domain.ExperimentUpdatedEvent.prototype.getName = + function () { + return /** @type {string} */ ( + jspb.Message.getFieldWithDefault(this, 2, '') + ); + }; + +/** + * @param {string} value + * @return {!proto.bucketeer.event.domain.ExperimentUpdatedEvent} returns this + */ +proto.bucketeer.event.domain.ExperimentUpdatedEvent.prototype.setName = + function (value) { + return jspb.Message.setProto3StringField(this, 2, value); + }; + +/** + * optional string description = 3; + * @return {string} + */ +proto.bucketeer.event.domain.ExperimentUpdatedEvent.prototype.getDescription = + function () { + return /** @type {string} */ ( + jspb.Message.getFieldWithDefault(this, 3, '') + ); + }; + +/** + * @param {string} value + * @return {!proto.bucketeer.event.domain.ExperimentUpdatedEvent} returns this + */ +proto.bucketeer.event.domain.ExperimentUpdatedEvent.prototype.setDescription = + function (value) { + return jspb.Message.setProto3StringField(this, 3, value); + }; + +/** + * optional int64 start_at = 4; + * @return {number} + */ +proto.bucketeer.event.domain.ExperimentUpdatedEvent.prototype.getStartAt = + function () { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0)); + }; + +/** + * @param {number} value + * @return {!proto.bucketeer.event.domain.ExperimentUpdatedEvent} returns this + */ +proto.bucketeer.event.domain.ExperimentUpdatedEvent.prototype.setStartAt = + function (value) { + return jspb.Message.setProto3IntField(this, 4, value); + }; + +/** + * optional int64 stop_at = 5; + * @return {number} + */ +proto.bucketeer.event.domain.ExperimentUpdatedEvent.prototype.getStopAt = + function () { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0)); + }; + +/** + * @param {number} value + * @return {!proto.bucketeer.event.domain.ExperimentUpdatedEvent} returns this + */ +proto.bucketeer.event.domain.ExperimentUpdatedEvent.prototype.setStopAt = + function (value) { + return jspb.Message.setProto3IntField(this, 5, value); + }; + +/** + * optional bucketeer.experiment.Experiment.Status status = 6; + * @return {!proto.bucketeer.experiment.Experiment.Status} + */ +proto.bucketeer.event.domain.ExperimentUpdatedEvent.prototype.getStatus = + function () { + return /** @type {!proto.bucketeer.experiment.Experiment.Status} */ ( + jspb.Message.getFieldWithDefault(this, 6, 0) + ); + }; + +/** + * @param {!proto.bucketeer.experiment.Experiment.Status} value + * @return {!proto.bucketeer.event.domain.ExperimentUpdatedEvent} returns this + */ +proto.bucketeer.event.domain.ExperimentUpdatedEvent.prototype.setStatus = + function (value) { + return jspb.Message.setProto3EnumField(this, 6, value); + }; + if (jspb.Message.GENERATE_TO_OBJECT) { /** * Creates an object representation of this proto. diff --git a/ui/web-v2/src/proto/experiment/service_pb.d.ts b/ui/web-v2/src/proto/experiment/service_pb.d.ts index 8315f103d..e49dc7043 100644 --- a/ui/web-v2/src/proto/experiment/service_pb.d.ts +++ b/ui/web-v2/src/proto/experiment/service_pb.d.ts @@ -942,6 +942,36 @@ export class UpdateExperimentRequest 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; + + hasStartAt(): boolean; + clearStartAt(): void; + getStartAt(): google_protobuf_wrappers_pb.Int64Value | undefined; + setStartAt(value?: google_protobuf_wrappers_pb.Int64Value): void; + + hasStopAt(): boolean; + clearStopAt(): void; + getStopAt(): google_protobuf_wrappers_pb.Int64Value | undefined; + setStopAt(value?: google_protobuf_wrappers_pb.Int64Value): void; + + hasArchived(): boolean; + clearArchived(): void; + getArchived(): google_protobuf_wrappers_pb.BoolValue | undefined; + setArchived(value?: google_protobuf_wrappers_pb.BoolValue): void; + + hasStatus(): boolean; + clearStatus(): void; + getStatus(): UpdateExperimentRequest.UpdatedStatus | undefined; + setStatus(value?: UpdateExperimentRequest.UpdatedStatus): void; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): UpdateExperimentRequest.AsObject; static toObject( @@ -970,10 +1000,54 @@ export namespace UpdateExperimentRequest { changeNameCommand?: proto_experiment_command_pb.ChangeExperimentNameCommand.AsObject; changeDescriptionCommand?: proto_experiment_command_pb.ChangeExperimentDescriptionCommand.AsObject; environmentId: string; + name?: google_protobuf_wrappers_pb.StringValue.AsObject; + description?: google_protobuf_wrappers_pb.StringValue.AsObject; + startAt?: google_protobuf_wrappers_pb.Int64Value.AsObject; + stopAt?: google_protobuf_wrappers_pb.Int64Value.AsObject; + archived?: google_protobuf_wrappers_pb.BoolValue.AsObject; + status?: UpdateExperimentRequest.UpdatedStatus.AsObject; }; + + export class UpdatedStatus extends jspb.Message { + getStatus(): proto_experiment_experiment_pb.Experiment.StatusMap[keyof proto_experiment_experiment_pb.Experiment.StatusMap]; + setStatus( + value: proto_experiment_experiment_pb.Experiment.StatusMap[keyof proto_experiment_experiment_pb.Experiment.StatusMap] + ): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): UpdatedStatus.AsObject; + static toObject( + includeInstance: boolean, + msg: UpdatedStatus + ): UpdatedStatus.AsObject; + static extensions: { [key: number]: jspb.ExtensionFieldInfo }; + static extensionsBinary: { + [key: number]: jspb.ExtensionFieldBinaryInfo; + }; + static serializeBinaryToWriter( + message: UpdatedStatus, + writer: jspb.BinaryWriter + ): void; + static deserializeBinary(bytes: Uint8Array): UpdatedStatus; + static deserializeBinaryFromReader( + message: UpdatedStatus, + reader: jspb.BinaryReader + ): UpdatedStatus; + } + + export namespace UpdatedStatus { + export type AsObject = { + status: proto_experiment_experiment_pb.Experiment.StatusMap[keyof proto_experiment_experiment_pb.Experiment.StatusMap]; + }; + } } export class UpdateExperimentResponse extends jspb.Message { + hasExperiment(): boolean; + clearExperiment(): void; + getExperiment(): proto_experiment_experiment_pb.Experiment | undefined; + setExperiment(value?: proto_experiment_experiment_pb.Experiment): void; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): UpdateExperimentResponse.AsObject; static toObject( @@ -996,7 +1070,9 @@ export class UpdateExperimentResponse extends jspb.Message { } export namespace UpdateExperimentResponse { - export type AsObject = {}; + export type AsObject = { + experiment?: proto_experiment_experiment_pb.Experiment.AsObject; + }; } export class StartExperimentRequest extends jspb.Message { diff --git a/ui/web-v2/src/proto/experiment/service_pb.js b/ui/web-v2/src/proto/experiment/service_pb.js index 7c2e0baaf..840ded06b 100644 --- a/ui/web-v2/src/proto/experiment/service_pb.js +++ b/ui/web-v2/src/proto/experiment/service_pb.js @@ -173,6 +173,11 @@ goog.exportSymbol( null, global ); +goog.exportSymbol( + 'proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus', + null, + global +); goog.exportSymbol( 'proto.bucketeer.experiment.UpdateExperimentResponse', null, @@ -660,6 +665,33 @@ if (goog.DEBUG && !COMPILED) { proto.bucketeer.experiment.UpdateExperimentRequest.displayName = 'proto.bucketeer.experiment.UpdateExperimentRequest'; } +/** + * 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.experiment.UpdateExperimentRequest.UpdatedStatus = function ( + opt_data +) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits( + proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus, + jspb.Message +); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus.displayName = + 'proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -5908,7 +5940,28 @@ if (jspb.Message.GENERATE_TO_OBJECT) { includeInstance, f ), - environmentId: jspb.Message.getFieldWithDefault(msg, 8, '') + environmentId: jspb.Message.getFieldWithDefault(msg, 8, ''), + name: + (f = msg.getName()) && + google_protobuf_wrappers_pb.StringValue.toObject(includeInstance, f), + description: + (f = msg.getDescription()) && + google_protobuf_wrappers_pb.StringValue.toObject(includeInstance, f), + startAt: + (f = msg.getStartAt()) && + google_protobuf_wrappers_pb.Int64Value.toObject(includeInstance, f), + stopAt: + (f = msg.getStopAt()) && + google_protobuf_wrappers_pb.Int64Value.toObject(includeInstance, f), + archived: + (f = msg.getArchived()) && + google_protobuf_wrappers_pb.BoolValue.toObject(includeInstance, f), + status: + (f = msg.getStatus()) && + proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus.toObject( + includeInstance, + f + ) }; if (includeInstance) { @@ -5986,6 +6039,56 @@ proto.bucketeer.experiment.UpdateExperimentRequest.deserializeBinaryFromReader = var value = /** @type {string} */ (reader.readString()); msg.setEnvironmentId(value); break; + case 9: + var value = new google_protobuf_wrappers_pb.StringValue(); + reader.readMessage( + value, + google_protobuf_wrappers_pb.StringValue.deserializeBinaryFromReader + ); + msg.setName(value); + break; + case 10: + var value = new google_protobuf_wrappers_pb.StringValue(); + reader.readMessage( + value, + google_protobuf_wrappers_pb.StringValue.deserializeBinaryFromReader + ); + msg.setDescription(value); + break; + case 11: + var value = new google_protobuf_wrappers_pb.Int64Value(); + reader.readMessage( + value, + google_protobuf_wrappers_pb.Int64Value.deserializeBinaryFromReader + ); + msg.setStartAt(value); + break; + case 12: + var value = new google_protobuf_wrappers_pb.Int64Value(); + reader.readMessage( + value, + google_protobuf_wrappers_pb.Int64Value.deserializeBinaryFromReader + ); + msg.setStopAt(value); + break; + case 13: + var value = new google_protobuf_wrappers_pb.BoolValue(); + reader.readMessage( + value, + google_protobuf_wrappers_pb.BoolValue.deserializeBinaryFromReader + ); + msg.setArchived(value); + break; + case 14: + var value = + new proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus(); + reader.readMessage( + value, + proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus + .deserializeBinaryFromReader + ); + msg.setStatus(value); + break; default: reader.skipField(); break; @@ -6053,6 +6156,195 @@ proto.bucketeer.experiment.UpdateExperimentRequest.serializeBinaryToWriter = if (f.length > 0) { writer.writeString(8, f); } + f = message.getName(); + if (f != null) { + writer.writeMessage( + 9, + f, + google_protobuf_wrappers_pb.StringValue.serializeBinaryToWriter + ); + } + f = message.getDescription(); + if (f != null) { + writer.writeMessage( + 10, + f, + google_protobuf_wrappers_pb.StringValue.serializeBinaryToWriter + ); + } + f = message.getStartAt(); + if (f != null) { + writer.writeMessage( + 11, + f, + google_protobuf_wrappers_pb.Int64Value.serializeBinaryToWriter + ); + } + f = message.getStopAt(); + if (f != null) { + writer.writeMessage( + 12, + f, + google_protobuf_wrappers_pb.Int64Value.serializeBinaryToWriter + ); + } + f = message.getArchived(); + if (f != null) { + writer.writeMessage( + 13, + f, + google_protobuf_wrappers_pb.BoolValue.serializeBinaryToWriter + ); + } + f = message.getStatus(); + if (f != null) { + writer.writeMessage( + 14, + f, + proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus + .serializeBinaryToWriter + ); + } + }; + +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.experiment.UpdateExperimentRequest.UpdatedStatus.prototype.toObject = + function (opt_includeInstance) { + return proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus.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.experiment.UpdateExperimentRequest.UpdatedStatus} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ + proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus.toObject = + function (includeInstance, msg) { + var f, + obj = { + status: jspb.Message.getFieldWithDefault(msg, 1, 0) + }; + + 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.experiment.UpdateExperimentRequest.UpdatedStatus} + */ +proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus.deserializeBinary = + function (bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = + new proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus(); + return proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus.deserializeBinaryFromReader( + msg, + reader + ); + }; + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus} + */ +proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus.deserializeBinaryFromReader = + function (msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = + /** @type {!proto.bucketeer.experiment.Experiment.Status} */ ( + reader.readEnum() + ); + msg.setStatus(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; + }; + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus.prototype.serializeBinary = + function () { + var writer = new jspb.BinaryWriter(); + proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus.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.experiment.UpdateExperimentRequest.UpdatedStatus} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus.serializeBinaryToWriter = + function (message, writer) { + var f = undefined; + f = message.getStatus(); + if (f !== 0.0) { + writer.writeEnum(1, f); + } + }; + +/** + * optional Experiment.Status status = 1; + * @return {!proto.bucketeer.experiment.Experiment.Status} + */ +proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus.prototype.getStatus = + function () { + return /** @type {!proto.bucketeer.experiment.Experiment.Status} */ ( + jspb.Message.getFieldWithDefault(this, 1, 0) + ); + }; + +/** + * @param {!proto.bucketeer.experiment.Experiment.Status} value + * @return {!proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus} returns this + */ +proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus.prototype.setStatus = + function (value) { + return jspb.Message.setProto3EnumField(this, 1, value); }; /** @@ -6222,6 +6514,258 @@ proto.bucketeer.experiment.UpdateExperimentRequest.prototype.setEnvironmentId = return jspb.Message.setProto3StringField(this, 8, value); }; +/** + * optional google.protobuf.StringValue name = 9; + * @return {?proto.google.protobuf.StringValue} + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.getName = + function () { + return /** @type{?proto.google.protobuf.StringValue} */ ( + jspb.Message.getWrapperField( + this, + google_protobuf_wrappers_pb.StringValue, + 9 + ) + ); + }; + +/** + * @param {?proto.google.protobuf.StringValue|undefined} value + * @return {!proto.bucketeer.experiment.UpdateExperimentRequest} returns this + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.setName = + function (value) { + return jspb.Message.setWrapperField(this, 9, value); + }; + +/** + * Clears the message field making it undefined. + * @return {!proto.bucketeer.experiment.UpdateExperimentRequest} returns this + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.clearName = + function () { + return this.setName(undefined); + }; + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.hasName = + function () { + return jspb.Message.getField(this, 9) != null; + }; + +/** + * optional google.protobuf.StringValue description = 10; + * @return {?proto.google.protobuf.StringValue} + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.getDescription = + function () { + return /** @type{?proto.google.protobuf.StringValue} */ ( + jspb.Message.getWrapperField( + this, + google_protobuf_wrappers_pb.StringValue, + 10 + ) + ); + }; + +/** + * @param {?proto.google.protobuf.StringValue|undefined} value + * @return {!proto.bucketeer.experiment.UpdateExperimentRequest} returns this + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.setDescription = + function (value) { + return jspb.Message.setWrapperField(this, 10, value); + }; + +/** + * Clears the message field making it undefined. + * @return {!proto.bucketeer.experiment.UpdateExperimentRequest} returns this + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.clearDescription = + function () { + return this.setDescription(undefined); + }; + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.hasDescription = + function () { + return jspb.Message.getField(this, 10) != null; + }; + +/** + * optional google.protobuf.Int64Value start_at = 11; + * @return {?proto.google.protobuf.Int64Value} + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.getStartAt = + function () { + return /** @type{?proto.google.protobuf.Int64Value} */ ( + jspb.Message.getWrapperField( + this, + google_protobuf_wrappers_pb.Int64Value, + 11 + ) + ); + }; + +/** + * @param {?proto.google.protobuf.Int64Value|undefined} value + * @return {!proto.bucketeer.experiment.UpdateExperimentRequest} returns this + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.setStartAt = + function (value) { + return jspb.Message.setWrapperField(this, 11, value); + }; + +/** + * Clears the message field making it undefined. + * @return {!proto.bucketeer.experiment.UpdateExperimentRequest} returns this + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.clearStartAt = + function () { + return this.setStartAt(undefined); + }; + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.hasStartAt = + function () { + return jspb.Message.getField(this, 11) != null; + }; + +/** + * optional google.protobuf.Int64Value stop_at = 12; + * @return {?proto.google.protobuf.Int64Value} + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.getStopAt = + function () { + return /** @type{?proto.google.protobuf.Int64Value} */ ( + jspb.Message.getWrapperField( + this, + google_protobuf_wrappers_pb.Int64Value, + 12 + ) + ); + }; + +/** + * @param {?proto.google.protobuf.Int64Value|undefined} value + * @return {!proto.bucketeer.experiment.UpdateExperimentRequest} returns this + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.setStopAt = + function (value) { + return jspb.Message.setWrapperField(this, 12, value); + }; + +/** + * Clears the message field making it undefined. + * @return {!proto.bucketeer.experiment.UpdateExperimentRequest} returns this + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.clearStopAt = + function () { + return this.setStopAt(undefined); + }; + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.hasStopAt = + function () { + return jspb.Message.getField(this, 12) != null; + }; + +/** + * optional google.protobuf.BoolValue archived = 13; + * @return {?proto.google.protobuf.BoolValue} + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.getArchived = + function () { + return /** @type{?proto.google.protobuf.BoolValue} */ ( + jspb.Message.getWrapperField( + this, + google_protobuf_wrappers_pb.BoolValue, + 13 + ) + ); + }; + +/** + * @param {?proto.google.protobuf.BoolValue|undefined} value + * @return {!proto.bucketeer.experiment.UpdateExperimentRequest} returns this + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.setArchived = + function (value) { + return jspb.Message.setWrapperField(this, 13, value); + }; + +/** + * Clears the message field making it undefined. + * @return {!proto.bucketeer.experiment.UpdateExperimentRequest} returns this + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.clearArchived = + function () { + return this.setArchived(undefined); + }; + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.hasArchived = + function () { + return jspb.Message.getField(this, 13) != null; + }; + +/** + * optional UpdatedStatus status = 14; + * @return {?proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus} + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.getStatus = + function () { + return /** @type{?proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus} */ ( + jspb.Message.getWrapperField( + this, + proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus, + 14 + ) + ); + }; + +/** + * @param {?proto.bucketeer.experiment.UpdateExperimentRequest.UpdatedStatus|undefined} value + * @return {!proto.bucketeer.experiment.UpdateExperimentRequest} returns this + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.setStatus = + function (value) { + return jspb.Message.setWrapperField(this, 14, value); + }; + +/** + * Clears the message field making it undefined. + * @return {!proto.bucketeer.experiment.UpdateExperimentRequest} returns this + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.clearStatus = + function () { + return this.setStatus(undefined); + }; + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.bucketeer.experiment.UpdateExperimentRequest.prototype.hasStatus = + function () { + return jspb.Message.getField(this, 14) != null; + }; + if (jspb.Message.GENERATE_TO_OBJECT) { /** * Creates an object representation of this proto. @@ -6257,7 +6801,11 @@ if (jspb.Message.GENERATE_TO_OBJECT) { msg ) { var f, - obj = {}; + obj = { + experiment: + (f = msg.getExperiment()) && + proto_experiment_experiment_pb.Experiment.toObject(includeInstance, f) + }; if (includeInstance) { obj.$jspbMessageInstance = msg; @@ -6296,6 +6844,15 @@ proto.bucketeer.experiment.UpdateExperimentResponse.deserializeBinaryFromReader } var field = reader.getFieldNumber(); switch (field) { + case 1: + var value = new proto_experiment_experiment_pb.Experiment(); + reader.readMessage( + value, + proto_experiment_experiment_pb.Experiment + .deserializeBinaryFromReader + ); + msg.setExperiment(value); + break; default: reader.skipField(); break; @@ -6328,6 +6885,56 @@ proto.bucketeer.experiment.UpdateExperimentResponse.prototype.serializeBinary = proto.bucketeer.experiment.UpdateExperimentResponse.serializeBinaryToWriter = function (message, writer) { var f = undefined; + f = message.getExperiment(); + if (f != null) { + writer.writeMessage( + 1, + f, + proto_experiment_experiment_pb.Experiment.serializeBinaryToWriter + ); + } + }; + +/** + * optional Experiment experiment = 1; + * @return {?proto.bucketeer.experiment.Experiment} + */ +proto.bucketeer.experiment.UpdateExperimentResponse.prototype.getExperiment = + function () { + return /** @type{?proto.bucketeer.experiment.Experiment} */ ( + jspb.Message.getWrapperField( + this, + proto_experiment_experiment_pb.Experiment, + 1 + ) + ); + }; + +/** + * @param {?proto.bucketeer.experiment.Experiment|undefined} value + * @return {!proto.bucketeer.experiment.UpdateExperimentResponse} returns this + */ +proto.bucketeer.experiment.UpdateExperimentResponse.prototype.setExperiment = + function (value) { + return jspb.Message.setWrapperField(this, 1, value); + }; + +/** + * Clears the message field making it undefined. + * @return {!proto.bucketeer.experiment.UpdateExperimentResponse} returns this + */ +proto.bucketeer.experiment.UpdateExperimentResponse.prototype.clearExperiment = + function () { + return this.setExperiment(undefined); + }; + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.bucketeer.experiment.UpdateExperimentResponse.prototype.hasExperiment = + function () { + return jspb.Message.getField(this, 1) != null; }; if (jspb.Message.GENERATE_TO_OBJECT) {