@eide/foir-proto-ts 0.71.0 → 0.72.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/identity/v1/identity_connect.d.ts +23 -1
- package/src/identity/v1/identity_connect.js +23 -1
- package/src/identity/v1/identity_pb.d.ts +143 -0
- package/src/identity/v1/identity_pb.js +33 -5
- package/src/records/v1/records_connect.d.ts +10 -1
- package/src/records/v1/records_connect.js +10 -1
- package/src/records/v1/records_pb.d.ts +170 -0
- package/src/records/v1/records_pb.js +104 -83
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
// @ts-nocheck
|
|
5
5
|
|
|
6
|
-
import { AcceptCustomerInvitationRequest, AcceptCustomerInvitationResponse, AcceptInvitationRequest, AcceptInvitationResponse, ActivateTenantRequest, ActivateTenantResponse, CancelScheduledAuthProviderPublishRequest, CancelScheduledAuthProviderPublishResponse, CancelTenantRequest, CancelTenantResponse, CheckEmailAvailabilityRequest, CheckEmailAvailabilityResponse, ChurnTenantRequest, ChurnTenantResponse, ClearSessionContextRequest, ClearSessionContextResponse, CompleteAccountSetupRequest, CompleteAccountSetupResponse, CreateAdminUserRequest, CreateAdminUserResponse, CreateApiKeyRequest, CreateApiKeyResponse, CreateAuthProviderRequest, CreateAuthProviderResponse, CreateCustomerInvitationRequest, CreateCustomerInvitationResponse, CreateCustomerRequest, CreateCustomerResponse, CreateInvitationRequest, CreateInvitationResponse, CreateProjectRequest, CreateProjectResponse, CreateSignupSessionRequest, CreateSignupSessionResponse, CreateTenantRequest, CreateTenantResponse, CustomerLoginRequest, CustomerLoginResponse, CustomerRefreshTokenRequest, CustomerRefreshTokenResponse, CustomerRegisterRequest, CustomerRegisterResponse, CustomerRequestOTPRequest, CustomerRequestOTPResponse, CustomerRequestPasswordResetRequest, CustomerRequestPasswordResetResponse, CustomerResetPasswordRequest, CustomerResetPasswordResponse, CustomerVerifyOTPRequest, CustomerVerifyOTPResponse, DeleteAuthProviderRequest, DeleteAuthProviderResponse, DeleteCustomerRequest, DeleteCustomerResponse, DeleteProjectRequest, DeleteProjectResponse, DeleteProviderTokensRequest, DeleteProviderTokensResponse, DeleteTenantRequest, DeleteTenantResponse, EnabledOAuthProvidersRequest, EnabledOAuthProvidersResponse, GetAdminUserRequest, GetAdminUserResponse, GetApiKeyRequest, GetApiKeyResponse, GetAuthProviderPublishStatusRequest, GetAuthProviderPublishStatusResponse, GetAuthProviderRequest, GetAuthProviderResponse, GetCustomerAuthConfigRequest, GetCustomerAuthConfigResponse, GetCustomerInvitationRequest, GetCustomerInvitationResponse, GetCustomerManagementStatusRequest, GetCustomerManagementStatusResponse, GetCustomerRequest, GetCustomerResponse, GetDefaultProjectRequest, GetDefaultProjectResponse, GetInvitationRequest, GetInvitationResponse, GetMeRequest, GetMeResponse, GetProjectRequest, GetProjectResponse, GetProviderTokenRequest, GetProviderTokenResponse, GetSessionContextRequest, GetSessionContextResponse, GetTenantRequest, GetTenantResponse, GrantAccessRequest, GrantAccessResponse, ListAdminUsersRequest, ListAdminUsersResponse, ListApiKeysRequest, ListApiKeysResponse, ListAuthProvidersRequest, ListAuthProvidersResponse, ListCustomerInvitationsRequest, ListCustomerInvitationsResponse, ListCustomersRequest, ListCustomersResponse, ListInvitationsRequest, ListInvitationsResponse, ListMyOAuthConnectionsRequest, ListMyOAuthConnectionsResponse, ListProjectsRequest, ListProjectsResponse, ListTenantsRequest, ListTenantsResponse, LoginRequest, LoginResponse, LoginWithOTPRequest, LoginWithOTPResponse, LogoutRequest, LogoutResponse, MarkTenantPastDueRequest, MarkTenantPastDueResponse, MintServiceTokenRequest, MintServiceTokenResponse, PublishAuthProviderRequest, PublishAuthProviderResponse, ReactivateTenantRequest, ReactivateTenantResponse, RefreshTokenRequest, RefreshTokenResponse, RegisterRequest, RegisterResponse, RequestOTPRequest, RequestOTPResponse, RequestPasswordResetRequest, RequestPasswordResetResponse, ResendCustomerInvitationRequest, ResendCustomerInvitationResponse, ResendInvitationRequest, ResendInvitationResponse, ResendVerificationEmailRequest, ResendVerificationEmailResponse, ResetPasswordRequest, ResetPasswordResponse, RevokeAccessRequest, RevokeAccessResponse, RevokeApiKeyRequest, RevokeApiKeyResponse, RevokeCustomerInvitationRequest, RevokeCustomerInvitationResponse, RevokeInvitationRequest, RevokeInvitationResponse, RotateApiKeyRequest, RotateApiKeyResponse, ScheduleAuthProviderPublishRequest, ScheduleAuthProviderPublishResponse, SendEmailVerificationCodeRequest, SendEmailVerificationCodeResponse, SetCustomerPasswordRequest, SetCustomerPasswordResponse, SetDefaultProjectRequest, SetDefaultProjectResponse, StoreProviderTokenRequest, StoreProviderTokenResponse, SuspendCustomerRequest, SuspendCustomerResponse, SuspendTenantAccountRequest, SuspendTenantAccountResponse, SwitchProjectRequest, SwitchProjectResponse, SwitchTenantRequest, SwitchTenantResponse, UnlinkOAuthProviderRequest, UnlinkOAuthProviderResponse, UnpublishAuthProviderRequest, UnpublishAuthProviderResponse, UpdateAdminUserRequest, UpdateAdminUserResponse, UpdateApiKeyRequest, UpdateApiKeyResponse, UpdateAuthProviderRequest, UpdateAuthProviderResponse, UpdateCustomerRequest, UpdateCustomerResponse, UpdateMyProfileRequest, UpdateMyProfileResponse, UpdatePasswordRequest, UpdatePasswordResponse, UpdateProjectRequest, UpdateProjectResponse, UpdateTenantRequest, UpdateTenantResponse, ValidateApiKeyRequest, ValidateApiKeyResponse, ValidateCustomerInvitationRequest, ValidateCustomerInvitationResponse, ValidateInvitationRequest, ValidateInvitationResponse, VerifyCustomerTokenRequest, VerifyCustomerTokenResponse, VerifyEmailCodeRequest, VerifyEmailCodeResponse, VerifyEmailRequest, VerifyEmailResponse } from "./identity_pbjs";
|
|
6
|
+
import { AcceptCustomerInvitationRequest, AcceptCustomerInvitationResponse, AcceptInvitationRequest, AcceptInvitationResponse, ActivateTenantRequest, ActivateTenantResponse, CancelScheduledAuthProviderPublishRequest, CancelScheduledAuthProviderPublishResponse, CancelTenantRequest, CancelTenantResponse, CheckEmailAvailabilityRequest, CheckEmailAvailabilityResponse, ChurnTenantRequest, ChurnTenantResponse, ClearSessionContextRequest, ClearSessionContextResponse, CompleteAccountSetupRequest, CompleteAccountSetupResponse, CreateAdminUserRequest, CreateAdminUserResponse, CreateApiKeyRequest, CreateApiKeyResponse, CreateAuthProviderRequest, CreateAuthProviderResponse, CreateCustomerInvitationRequest, CreateCustomerInvitationResponse, CreateCustomerRequest, CreateCustomerResponse, CreateInvitationRequest, CreateInvitationResponse, CreateProjectRequest, CreateProjectResponse, CreateSignupSessionRequest, CreateSignupSessionResponse, CreateTenantRequest, CreateTenantResponse, CustomerLoginRequest, CustomerLoginResponse, CustomerRefreshTokenRequest, CustomerRefreshTokenResponse, CustomerRegisterRequest, CustomerRegisterResponse, CustomerRequestOTPRequest, CustomerRequestOTPResponse, CustomerRequestPasswordResetRequest, CustomerRequestPasswordResetResponse, CustomerResetPasswordRequest, CustomerResetPasswordResponse, CustomerVerifyOTPRequest, CustomerVerifyOTPResponse, DeleteAuthProviderRequest, DeleteAuthProviderResponse, DeleteCustomerRequest, DeleteCustomerResponse, DeleteProjectRequest, DeleteProjectResponse, DeleteProviderTokensRequest, DeleteProviderTokensResponse, DeleteTenantRequest, DeleteTenantResponse, EnabledOAuthProvidersRequest, EnabledOAuthProvidersResponse, FinishProviderLoginRequest, FinishProviderLoginResponse, GetAdminUserRequest, GetAdminUserResponse, GetApiKeyRequest, GetApiKeyResponse, GetAuthProviderPublishStatusRequest, GetAuthProviderPublishStatusResponse, GetAuthProviderRequest, GetAuthProviderResponse, GetCustomerAuthConfigRequest, GetCustomerAuthConfigResponse, GetCustomerInvitationRequest, GetCustomerInvitationResponse, GetCustomerManagementStatusRequest, GetCustomerManagementStatusResponse, GetCustomerRequest, GetCustomerResponse, GetDefaultProjectRequest, GetDefaultProjectResponse, GetInvitationRequest, GetInvitationResponse, GetMeRequest, GetMeResponse, GetProjectRequest, GetProjectResponse, GetProviderTokenRequest, GetProviderTokenResponse, GetSessionContextRequest, GetSessionContextResponse, GetTenantRequest, GetTenantResponse, GrantAccessRequest, GrantAccessResponse, ListAdminUsersRequest, ListAdminUsersResponse, ListApiKeysRequest, ListApiKeysResponse, ListAuthProvidersRequest, ListAuthProvidersResponse, ListCustomerInvitationsRequest, ListCustomerInvitationsResponse, ListCustomersRequest, ListCustomersResponse, ListInvitationsRequest, ListInvitationsResponse, ListMyOAuthConnectionsRequest, ListMyOAuthConnectionsResponse, ListProjectsRequest, ListProjectsResponse, ListTenantsRequest, ListTenantsResponse, LoginRequest, LoginResponse, LoginWithOTPRequest, LoginWithOTPResponse, LogoutRequest, LogoutResponse, MarkTenantPastDueRequest, MarkTenantPastDueResponse, MintServiceTokenRequest, MintServiceTokenResponse, PublishAuthProviderRequest, PublishAuthProviderResponse, ReactivateTenantRequest, ReactivateTenantResponse, RefreshTokenRequest, RefreshTokenResponse, RegisterRequest, RegisterResponse, RequestOTPRequest, RequestOTPResponse, RequestPasswordResetRequest, RequestPasswordResetResponse, ResendCustomerInvitationRequest, ResendCustomerInvitationResponse, ResendInvitationRequest, ResendInvitationResponse, ResendVerificationEmailRequest, ResendVerificationEmailResponse, ResetPasswordRequest, ResetPasswordResponse, RevokeAccessRequest, RevokeAccessResponse, RevokeApiKeyRequest, RevokeApiKeyResponse, RevokeCustomerInvitationRequest, RevokeCustomerInvitationResponse, RevokeInvitationRequest, RevokeInvitationResponse, RotateApiKeyRequest, RotateApiKeyResponse, ScheduleAuthProviderPublishRequest, ScheduleAuthProviderPublishResponse, SendEmailVerificationCodeRequest, SendEmailVerificationCodeResponse, SetCustomerPasswordRequest, SetCustomerPasswordResponse, SetDefaultProjectRequest, SetDefaultProjectResponse, StartProviderLoginRequest, StartProviderLoginResponse, StoreProviderTokenRequest, StoreProviderTokenResponse, SuspendCustomerRequest, SuspendCustomerResponse, SuspendTenantAccountRequest, SuspendTenantAccountResponse, SwitchProjectRequest, SwitchProjectResponse, SwitchTenantRequest, SwitchTenantResponse, UnlinkOAuthProviderRequest, UnlinkOAuthProviderResponse, UnpublishAuthProviderRequest, UnpublishAuthProviderResponse, UpdateAdminUserRequest, UpdateAdminUserResponse, UpdateApiKeyRequest, UpdateApiKeyResponse, UpdateAuthProviderRequest, UpdateAuthProviderResponse, UpdateCustomerRequest, UpdateCustomerResponse, UpdateMyProfileRequest, UpdateMyProfileResponse, UpdatePasswordRequest, UpdatePasswordResponse, UpdateProjectRequest, UpdateProjectResponse, UpdateTenantRequest, UpdateTenantResponse, ValidateApiKeyRequest, ValidateApiKeyResponse, ValidateCustomerInvitationRequest, ValidateCustomerInvitationResponse, ValidateInvitationRequest, ValidateInvitationResponse, VerifyCustomerTokenRequest, VerifyCustomerTokenResponse, VerifyEmailCodeRequest, VerifyEmailCodeResponse, VerifyEmailRequest, VerifyEmailResponse } from "./identity_pbjs";
|
|
7
7
|
import { MethodKind } from "@bufbuild/protobuf";
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -957,6 +957,28 @@ export declare const IdentityService: {
|
|
|
957
957
|
readonly O: typeof DeleteProviderTokensResponse,
|
|
958
958
|
readonly kind: MethodKind.Unary,
|
|
959
959
|
},
|
|
960
|
+
/**
|
|
961
|
+
* Customer OIDC sign-in. api-public mutations forward verbatim; all
|
|
962
|
+
* OIDC client work (discovery, PKCE, token exchange, userinfo / ID
|
|
963
|
+
* token verification) and the register-or-login decision live here.
|
|
964
|
+
*
|
|
965
|
+
* @generated from rpc identity.v1.IdentityService.StartProviderLogin
|
|
966
|
+
*/
|
|
967
|
+
readonly startProviderLogin: {
|
|
968
|
+
readonly name: "StartProviderLogin",
|
|
969
|
+
readonly I: typeof StartProviderLoginRequest,
|
|
970
|
+
readonly O: typeof StartProviderLoginResponse,
|
|
971
|
+
readonly kind: MethodKind.Unary,
|
|
972
|
+
},
|
|
973
|
+
/**
|
|
974
|
+
* @generated from rpc identity.v1.IdentityService.FinishProviderLogin
|
|
975
|
+
*/
|
|
976
|
+
readonly finishProviderLogin: {
|
|
977
|
+
readonly name: "FinishProviderLogin",
|
|
978
|
+
readonly I: typeof FinishProviderLoginRequest,
|
|
979
|
+
readonly O: typeof FinishProviderLoginResponse,
|
|
980
|
+
readonly kind: MethodKind.Unary,
|
|
981
|
+
},
|
|
960
982
|
}
|
|
961
983
|
};
|
|
962
984
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
// @ts-nocheck
|
|
5
5
|
|
|
6
|
-
import { AcceptCustomerInvitationRequest, AcceptCustomerInvitationResponse, AcceptInvitationRequest, AcceptInvitationResponse, ActivateTenantRequest, ActivateTenantResponse, CancelScheduledAuthProviderPublishRequest, CancelScheduledAuthProviderPublishResponse, CancelTenantRequest, CancelTenantResponse, CheckEmailAvailabilityRequest, CheckEmailAvailabilityResponse, ChurnTenantRequest, ChurnTenantResponse, ClearSessionContextRequest, ClearSessionContextResponse, CompleteAccountSetupRequest, CompleteAccountSetupResponse, CreateAdminUserRequest, CreateAdminUserResponse, CreateApiKeyRequest, CreateApiKeyResponse, CreateAuthProviderRequest, CreateAuthProviderResponse, CreateCustomerInvitationRequest, CreateCustomerInvitationResponse, CreateCustomerRequest, CreateCustomerResponse, CreateInvitationRequest, CreateInvitationResponse, CreateProjectRequest, CreateProjectResponse, CreateSignupSessionRequest, CreateSignupSessionResponse, CreateTenantRequest, CreateTenantResponse, CustomerLoginRequest, CustomerLoginResponse, CustomerRefreshTokenRequest, CustomerRefreshTokenResponse, CustomerRegisterRequest, CustomerRegisterResponse, CustomerRequestOTPRequest, CustomerRequestOTPResponse, CustomerRequestPasswordResetRequest, CustomerRequestPasswordResetResponse, CustomerResetPasswordRequest, CustomerResetPasswordResponse, CustomerVerifyOTPRequest, CustomerVerifyOTPResponse, DeleteAuthProviderRequest, DeleteAuthProviderResponse, DeleteCustomerRequest, DeleteCustomerResponse, DeleteProjectRequest, DeleteProjectResponse, DeleteProviderTokensRequest, DeleteProviderTokensResponse, DeleteTenantRequest, DeleteTenantResponse, EnabledOAuthProvidersRequest, EnabledOAuthProvidersResponse, GetAdminUserRequest, GetAdminUserResponse, GetApiKeyRequest, GetApiKeyResponse, GetAuthProviderPublishStatusRequest, GetAuthProviderPublishStatusResponse, GetAuthProviderRequest, GetAuthProviderResponse, GetCustomerAuthConfigRequest, GetCustomerAuthConfigResponse, GetCustomerInvitationRequest, GetCustomerInvitationResponse, GetCustomerManagementStatusRequest, GetCustomerManagementStatusResponse, GetCustomerRequest, GetCustomerResponse, GetDefaultProjectRequest, GetDefaultProjectResponse, GetInvitationRequest, GetInvitationResponse, GetMeRequest, GetMeResponse, GetProjectRequest, GetProjectResponse, GetProviderTokenRequest, GetProviderTokenResponse, GetSessionContextRequest, GetSessionContextResponse, GetTenantRequest, GetTenantResponse, GrantAccessRequest, GrantAccessResponse, ListAdminUsersRequest, ListAdminUsersResponse, ListApiKeysRequest, ListApiKeysResponse, ListAuthProvidersRequest, ListAuthProvidersResponse, ListCustomerInvitationsRequest, ListCustomerInvitationsResponse, ListCustomersRequest, ListCustomersResponse, ListInvitationsRequest, ListInvitationsResponse, ListMyOAuthConnectionsRequest, ListMyOAuthConnectionsResponse, ListProjectsRequest, ListProjectsResponse, ListTenantsRequest, ListTenantsResponse, LoginRequest, LoginResponse, LoginWithOTPRequest, LoginWithOTPResponse, LogoutRequest, LogoutResponse, MarkTenantPastDueRequest, MarkTenantPastDueResponse, MintServiceTokenRequest, MintServiceTokenResponse, PublishAuthProviderRequest, PublishAuthProviderResponse, ReactivateTenantRequest, ReactivateTenantResponse, RefreshTokenRequest, RefreshTokenResponse, RegisterRequest, RegisterResponse, RequestOTPRequest, RequestOTPResponse, RequestPasswordResetRequest, RequestPasswordResetResponse, ResendCustomerInvitationRequest, ResendCustomerInvitationResponse, ResendInvitationRequest, ResendInvitationResponse, ResendVerificationEmailRequest, ResendVerificationEmailResponse, ResetPasswordRequest, ResetPasswordResponse, RevokeAccessRequest, RevokeAccessResponse, RevokeApiKeyRequest, RevokeApiKeyResponse, RevokeCustomerInvitationRequest, RevokeCustomerInvitationResponse, RevokeInvitationRequest, RevokeInvitationResponse, RotateApiKeyRequest, RotateApiKeyResponse, ScheduleAuthProviderPublishRequest, ScheduleAuthProviderPublishResponse, SendEmailVerificationCodeRequest, SendEmailVerificationCodeResponse, SetCustomerPasswordRequest, SetCustomerPasswordResponse, SetDefaultProjectRequest, SetDefaultProjectResponse, StoreProviderTokenRequest, StoreProviderTokenResponse, SuspendCustomerRequest, SuspendCustomerResponse, SuspendTenantAccountRequest, SuspendTenantAccountResponse, SwitchProjectRequest, SwitchProjectResponse, SwitchTenantRequest, SwitchTenantResponse, UnlinkOAuthProviderRequest, UnlinkOAuthProviderResponse, UnpublishAuthProviderRequest, UnpublishAuthProviderResponse, UpdateAdminUserRequest, UpdateAdminUserResponse, UpdateApiKeyRequest, UpdateApiKeyResponse, UpdateAuthProviderRequest, UpdateAuthProviderResponse, UpdateCustomerRequest, UpdateCustomerResponse, UpdateMyProfileRequest, UpdateMyProfileResponse, UpdatePasswordRequest, UpdatePasswordResponse, UpdateProjectRequest, UpdateProjectResponse, UpdateTenantRequest, UpdateTenantResponse, ValidateApiKeyRequest, ValidateApiKeyResponse, ValidateCustomerInvitationRequest, ValidateCustomerInvitationResponse, ValidateInvitationRequest, ValidateInvitationResponse, VerifyCustomerTokenRequest, VerifyCustomerTokenResponse, VerifyEmailCodeRequest, VerifyEmailCodeResponse, VerifyEmailRequest, VerifyEmailResponse } from "./identity_pbjs";
|
|
6
|
+
import { AcceptCustomerInvitationRequest, AcceptCustomerInvitationResponse, AcceptInvitationRequest, AcceptInvitationResponse, ActivateTenantRequest, ActivateTenantResponse, CancelScheduledAuthProviderPublishRequest, CancelScheduledAuthProviderPublishResponse, CancelTenantRequest, CancelTenantResponse, CheckEmailAvailabilityRequest, CheckEmailAvailabilityResponse, ChurnTenantRequest, ChurnTenantResponse, ClearSessionContextRequest, ClearSessionContextResponse, CompleteAccountSetupRequest, CompleteAccountSetupResponse, CreateAdminUserRequest, CreateAdminUserResponse, CreateApiKeyRequest, CreateApiKeyResponse, CreateAuthProviderRequest, CreateAuthProviderResponse, CreateCustomerInvitationRequest, CreateCustomerInvitationResponse, CreateCustomerRequest, CreateCustomerResponse, CreateInvitationRequest, CreateInvitationResponse, CreateProjectRequest, CreateProjectResponse, CreateSignupSessionRequest, CreateSignupSessionResponse, CreateTenantRequest, CreateTenantResponse, CustomerLoginRequest, CustomerLoginResponse, CustomerRefreshTokenRequest, CustomerRefreshTokenResponse, CustomerRegisterRequest, CustomerRegisterResponse, CustomerRequestOTPRequest, CustomerRequestOTPResponse, CustomerRequestPasswordResetRequest, CustomerRequestPasswordResetResponse, CustomerResetPasswordRequest, CustomerResetPasswordResponse, CustomerVerifyOTPRequest, CustomerVerifyOTPResponse, DeleteAuthProviderRequest, DeleteAuthProviderResponse, DeleteCustomerRequest, DeleteCustomerResponse, DeleteProjectRequest, DeleteProjectResponse, DeleteProviderTokensRequest, DeleteProviderTokensResponse, DeleteTenantRequest, DeleteTenantResponse, EnabledOAuthProvidersRequest, EnabledOAuthProvidersResponse, FinishProviderLoginRequest, FinishProviderLoginResponse, GetAdminUserRequest, GetAdminUserResponse, GetApiKeyRequest, GetApiKeyResponse, GetAuthProviderPublishStatusRequest, GetAuthProviderPublishStatusResponse, GetAuthProviderRequest, GetAuthProviderResponse, GetCustomerAuthConfigRequest, GetCustomerAuthConfigResponse, GetCustomerInvitationRequest, GetCustomerInvitationResponse, GetCustomerManagementStatusRequest, GetCustomerManagementStatusResponse, GetCustomerRequest, GetCustomerResponse, GetDefaultProjectRequest, GetDefaultProjectResponse, GetInvitationRequest, GetInvitationResponse, GetMeRequest, GetMeResponse, GetProjectRequest, GetProjectResponse, GetProviderTokenRequest, GetProviderTokenResponse, GetSessionContextRequest, GetSessionContextResponse, GetTenantRequest, GetTenantResponse, GrantAccessRequest, GrantAccessResponse, ListAdminUsersRequest, ListAdminUsersResponse, ListApiKeysRequest, ListApiKeysResponse, ListAuthProvidersRequest, ListAuthProvidersResponse, ListCustomerInvitationsRequest, ListCustomerInvitationsResponse, ListCustomersRequest, ListCustomersResponse, ListInvitationsRequest, ListInvitationsResponse, ListMyOAuthConnectionsRequest, ListMyOAuthConnectionsResponse, ListProjectsRequest, ListProjectsResponse, ListTenantsRequest, ListTenantsResponse, LoginRequest, LoginResponse, LoginWithOTPRequest, LoginWithOTPResponse, LogoutRequest, LogoutResponse, MarkTenantPastDueRequest, MarkTenantPastDueResponse, MintServiceTokenRequest, MintServiceTokenResponse, PublishAuthProviderRequest, PublishAuthProviderResponse, ReactivateTenantRequest, ReactivateTenantResponse, RefreshTokenRequest, RefreshTokenResponse, RegisterRequest, RegisterResponse, RequestOTPRequest, RequestOTPResponse, RequestPasswordResetRequest, RequestPasswordResetResponse, ResendCustomerInvitationRequest, ResendCustomerInvitationResponse, ResendInvitationRequest, ResendInvitationResponse, ResendVerificationEmailRequest, ResendVerificationEmailResponse, ResetPasswordRequest, ResetPasswordResponse, RevokeAccessRequest, RevokeAccessResponse, RevokeApiKeyRequest, RevokeApiKeyResponse, RevokeCustomerInvitationRequest, RevokeCustomerInvitationResponse, RevokeInvitationRequest, RevokeInvitationResponse, RotateApiKeyRequest, RotateApiKeyResponse, ScheduleAuthProviderPublishRequest, ScheduleAuthProviderPublishResponse, SendEmailVerificationCodeRequest, SendEmailVerificationCodeResponse, SetCustomerPasswordRequest, SetCustomerPasswordResponse, SetDefaultProjectRequest, SetDefaultProjectResponse, StartProviderLoginRequest, StartProviderLoginResponse, StoreProviderTokenRequest, StoreProviderTokenResponse, SuspendCustomerRequest, SuspendCustomerResponse, SuspendTenantAccountRequest, SuspendTenantAccountResponse, SwitchProjectRequest, SwitchProjectResponse, SwitchTenantRequest, SwitchTenantResponse, UnlinkOAuthProviderRequest, UnlinkOAuthProviderResponse, UnpublishAuthProviderRequest, UnpublishAuthProviderResponse, UpdateAdminUserRequest, UpdateAdminUserResponse, UpdateApiKeyRequest, UpdateApiKeyResponse, UpdateAuthProviderRequest, UpdateAuthProviderResponse, UpdateCustomerRequest, UpdateCustomerResponse, UpdateMyProfileRequest, UpdateMyProfileResponse, UpdatePasswordRequest, UpdatePasswordResponse, UpdateProjectRequest, UpdateProjectResponse, UpdateTenantRequest, UpdateTenantResponse, ValidateApiKeyRequest, ValidateApiKeyResponse, ValidateCustomerInvitationRequest, ValidateCustomerInvitationResponse, ValidateInvitationRequest, ValidateInvitationResponse, VerifyCustomerTokenRequest, VerifyCustomerTokenResponse, VerifyEmailCodeRequest, VerifyEmailCodeResponse, VerifyEmailRequest, VerifyEmailResponse } from "./identity_pbjs";
|
|
7
7
|
import { MethodKind } from "@bufbuild/protobuf";
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -957,6 +957,28 @@ export const IdentityService = {
|
|
|
957
957
|
O: DeleteProviderTokensResponse,
|
|
958
958
|
kind: MethodKind.Unary,
|
|
959
959
|
},
|
|
960
|
+
/**
|
|
961
|
+
* Customer OIDC sign-in. api-public mutations forward verbatim; all
|
|
962
|
+
* OIDC client work (discovery, PKCE, token exchange, userinfo / ID
|
|
963
|
+
* token verification) and the register-or-login decision live here.
|
|
964
|
+
*
|
|
965
|
+
* @generated from rpc identity.v1.IdentityService.StartProviderLogin
|
|
966
|
+
*/
|
|
967
|
+
startProviderLogin: {
|
|
968
|
+
name: "StartProviderLogin",
|
|
969
|
+
I: StartProviderLoginRequest,
|
|
970
|
+
O: StartProviderLoginResponse,
|
|
971
|
+
kind: MethodKind.Unary,
|
|
972
|
+
},
|
|
973
|
+
/**
|
|
974
|
+
* @generated from rpc identity.v1.IdentityService.FinishProviderLogin
|
|
975
|
+
*/
|
|
976
|
+
finishProviderLogin: {
|
|
977
|
+
name: "FinishProviderLogin",
|
|
978
|
+
I: FinishProviderLoginRequest,
|
|
979
|
+
O: FinishProviderLoginResponse,
|
|
980
|
+
kind: MethodKind.Unary,
|
|
981
|
+
},
|
|
960
982
|
}
|
|
961
983
|
};
|
|
962
984
|
|
|
@@ -4989,6 +4989,129 @@ export declare type StoreProviderTokenResponse = Message<"identity.v1.StoreProvi
|
|
|
4989
4989
|
*/
|
|
4990
4990
|
export declare const StoreProviderTokenResponseSchema: GenMessage<StoreProviderTokenResponse>;
|
|
4991
4991
|
|
|
4992
|
+
/**
|
|
4993
|
+
* StartProviderLogin begins an OIDC sign-in for a customer. The platform
|
|
4994
|
+
* loads the named provider, runs OIDC discovery, generates a PKCE pair,
|
|
4995
|
+
* persists state under Redis, and returns the IdP authorization URL the
|
|
4996
|
+
* caller should redirect the browser to. Owning the OIDC client surface
|
|
4997
|
+
* here keeps outbound TLS / Redis writes out of the BFF tier.
|
|
4998
|
+
*
|
|
4999
|
+
* redirect_uri may override the provider's configured default; the
|
|
5000
|
+
* override must be on the provider's allowlist (additional_redirect_uris)
|
|
5001
|
+
* and validate as an https URL — both checks are enforced server-side
|
|
5002
|
+
* before the IdP ever sees the request.
|
|
5003
|
+
*
|
|
5004
|
+
* @generated from message identity.v1.StartProviderLoginRequest
|
|
5005
|
+
*/
|
|
5006
|
+
export declare type StartProviderLoginRequest = Message<"identity.v1.StartProviderLoginRequest"> & {
|
|
5007
|
+
/**
|
|
5008
|
+
* @generated from field: string provider_key = 1;
|
|
5009
|
+
*/
|
|
5010
|
+
providerKey: string;
|
|
5011
|
+
|
|
5012
|
+
/**
|
|
5013
|
+
* @generated from field: optional string return_to = 2;
|
|
5014
|
+
*/
|
|
5015
|
+
returnTo?: string | undefined;
|
|
5016
|
+
|
|
5017
|
+
/**
|
|
5018
|
+
* @generated from field: optional string redirect_uri = 3;
|
|
5019
|
+
*/
|
|
5020
|
+
redirectUri?: string | undefined;
|
|
5021
|
+
};
|
|
5022
|
+
|
|
5023
|
+
/**
|
|
5024
|
+
* Describes the message identity.v1.StartProviderLoginRequest.
|
|
5025
|
+
* Use `create(StartProviderLoginRequestSchema)` to create a new message.
|
|
5026
|
+
*/
|
|
5027
|
+
export declare const StartProviderLoginRequestSchema: GenMessage<StartProviderLoginRequest>;
|
|
5028
|
+
|
|
5029
|
+
/**
|
|
5030
|
+
* @generated from message identity.v1.StartProviderLoginResponse
|
|
5031
|
+
*/
|
|
5032
|
+
export declare type StartProviderLoginResponse = Message<"identity.v1.StartProviderLoginResponse"> & {
|
|
5033
|
+
/**
|
|
5034
|
+
* @generated from field: string redirect_url = 1;
|
|
5035
|
+
*/
|
|
5036
|
+
redirectUrl: string;
|
|
5037
|
+
};
|
|
5038
|
+
|
|
5039
|
+
/**
|
|
5040
|
+
* Describes the message identity.v1.StartProviderLoginResponse.
|
|
5041
|
+
* Use `create(StartProviderLoginResponseSchema)` to create a new message.
|
|
5042
|
+
*/
|
|
5043
|
+
export declare const StartProviderLoginResponseSchema: GenMessage<StartProviderLoginResponse>;
|
|
5044
|
+
|
|
5045
|
+
/**
|
|
5046
|
+
* FinishProviderLogin completes the OIDC sign-in for the code + state
|
|
5047
|
+
* returned by the IdP callback. The platform:
|
|
5048
|
+
* 1. Loads + clears the PKCE state for `state`.
|
|
5049
|
+
* 2. Cross-checks state.provider_key == request.provider_key.
|
|
5050
|
+
* 3. Exchanges the code for tokens, fetches userinfo (or verifies the
|
|
5051
|
+
* ID token for providers that omit userinfo, e.g. Shopify CAAPI).
|
|
5052
|
+
* 4. Registers-or-logs-in the customer by email.
|
|
5053
|
+
* 5. Persists the upstream provider tokens for refresh.
|
|
5054
|
+
* 6. Returns the Foir access / refresh tokens to the caller.
|
|
5055
|
+
*
|
|
5056
|
+
* All identity-decision logic stays on platform; api-public's mutation
|
|
5057
|
+
* resolver becomes a thin wire forwarder.
|
|
5058
|
+
*
|
|
5059
|
+
* @generated from message identity.v1.FinishProviderLoginRequest
|
|
5060
|
+
*/
|
|
5061
|
+
export declare type FinishProviderLoginRequest = Message<"identity.v1.FinishProviderLoginRequest"> & {
|
|
5062
|
+
/**
|
|
5063
|
+
* @generated from field: string provider_key = 1;
|
|
5064
|
+
*/
|
|
5065
|
+
providerKey: string;
|
|
5066
|
+
|
|
5067
|
+
/**
|
|
5068
|
+
* @generated from field: string code = 2;
|
|
5069
|
+
*/
|
|
5070
|
+
code: string;
|
|
5071
|
+
|
|
5072
|
+
/**
|
|
5073
|
+
* @generated from field: string state = 3;
|
|
5074
|
+
*/
|
|
5075
|
+
state: string;
|
|
5076
|
+
};
|
|
5077
|
+
|
|
5078
|
+
/**
|
|
5079
|
+
* Describes the message identity.v1.FinishProviderLoginRequest.
|
|
5080
|
+
* Use `create(FinishProviderLoginRequestSchema)` to create a new message.
|
|
5081
|
+
*/
|
|
5082
|
+
export declare const FinishProviderLoginRequestSchema: GenMessage<FinishProviderLoginRequest>;
|
|
5083
|
+
|
|
5084
|
+
/**
|
|
5085
|
+
* @generated from message identity.v1.FinishProviderLoginResponse
|
|
5086
|
+
*/
|
|
5087
|
+
export declare type FinishProviderLoginResponse = Message<"identity.v1.FinishProviderLoginResponse"> & {
|
|
5088
|
+
/**
|
|
5089
|
+
* @generated from field: string customer_id = 1;
|
|
5090
|
+
*/
|
|
5091
|
+
customerId: string;
|
|
5092
|
+
|
|
5093
|
+
/**
|
|
5094
|
+
* @generated from field: string email = 2;
|
|
5095
|
+
*/
|
|
5096
|
+
email: string;
|
|
5097
|
+
|
|
5098
|
+
/**
|
|
5099
|
+
* @generated from field: string access_token = 3;
|
|
5100
|
+
*/
|
|
5101
|
+
accessToken: string;
|
|
5102
|
+
|
|
5103
|
+
/**
|
|
5104
|
+
* @generated from field: string refresh_token = 4;
|
|
5105
|
+
*/
|
|
5106
|
+
refreshToken: string;
|
|
5107
|
+
};
|
|
5108
|
+
|
|
5109
|
+
/**
|
|
5110
|
+
* Describes the message identity.v1.FinishProviderLoginResponse.
|
|
5111
|
+
* Use `create(FinishProviderLoginResponseSchema)` to create a new message.
|
|
5112
|
+
*/
|
|
5113
|
+
export declare const FinishProviderLoginResponseSchema: GenMessage<FinishProviderLoginResponse>;
|
|
5114
|
+
|
|
4992
5115
|
/**
|
|
4993
5116
|
* @generated from message identity.v1.GetProviderTokenRequest
|
|
4994
5117
|
*/
|
|
@@ -6215,5 +6338,25 @@ export declare const IdentityService: GenService<{
|
|
|
6215
6338
|
input: typeof DeleteProviderTokensRequestSchema;
|
|
6216
6339
|
output: typeof DeleteProviderTokensResponseSchema;
|
|
6217
6340
|
},
|
|
6341
|
+
/**
|
|
6342
|
+
* Customer OIDC sign-in. api-public mutations forward verbatim; all
|
|
6343
|
+
* OIDC client work (discovery, PKCE, token exchange, userinfo / ID
|
|
6344
|
+
* token verification) and the register-or-login decision live here.
|
|
6345
|
+
*
|
|
6346
|
+
* @generated from rpc identity.v1.IdentityService.StartProviderLogin
|
|
6347
|
+
*/
|
|
6348
|
+
startProviderLogin: {
|
|
6349
|
+
methodKind: "unary";
|
|
6350
|
+
input: typeof StartProviderLoginRequestSchema;
|
|
6351
|
+
output: typeof StartProviderLoginResponseSchema;
|
|
6352
|
+
},
|
|
6353
|
+
/**
|
|
6354
|
+
* @generated from rpc identity.v1.IdentityService.FinishProviderLogin
|
|
6355
|
+
*/
|
|
6356
|
+
finishProviderLogin: {
|
|
6357
|
+
methodKind: "unary";
|
|
6358
|
+
input: typeof FinishProviderLoginRequestSchema;
|
|
6359
|
+
output: typeof FinishProviderLoginResponseSchema;
|
|
6360
|
+
},
|
|
6218
6361
|
}>;
|
|
6219
6362
|
|
|
@@ -10,7 +10,7 @@ import { file_publish_v1_publish } from "../../publish/v1/publish_pb.js";
|
|
|
10
10
|
* Describes the file identity/v1/identity.proto.
|
|
11
11
|
*/
|
|
12
12
|
export const file_identity_v1_identity = /*@__PURE__*/
|
|
13
|
-
fileDesc("ChppZGVudGl0eS92MS9pZGVudGl0eS5wcm90bxILaWRlbnRpdHkudjEijwQKCUFkbWluVXNlchIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIXCgpmaXJzdF9uYW1lGAMgASgJSACIAQESFgoJbGFzdF9uYW1lGAQgASgJSAGIAQESFwoKYXZhdGFyX3VybBgFIAEoCUgCiAEBEhkKEWlzX3BsYXRmb3JtX2FkbWluGAYgASgIEiwKBnN0YXR1cxgUIAEoDjIcLmlkZW50aXR5LnYxLkFkbWluVXNlclN0YXR1cxI6ChFlbWFpbF92ZXJpZmllZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARI2Cg1sYXN0X2xvZ2luX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEiwKBmFjY2VzcxgoIAMoCzIcLmlkZW50aXR5LnYxLkFkbWluVXNlckFjY2VzcxIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg0KC19hdmF0YXJfdXJsQhQKEl9lbWFpbF92ZXJpZmllZF9hdEIQCg5fbGFzdF9sb2dpbl9hdCLuAQoPQWRtaW5Vc2VyQWNjZXNzEgoKAmlkGAEgASgJEhUKDWFkbWluX3VzZXJfaWQYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhcKCnByb2plY3RfaWQYBCABKAlIAIgBARIlCgRyb2xlGAUgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZRIuCgpncmFudGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpncmFudGVkX2J5GDMgASgJSAGIAQFCDQoLX3Byb2plY3RfaWRCDQoLX2dyYW50ZWRfYnki9QIKCEN1c3RvbWVyEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEisKBnN0YXR1cxgUIAEoDjIbLmlkZW50aXR5LnYxLkN1c3RvbWVyU3RhdHVzEjoKEWVtYWlsX3ZlcmlmaWVkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjYKDWxhc3RfbG9naW5fYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCFAoSX2VtYWlsX3ZlcmlmaWVkX2F0QhAKDl9sYXN0X2xvZ2luX2F0IvQCCgZUZW5hbnQSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIpCgZzdGF0dXMYFCABKA4yGS5pZGVudGl0eS52MS5UZW5hbnRTdGF0dXMSNQoMc3VzcGVuZGVkX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEkIKGWNhbmNlbGxhdGlvbl9zY2hlZHVsZWRfYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESGwoTZGF0YV9yZXRlbnRpb25fZGF5cxgeIAEoBRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIPCg1fc3VzcGVuZGVkX2F0QhwKGl9jYW5jZWxsYXRpb25fc2NoZWR1bGVkX2F0It4GCgdQcm9qZWN0EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESEgoKaXNfZGVmYXVsdBgFIAEoCBIqCgZzdGF0dXMYFCABKA4yGi5pZGVudGl0eS52MS5Qcm9qZWN0U3RhdHVzEj4KFWRlbGV0aW9uX3NjaGVkdWxlZF9hdBgVIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgpjcmVhdGVkX2J5GCggASgJSAKIAQESFwoKdXBkYXRlZF9ieRgpIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhkKDGRpc3BsYXlfbmFtZRg8IAEoCUgEiAEBEhUKCGxvZ29fdXJsGD0gASgJSAWIAQESGgoNcHJpbWFyeV9jb2xvchg+IAEoCUgGiAEBEhYKCWZyb21fbmFtZRg/IAEoCUgHiAEBEhUKCHJlcGx5X3RvGEAgASgJSAiIAQESGgoNc3VwcG9ydF9lbWFpbBhBIAEoCUgJiAEBEhkKDGFwcF9iYXNlX3VybBhCIAEoCUgKiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBhGIAEoCEgLiAEBEiQKF2N1c3RvbWVyX3NpZ251cF9lbmFibGVkGFAgASgISAyIAQFCDgoMX2Rlc2NyaXB0aW9uQhgKFl9kZWxldGlvbl9zY2hlZHVsZWRfYXRCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUILCglfcmVwbHlfdG9CEAoOX3N1cHBvcnRfZW1haWxCDwoNX2FwcF9iYXNlX3VybEIhCh9fY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkQhoKGF9jdXN0b21lcl9zaWdudXBfZW5hYmxlZCKvAwoKSW52aXRhdGlvbhIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIRCgl0ZW5hbnRfaWQYAyABKAkSEwoLcHJvamVjdF9pZHMYBCADKAkSJQoEcm9sZRgFIAEoDjIXLmlkZW50aXR5LnYxLkFjY2Vzc1JvbGUSLAoLaW52aXRlX3R5cGUYBiABKA4yFy5pZGVudGl0eS52MS5JbnZpdGVUeXBlEhIKCmludml0ZWRfYnkYByABKAkSFAoHbWVzc2FnZRgIIAEoCUgAiAEBEi0KBnN0YXR1cxgUIAEoDjIdLmlkZW50aXR5LnYxLkludml0YXRpb25TdGF0dXMSLgoKZXhwaXJlc19hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoLYWNjZXB0ZWRfYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX21lc3NhZ2VCDgoMX2FjY2VwdGVkX2F0IukDChJDdXN0b21lckludml0YXRpb24SCgoCaWQYASABKAkSDQoFZW1haWwYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhIKCnByb2plY3RfaWQYBCABKAkSFwoKaW52aXRlZF9ieRgFIAEoCUgAiAEBEhQKB21lc3NhZ2UYBiABKAlIAYgBARI1CgZzdGF0dXMYFCABKA4yJS5pZGVudGl0eS52MS5DdXN0b21lckludml0YXRpb25TdGF0dXMSLgoKZXhwaXJlc19hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoLYWNjZXB0ZWRfYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESIQoUYWNjZXB0ZWRfY3VzdG9tZXJfaWQYICABKAlIA4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEINCgtfaW52aXRlZF9ieUIKCghfbWVzc2FnZUIOCgxfYWNjZXB0ZWRfYXRCFwoVX2FjY2VwdGVkX2N1c3RvbWVyX2lkItkECgZBcGlLZXkSCgoCaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhIKCnByb2plY3RfaWQYAyABKAkSDAoEbmFtZRgEIAEoCRISCgprZXlfcHJlZml4GAUgASgJEikKCGtleV90eXBlGAYgASgOMhcuaWRlbnRpdHkudjEuQXBpS2V5VHlwZRIUCgdyYXdfa2V5GAogASgJSACIAQESEQoJaXNfYWN0aXZlGBQgASgIEiAKE3JhdGVfbGltaXRfcGVyX2hvdXIYFSABKAVIAYgBARIzCgpleHBpcmVzX2F0GBYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEg4KBnNjb3BlcxgXIAMoCRIuCghtZXRhZGF0YRgYIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARI1CgxsYXN0X3VzZWRfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESEwoLdXNhZ2VfY291bnQYHyABKAUSEgoKY3JlYXRlZF9ieRgoIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfcmF3X2tleUIWChRfcmF0ZV9saW1pdF9wZXJfaG91ckINCgtfZXhwaXJlc19hdEILCglfbWV0YWRhdGFCDwoNX2xhc3RfdXNlZF9hdCKWAgoOU2Vzc2lvbkNvbnRleHQSFgoJdGVuYW50X2lkGAEgASgJSACIAQESFwoKcHJvamVjdF9pZBgCIAEoCUgBiAEBEiQKBHVzZXIYAyABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXISGwoOZWZmZWN0aXZlX3JvbGUYBCABKAlIAogBARIuChFhdmFpbGFibGVfdGVuYW50cxgFIAMoCzITLmlkZW50aXR5LnYxLlRlbmFudBIwChJhdmFpbGFibGVfcHJvamVjdHMYBiADKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0QgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCEQoPX2VmZmVjdGl2ZV9yb2xlIn0KDExvZ2luUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCRIWCgl0ZW5hbnRfaWQYAyABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAQgASgJSAGIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZCJfCg1Mb2dpblJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkSFAoMYWNjZXNzX3Rva2VuGAIgASgJEiQKBHVzZXIYAyABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIifwoTTG9naW5XaXRoT1RQUmVxdWVzdBINCgVlbWFpbBgBIAEoCRILCgNvdHAYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWQiZgoUTG9naW5XaXRoT1RQUmVzcG9uc2USEgoKc2Vzc2lvbl9pZBgBIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAiABKAkSJAoEdXNlchgDIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciJwChFSZXF1ZXN0T1RQUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIWCgl0ZW5hbnRfaWQYAiABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAMgASgJSAGIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZCIlChJSZXF1ZXN0T1RQUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIPCg1Mb2dvdXRSZXF1ZXN0IiEKDkxvZ291dFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgitQEKD1JlZ2lzdGVyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCRIWCgl0ZW5hbnRfaWQYAyABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAQgASgJSAGIAQESKgoEcm9sZRgFIAEoDjIXLmlkZW50aXR5LnYxLkFjY2Vzc1JvbGVIAogBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQgcKBV9yb2xlIjgKEFJlZ2lzdGVyUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciIjChJWZXJpZnlFbWFpbFJlcXVlc3QSDQoFdG9rZW4YASABKAkiJgoTVmVyaWZ5RW1haWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIiAKHlJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsUmVxdWVzdCIyCh9SZXNlbmRWZXJpZmljYXRpb25FbWFpbFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiMQogU2VuZEVtYWlsVmVyaWZpY2F0aW9uQ29kZVJlcXVlc3QSDQoFZW1haWwYASABKAkiNAohU2VuZEVtYWlsVmVyaWZpY2F0aW9uQ29kZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiNQoWVmVyaWZ5RW1haWxDb2RlUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIMCgRjb2RlGAIgASgJIjwKF1ZlcmlmeUVtYWlsQ29kZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSEAoIdmVyaWZpZWQYAiABKAgiLAobUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIi8KHFJlcXVlc3RQYXNzd29yZFJlc2V0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI7ChRSZXNldFBhc3N3b3JkUmVxdWVzdBINCgV0b2tlbhgBIAEoCRIUCgxuZXdfcGFzc3dvcmQYAiABKAkiKAoVUmVzZXRQYXNzd29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiRwoVVXBkYXRlUGFzc3dvcmRSZXF1ZXN0EhgKEGN1cnJlbnRfcGFzc3dvcmQYASABKAkSFAoMbmV3X3Bhc3N3b3JkGAIgASgJIikKFlVwZGF0ZVBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIsChNSZWZyZXNoVG9rZW5SZXF1ZXN0EhUKDXJlZnJlc2hfdG9rZW4YASABKAkiQwoUUmVmcmVzaFRva2VuUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkiGgoYR2V0U2Vzc2lvbkNvbnRleHRSZXF1ZXN0IkkKGUdldFNlc3Npb25Db250ZXh0UmVzcG9uc2USLAoHY29udGV4dBgBIAEoCzIbLmlkZW50aXR5LnYxLlNlc3Npb25Db250ZXh0IigKE1N3aXRjaFRlbmFudFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJIkQKFFN3aXRjaFRlbmFudFJlc3BvbnNlEiwKB2NvbnRleHQYASABKAsyGy5pZGVudGl0eS52MS5TZXNzaW9uQ29udGV4dCIqChRTd2l0Y2hQcm9qZWN0UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIkUKFVN3aXRjaFByb2plY3RSZXNwb25zZRIsCgdjb250ZXh0GAEgASgLMhsuaWRlbnRpdHkudjEuU2Vzc2lvbkNvbnRleHQiHAoaQ2xlYXJTZXNzaW9uQ29udGV4dFJlcXVlc3QiLgobQ2xlYXJTZXNzaW9uQ29udGV4dFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiDgoMR2V0TWVSZXF1ZXN0IjUKDUdldE1lUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciLXAQoWQ3JlYXRlQWRtaW5Vc2VyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIXCgpmaXJzdF9uYW1lGAIgASgJSACIAQESFgoJbGFzdF9uYW1lGAMgASgJSAGIAQESEQoJdGVuYW50X2lkGAQgASgJEhcKCnByb2plY3RfaWQYBSABKAlIAogBARIlCgRyb2xlGAYgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg0KC19wcm9qZWN0X2lkIj8KF0NyZWF0ZUFkbWluVXNlclJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIiIQoTR2V0QWRtaW5Vc2VyUmVxdWVzdBIKCgJpZBgBIAEoCSI8ChRHZXRBZG1pblVzZXJSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyItgBChZVcGRhdGVBZG1pblVzZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhcKCmZpcnN0X25hbWUYAiABKAlIAIgBARIWCglsYXN0X25hbWUYAyABKAlIAYgBARIXCgphdmF0YXJfdXJsGAQgASgJSAKIAQESMQoGc3RhdHVzGAUgASgOMhwuaWRlbnRpdHkudjEuQWRtaW5Vc2VyU3RhdHVzSAOIAQFCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUINCgtfYXZhdGFyX3VybEIJCgdfc3RhdHVzIj8KF1VwZGF0ZUFkbWluVXNlclJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIiyQEKFUxpc3RBZG1pblVzZXJzUmVxdWVzdBITCgZzZWFyY2gYASABKAlIAIgBARIqCgRyb2xlGAIgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZUgBiAEBEjEKBnN0YXR1cxgDIAEoDjIcLmlkZW50aXR5LnYxLkFkbWluVXNlclN0YXR1c0gCiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUIJCgdfc2VhcmNoQgcKBV9yb2xlQgkKB19zdGF0dXMiTgoWTGlzdEFkbWluVXNlcnNSZXNwb25zZRIlCgVpdGVtcxgBIAMoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlchINCgV0b3RhbBgCIAEoBSKNAQoSR3JhbnRBY2Nlc3NSZXF1ZXN0EhUKDWFkbWluX3VzZXJfaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhcKCnByb2plY3RfaWQYAyABKAlIAIgBARIlCgRyb2xlGAQgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZUINCgtfcHJvamVjdF9pZCJDChNHcmFudEFjY2Vzc1Jlc3BvbnNlEiwKBmFjY2VzcxgBIAEoCzIcLmlkZW50aXR5LnYxLkFkbWluVXNlckFjY2VzcyIoChNSZXZva2VBY2Nlc3NSZXF1ZXN0EhEKCWFjY2Vzc19pZBgBIAEoCSInChRSZXZva2VBY2Nlc3NSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkoKFUNyZWF0ZUN1c3RvbWVyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIVCghwYXNzd29yZBgCIAEoCUgAiAEBQgsKCV9wYXNzd29yZCJBChZDcmVhdGVDdXN0b21lclJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiIAoSR2V0Q3VzdG9tZXJSZXF1ZXN0EgoKAmlkGAEgASgJIj4KE0dldEN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciJ+ChVVcGRhdGVDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkSEgoFZW1haWwYAiABKAlIAIgBARIwCgZzdGF0dXMYAyABKA4yGy5pZGVudGl0eS52MS5DdXN0b21lclN0YXR1c0gBiAEBQggKBl9lbWFpbEIJCgdfc3RhdHVzIkEKFlVwZGF0ZUN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciIjChVEZWxldGVDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkiKQoWRGVsZXRlQ3VzdG9tZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIpIBChRMaXN0Q3VzdG9tZXJzUmVxdWVzdBITCgZzZWFyY2gYASABKAlIAIgBARIwCgZzdGF0dXMYAiABKA4yGy5pZGVudGl0eS52MS5DdXN0b21lclN0YXR1c0gBiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUIJCgdfc2VhcmNoQgkKB19zdGF0dXMiTAoVTGlzdEN1c3RvbWVyc1Jlc3BvbnNlEiQKBWl0ZW1zGAEgAygLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXISDQoFdG90YWwYAiABKAUiJAoWU3VzcGVuZEN1c3RvbWVyUmVxdWVzdBIKCgJpZBgBIAEoCSJCChdTdXNwZW5kQ3VzdG9tZXJSZXNwb25zZRInCghjdXN0b21lchgBIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIj4KGlNldEN1c3RvbWVyUGFzc3dvcmRSZXF1ZXN0EgoKAmlkGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIuChtTZXRDdXN0b21lclBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLcAQofQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIXCgppbnZpdGVkX2J5GAIgASgJSACIAQESFAoHbWVzc2FnZRgDIAEoCUgBiAEBEhcKCnNlbmRfZW1haWwYBCABKAhIAogBARIgChNhY2NlcHRfdXJsX292ZXJyaWRlGAUgASgJSAOIAQFCDQoLX2ludml0ZWRfYnlCCgoIX21lc3NhZ2VCDQoLX3NlbmRfZW1haWxCFgoUX2FjY2VwdF91cmxfb3ZlcnJpZGUiegogQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USMwoKaW52aXRhdGlvbhgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvbhISCgphY2NlcHRfdXJsGAIgASgJEg0KBXRva2VuGAMgASgJIqYBCh5MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1JlcXVlc3QSOgoGc3RhdHVzGAEgASgOMiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uU3RhdHVzSACIAQESEwoGc2VhcmNoGAIgASgJSAGIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zdGF0dXNCCQoHX3NlYXJjaCJgCh9MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1Jlc3BvbnNlEi4KBWl0ZW1zGAEgAygLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uEg0KBXRvdGFsGAIgASgFIioKHEdldEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QSCgoCaWQYASABKAkiVAodR2V0Q3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USMwoKaW52aXRhdGlvbhgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvbiItCh9SZXZva2VDdXN0b21lckludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIjMKIFJldm9rZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgijwEKH1Jlc2VuZEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QSCgoCaWQYASABKAkSFwoKc2VuZF9lbWFpbBgCIAEoCEgAiAEBEiAKE2FjY2VwdF91cmxfb3ZlcnJpZGUYAyABKAlIAYgBAUINCgtfc2VuZF9lbWFpbEIWChRfYWNjZXB0X3VybF9vdmVycmlkZSJ6CiBSZXNlbmRDdXN0b21lckludml0YXRpb25SZXNwb25zZRIzCgppbnZpdGF0aW9uGAEgASgLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uEhIKCmFjY2VwdF91cmwYAiABKAkSDQoFdG9rZW4YAyABKAkiMgohVmFsaWRhdGVDdXN0b21lckludml0YXRpb25SZXF1ZXN0Eg0KBXRva2VuGAEgASgJIocBCiJWYWxpZGF0ZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEjMKCmludml0YXRpb24YASABKAsyHy5pZGVudGl0eS52MS5DdXN0b21lckludml0YXRpb24SLAoJcHJvdmlkZXJzGAIgAygLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIlQKH0FjY2VwdEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QSDQoFdG9rZW4YASABKAkSFQoIcGFzc3dvcmQYAiABKAlIAIgBAUILCglfcGFzc3dvcmQieAogQWNjZXB0Q3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lchIUCgxhY2Nlc3NfdG9rZW4YAiABKAkSFQoNcmVmcmVzaF90b2tlbhgDIAEoCSIjChNDcmVhdGVUZW5hbnRSZXF1ZXN0EgwKBG5hbWUYASABKAkiOwoUQ3JlYXRlVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50Ih4KEEdldFRlbmFudFJlcXVlc3QSCgoCaWQYASABKAkiOAoRR2V0VGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IngKE1VwZGF0ZVRlbmFudFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEi4KBnN0YXR1cxgDIAEoDjIZLmlkZW50aXR5LnYxLlRlbmFudFN0YXR1c0gBiAEBQgcKBV9uYW1lQgkKB19zdGF0dXMiOwoUVXBkYXRlVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50Im4KEkxpc3RUZW5hbnRzUmVxdWVzdBIuCgZzdGF0dXMYASABKA4yGS5pZGVudGl0eS52MS5UZW5hbnRTdGF0dXNIAIgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCCQoHX3N0YXR1cyJIChNMaXN0VGVuYW50c1Jlc3BvbnNlEiIKBWl0ZW1zGAEgAygLMhMuaWRlbnRpdHkudjEuVGVuYW50Eg0KBXRvdGFsGAIgASgFIiEKE0RlbGV0ZVRlbmFudFJlcXVlc3QSCgoCaWQYASABKAkiJwoURGVsZXRlVGVuYW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCKfBgoUQ3JlYXRlUHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCRIYCgtkZXNjcmlwdGlvbhgCIAEoCUgAiAEBEhEKCXRlbmFudF9pZBgDIAEoCRIgChNkZWZhdWx0X2xvY2FsZV9jb2RlGAQgASgJSAGIAQESKAobZGVmYXVsdF9sb2NhbGVfZGlzcGxheV9uYW1lGAUgASgJSAKIAQESJwoaZGVmYXVsdF9sb2NhbGVfbmF0aXZlX25hbWUYBiABKAlIA4gBARIiChVkZWZhdWx0X2xvY2FsZV9pc19ydGwYByABKAhIBIgBARIZCgxkaXNwbGF5X25hbWUYCiABKAlIBYgBARIVCghsb2dvX3VybBgLIAEoCUgGiAEBEhoKDXByaW1hcnlfY29sb3IYDCABKAlIB4gBARIWCglmcm9tX25hbWUYDSABKAlICIgBARIVCghyZXBseV90bxgOIAEoCUgJiAEBEhoKDXN1cHBvcnRfZW1haWwYDyABKAlICogBARIZCgxhcHBfYmFzZV91cmwYECABKAlIC4gBARIrCh5jdXN0b21lcl93ZWxjb21lX2VtYWlsX2VuYWJsZWQYFCABKAhIDIgBARIkChdjdXN0b21lcl9zaWdudXBfZW5hYmxlZBgeIAEoCEgNiAEBQg4KDF9kZXNjcmlwdGlvbkIWChRfZGVmYXVsdF9sb2NhbGVfY29kZUIeChxfZGVmYXVsdF9sb2NhbGVfZGlzcGxheV9uYW1lQh0KG19kZWZhdWx0X2xvY2FsZV9uYXRpdmVfbmFtZUIYChZfZGVmYXVsdF9sb2NhbGVfaXNfcnRsQg8KDV9kaXNwbGF5X25hbWVCCwoJX2xvZ29fdXJsQhAKDl9wcmltYXJ5X2NvbG9yQgwKCl9mcm9tX25hbWVCCwoJX3JlcGx5X3RvQhAKDl9zdXBwb3J0X2VtYWlsQg8KDV9hcHBfYmFzZV91cmxCIQofX2N1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZEIaChhfY3VzdG9tZXJfc2lnbnVwX2VuYWJsZWQiPgoVQ3JlYXRlUHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Ih8KEUdldFByb2plY3RSZXF1ZXN0EgoKAmlkGAEgASgJIjsKEkdldFByb2plY3RSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuaWRlbnRpdHkudjEuUHJvamVjdCLYBAoUVXBkYXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESLwoGc3RhdHVzGAQgASgOMhouaWRlbnRpdHkudjEuUHJvamVjdFN0YXR1c0gCiAEBEhkKDGRpc3BsYXlfbmFtZRgKIAEoCUgDiAEBEhUKCGxvZ29fdXJsGAsgASgJSASIAQESGgoNcHJpbWFyeV9jb2xvchgMIAEoCUgFiAEBEhYKCWZyb21fbmFtZRgNIAEoCUgGiAEBEhUKCHJlcGx5X3RvGA4gASgJSAeIAQESGgoNc3VwcG9ydF9lbWFpbBgPIAEoCUgIiAEBEhkKDGFwcF9iYXNlX3VybBgQIAEoCUgJiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBgUIAEoCEgKiAEBEiQKF2N1c3RvbWVyX3NpZ251cF9lbmFibGVkGB4gASgISAuIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19zdGF0dXNCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUILCglfcmVwbHlfdG9CEAoOX3N1cHBvcnRfZW1haWxCDwoNX2FwcF9iYXNlX3VybEIhCh9fY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkQhoKGF9jdXN0b21lcl9zaWdudXBfZW5hYmxlZCI+ChVVcGRhdGVQcm9qZWN0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmlkZW50aXR5LnYxLlByb2plY3QigwEKE0xpc3RQcm9qZWN0c1JlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEi8KBnN0YXR1cxgCIAEoDjIaLmlkZW50aXR5LnYxLlByb2plY3RTdGF0dXNIAIgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCCQoHX3N0YXR1cyJKChRMaXN0UHJvamVjdHNSZXNwb25zZRIjCgVpdGVtcxgBIAMoCzIULmlkZW50aXR5LnYxLlByb2plY3QSDQoFdG90YWwYAiABKAUiIgoURGVsZXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiKAoVRGVsZXRlUHJvamVjdFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLQoYR2V0RGVmYXVsdFByb2plY3RSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJCChlHZXREZWZhdWx0UHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Ii4KGFNldERlZmF1bHRQcm9qZWN0UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIkIKGVNldERlZmF1bHRQcm9qZWN0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmlkZW50aXR5LnYxLlByb2plY3QixwEKF0NyZWF0ZUludml0YXRpb25SZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRITCgtwcm9qZWN0X2lkcxgDIAMoCRIlCgRyb2xlGAQgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZRIsCgtpbnZpdGVfdHlwZRgFIAEoDjIXLmlkZW50aXR5LnYxLkludml0ZVR5cGUSFAoHbWVzc2FnZRgGIAEoCUgAiAEBQgoKCF9tZXNzYWdlIkcKGENyZWF0ZUludml0YXRpb25SZXNwb25zZRIrCgppbnZpdGF0aW9uGAEgASgLMhcuaWRlbnRpdHkudjEuSW52aXRhdGlvbiKJAQoWTGlzdEludml0YXRpb25zUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSMgoGc3RhdHVzGAIgASgOMh0uaWRlbnRpdHkudjEuSW52aXRhdGlvblN0YXR1c0gAiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUIJCgdfc3RhdHVzIlAKF0xpc3RJbnZpdGF0aW9uc1Jlc3BvbnNlEiYKBWl0ZW1zGAEgAygLMhcuaWRlbnRpdHkudjEuSW52aXRhdGlvbhINCgV0b3RhbBgCIAEoBSIwChdSZXZva2VJbnZpdGF0aW9uUmVxdWVzdBIVCg1pbnZpdGF0aW9uX2lkGAEgASgJIisKGFJldm9rZUludml0YXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkwKF0FjY2VwdEludml0YXRpb25SZXF1ZXN0Eg0KBXRva2VuGAEgASgJEhUKCHBhc3N3b3JkGAIgASgJSACIAQFCCwoJX3Bhc3N3b3JkIlQKGEFjY2VwdEludml0YXRpb25SZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEhIKCnNlc3Npb25faWQYAiABKAkiKgoZVmFsaWRhdGVJbnZpdGF0aW9uUmVxdWVzdBINCgV0b2tlbhgBIAEoCSJJChpWYWxpZGF0ZUludml0YXRpb25SZXNwb25zZRIrCgppbnZpdGF0aW9uGAEgASgLMhcuaWRlbnRpdHkudjEuSW52aXRhdGlvbiKQAgoTQ3JlYXRlQXBpS2V5UmVxdWVzdBIMCgRuYW1lGAEgASgJEikKCGtleV90eXBlGAIgASgOMhcuaWRlbnRpdHkudjEuQXBpS2V5VHlwZRIOCgZzY29wZXMYAyADKAkSIAoTcmF0ZV9saW1pdF9wZXJfaG91chgEIAEoBUgAiAEBEjMKCmV4cGlyZXNfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESFgoOYWxsb3dlZF9tb2RlbHMYBiADKAkSGgoSYWxsb3dlZF9maWxlX3R5cGVzGAcgAygJQhYKFF9yYXRlX2xpbWl0X3Blcl9ob3VyQg0KC19leHBpcmVzX2F0IjwKFENyZWF0ZUFwaUtleVJlc3BvbnNlEiQKB2FwaV9rZXkYASABKAsyEy5pZGVudGl0eS52MS5BcGlLZXkiHgoQR2V0QXBpS2V5UmVxdWVzdBIKCgJpZBgBIAEoCSI5ChFHZXRBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5IjMKEkxpc3RBcGlLZXlzUmVxdWVzdBINCgVsaW1pdBgBIAEoBRIOCgZvZmZzZXQYAiABKAUiSAoTTGlzdEFwaUtleXNSZXNwb25zZRIiCgVpdGVtcxgBIAMoCzITLmlkZW50aXR5LnYxLkFwaUtleRINCgV0b3RhbBgCIAEoBSLEAQoTVXBkYXRlQXBpS2V5UmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESFgoJaXNfYWN0aXZlGAMgASgISAGIAQESDgoGc2NvcGVzGAQgAygJEhUKDXVwZGF0ZV9zY29wZXMYBiABKAgSIAoTcmF0ZV9saW1pdF9wZXJfaG91chgFIAEoBUgCiAEBQgcKBV9uYW1lQgwKCl9pc19hY3RpdmVCFgoUX3JhdGVfbGltaXRfcGVyX2hvdXIiPAoUVXBkYXRlQXBpS2V5UmVzcG9uc2USJAoHYXBpX2tleRgBIAEoCzITLmlkZW50aXR5LnYxLkFwaUtleSIhChNSb3RhdGVBcGlLZXlSZXF1ZXN0EgoKAmlkGAEgASgJIjwKFFJvdGF0ZUFwaUtleVJlc3BvbnNlEiQKB2FwaV9rZXkYASABKAsyEy5pZGVudGl0eS52MS5BcGlLZXkiIQoTUmV2b2tlQXBpS2V5UmVxdWVzdBIKCgJpZBgBIAEoCSInChRSZXZva2VBcGlLZXlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIrEFCgxBdXRoUHJvdmlkZXISCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSDAoEdHlwZRgEIAEoCRInCgZjb25maWcYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg8KB2VuYWJsZWQYBiABKAgSEgoKaXNfZGVmYXVsdBgHIAEoCBIQCghwcmlvcml0eRgIIAEoBRIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIXCgpjcmVhdGVkX2J5GB4gASgJSACIAQESFwoKdXBkYXRlZF9ieRgfIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjYKEHB1Ymxpc2hlZF9jb25maWcYPCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQESHgoRcHVibGlzaGVkX2VuYWJsZWQYPSABKAhIA4gBARI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBg+IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GD8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5QhMKEV9wdWJsaXNoZWRfY29uZmlnQhQKEl9wdWJsaXNoZWRfZW5hYmxlZEIXChVfc2NoZWR1bGVkX3B1Ymxpc2hfYXRCGQoXX3NjaGVkdWxlZF91bnB1Ymxpc2hfYXQiewoYTGlzdEF1dGhQcm92aWRlcnNSZXF1ZXN0EhQKB2VuYWJsZWQYASABKAhIAIgBARITCgZzZWFyY2gYAiABKAlIAYgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCCgoIX2VuYWJsZWRCCQoHX3NlYXJjaCJYChlMaXN0QXV0aFByb3ZpZGVyc1Jlc3BvbnNlEiwKCXByb3ZpZGVycxgBIAMoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlchINCgV0b3RhbBgCIAEoBSIkChZHZXRBdXRoUHJvdmlkZXJSZXF1ZXN0EgoKAmlkGAEgASgJIkYKF0dldEF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyItsBChlDcmVhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEgwKBHR5cGUYAyABKAkSJwoGY29uZmlnGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgdlbmFibGVkGAUgASgISACIAQESFwoKaXNfZGVmYXVsdBgGIAEoCEgBiAEBEhUKCHByaW9yaXR5GAcgASgFSAKIAQFCCgoIX2VuYWJsZWRCDQoLX2lzX2RlZmF1bHRCCwoJX3ByaW9yaXR5IkkKGkNyZWF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIuoBChlVcGRhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIsCgZjb25maWcYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESFAoHZW5hYmxlZBgEIAEoCEgCiAEBEhcKCmlzX2RlZmF1bHQYBSABKAhIA4gBARIVCghwcmlvcml0eRgGIAEoBUgEiAEBQgcKBV9uYW1lQgkKB19jb25maWdCCgoIX2VuYWJsZWRCDQoLX2lzX2RlZmF1bHRCCwoJX3ByaW9yaXR5IkkKGlVwZGF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIicKGURlbGV0ZUF1dGhQcm92aWRlclJlcXVlc3QSCgoCaWQYASABKAkiLQoaRGVsZXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIoChpQdWJsaXNoQXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSKAAQobUHVibGlzaEF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIioKHFVucHVibGlzaEF1dGhQcm92aWRlclJlcXVlc3QSCgoCaWQYASABKAkiTAodVW5wdWJsaXNoQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiMQojR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1JlcXVlc3QSCgoCaWQYASABKAkiUQokR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyKoAQoiU2NoZWR1bGVBdXRoUHJvdmlkZXJQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCRIuCgpwdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCJSCiNTY2hlZHVsZUF1dGhQcm92aWRlclB1Ymxpc2hSZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciI3CilDYW5jZWxTY2hlZHVsZWRBdXRoUHJvdmlkZXJQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCSJZCipDYW5jZWxTY2hlZHVsZWRBdXRoUHJvdmlkZXJQdWJsaXNoUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiHgocRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVxdWVzdCIyCh1FbmFibGVkT0F1dGhQcm92aWRlcnNSZXNwb25zZRIRCglwcm92aWRlcnMYASADKAkiKgoXTWludFNlcnZpY2VUb2tlblJlcXVlc3QSDwoHcHVycG9zZRgBIAEoCSJOChhNaW50U2VydmljZVRva2VuUmVzcG9uc2USDQoFdG9rZW4YASABKAkSDwoHcHVycG9zZRgCIAEoCRISCgpleHBpcmVzX2F0GAMgASgJIo4BChZVcGRhdGVNeVByb2ZpbGVSZXF1ZXN0EhcKCmZpcnN0X25hbWUYASABKAlIAIgBARIWCglsYXN0X25hbWUYAiABKAlIAYgBARIXCgphdmF0YXJfdXJsGAMgASgJSAKIAQFCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUINCgtfYXZhdGFyX3VybCI/ChdVcGRhdGVNeVByb2ZpbGVSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIh8KHUxpc3RNeU9BdXRoQ29ubmVjdGlvbnNSZXF1ZXN0Io0BCg9PQXV0aENvbm5lY3Rpb24SEAoIcHJvdmlkZXIYASABKAkSGAoQcHJvdmlkZXJfdXNlcl9pZBgCIAEoCRISCgVlbWFpbBgDIAEoCUgAiAEBEjAKDGNvbm5lY3RlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCAoGX2VtYWlsIlMKHkxpc3RNeU9BdXRoQ29ubmVjdGlvbnNSZXNwb25zZRIxCgtjb25uZWN0aW9ucxgBIAMoCzIcLmlkZW50aXR5LnYxLk9BdXRoQ29ubmVjdGlvbiIuChpVbmxpbmtPQXV0aFByb3ZpZGVyUmVxdWVzdBIQCghwcm92aWRlchgBIAEoCSIuChtVbmxpbmtPQXV0aFByb3ZpZGVyUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIuCh1DaGVja0VtYWlsQXZhaWxhYmlsaXR5UmVxdWVzdBINCgVlbWFpbBgBIAEoCSIzCh5DaGVja0VtYWlsQXZhaWxhYmlsaXR5UmVzcG9uc2USEQoJYXZhaWxhYmxlGAEgASgIIo8BChtDb21wbGV0ZUFjY291bnRTZXR1cFJlcXVlc3QSFwoKZmlyc3RfbmFtZRgBIAEoCUgAiAEBEhYKCWxhc3RfbmFtZRgCIAEoCUgBiAEBEhUKCHBhc3N3b3JkGAMgASgJSAKIAQFCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUILCglfcGFzc3dvcmQiWwocQ29tcGxldGVBY2NvdW50U2V0dXBSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhkKDHJlZGlyZWN0X3VybBgCIAEoCUgAiAEBQg8KDV9yZWRpcmVjdF91cmwiLQoaQ3JlYXRlU2lnbnVwU2Vzc2lvblJlcXVlc3QSDwoHdXNlcl9pZBgBIAEoCSIuChtDcmVhdGVTaWdudXBTZXNzaW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIwChdSZXNlbmRJbnZpdGF0aW9uUmVxdWVzdBIVCg1pbnZpdGF0aW9uX2lkGAEgASgJIisKGFJlc2VuZEludml0YXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIiIKFEdldEludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIkQKFUdldEludml0YXRpb25SZXNwb25zZRIrCgppbnZpdGF0aW9uGAEgASgLMhcuaWRlbnRpdHkudjEuSW52aXRhdGlvbiIqChVBY3RpdmF0ZVRlbmFudFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJIj0KFkFjdGl2YXRlVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IjAKG1N1c3BlbmRUZW5hbnRBY2NvdW50UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiQwocU3VzcGVuZFRlbmFudEFjY291bnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiKAoTQ2FuY2VsVGVuYW50UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiOwoUQ2FuY2VsVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IiwKF1JlYWN0aXZhdGVUZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSI/ChhSZWFjdGl2YXRlVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50Ii0KGE1hcmtUZW5hbnRQYXN0RHVlUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiQAoZTWFya1RlbmFudFBhc3REdWVSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiJwoSQ2h1cm5UZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSI6ChNDaHVyblRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCIeChxHZXRDdXN0b21lckF1dGhDb25maWdSZXF1ZXN0IpoCChJDdXN0b21lckF1dGhDb25maWcSEQoJYWxnb3JpdGhtGAEgASgJEhMKBmlzc3VlchgCIAEoCUgAiAEBEhUKCGF1ZGllbmNlGAMgASgJSAGIAQESNwoOa2V5X3JvdGF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESGAoLc2lnbmluZ19rZXkYBSABKAlIA4gBARIsCgZjbGFpbXMYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCQoHX2lzc3VlckILCglfYXVkaWVuY2VCEQoPX2tleV9yb3RhdGVkX2F0Qg4KDF9zaWduaW5nX2tleUIJCgdfY2xhaW1zIlAKHUdldEN1c3RvbWVyQXV0aENvbmZpZ1Jlc3BvbnNlEi8KBmNvbmZpZxgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVyQXV0aENvbmZpZyIrChpWZXJpZnlDdXN0b21lclRva2VuUmVxdWVzdBINCgV0b2tlbhgBIAEoCSKzAgobVmVyaWZ5Q3VzdG9tZXJUb2tlblJlc3BvbnNlEg0KBXZhbGlkGAEgASgIEhIKBWVycm9yGAIgASgJSACIAQESGAoLY3VzdG9tZXJfaWQYAyABKAlIAYgBARISCgVlbWFpbBgEIAEoCUgCiAEBEhYKCXRlbmFudF9pZBgFIAEoCUgDiAEBEhcKCnByb2plY3RfaWQYBiABKAlIBIgBARINCgVyb2xlcxgHIAMoCRIzCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBQggKBl9lcnJvckIOCgxfY3VzdG9tZXJfaWRCCAoGX2VtYWlsQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCDQoLX2V4cGlyZXNfYXQiJAoiR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzUmVxdWVzdCLbAQoYQ3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzEiEKGW5hdGl2ZV9tYW5hZ2VtZW50X2VuYWJsZWQYASABKAgSIgoVZXh0ZXJuYWxfcHJvdmlkZXJfdXJsGAIgASgJSACIAQESIwoWZXh0ZXJuYWxfcHJvdmlkZXJfbmFtZRgDIAEoCUgBiAEBEhMKBnJlYXNvbhgEIAEoCUgCiAEBQhgKFl9leHRlcm5hbF9wcm92aWRlcl91cmxCGQoXX2V4dGVybmFsX3Byb3ZpZGVyX25hbWVCCQoHX3JlYXNvbiJcCiNHZXRDdXN0b21lck1hbmFnZW1lbnRTdGF0dXNSZXNwb25zZRI1CgZzdGF0dXMYASABKAsyJS5pZGVudGl0eS52MS5DdXN0b21lck1hbmFnZW1lbnRTdGF0dXMiKAoVVmFsaWRhdGVBcGlLZXlSZXF1ZXN0Eg8KB2FwaV9rZXkYASABKAkizAEKFlZhbGlkYXRlQXBpS2V5UmVzcG9uc2USCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIRCgl0ZW5hbnRfaWQYAyABKAkSEgoKcHJvamVjdF9pZBgEIAEoCRIQCghrZXlfdHlwZRgFIAEoCRIOCgZzY29wZXMYBiADKAkSFgoOYWxsb3dlZF9tb2RlbHMYByADKAkSGgoSYWxsb3dlZF9maWxlX3R5cGVzGAggAygJEhsKE3JhdGVfbGltaXRfcGVyX2hvdXIYCSABKAUiNwoUQ3VzdG9tZXJMb2dpblJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkibQoVQ3VzdG9tZXJMb2dpblJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJEicKCGN1c3RvbWVyGAMgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIifwoXQ3VzdG9tZXJSZWdpc3RlclJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSMgoMcHJvZmlsZV9kYXRhGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBQg8KDV9wcm9maWxlX2RhdGEicAoYQ3VzdG9tZXJSZWdpc3RlclJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJEicKCGN1c3RvbWVyGAMgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiNAobQ3VzdG9tZXJSZWZyZXNoVG9rZW5SZXF1ZXN0EhUKDXJlZnJlc2hfdG9rZW4YASABKAkiSwocQ3VzdG9tZXJSZWZyZXNoVG9rZW5SZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCSIqChlDdXN0b21lclJlcXVlc3RPVFBSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIioKGkN1c3RvbWVyUmVxdWVzdE9UUFJlc3BvbnNlEgwKBHNlbnQYASABKAgiOwoYQ3VzdG9tZXJWZXJpZnlPVFBSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhAKCG90cF9jb2RlGAIgASgJInEKGUN1c3RvbWVyVmVyaWZ5T1RQUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkSJwoIY3VzdG9tZXIYAyABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciI0CiNDdXN0b21lclJlcXVlc3RQYXNzd29yZFJlc2V0UmVxdWVzdBINCgVlbWFpbBgBIAEoCSI0CiRDdXN0b21lclJlcXVlc3RQYXNzd29yZFJlc2V0UmVzcG9uc2USDAoEc2VudBgBIAEoCCJDChxDdXN0b21lclJlc2V0UGFzc3dvcmRSZXF1ZXN0Eg0KBXRva2VuGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIwCh1DdXN0b21lclJlc2V0UGFzc3dvcmRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIItkBChlTdG9yZVByb3ZpZGVyVG9rZW5SZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEhQKDHByb3ZpZGVyX2tleRgCIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAyABKAkSFQoNcmVmcmVzaF90b2tlbhgEIAEoCRIQCghpZF90b2tlbhgFIAEoCRIOCgZzY29wZXMYBiABKAkSMwoKZXhwaXJlc19hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUINCgtfZXhwaXJlc19hdCIcChpTdG9yZVByb3ZpZGVyVG9rZW5SZXNwb25zZSJEChdHZXRQcm92aWRlclRva2VuUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRIUCgxwcm92aWRlcl9rZXkYAiABKAkirQEKGEdldFByb3ZpZGVyVG9rZW5SZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCRIQCghpZF90b2tlbhgDIAEoCRIOCgZzY29wZXMYBCABKAkSMwoKZXhwaXJlc19hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUINCgtfZXhwaXJlc19hdCIyChtEZWxldGVQcm92aWRlclRva2Vuc1JlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkiHgocRGVsZXRlUHJvdmlkZXJUb2tlbnNSZXNwb25zZSqxAQoPQWRtaW5Vc2VyU3RhdHVzEiEKHUFETUlOX1VTRVJfU1RBVFVTX1VOU1BFQ0lGSUVEEAASHAoYQURNSU5fVVNFUl9TVEFUVVNfQUNUSVZFEAESHQoZQURNSU5fVVNFUl9TVEFUVVNfUEVORElORxACEh8KG0FETUlOX1VTRVJfU1RBVFVTX1NVU1BFTkRFRBADEh0KGUFETUlOX1VTRVJfU1RBVFVTX0RFTEVURUQQBCqJAQoOQ3VzdG9tZXJTdGF0dXMSHwobQ1VTVE9NRVJfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGgoWQ1VTVE9NRVJfU1RBVFVTX0FDVElWRRABEhsKF0NVU1RPTUVSX1NUQVRVU19QRU5ESU5HEAISHQoZQ1VTVE9NRVJfU1RBVFVTX1NVU1BFTkRFRBADKtkBCgxUZW5hbnRTdGF0dXMSHQoZVEVOQU5UX1NUQVRVU19VTlNQRUNJRklFRBAAEh8KG1RFTkFOVF9TVEFUVVNfUEVORElOR19TRVRVUBABEhgKFFRFTkFOVF9TVEFUVVNfQUNUSVZFEAISGgoWVEVOQU5UX1NUQVRVU19QQVNUX0RVRRADEhsKF1RFTkFOVF9TVEFUVVNfU1VTUEVOREVEEAQSGwoXVEVOQU5UX1NUQVRVU19DQU5DRUxMRUQQBRIZChVURU5BTlRfU1RBVFVTX0NIVVJORUQQBipmCg1Qcm9qZWN0U3RhdHVzEh4KGlBST0pFQ1RfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGQoVUFJPSkVDVF9TVEFUVVNfQUNUSVZFEAESGgoWUFJPSkVDVF9TVEFUVVNfREVMRVRFRBACKqYBCgpBY2Nlc3NSb2xlEhsKF0FDQ0VTU19ST0xFX1VOU1BFQ0lGSUVEEAASHAoYQUNDRVNTX1JPTEVfVEVOQU5UX09XTkVSEAESHQoZQUNDRVNTX1JPTEVfUFJPSkVDVF9BRE1JThACEh4KGkFDQ0VTU19ST0xFX1BST0pFQ1RfRURJVE9SEAMSHgoaQUNDRVNTX1JPTEVfUFJPSkVDVF9WSUVXRVIQBCpkCgpJbnZpdGVUeXBlEhsKF0lOVklURV9UWVBFX1VOU1BFQ0lGSUVEEAASHAoYSU5WSVRFX1RZUEVfVEVOQU5UX09XTkVSEAESGwoXSU5WSVRFX1RZUEVfVEVBTV9NRU1CRVIQAiqyAQoQSW52aXRhdGlvblN0YXR1cxIhCh1JTlZJVEFUSU9OX1NUQVRVU19VTlNQRUNJRklFRBAAEh0KGUlOVklUQVRJT05fU1RBVFVTX1BFTkRJTkcQARIeChpJTlZJVEFUSU9OX1NUQVRVU19BQ0NFUFRFRBACEh0KGUlOVklUQVRJT05fU1RBVFVTX0VYUElSRUQQAxIdChlJTlZJVEFUSU9OX1NUQVRVU19SRVZPS0VEEAQq5wEKGEN1c3RvbWVySW52aXRhdGlvblN0YXR1cxIqCiZDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19VTlNQRUNJRklFRBAAEiYKIkNVU1RPTUVSX0lOVklUQVRJT05fU1RBVFVTX1BFTkRJTkcQARInCiNDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19BQ0NFUFRFRBACEiYKIkNVU1RPTUVSX0lOVklUQVRJT05fU1RBVFVTX0VYUElSRUQQAxImCiJDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19SRVZPS0VEEAQqXAoKQXBpS2V5VHlwZRIcChhBUElfS0VZX1RZUEVfVU5TUEVDSUZJRUQQABIXChNBUElfS0VZX1RZUEVfUFVCTElDEAESFwoTQVBJX0tFWV9UWVBFX1NFQ1JFVBACMqZNCg9JZGVudGl0eVNlcnZpY2USPgoFTG9naW4SGS5pZGVudGl0eS52MS5Mb2dpblJlcXVlc3QaGi5pZGVudGl0eS52MS5Mb2dpblJlc3BvbnNlElMKDExvZ2luV2l0aE9UUBIgLmlkZW50aXR5LnYxLkxvZ2luV2l0aE9UUFJlcXVlc3QaIS5pZGVudGl0eS52MS5Mb2dpbldpdGhPVFBSZXNwb25zZRJNCgpSZXF1ZXN0T1RQEh4uaWRlbnRpdHkudjEuUmVxdWVzdE9UUFJlcXVlc3QaHy5pZGVudGl0eS52MS5SZXF1ZXN0T1RQUmVzcG9uc2USQQoGTG9nb3V0EhouaWRlbnRpdHkudjEuTG9nb3V0UmVxdWVzdBobLmlkZW50aXR5LnYxLkxvZ291dFJlc3BvbnNlEkcKCFJlZ2lzdGVyEhwuaWRlbnRpdHkudjEuUmVnaXN0ZXJSZXF1ZXN0Gh0uaWRlbnRpdHkudjEuUmVnaXN0ZXJSZXNwb25zZRJQCgtWZXJpZnlFbWFpbBIfLmlkZW50aXR5LnYxLlZlcmlmeUVtYWlsUmVxdWVzdBogLmlkZW50aXR5LnYxLlZlcmlmeUVtYWlsUmVzcG9uc2USdAoXUmVzZW5kVmVyaWZpY2F0aW9uRW1haWwSKy5pZGVudGl0eS52MS5SZXNlbmRWZXJpZmljYXRpb25FbWFpbFJlcXVlc3QaLC5pZGVudGl0eS52MS5SZXNlbmRWZXJpZmljYXRpb25FbWFpbFJlc3BvbnNlEnoKGVNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGUSLS5pZGVudGl0eS52MS5TZW5kRW1haWxWZXJpZmljYXRpb25Db2RlUmVxdWVzdBouLmlkZW50aXR5LnYxLlNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGVSZXNwb25zZRJcCg9WZXJpZnlFbWFpbENvZGUSIy5pZGVudGl0eS52MS5WZXJpZnlFbWFpbENvZGVSZXF1ZXN0GiQuaWRlbnRpdHkudjEuVmVyaWZ5RW1haWxDb2RlUmVzcG9uc2USawoUUmVxdWVzdFBhc3N3b3JkUmVzZXQSKC5pZGVudGl0eS52MS5SZXF1ZXN0UGFzc3dvcmRSZXNldFJlcXVlc3QaKS5pZGVudGl0eS52MS5SZXF1ZXN0UGFzc3dvcmRSZXNldFJlc3BvbnNlElYKDVJlc2V0UGFzc3dvcmQSIS5pZGVudGl0eS52MS5SZXNldFBhc3N3b3JkUmVxdWVzdBoiLmlkZW50aXR5LnYxLlJlc2V0UGFzc3dvcmRSZXNwb25zZRJZCg5VcGRhdGVQYXNzd29yZBIiLmlkZW50aXR5LnYxLlVwZGF0ZVBhc3N3b3JkUmVxdWVzdBojLmlkZW50aXR5LnYxLlVwZGF0ZVBhc3N3b3JkUmVzcG9uc2USUwoMUmVmcmVzaFRva2VuEiAuaWRlbnRpdHkudjEuUmVmcmVzaFRva2VuUmVxdWVzdBohLmlkZW50aXR5LnYxLlJlZnJlc2hUb2tlblJlc3BvbnNlEmIKEUdldFNlc3Npb25Db250ZXh0EiUuaWRlbnRpdHkudjEuR2V0U2Vzc2lvbkNvbnRleHRSZXF1ZXN0GiYuaWRlbnRpdHkudjEuR2V0U2Vzc2lvbkNvbnRleHRSZXNwb25zZRJTCgxTd2l0Y2hUZW5hbnQSIC5pZGVudGl0eS52MS5Td2l0Y2hUZW5hbnRSZXF1ZXN0GiEuaWRlbnRpdHkudjEuU3dpdGNoVGVuYW50UmVzcG9uc2USVgoNU3dpdGNoUHJvamVjdBIhLmlkZW50aXR5LnYxLlN3aXRjaFByb2plY3RSZXF1ZXN0GiIuaWRlbnRpdHkudjEuU3dpdGNoUHJvamVjdFJlc3BvbnNlEmgKE0NsZWFyU2Vzc2lvbkNvbnRleHQSJy5pZGVudGl0eS52MS5DbGVhclNlc3Npb25Db250ZXh0UmVxdWVzdBooLmlkZW50aXR5LnYxLkNsZWFyU2Vzc2lvbkNvbnRleHRSZXNwb25zZRI+CgVHZXRNZRIZLmlkZW50aXR5LnYxLkdldE1lUmVxdWVzdBoaLmlkZW50aXR5LnYxLkdldE1lUmVzcG9uc2USXAoPQ3JlYXRlQWRtaW5Vc2VyEiMuaWRlbnRpdHkudjEuQ3JlYXRlQWRtaW5Vc2VyUmVxdWVzdBokLmlkZW50aXR5LnYxLkNyZWF0ZUFkbWluVXNlclJlc3BvbnNlElMKDEdldEFkbWluVXNlchIgLmlkZW50aXR5LnYxLkdldEFkbWluVXNlclJlcXVlc3QaIS5pZGVudGl0eS52MS5HZXRBZG1pblVzZXJSZXNwb25zZRJcCg9VcGRhdGVBZG1pblVzZXISIy5pZGVudGl0eS52MS5VcGRhdGVBZG1pblVzZXJSZXF1ZXN0GiQuaWRlbnRpdHkudjEuVXBkYXRlQWRtaW5Vc2VyUmVzcG9uc2USWQoOTGlzdEFkbWluVXNlcnMSIi5pZGVudGl0eS52MS5MaXN0QWRtaW5Vc2Vyc1JlcXVlc3QaIy5pZGVudGl0eS52MS5MaXN0QWRtaW5Vc2Vyc1Jlc3BvbnNlElAKC0dyYW50QWNjZXNzEh8uaWRlbnRpdHkudjEuR3JhbnRBY2Nlc3NSZXF1ZXN0GiAuaWRlbnRpdHkudjEuR3JhbnRBY2Nlc3NSZXNwb25zZRJTCgxSZXZva2VBY2Nlc3MSIC5pZGVudGl0eS52MS5SZXZva2VBY2Nlc3NSZXF1ZXN0GiEuaWRlbnRpdHkudjEuUmV2b2tlQWNjZXNzUmVzcG9uc2USWQoOQ3JlYXRlQ3VzdG9tZXISIi5pZGVudGl0eS52MS5DcmVhdGVDdXN0b21lclJlcXVlc3QaIy5pZGVudGl0eS52MS5DcmVhdGVDdXN0b21lclJlc3BvbnNlElAKC0dldEN1c3RvbWVyEh8uaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJSZXF1ZXN0GiAuaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJSZXNwb25zZRJZCg5VcGRhdGVDdXN0b21lchIiLmlkZW50aXR5LnYxLlVwZGF0ZUN1c3RvbWVyUmVxdWVzdBojLmlkZW50aXR5LnYxLlVwZGF0ZUN1c3RvbWVyUmVzcG9uc2USWQoORGVsZXRlQ3VzdG9tZXISIi5pZGVudGl0eS52MS5EZWxldGVDdXN0b21lclJlcXVlc3QaIy5pZGVudGl0eS52MS5EZWxldGVDdXN0b21lclJlc3BvbnNlElYKDUxpc3RDdXN0b21lcnMSIS5pZGVudGl0eS52MS5MaXN0Q3VzdG9tZXJzUmVxdWVzdBoiLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lcnNSZXNwb25zZRJcCg9TdXNwZW5kQ3VzdG9tZXISIy5pZGVudGl0eS52MS5TdXNwZW5kQ3VzdG9tZXJSZXF1ZXN0GiQuaWRlbnRpdHkudjEuU3VzcGVuZEN1c3RvbWVyUmVzcG9uc2USaAoTU2V0Q3VzdG9tZXJQYXNzd29yZBInLmlkZW50aXR5LnYxLlNldEN1c3RvbWVyUGFzc3dvcmRSZXF1ZXN0GiguaWRlbnRpdHkudjEuU2V0Q3VzdG9tZXJQYXNzd29yZFJlc3BvbnNlEncKGENyZWF0ZUN1c3RvbWVySW52aXRhdGlvbhIsLmlkZW50aXR5LnYxLkNyZWF0ZUN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QaLS5pZGVudGl0eS52MS5DcmVhdGVDdXN0b21lckludml0YXRpb25SZXNwb25zZRJ0ChdMaXN0Q3VzdG9tZXJJbnZpdGF0aW9ucxIrLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lckludml0YXRpb25zUmVxdWVzdBosLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lckludml0YXRpb25zUmVzcG9uc2USbgoVR2V0Q3VzdG9tZXJJbnZpdGF0aW9uEikuaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBoqLmlkZW50aXR5LnYxLkdldEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEncKGFJldm9rZUN1c3RvbWVySW52aXRhdGlvbhIsLmlkZW50aXR5LnYxLlJldm9rZUN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QaLS5pZGVudGl0eS52MS5SZXZva2VDdXN0b21lckludml0YXRpb25SZXNwb25zZRJ3ChhSZXNlbmRDdXN0b21lckludml0YXRpb24SLC5pZGVudGl0eS52MS5SZXNlbmRDdXN0b21lckludml0YXRpb25SZXF1ZXN0Gi0uaWRlbnRpdHkudjEuUmVzZW5kQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USfQoaVmFsaWRhdGVDdXN0b21lckludml0YXRpb24SLi5pZGVudGl0eS52MS5WYWxpZGF0ZUN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QaLy5pZGVudGl0eS52MS5WYWxpZGF0ZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEncKGEFjY2VwdEN1c3RvbWVySW52aXRhdGlvbhIsLmlkZW50aXR5LnYxLkFjY2VwdEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QaLS5pZGVudGl0eS52MS5BY2NlcHRDdXN0b21lckludml0YXRpb25SZXNwb25zZRJTCgxDcmVhdGVUZW5hbnQSIC5pZGVudGl0eS52MS5DcmVhdGVUZW5hbnRSZXF1ZXN0GiEuaWRlbnRpdHkudjEuQ3JlYXRlVGVuYW50UmVzcG9uc2USSgoJR2V0VGVuYW50Eh0uaWRlbnRpdHkudjEuR2V0VGVuYW50UmVxdWVzdBoeLmlkZW50aXR5LnYxLkdldFRlbmFudFJlc3BvbnNlElMKDFVwZGF0ZVRlbmFudBIgLmlkZW50aXR5LnYxLlVwZGF0ZVRlbmFudFJlcXVlc3QaIS5pZGVudGl0eS52MS5VcGRhdGVUZW5hbnRSZXNwb25zZRJQCgtMaXN0VGVuYW50cxIfLmlkZW50aXR5LnYxLkxpc3RUZW5hbnRzUmVxdWVzdBogLmlkZW50aXR5LnYxLkxpc3RUZW5hbnRzUmVzcG9uc2USUwoMRGVsZXRlVGVuYW50EiAuaWRlbnRpdHkudjEuRGVsZXRlVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLkRlbGV0ZVRlbmFudFJlc3BvbnNlElYKDUNyZWF0ZVByb2plY3QSIS5pZGVudGl0eS52MS5DcmVhdGVQcm9qZWN0UmVxdWVzdBoiLmlkZW50aXR5LnYxLkNyZWF0ZVByb2plY3RSZXNwb25zZRJNCgpHZXRQcm9qZWN0Eh4uaWRlbnRpdHkudjEuR2V0UHJvamVjdFJlcXVlc3QaHy5pZGVudGl0eS52MS5HZXRQcm9qZWN0UmVzcG9uc2USVgoNVXBkYXRlUHJvamVjdBIhLmlkZW50aXR5LnYxLlVwZGF0ZVByb2plY3RSZXF1ZXN0GiIuaWRlbnRpdHkudjEuVXBkYXRlUHJvamVjdFJlc3BvbnNlElMKDExpc3RQcm9qZWN0cxIgLmlkZW50aXR5LnYxLkxpc3RQcm9qZWN0c1JlcXVlc3QaIS5pZGVudGl0eS52MS5MaXN0UHJvamVjdHNSZXNwb25zZRJWCg1EZWxldGVQcm9qZWN0EiEuaWRlbnRpdHkudjEuRGVsZXRlUHJvamVjdFJlcXVlc3QaIi5pZGVudGl0eS52MS5EZWxldGVQcm9qZWN0UmVzcG9uc2USYgoRR2V0RGVmYXVsdFByb2plY3QSJS5pZGVudGl0eS52MS5HZXREZWZhdWx0UHJvamVjdFJlcXVlc3QaJi5pZGVudGl0eS52MS5HZXREZWZhdWx0UHJvamVjdFJlc3BvbnNlEmIKEVNldERlZmF1bHRQcm9qZWN0EiUuaWRlbnRpdHkudjEuU2V0RGVmYXVsdFByb2plY3RSZXF1ZXN0GiYuaWRlbnRpdHkudjEuU2V0RGVmYXVsdFByb2plY3RSZXNwb25zZRJfChBDcmVhdGVJbnZpdGF0aW9uEiQuaWRlbnRpdHkudjEuQ3JlYXRlSW52aXRhdGlvblJlcXVlc3QaJS5pZGVudGl0eS52MS5DcmVhdGVJbnZpdGF0aW9uUmVzcG9uc2USXAoPTGlzdEludml0YXRpb25zEiMuaWRlbnRpdHkudjEuTGlzdEludml0YXRpb25zUmVxdWVzdBokLmlkZW50aXR5LnYxLkxpc3RJbnZpdGF0aW9uc1Jlc3BvbnNlEl8KEFJldm9rZUludml0YXRpb24SJC5pZGVudGl0eS52MS5SZXZva2VJbnZpdGF0aW9uUmVxdWVzdBolLmlkZW50aXR5LnYxLlJldm9rZUludml0YXRpb25SZXNwb25zZRJfChBBY2NlcHRJbnZpdGF0aW9uEiQuaWRlbnRpdHkudjEuQWNjZXB0SW52aXRhdGlvblJlcXVlc3QaJS5pZGVudGl0eS52MS5BY2NlcHRJbnZpdGF0aW9uUmVzcG9uc2USZQoSVmFsaWRhdGVJbnZpdGF0aW9uEiYuaWRlbnRpdHkudjEuVmFsaWRhdGVJbnZpdGF0aW9uUmVxdWVzdBonLmlkZW50aXR5LnYxLlZhbGlkYXRlSW52aXRhdGlvblJlc3BvbnNlElMKDENyZWF0ZUFwaUtleRIgLmlkZW50aXR5LnYxLkNyZWF0ZUFwaUtleVJlcXVlc3QaIS5pZGVudGl0eS52MS5DcmVhdGVBcGlLZXlSZXNwb25zZRJKCglHZXRBcGlLZXkSHS5pZGVudGl0eS52MS5HZXRBcGlLZXlSZXF1ZXN0Gh4uaWRlbnRpdHkudjEuR2V0QXBpS2V5UmVzcG9uc2USUAoLTGlzdEFwaUtleXMSHy5pZGVudGl0eS52MS5MaXN0QXBpS2V5c1JlcXVlc3QaIC5pZGVudGl0eS52MS5MaXN0QXBpS2V5c1Jlc3BvbnNlElMKDFVwZGF0ZUFwaUtleRIgLmlkZW50aXR5LnYxLlVwZGF0ZUFwaUtleVJlcXVlc3QaIS5pZGVudGl0eS52MS5VcGRhdGVBcGlLZXlSZXNwb25zZRJTCgxSb3RhdGVBcGlLZXkSIC5pZGVudGl0eS52MS5Sb3RhdGVBcGlLZXlSZXF1ZXN0GiEuaWRlbnRpdHkudjEuUm90YXRlQXBpS2V5UmVzcG9uc2USUwoMUmV2b2tlQXBpS2V5EiAuaWRlbnRpdHkudjEuUmV2b2tlQXBpS2V5UmVxdWVzdBohLmlkZW50aXR5LnYxLlJldm9rZUFwaUtleVJlc3BvbnNlEmIKEUxpc3RBdXRoUHJvdmlkZXJzEiUuaWRlbnRpdHkudjEuTGlzdEF1dGhQcm92aWRlcnNSZXF1ZXN0GiYuaWRlbnRpdHkudjEuTGlzdEF1dGhQcm92aWRlcnNSZXNwb25zZRJcCg9HZXRBdXRoUHJvdmlkZXISIy5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJSZXF1ZXN0GiQuaWRlbnRpdHkudjEuR2V0QXV0aFByb3ZpZGVyUmVzcG9uc2USZQoSQ3JlYXRlQXV0aFByb3ZpZGVyEiYuaWRlbnRpdHkudjEuQ3JlYXRlQXV0aFByb3ZpZGVyUmVxdWVzdBonLmlkZW50aXR5LnYxLkNyZWF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEmUKElVwZGF0ZUF1dGhQcm92aWRlchImLmlkZW50aXR5LnYxLlVwZGF0ZUF1dGhQcm92aWRlclJlcXVlc3QaJy5pZGVudGl0eS52MS5VcGRhdGVBdXRoUHJvdmlkZXJSZXNwb25zZRJlChJEZWxldGVBdXRoUHJvdmlkZXISJi5pZGVudGl0eS52MS5EZWxldGVBdXRoUHJvdmlkZXJSZXF1ZXN0GicuaWRlbnRpdHkudjEuRGVsZXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USaAoTUHVibGlzaEF1dGhQcm92aWRlchInLmlkZW50aXR5LnYxLlB1Ymxpc2hBdXRoUHJvdmlkZXJSZXF1ZXN0GiguaWRlbnRpdHkudjEuUHVibGlzaEF1dGhQcm92aWRlclJlc3BvbnNlEm4KFVVucHVibGlzaEF1dGhQcm92aWRlchIpLmlkZW50aXR5LnYxLlVucHVibGlzaEF1dGhQcm92aWRlclJlcXVlc3QaKi5pZGVudGl0eS52MS5VbnB1Ymxpc2hBdXRoUHJvdmlkZXJSZXNwb25zZRKDAQocR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1cxIwLmlkZW50aXR5LnYxLkdldEF1dGhQcm92aWRlclB1Ymxpc2hTdGF0dXNSZXF1ZXN0GjEuaWRlbnRpdHkudjEuR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1Jlc3BvbnNlEoABChtTY2hlZHVsZUF1dGhQcm92aWRlclB1Ymxpc2gSLy5pZGVudGl0eS52MS5TY2hlZHVsZUF1dGhQcm92aWRlclB1Ymxpc2hSZXF1ZXN0GjAuaWRlbnRpdHkudjEuU2NoZWR1bGVBdXRoUHJvdmlkZXJQdWJsaXNoUmVzcG9uc2USlQEKIkNhbmNlbFNjaGVkdWxlZEF1dGhQcm92aWRlclB1Ymxpc2gSNi5pZGVudGl0eS52MS5DYW5jZWxTY2hlZHVsZWRBdXRoUHJvdmlkZXJQdWJsaXNoUmVxdWVzdBo3LmlkZW50aXR5LnYxLkNhbmNlbFNjaGVkdWxlZEF1dGhQcm92aWRlclB1Ymxpc2hSZXNwb25zZRJuChVFbmFibGVkT0F1dGhQcm92aWRlcnMSKS5pZGVudGl0eS52MS5FbmFibGVkT0F1dGhQcm92aWRlcnNSZXF1ZXN0GiouaWRlbnRpdHkudjEuRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVzcG9uc2USXwoQTWludFNlcnZpY2VUb2tlbhIkLmlkZW50aXR5LnYxLk1pbnRTZXJ2aWNlVG9rZW5SZXF1ZXN0GiUuaWRlbnRpdHkudjEuTWludFNlcnZpY2VUb2tlblJlc3BvbnNlElwKD1VwZGF0ZU15UHJvZmlsZRIjLmlkZW50aXR5LnYxLlVwZGF0ZU15UHJvZmlsZVJlcXVlc3QaJC5pZGVudGl0eS52MS5VcGRhdGVNeVByb2ZpbGVSZXNwb25zZRJxChZMaXN0TXlPQXV0aENvbm5lY3Rpb25zEiouaWRlbnRpdHkudjEuTGlzdE15T0F1dGhDb25uZWN0aW9uc1JlcXVlc3QaKy5pZGVudGl0eS52MS5MaXN0TXlPQXV0aENvbm5lY3Rpb25zUmVzcG9uc2USaAoTVW5saW5rT0F1dGhQcm92aWRlchInLmlkZW50aXR5LnYxLlVubGlua09BdXRoUHJvdmlkZXJSZXF1ZXN0GiguaWRlbnRpdHkudjEuVW5saW5rT0F1dGhQcm92aWRlclJlc3BvbnNlEnEKFkNoZWNrRW1haWxBdmFpbGFiaWxpdHkSKi5pZGVudGl0eS52MS5DaGVja0VtYWlsQXZhaWxhYmlsaXR5UmVxdWVzdBorLmlkZW50aXR5LnYxLkNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXNwb25zZRJrChRDb21wbGV0ZUFjY291bnRTZXR1cBIoLmlkZW50aXR5LnYxLkNvbXBsZXRlQWNjb3VudFNldHVwUmVxdWVzdBopLmlkZW50aXR5LnYxLkNvbXBsZXRlQWNjb3VudFNldHVwUmVzcG9uc2USaAoTQ3JlYXRlU2lnbnVwU2Vzc2lvbhInLmlkZW50aXR5LnYxLkNyZWF0ZVNpZ251cFNlc3Npb25SZXF1ZXN0GiguaWRlbnRpdHkudjEuQ3JlYXRlU2lnbnVwU2Vzc2lvblJlc3BvbnNlEl8KEFJlc2VuZEludml0YXRpb24SJC5pZGVudGl0eS52MS5SZXNlbmRJbnZpdGF0aW9uUmVxdWVzdBolLmlkZW50aXR5LnYxLlJlc2VuZEludml0YXRpb25SZXNwb25zZRJWCg1HZXRJbnZpdGF0aW9uEiEuaWRlbnRpdHkudjEuR2V0SW52aXRhdGlvblJlcXVlc3QaIi5pZGVudGl0eS52MS5HZXRJbnZpdGF0aW9uUmVzcG9uc2USWQoOQWN0aXZhdGVUZW5hbnQSIi5pZGVudGl0eS52MS5BY3RpdmF0ZVRlbmFudFJlcXVlc3QaIy5pZGVudGl0eS52MS5BY3RpdmF0ZVRlbmFudFJlc3BvbnNlEmsKFFN1c3BlbmRUZW5hbnRBY2NvdW50EiguaWRlbnRpdHkudjEuU3VzcGVuZFRlbmFudEFjY291bnRSZXF1ZXN0GikuaWRlbnRpdHkudjEuU3VzcGVuZFRlbmFudEFjY291bnRSZXNwb25zZRJTCgxDYW5jZWxUZW5hbnQSIC5pZGVudGl0eS52MS5DYW5jZWxUZW5hbnRSZXF1ZXN0GiEuaWRlbnRpdHkudjEuQ2FuY2VsVGVuYW50UmVzcG9uc2USXwoQUmVhY3RpdmF0ZVRlbmFudBIkLmlkZW50aXR5LnYxLlJlYWN0aXZhdGVUZW5hbnRSZXF1ZXN0GiUuaWRlbnRpdHkudjEuUmVhY3RpdmF0ZVRlbmFudFJlc3BvbnNlEmIKEU1hcmtUZW5hbnRQYXN0RHVlEiUuaWRlbnRpdHkudjEuTWFya1RlbmFudFBhc3REdWVSZXF1ZXN0GiYuaWRlbnRpdHkudjEuTWFya1RlbmFudFBhc3REdWVSZXNwb25zZRJQCgtDaHVyblRlbmFudBIfLmlkZW50aXR5LnYxLkNodXJuVGVuYW50UmVxdWVzdBogLmlkZW50aXR5LnYxLkNodXJuVGVuYW50UmVzcG9uc2USbgoVR2V0Q3VzdG9tZXJBdXRoQ29uZmlnEikuaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJBdXRoQ29uZmlnUmVxdWVzdBoqLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyQXV0aENvbmZpZ1Jlc3BvbnNlEmgKE1ZlcmlmeUN1c3RvbWVyVG9rZW4SJy5pZGVudGl0eS52MS5WZXJpZnlDdXN0b21lclRva2VuUmVxdWVzdBooLmlkZW50aXR5LnYxLlZlcmlmeUN1c3RvbWVyVG9rZW5SZXNwb25zZRKAAQobR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzEi8uaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzUmVxdWVzdBowLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1c1Jlc3BvbnNlElkKDlZhbGlkYXRlQXBpS2V5EiIuaWRlbnRpdHkudjEuVmFsaWRhdGVBcGlLZXlSZXF1ZXN0GiMuaWRlbnRpdHkudjEuVmFsaWRhdGVBcGlLZXlSZXNwb25zZRJWCg1DdXN0b21lckxvZ2luEiEuaWRlbnRpdHkudjEuQ3VzdG9tZXJMb2dpblJlcXVlc3QaIi5pZGVudGl0eS52MS5DdXN0b21lckxvZ2luUmVzcG9uc2USXwoQQ3VzdG9tZXJSZWdpc3RlchIkLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVnaXN0ZXJSZXF1ZXN0GiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZWdpc3RlclJlc3BvbnNlEmsKFEN1c3RvbWVyUmVmcmVzaFRva2VuEiguaWRlbnRpdHkudjEuQ3VzdG9tZXJSZWZyZXNoVG9rZW5SZXF1ZXN0GikuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZWZyZXNoVG9rZW5SZXNwb25zZRJlChJDdXN0b21lclJlcXVlc3RPVFASJi5pZGVudGl0eS52MS5DdXN0b21lclJlcXVlc3RPVFBSZXF1ZXN0GicuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXF1ZXN0T1RQUmVzcG9uc2USYgoRQ3VzdG9tZXJWZXJpZnlPVFASJS5pZGVudGl0eS52MS5DdXN0b21lclZlcmlmeU9UUFJlcXVlc3QaJi5pZGVudGl0eS52MS5DdXN0b21lclZlcmlmeU9UUFJlc3BvbnNlEoMBChxDdXN0b21lclJlcXVlc3RQYXNzd29yZFJlc2V0EjAuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldFJlcXVlc3QaMS5pZGVudGl0eS52MS5DdXN0b21lclJlcXVlc3RQYXNzd29yZFJlc2V0UmVzcG9uc2USbgoVQ3VzdG9tZXJSZXNldFBhc3N3b3JkEikuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXNldFBhc3N3b3JkUmVxdWVzdBoqLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVzZXRQYXNzd29yZFJlc3BvbnNlEmUKElN0b3JlUHJvdmlkZXJUb2tlbhImLmlkZW50aXR5LnYxLlN0b3JlUHJvdmlkZXJUb2tlblJlcXVlc3QaJy5pZGVudGl0eS52MS5TdG9yZVByb3ZpZGVyVG9rZW5SZXNwb25zZRJfChBHZXRQcm92aWRlclRva2VuEiQuaWRlbnRpdHkudjEuR2V0UHJvdmlkZXJUb2tlblJlcXVlc3QaJS5pZGVudGl0eS52MS5HZXRQcm92aWRlclRva2VuUmVzcG9uc2USawoURGVsZXRlUHJvdmlkZXJUb2tlbnMSKC5pZGVudGl0eS52MS5EZWxldGVQcm92aWRlclRva2Vuc1JlcXVlc3QaKS5pZGVudGl0eS52MS5EZWxldGVQcm92aWRlclRva2Vuc1Jlc3BvbnNlQj1aO2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9pZGVudGl0eS92MTtpZGVudGl0eXYxYgZwcm90bzM", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_publish_v1_publish]);
|
|
13
|
+
fileDesc("ChppZGVudGl0eS92MS9pZGVudGl0eS5wcm90bxILaWRlbnRpdHkudjEijwQKCUFkbWluVXNlchIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIXCgpmaXJzdF9uYW1lGAMgASgJSACIAQESFgoJbGFzdF9uYW1lGAQgASgJSAGIAQESFwoKYXZhdGFyX3VybBgFIAEoCUgCiAEBEhkKEWlzX3BsYXRmb3JtX2FkbWluGAYgASgIEiwKBnN0YXR1cxgUIAEoDjIcLmlkZW50aXR5LnYxLkFkbWluVXNlclN0YXR1cxI6ChFlbWFpbF92ZXJpZmllZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARI2Cg1sYXN0X2xvZ2luX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEiwKBmFjY2VzcxgoIAMoCzIcLmlkZW50aXR5LnYxLkFkbWluVXNlckFjY2VzcxIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg0KC19hdmF0YXJfdXJsQhQKEl9lbWFpbF92ZXJpZmllZF9hdEIQCg5fbGFzdF9sb2dpbl9hdCLuAQoPQWRtaW5Vc2VyQWNjZXNzEgoKAmlkGAEgASgJEhUKDWFkbWluX3VzZXJfaWQYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhcKCnByb2plY3RfaWQYBCABKAlIAIgBARIlCgRyb2xlGAUgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZRIuCgpncmFudGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpncmFudGVkX2J5GDMgASgJSAGIAQFCDQoLX3Byb2plY3RfaWRCDQoLX2dyYW50ZWRfYnki9QIKCEN1c3RvbWVyEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEisKBnN0YXR1cxgUIAEoDjIbLmlkZW50aXR5LnYxLkN1c3RvbWVyU3RhdHVzEjoKEWVtYWlsX3ZlcmlmaWVkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjYKDWxhc3RfbG9naW5fYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCFAoSX2VtYWlsX3ZlcmlmaWVkX2F0QhAKDl9sYXN0X2xvZ2luX2F0IvQCCgZUZW5hbnQSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIpCgZzdGF0dXMYFCABKA4yGS5pZGVudGl0eS52MS5UZW5hbnRTdGF0dXMSNQoMc3VzcGVuZGVkX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEkIKGWNhbmNlbGxhdGlvbl9zY2hlZHVsZWRfYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESGwoTZGF0YV9yZXRlbnRpb25fZGF5cxgeIAEoBRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIPCg1fc3VzcGVuZGVkX2F0QhwKGl9jYW5jZWxsYXRpb25fc2NoZWR1bGVkX2F0It4GCgdQcm9qZWN0EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESEgoKaXNfZGVmYXVsdBgFIAEoCBIqCgZzdGF0dXMYFCABKA4yGi5pZGVudGl0eS52MS5Qcm9qZWN0U3RhdHVzEj4KFWRlbGV0aW9uX3NjaGVkdWxlZF9hdBgVIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgpjcmVhdGVkX2J5GCggASgJSAKIAQESFwoKdXBkYXRlZF9ieRgpIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhkKDGRpc3BsYXlfbmFtZRg8IAEoCUgEiAEBEhUKCGxvZ29fdXJsGD0gASgJSAWIAQESGgoNcHJpbWFyeV9jb2xvchg+IAEoCUgGiAEBEhYKCWZyb21fbmFtZRg/IAEoCUgHiAEBEhUKCHJlcGx5X3RvGEAgASgJSAiIAQESGgoNc3VwcG9ydF9lbWFpbBhBIAEoCUgJiAEBEhkKDGFwcF9iYXNlX3VybBhCIAEoCUgKiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBhGIAEoCEgLiAEBEiQKF2N1c3RvbWVyX3NpZ251cF9lbmFibGVkGFAgASgISAyIAQFCDgoMX2Rlc2NyaXB0aW9uQhgKFl9kZWxldGlvbl9zY2hlZHVsZWRfYXRCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUILCglfcmVwbHlfdG9CEAoOX3N1cHBvcnRfZW1haWxCDwoNX2FwcF9iYXNlX3VybEIhCh9fY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkQhoKGF9jdXN0b21lcl9zaWdudXBfZW5hYmxlZCKvAwoKSW52aXRhdGlvbhIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIRCgl0ZW5hbnRfaWQYAyABKAkSEwoLcHJvamVjdF9pZHMYBCADKAkSJQoEcm9sZRgFIAEoDjIXLmlkZW50aXR5LnYxLkFjY2Vzc1JvbGUSLAoLaW52aXRlX3R5cGUYBiABKA4yFy5pZGVudGl0eS52MS5JbnZpdGVUeXBlEhIKCmludml0ZWRfYnkYByABKAkSFAoHbWVzc2FnZRgIIAEoCUgAiAEBEi0KBnN0YXR1cxgUIAEoDjIdLmlkZW50aXR5LnYxLkludml0YXRpb25TdGF0dXMSLgoKZXhwaXJlc19hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoLYWNjZXB0ZWRfYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX21lc3NhZ2VCDgoMX2FjY2VwdGVkX2F0IukDChJDdXN0b21lckludml0YXRpb24SCgoCaWQYASABKAkSDQoFZW1haWwYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhIKCnByb2plY3RfaWQYBCABKAkSFwoKaW52aXRlZF9ieRgFIAEoCUgAiAEBEhQKB21lc3NhZ2UYBiABKAlIAYgBARI1CgZzdGF0dXMYFCABKA4yJS5pZGVudGl0eS52MS5DdXN0b21lckludml0YXRpb25TdGF0dXMSLgoKZXhwaXJlc19hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoLYWNjZXB0ZWRfYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESIQoUYWNjZXB0ZWRfY3VzdG9tZXJfaWQYICABKAlIA4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEINCgtfaW52aXRlZF9ieUIKCghfbWVzc2FnZUIOCgxfYWNjZXB0ZWRfYXRCFwoVX2FjY2VwdGVkX2N1c3RvbWVyX2lkItkECgZBcGlLZXkSCgoCaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhIKCnByb2plY3RfaWQYAyABKAkSDAoEbmFtZRgEIAEoCRISCgprZXlfcHJlZml4GAUgASgJEikKCGtleV90eXBlGAYgASgOMhcuaWRlbnRpdHkudjEuQXBpS2V5VHlwZRIUCgdyYXdfa2V5GAogASgJSACIAQESEQoJaXNfYWN0aXZlGBQgASgIEiAKE3JhdGVfbGltaXRfcGVyX2hvdXIYFSABKAVIAYgBARIzCgpleHBpcmVzX2F0GBYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEg4KBnNjb3BlcxgXIAMoCRIuCghtZXRhZGF0YRgYIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARI1CgxsYXN0X3VzZWRfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESEwoLdXNhZ2VfY291bnQYHyABKAUSEgoKY3JlYXRlZF9ieRgoIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfcmF3X2tleUIWChRfcmF0ZV9saW1pdF9wZXJfaG91ckINCgtfZXhwaXJlc19hdEILCglfbWV0YWRhdGFCDwoNX2xhc3RfdXNlZF9hdCKWAgoOU2Vzc2lvbkNvbnRleHQSFgoJdGVuYW50X2lkGAEgASgJSACIAQESFwoKcHJvamVjdF9pZBgCIAEoCUgBiAEBEiQKBHVzZXIYAyABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXISGwoOZWZmZWN0aXZlX3JvbGUYBCABKAlIAogBARIuChFhdmFpbGFibGVfdGVuYW50cxgFIAMoCzITLmlkZW50aXR5LnYxLlRlbmFudBIwChJhdmFpbGFibGVfcHJvamVjdHMYBiADKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0QgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCEQoPX2VmZmVjdGl2ZV9yb2xlIn0KDExvZ2luUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCRIWCgl0ZW5hbnRfaWQYAyABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAQgASgJSAGIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZCJfCg1Mb2dpblJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkSFAoMYWNjZXNzX3Rva2VuGAIgASgJEiQKBHVzZXIYAyABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIifwoTTG9naW5XaXRoT1RQUmVxdWVzdBINCgVlbWFpbBgBIAEoCRILCgNvdHAYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWQiZgoUTG9naW5XaXRoT1RQUmVzcG9uc2USEgoKc2Vzc2lvbl9pZBgBIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAiABKAkSJAoEdXNlchgDIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciJwChFSZXF1ZXN0T1RQUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIWCgl0ZW5hbnRfaWQYAiABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAMgASgJSAGIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZCIlChJSZXF1ZXN0T1RQUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIPCg1Mb2dvdXRSZXF1ZXN0IiEKDkxvZ291dFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgitQEKD1JlZ2lzdGVyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCRIWCgl0ZW5hbnRfaWQYAyABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAQgASgJSAGIAQESKgoEcm9sZRgFIAEoDjIXLmlkZW50aXR5LnYxLkFjY2Vzc1JvbGVIAogBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQgcKBV9yb2xlIjgKEFJlZ2lzdGVyUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciIjChJWZXJpZnlFbWFpbFJlcXVlc3QSDQoFdG9rZW4YASABKAkiJgoTVmVyaWZ5RW1haWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIiAKHlJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsUmVxdWVzdCIyCh9SZXNlbmRWZXJpZmljYXRpb25FbWFpbFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiMQogU2VuZEVtYWlsVmVyaWZpY2F0aW9uQ29kZVJlcXVlc3QSDQoFZW1haWwYASABKAkiNAohU2VuZEVtYWlsVmVyaWZpY2F0aW9uQ29kZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiNQoWVmVyaWZ5RW1haWxDb2RlUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIMCgRjb2RlGAIgASgJIjwKF1ZlcmlmeUVtYWlsQ29kZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSEAoIdmVyaWZpZWQYAiABKAgiLAobUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIi8KHFJlcXVlc3RQYXNzd29yZFJlc2V0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI7ChRSZXNldFBhc3N3b3JkUmVxdWVzdBINCgV0b2tlbhgBIAEoCRIUCgxuZXdfcGFzc3dvcmQYAiABKAkiKAoVUmVzZXRQYXNzd29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiRwoVVXBkYXRlUGFzc3dvcmRSZXF1ZXN0EhgKEGN1cnJlbnRfcGFzc3dvcmQYASABKAkSFAoMbmV3X3Bhc3N3b3JkGAIgASgJIikKFlVwZGF0ZVBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIsChNSZWZyZXNoVG9rZW5SZXF1ZXN0EhUKDXJlZnJlc2hfdG9rZW4YASABKAkiQwoUUmVmcmVzaFRva2VuUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkiGgoYR2V0U2Vzc2lvbkNvbnRleHRSZXF1ZXN0IkkKGUdldFNlc3Npb25Db250ZXh0UmVzcG9uc2USLAoHY29udGV4dBgBIAEoCzIbLmlkZW50aXR5LnYxLlNlc3Npb25Db250ZXh0IigKE1N3aXRjaFRlbmFudFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJIkQKFFN3aXRjaFRlbmFudFJlc3BvbnNlEiwKB2NvbnRleHQYASABKAsyGy5pZGVudGl0eS52MS5TZXNzaW9uQ29udGV4dCIqChRTd2l0Y2hQcm9qZWN0UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIkUKFVN3aXRjaFByb2plY3RSZXNwb25zZRIsCgdjb250ZXh0GAEgASgLMhsuaWRlbnRpdHkudjEuU2Vzc2lvbkNvbnRleHQiHAoaQ2xlYXJTZXNzaW9uQ29udGV4dFJlcXVlc3QiLgobQ2xlYXJTZXNzaW9uQ29udGV4dFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiDgoMR2V0TWVSZXF1ZXN0IjUKDUdldE1lUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciLXAQoWQ3JlYXRlQWRtaW5Vc2VyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIXCgpmaXJzdF9uYW1lGAIgASgJSACIAQESFgoJbGFzdF9uYW1lGAMgASgJSAGIAQESEQoJdGVuYW50X2lkGAQgASgJEhcKCnByb2plY3RfaWQYBSABKAlIAogBARIlCgRyb2xlGAYgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg0KC19wcm9qZWN0X2lkIj8KF0NyZWF0ZUFkbWluVXNlclJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIiIQoTR2V0QWRtaW5Vc2VyUmVxdWVzdBIKCgJpZBgBIAEoCSI8ChRHZXRBZG1pblVzZXJSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyItgBChZVcGRhdGVBZG1pblVzZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhcKCmZpcnN0X25hbWUYAiABKAlIAIgBARIWCglsYXN0X25hbWUYAyABKAlIAYgBARIXCgphdmF0YXJfdXJsGAQgASgJSAKIAQESMQoGc3RhdHVzGAUgASgOMhwuaWRlbnRpdHkudjEuQWRtaW5Vc2VyU3RhdHVzSAOIAQFCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUINCgtfYXZhdGFyX3VybEIJCgdfc3RhdHVzIj8KF1VwZGF0ZUFkbWluVXNlclJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIiyQEKFUxpc3RBZG1pblVzZXJzUmVxdWVzdBITCgZzZWFyY2gYASABKAlIAIgBARIqCgRyb2xlGAIgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZUgBiAEBEjEKBnN0YXR1cxgDIAEoDjIcLmlkZW50aXR5LnYxLkFkbWluVXNlclN0YXR1c0gCiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUIJCgdfc2VhcmNoQgcKBV9yb2xlQgkKB19zdGF0dXMiTgoWTGlzdEFkbWluVXNlcnNSZXNwb25zZRIlCgVpdGVtcxgBIAMoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlchINCgV0b3RhbBgCIAEoBSKNAQoSR3JhbnRBY2Nlc3NSZXF1ZXN0EhUKDWFkbWluX3VzZXJfaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhcKCnByb2plY3RfaWQYAyABKAlIAIgBARIlCgRyb2xlGAQgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZUINCgtfcHJvamVjdF9pZCJDChNHcmFudEFjY2Vzc1Jlc3BvbnNlEiwKBmFjY2VzcxgBIAEoCzIcLmlkZW50aXR5LnYxLkFkbWluVXNlckFjY2VzcyIoChNSZXZva2VBY2Nlc3NSZXF1ZXN0EhEKCWFjY2Vzc19pZBgBIAEoCSInChRSZXZva2VBY2Nlc3NSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkoKFUNyZWF0ZUN1c3RvbWVyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIVCghwYXNzd29yZBgCIAEoCUgAiAEBQgsKCV9wYXNzd29yZCJBChZDcmVhdGVDdXN0b21lclJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiIAoSR2V0Q3VzdG9tZXJSZXF1ZXN0EgoKAmlkGAEgASgJIj4KE0dldEN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciJ+ChVVcGRhdGVDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkSEgoFZW1haWwYAiABKAlIAIgBARIwCgZzdGF0dXMYAyABKA4yGy5pZGVudGl0eS52MS5DdXN0b21lclN0YXR1c0gBiAEBQggKBl9lbWFpbEIJCgdfc3RhdHVzIkEKFlVwZGF0ZUN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciIjChVEZWxldGVDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkiKQoWRGVsZXRlQ3VzdG9tZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIpIBChRMaXN0Q3VzdG9tZXJzUmVxdWVzdBITCgZzZWFyY2gYASABKAlIAIgBARIwCgZzdGF0dXMYAiABKA4yGy5pZGVudGl0eS52MS5DdXN0b21lclN0YXR1c0gBiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUIJCgdfc2VhcmNoQgkKB19zdGF0dXMiTAoVTGlzdEN1c3RvbWVyc1Jlc3BvbnNlEiQKBWl0ZW1zGAEgAygLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXISDQoFdG90YWwYAiABKAUiJAoWU3VzcGVuZEN1c3RvbWVyUmVxdWVzdBIKCgJpZBgBIAEoCSJCChdTdXNwZW5kQ3VzdG9tZXJSZXNwb25zZRInCghjdXN0b21lchgBIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIj4KGlNldEN1c3RvbWVyUGFzc3dvcmRSZXF1ZXN0EgoKAmlkGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIuChtTZXRDdXN0b21lclBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLcAQofQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIXCgppbnZpdGVkX2J5GAIgASgJSACIAQESFAoHbWVzc2FnZRgDIAEoCUgBiAEBEhcKCnNlbmRfZW1haWwYBCABKAhIAogBARIgChNhY2NlcHRfdXJsX292ZXJyaWRlGAUgASgJSAOIAQFCDQoLX2ludml0ZWRfYnlCCgoIX21lc3NhZ2VCDQoLX3NlbmRfZW1haWxCFgoUX2FjY2VwdF91cmxfb3ZlcnJpZGUiegogQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USMwoKaW52aXRhdGlvbhgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvbhISCgphY2NlcHRfdXJsGAIgASgJEg0KBXRva2VuGAMgASgJIqYBCh5MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1JlcXVlc3QSOgoGc3RhdHVzGAEgASgOMiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uU3RhdHVzSACIAQESEwoGc2VhcmNoGAIgASgJSAGIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zdGF0dXNCCQoHX3NlYXJjaCJgCh9MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1Jlc3BvbnNlEi4KBWl0ZW1zGAEgAygLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uEg0KBXRvdGFsGAIgASgFIioKHEdldEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QSCgoCaWQYASABKAkiVAodR2V0Q3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USMwoKaW52aXRhdGlvbhgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvbiItCh9SZXZva2VDdXN0b21lckludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIjMKIFJldm9rZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgijwEKH1Jlc2VuZEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QSCgoCaWQYASABKAkSFwoKc2VuZF9lbWFpbBgCIAEoCEgAiAEBEiAKE2FjY2VwdF91cmxfb3ZlcnJpZGUYAyABKAlIAYgBAUINCgtfc2VuZF9lbWFpbEIWChRfYWNjZXB0X3VybF9vdmVycmlkZSJ6CiBSZXNlbmRDdXN0b21lckludml0YXRpb25SZXNwb25zZRIzCgppbnZpdGF0aW9uGAEgASgLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uEhIKCmFjY2VwdF91cmwYAiABKAkSDQoFdG9rZW4YAyABKAkiMgohVmFsaWRhdGVDdXN0b21lckludml0YXRpb25SZXF1ZXN0Eg0KBXRva2VuGAEgASgJIocBCiJWYWxpZGF0ZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEjMKCmludml0YXRpb24YASABKAsyHy5pZGVudGl0eS52MS5DdXN0b21lckludml0YXRpb24SLAoJcHJvdmlkZXJzGAIgAygLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIlQKH0FjY2VwdEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QSDQoFdG9rZW4YASABKAkSFQoIcGFzc3dvcmQYAiABKAlIAIgBAUILCglfcGFzc3dvcmQieAogQWNjZXB0Q3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lchIUCgxhY2Nlc3NfdG9rZW4YAiABKAkSFQoNcmVmcmVzaF90b2tlbhgDIAEoCSIjChNDcmVhdGVUZW5hbnRSZXF1ZXN0EgwKBG5hbWUYASABKAkiOwoUQ3JlYXRlVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50Ih4KEEdldFRlbmFudFJlcXVlc3QSCgoCaWQYASABKAkiOAoRR2V0VGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IngKE1VwZGF0ZVRlbmFudFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEi4KBnN0YXR1cxgDIAEoDjIZLmlkZW50aXR5LnYxLlRlbmFudFN0YXR1c0gBiAEBQgcKBV9uYW1lQgkKB19zdGF0dXMiOwoUVXBkYXRlVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50Im4KEkxpc3RUZW5hbnRzUmVxdWVzdBIuCgZzdGF0dXMYASABKA4yGS5pZGVudGl0eS52MS5UZW5hbnRTdGF0dXNIAIgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCCQoHX3N0YXR1cyJIChNMaXN0VGVuYW50c1Jlc3BvbnNlEiIKBWl0ZW1zGAEgAygLMhMuaWRlbnRpdHkudjEuVGVuYW50Eg0KBXRvdGFsGAIgASgFIiEKE0RlbGV0ZVRlbmFudFJlcXVlc3QSCgoCaWQYASABKAkiJwoURGVsZXRlVGVuYW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCKfBgoUQ3JlYXRlUHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCRIYCgtkZXNjcmlwdGlvbhgCIAEoCUgAiAEBEhEKCXRlbmFudF9pZBgDIAEoCRIgChNkZWZhdWx0X2xvY2FsZV9jb2RlGAQgASgJSAGIAQESKAobZGVmYXVsdF9sb2NhbGVfZGlzcGxheV9uYW1lGAUgASgJSAKIAQESJwoaZGVmYXVsdF9sb2NhbGVfbmF0aXZlX25hbWUYBiABKAlIA4gBARIiChVkZWZhdWx0X2xvY2FsZV9pc19ydGwYByABKAhIBIgBARIZCgxkaXNwbGF5X25hbWUYCiABKAlIBYgBARIVCghsb2dvX3VybBgLIAEoCUgGiAEBEhoKDXByaW1hcnlfY29sb3IYDCABKAlIB4gBARIWCglmcm9tX25hbWUYDSABKAlICIgBARIVCghyZXBseV90bxgOIAEoCUgJiAEBEhoKDXN1cHBvcnRfZW1haWwYDyABKAlICogBARIZCgxhcHBfYmFzZV91cmwYECABKAlIC4gBARIrCh5jdXN0b21lcl93ZWxjb21lX2VtYWlsX2VuYWJsZWQYFCABKAhIDIgBARIkChdjdXN0b21lcl9zaWdudXBfZW5hYmxlZBgeIAEoCEgNiAEBQg4KDF9kZXNjcmlwdGlvbkIWChRfZGVmYXVsdF9sb2NhbGVfY29kZUIeChxfZGVmYXVsdF9sb2NhbGVfZGlzcGxheV9uYW1lQh0KG19kZWZhdWx0X2xvY2FsZV9uYXRpdmVfbmFtZUIYChZfZGVmYXVsdF9sb2NhbGVfaXNfcnRsQg8KDV9kaXNwbGF5X25hbWVCCwoJX2xvZ29fdXJsQhAKDl9wcmltYXJ5X2NvbG9yQgwKCl9mcm9tX25hbWVCCwoJX3JlcGx5X3RvQhAKDl9zdXBwb3J0X2VtYWlsQg8KDV9hcHBfYmFzZV91cmxCIQofX2N1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZEIaChhfY3VzdG9tZXJfc2lnbnVwX2VuYWJsZWQiPgoVQ3JlYXRlUHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Ih8KEUdldFByb2plY3RSZXF1ZXN0EgoKAmlkGAEgASgJIjsKEkdldFByb2plY3RSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuaWRlbnRpdHkudjEuUHJvamVjdCLYBAoUVXBkYXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESLwoGc3RhdHVzGAQgASgOMhouaWRlbnRpdHkudjEuUHJvamVjdFN0YXR1c0gCiAEBEhkKDGRpc3BsYXlfbmFtZRgKIAEoCUgDiAEBEhUKCGxvZ29fdXJsGAsgASgJSASIAQESGgoNcHJpbWFyeV9jb2xvchgMIAEoCUgFiAEBEhYKCWZyb21fbmFtZRgNIAEoCUgGiAEBEhUKCHJlcGx5X3RvGA4gASgJSAeIAQESGgoNc3VwcG9ydF9lbWFpbBgPIAEoCUgIiAEBEhkKDGFwcF9iYXNlX3VybBgQIAEoCUgJiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBgUIAEoCEgKiAEBEiQKF2N1c3RvbWVyX3NpZ251cF9lbmFibGVkGB4gASgISAuIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19zdGF0dXNCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUILCglfcmVwbHlfdG9CEAoOX3N1cHBvcnRfZW1haWxCDwoNX2FwcF9iYXNlX3VybEIhCh9fY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkQhoKGF9jdXN0b21lcl9zaWdudXBfZW5hYmxlZCI+ChVVcGRhdGVQcm9qZWN0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmlkZW50aXR5LnYxLlByb2plY3QigwEKE0xpc3RQcm9qZWN0c1JlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEi8KBnN0YXR1cxgCIAEoDjIaLmlkZW50aXR5LnYxLlByb2plY3RTdGF0dXNIAIgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCCQoHX3N0YXR1cyJKChRMaXN0UHJvamVjdHNSZXNwb25zZRIjCgVpdGVtcxgBIAMoCzIULmlkZW50aXR5LnYxLlByb2plY3QSDQoFdG90YWwYAiABKAUiIgoURGVsZXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiKAoVRGVsZXRlUHJvamVjdFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLQoYR2V0RGVmYXVsdFByb2plY3RSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJCChlHZXREZWZhdWx0UHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Ii4KGFNldERlZmF1bHRQcm9qZWN0UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIkIKGVNldERlZmF1bHRQcm9qZWN0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmlkZW50aXR5LnYxLlByb2plY3QixwEKF0NyZWF0ZUludml0YXRpb25SZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRITCgtwcm9qZWN0X2lkcxgDIAMoCRIlCgRyb2xlGAQgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZRIsCgtpbnZpdGVfdHlwZRgFIAEoDjIXLmlkZW50aXR5LnYxLkludml0ZVR5cGUSFAoHbWVzc2FnZRgGIAEoCUgAiAEBQgoKCF9tZXNzYWdlIkcKGENyZWF0ZUludml0YXRpb25SZXNwb25zZRIrCgppbnZpdGF0aW9uGAEgASgLMhcuaWRlbnRpdHkudjEuSW52aXRhdGlvbiKJAQoWTGlzdEludml0YXRpb25zUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSMgoGc3RhdHVzGAIgASgOMh0uaWRlbnRpdHkudjEuSW52aXRhdGlvblN0YXR1c0gAiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUIJCgdfc3RhdHVzIlAKF0xpc3RJbnZpdGF0aW9uc1Jlc3BvbnNlEiYKBWl0ZW1zGAEgAygLMhcuaWRlbnRpdHkudjEuSW52aXRhdGlvbhINCgV0b3RhbBgCIAEoBSIwChdSZXZva2VJbnZpdGF0aW9uUmVxdWVzdBIVCg1pbnZpdGF0aW9uX2lkGAEgASgJIisKGFJldm9rZUludml0YXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkwKF0FjY2VwdEludml0YXRpb25SZXF1ZXN0Eg0KBXRva2VuGAEgASgJEhUKCHBhc3N3b3JkGAIgASgJSACIAQFCCwoJX3Bhc3N3b3JkIlQKGEFjY2VwdEludml0YXRpb25SZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEhIKCnNlc3Npb25faWQYAiABKAkiKgoZVmFsaWRhdGVJbnZpdGF0aW9uUmVxdWVzdBINCgV0b2tlbhgBIAEoCSJJChpWYWxpZGF0ZUludml0YXRpb25SZXNwb25zZRIrCgppbnZpdGF0aW9uGAEgASgLMhcuaWRlbnRpdHkudjEuSW52aXRhdGlvbiKQAgoTQ3JlYXRlQXBpS2V5UmVxdWVzdBIMCgRuYW1lGAEgASgJEikKCGtleV90eXBlGAIgASgOMhcuaWRlbnRpdHkudjEuQXBpS2V5VHlwZRIOCgZzY29wZXMYAyADKAkSIAoTcmF0ZV9saW1pdF9wZXJfaG91chgEIAEoBUgAiAEBEjMKCmV4cGlyZXNfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESFgoOYWxsb3dlZF9tb2RlbHMYBiADKAkSGgoSYWxsb3dlZF9maWxlX3R5cGVzGAcgAygJQhYKFF9yYXRlX2xpbWl0X3Blcl9ob3VyQg0KC19leHBpcmVzX2F0IjwKFENyZWF0ZUFwaUtleVJlc3BvbnNlEiQKB2FwaV9rZXkYASABKAsyEy5pZGVudGl0eS52MS5BcGlLZXkiHgoQR2V0QXBpS2V5UmVxdWVzdBIKCgJpZBgBIAEoCSI5ChFHZXRBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5IjMKEkxpc3RBcGlLZXlzUmVxdWVzdBINCgVsaW1pdBgBIAEoBRIOCgZvZmZzZXQYAiABKAUiSAoTTGlzdEFwaUtleXNSZXNwb25zZRIiCgVpdGVtcxgBIAMoCzITLmlkZW50aXR5LnYxLkFwaUtleRINCgV0b3RhbBgCIAEoBSLEAQoTVXBkYXRlQXBpS2V5UmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESFgoJaXNfYWN0aXZlGAMgASgISAGIAQESDgoGc2NvcGVzGAQgAygJEhUKDXVwZGF0ZV9zY29wZXMYBiABKAgSIAoTcmF0ZV9saW1pdF9wZXJfaG91chgFIAEoBUgCiAEBQgcKBV9uYW1lQgwKCl9pc19hY3RpdmVCFgoUX3JhdGVfbGltaXRfcGVyX2hvdXIiPAoUVXBkYXRlQXBpS2V5UmVzcG9uc2USJAoHYXBpX2tleRgBIAEoCzITLmlkZW50aXR5LnYxLkFwaUtleSIhChNSb3RhdGVBcGlLZXlSZXF1ZXN0EgoKAmlkGAEgASgJIjwKFFJvdGF0ZUFwaUtleVJlc3BvbnNlEiQKB2FwaV9rZXkYASABKAsyEy5pZGVudGl0eS52MS5BcGlLZXkiIQoTUmV2b2tlQXBpS2V5UmVxdWVzdBIKCgJpZBgBIAEoCSInChRSZXZva2VBcGlLZXlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIrEFCgxBdXRoUHJvdmlkZXISCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSDAoEdHlwZRgEIAEoCRInCgZjb25maWcYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg8KB2VuYWJsZWQYBiABKAgSEgoKaXNfZGVmYXVsdBgHIAEoCBIQCghwcmlvcml0eRgIIAEoBRIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIXCgpjcmVhdGVkX2J5GB4gASgJSACIAQESFwoKdXBkYXRlZF9ieRgfIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjYKEHB1Ymxpc2hlZF9jb25maWcYPCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQESHgoRcHVibGlzaGVkX2VuYWJsZWQYPSABKAhIA4gBARI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBg+IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GD8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5QhMKEV9wdWJsaXNoZWRfY29uZmlnQhQKEl9wdWJsaXNoZWRfZW5hYmxlZEIXChVfc2NoZWR1bGVkX3B1Ymxpc2hfYXRCGQoXX3NjaGVkdWxlZF91bnB1Ymxpc2hfYXQiewoYTGlzdEF1dGhQcm92aWRlcnNSZXF1ZXN0EhQKB2VuYWJsZWQYASABKAhIAIgBARITCgZzZWFyY2gYAiABKAlIAYgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCCgoIX2VuYWJsZWRCCQoHX3NlYXJjaCJYChlMaXN0QXV0aFByb3ZpZGVyc1Jlc3BvbnNlEiwKCXByb3ZpZGVycxgBIAMoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlchINCgV0b3RhbBgCIAEoBSIkChZHZXRBdXRoUHJvdmlkZXJSZXF1ZXN0EgoKAmlkGAEgASgJIkYKF0dldEF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyItsBChlDcmVhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEgwKBHR5cGUYAyABKAkSJwoGY29uZmlnGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgdlbmFibGVkGAUgASgISACIAQESFwoKaXNfZGVmYXVsdBgGIAEoCEgBiAEBEhUKCHByaW9yaXR5GAcgASgFSAKIAQFCCgoIX2VuYWJsZWRCDQoLX2lzX2RlZmF1bHRCCwoJX3ByaW9yaXR5IkkKGkNyZWF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIuoBChlVcGRhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIsCgZjb25maWcYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESFAoHZW5hYmxlZBgEIAEoCEgCiAEBEhcKCmlzX2RlZmF1bHQYBSABKAhIA4gBARIVCghwcmlvcml0eRgGIAEoBUgEiAEBQgcKBV9uYW1lQgkKB19jb25maWdCCgoIX2VuYWJsZWRCDQoLX2lzX2RlZmF1bHRCCwoJX3ByaW9yaXR5IkkKGlVwZGF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIicKGURlbGV0ZUF1dGhQcm92aWRlclJlcXVlc3QSCgoCaWQYASABKAkiLQoaRGVsZXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIoChpQdWJsaXNoQXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSKAAQobUHVibGlzaEF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIioKHFVucHVibGlzaEF1dGhQcm92aWRlclJlcXVlc3QSCgoCaWQYASABKAkiTAodVW5wdWJsaXNoQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiMQojR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1JlcXVlc3QSCgoCaWQYASABKAkiUQokR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyKoAQoiU2NoZWR1bGVBdXRoUHJvdmlkZXJQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCRIuCgpwdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCJSCiNTY2hlZHVsZUF1dGhQcm92aWRlclB1Ymxpc2hSZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciI3CilDYW5jZWxTY2hlZHVsZWRBdXRoUHJvdmlkZXJQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCSJZCipDYW5jZWxTY2hlZHVsZWRBdXRoUHJvdmlkZXJQdWJsaXNoUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiHgocRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVxdWVzdCIyCh1FbmFibGVkT0F1dGhQcm92aWRlcnNSZXNwb25zZRIRCglwcm92aWRlcnMYASADKAkiKgoXTWludFNlcnZpY2VUb2tlblJlcXVlc3QSDwoHcHVycG9zZRgBIAEoCSJOChhNaW50U2VydmljZVRva2VuUmVzcG9uc2USDQoFdG9rZW4YASABKAkSDwoHcHVycG9zZRgCIAEoCRISCgpleHBpcmVzX2F0GAMgASgJIo4BChZVcGRhdGVNeVByb2ZpbGVSZXF1ZXN0EhcKCmZpcnN0X25hbWUYASABKAlIAIgBARIWCglsYXN0X25hbWUYAiABKAlIAYgBARIXCgphdmF0YXJfdXJsGAMgASgJSAKIAQFCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUINCgtfYXZhdGFyX3VybCI/ChdVcGRhdGVNeVByb2ZpbGVSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIh8KHUxpc3RNeU9BdXRoQ29ubmVjdGlvbnNSZXF1ZXN0Io0BCg9PQXV0aENvbm5lY3Rpb24SEAoIcHJvdmlkZXIYASABKAkSGAoQcHJvdmlkZXJfdXNlcl9pZBgCIAEoCRISCgVlbWFpbBgDIAEoCUgAiAEBEjAKDGNvbm5lY3RlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCAoGX2VtYWlsIlMKHkxpc3RNeU9BdXRoQ29ubmVjdGlvbnNSZXNwb25zZRIxCgtjb25uZWN0aW9ucxgBIAMoCzIcLmlkZW50aXR5LnYxLk9BdXRoQ29ubmVjdGlvbiIuChpVbmxpbmtPQXV0aFByb3ZpZGVyUmVxdWVzdBIQCghwcm92aWRlchgBIAEoCSIuChtVbmxpbmtPQXV0aFByb3ZpZGVyUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIuCh1DaGVja0VtYWlsQXZhaWxhYmlsaXR5UmVxdWVzdBINCgVlbWFpbBgBIAEoCSIzCh5DaGVja0VtYWlsQXZhaWxhYmlsaXR5UmVzcG9uc2USEQoJYXZhaWxhYmxlGAEgASgIIo8BChtDb21wbGV0ZUFjY291bnRTZXR1cFJlcXVlc3QSFwoKZmlyc3RfbmFtZRgBIAEoCUgAiAEBEhYKCWxhc3RfbmFtZRgCIAEoCUgBiAEBEhUKCHBhc3N3b3JkGAMgASgJSAKIAQFCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUILCglfcGFzc3dvcmQiWwocQ29tcGxldGVBY2NvdW50U2V0dXBSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhkKDHJlZGlyZWN0X3VybBgCIAEoCUgAiAEBQg8KDV9yZWRpcmVjdF91cmwiLQoaQ3JlYXRlU2lnbnVwU2Vzc2lvblJlcXVlc3QSDwoHdXNlcl9pZBgBIAEoCSIuChtDcmVhdGVTaWdudXBTZXNzaW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIwChdSZXNlbmRJbnZpdGF0aW9uUmVxdWVzdBIVCg1pbnZpdGF0aW9uX2lkGAEgASgJIisKGFJlc2VuZEludml0YXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIiIKFEdldEludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIkQKFUdldEludml0YXRpb25SZXNwb25zZRIrCgppbnZpdGF0aW9uGAEgASgLMhcuaWRlbnRpdHkudjEuSW52aXRhdGlvbiIqChVBY3RpdmF0ZVRlbmFudFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJIj0KFkFjdGl2YXRlVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IjAKG1N1c3BlbmRUZW5hbnRBY2NvdW50UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiQwocU3VzcGVuZFRlbmFudEFjY291bnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiKAoTQ2FuY2VsVGVuYW50UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiOwoUQ2FuY2VsVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IiwKF1JlYWN0aXZhdGVUZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSI/ChhSZWFjdGl2YXRlVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50Ii0KGE1hcmtUZW5hbnRQYXN0RHVlUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiQAoZTWFya1RlbmFudFBhc3REdWVSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiJwoSQ2h1cm5UZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSI6ChNDaHVyblRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCIeChxHZXRDdXN0b21lckF1dGhDb25maWdSZXF1ZXN0IpoCChJDdXN0b21lckF1dGhDb25maWcSEQoJYWxnb3JpdGhtGAEgASgJEhMKBmlzc3VlchgCIAEoCUgAiAEBEhUKCGF1ZGllbmNlGAMgASgJSAGIAQESNwoOa2V5X3JvdGF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESGAoLc2lnbmluZ19rZXkYBSABKAlIA4gBARIsCgZjbGFpbXMYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCQoHX2lzc3VlckILCglfYXVkaWVuY2VCEQoPX2tleV9yb3RhdGVkX2F0Qg4KDF9zaWduaW5nX2tleUIJCgdfY2xhaW1zIlAKHUdldEN1c3RvbWVyQXV0aENvbmZpZ1Jlc3BvbnNlEi8KBmNvbmZpZxgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVyQXV0aENvbmZpZyIrChpWZXJpZnlDdXN0b21lclRva2VuUmVxdWVzdBINCgV0b2tlbhgBIAEoCSKzAgobVmVyaWZ5Q3VzdG9tZXJUb2tlblJlc3BvbnNlEg0KBXZhbGlkGAEgASgIEhIKBWVycm9yGAIgASgJSACIAQESGAoLY3VzdG9tZXJfaWQYAyABKAlIAYgBARISCgVlbWFpbBgEIAEoCUgCiAEBEhYKCXRlbmFudF9pZBgFIAEoCUgDiAEBEhcKCnByb2plY3RfaWQYBiABKAlIBIgBARINCgVyb2xlcxgHIAMoCRIzCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBQggKBl9lcnJvckIOCgxfY3VzdG9tZXJfaWRCCAoGX2VtYWlsQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCDQoLX2V4cGlyZXNfYXQiJAoiR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzUmVxdWVzdCLbAQoYQ3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzEiEKGW5hdGl2ZV9tYW5hZ2VtZW50X2VuYWJsZWQYASABKAgSIgoVZXh0ZXJuYWxfcHJvdmlkZXJfdXJsGAIgASgJSACIAQESIwoWZXh0ZXJuYWxfcHJvdmlkZXJfbmFtZRgDIAEoCUgBiAEBEhMKBnJlYXNvbhgEIAEoCUgCiAEBQhgKFl9leHRlcm5hbF9wcm92aWRlcl91cmxCGQoXX2V4dGVybmFsX3Byb3ZpZGVyX25hbWVCCQoHX3JlYXNvbiJcCiNHZXRDdXN0b21lck1hbmFnZW1lbnRTdGF0dXNSZXNwb25zZRI1CgZzdGF0dXMYASABKAsyJS5pZGVudGl0eS52MS5DdXN0b21lck1hbmFnZW1lbnRTdGF0dXMiKAoVVmFsaWRhdGVBcGlLZXlSZXF1ZXN0Eg8KB2FwaV9rZXkYASABKAkizAEKFlZhbGlkYXRlQXBpS2V5UmVzcG9uc2USCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIRCgl0ZW5hbnRfaWQYAyABKAkSEgoKcHJvamVjdF9pZBgEIAEoCRIQCghrZXlfdHlwZRgFIAEoCRIOCgZzY29wZXMYBiADKAkSFgoOYWxsb3dlZF9tb2RlbHMYByADKAkSGgoSYWxsb3dlZF9maWxlX3R5cGVzGAggAygJEhsKE3JhdGVfbGltaXRfcGVyX2hvdXIYCSABKAUiNwoUQ3VzdG9tZXJMb2dpblJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkibQoVQ3VzdG9tZXJMb2dpblJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJEicKCGN1c3RvbWVyGAMgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIifwoXQ3VzdG9tZXJSZWdpc3RlclJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSMgoMcHJvZmlsZV9kYXRhGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBQg8KDV9wcm9maWxlX2RhdGEicAoYQ3VzdG9tZXJSZWdpc3RlclJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJEicKCGN1c3RvbWVyGAMgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiNAobQ3VzdG9tZXJSZWZyZXNoVG9rZW5SZXF1ZXN0EhUKDXJlZnJlc2hfdG9rZW4YASABKAkiSwocQ3VzdG9tZXJSZWZyZXNoVG9rZW5SZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCSIqChlDdXN0b21lclJlcXVlc3RPVFBSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIioKGkN1c3RvbWVyUmVxdWVzdE9UUFJlc3BvbnNlEgwKBHNlbnQYASABKAgiOwoYQ3VzdG9tZXJWZXJpZnlPVFBSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhAKCG90cF9jb2RlGAIgASgJInEKGUN1c3RvbWVyVmVyaWZ5T1RQUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkSJwoIY3VzdG9tZXIYAyABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciI0CiNDdXN0b21lclJlcXVlc3RQYXNzd29yZFJlc2V0UmVxdWVzdBINCgVlbWFpbBgBIAEoCSI0CiRDdXN0b21lclJlcXVlc3RQYXNzd29yZFJlc2V0UmVzcG9uc2USDAoEc2VudBgBIAEoCCJDChxDdXN0b21lclJlc2V0UGFzc3dvcmRSZXF1ZXN0Eg0KBXRva2VuGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIwCh1DdXN0b21lclJlc2V0UGFzc3dvcmRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIItkBChlTdG9yZVByb3ZpZGVyVG9rZW5SZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEhQKDHByb3ZpZGVyX2tleRgCIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAyABKAkSFQoNcmVmcmVzaF90b2tlbhgEIAEoCRIQCghpZF90b2tlbhgFIAEoCRIOCgZzY29wZXMYBiABKAkSMwoKZXhwaXJlc19hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUINCgtfZXhwaXJlc19hdCIcChpTdG9yZVByb3ZpZGVyVG9rZW5SZXNwb25zZSKDAQoZU3RhcnRQcm92aWRlckxvZ2luUmVxdWVzdBIUCgxwcm92aWRlcl9rZXkYASABKAkSFgoJcmV0dXJuX3RvGAIgASgJSACIAQESGQoMcmVkaXJlY3RfdXJpGAMgASgJSAGIAQFCDAoKX3JldHVybl90b0IPCg1fcmVkaXJlY3RfdXJpIjIKGlN0YXJ0UHJvdmlkZXJMb2dpblJlc3BvbnNlEhQKDHJlZGlyZWN0X3VybBgBIAEoCSJPChpGaW5pc2hQcm92aWRlckxvZ2luUmVxdWVzdBIUCgxwcm92aWRlcl9rZXkYASABKAkSDAoEY29kZRgCIAEoCRINCgVzdGF0ZRgDIAEoCSJuChtGaW5pc2hQcm92aWRlckxvZ2luUmVzcG9uc2USEwoLY3VzdG9tZXJfaWQYASABKAkSDQoFZW1haWwYAiABKAkSFAoMYWNjZXNzX3Rva2VuGAMgASgJEhUKDXJlZnJlc2hfdG9rZW4YBCABKAkiRAoXR2V0UHJvdmlkZXJUb2tlblJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkSFAoMcHJvdmlkZXJfa2V5GAIgASgJIq0BChhHZXRQcm92aWRlclRva2VuUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkSEAoIaWRfdG9rZW4YAyABKAkSDgoGc2NvcGVzGAQgASgJEjMKCmV4cGlyZXNfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDQoLX2V4cGlyZXNfYXQiMgobRGVsZXRlUHJvdmlkZXJUb2tlbnNSZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJIh4KHERlbGV0ZVByb3ZpZGVyVG9rZW5zUmVzcG9uc2UqsQEKD0FkbWluVXNlclN0YXR1cxIhCh1BRE1JTl9VU0VSX1NUQVRVU19VTlNQRUNJRklFRBAAEhwKGEFETUlOX1VTRVJfU1RBVFVTX0FDVElWRRABEh0KGUFETUlOX1VTRVJfU1RBVFVTX1BFTkRJTkcQAhIfChtBRE1JTl9VU0VSX1NUQVRVU19TVVNQRU5ERUQQAxIdChlBRE1JTl9VU0VSX1NUQVRVU19ERUxFVEVEEAQqiQEKDkN1c3RvbWVyU3RhdHVzEh8KG0NVU1RPTUVSX1NUQVRVU19VTlNQRUNJRklFRBAAEhoKFkNVU1RPTUVSX1NUQVRVU19BQ1RJVkUQARIbChdDVVNUT01FUl9TVEFUVVNfUEVORElORxACEh0KGUNVU1RPTUVSX1NUQVRVU19TVVNQRU5ERUQQAyrZAQoMVGVuYW50U3RhdHVzEh0KGVRFTkFOVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIfChtURU5BTlRfU1RBVFVTX1BFTkRJTkdfU0VUVVAQARIYChRURU5BTlRfU1RBVFVTX0FDVElWRRACEhoKFlRFTkFOVF9TVEFUVVNfUEFTVF9EVUUQAxIbChdURU5BTlRfU1RBVFVTX1NVU1BFTkRFRBAEEhsKF1RFTkFOVF9TVEFUVVNfQ0FOQ0VMTEVEEAUSGQoVVEVOQU5UX1NUQVRVU19DSFVSTkVEEAYqZgoNUHJvamVjdFN0YXR1cxIeChpQUk9KRUNUX1NUQVRVU19VTlNQRUNJRklFRBAAEhkKFVBST0pFQ1RfU1RBVFVTX0FDVElWRRABEhoKFlBST0pFQ1RfU1RBVFVTX0RFTEVURUQQAiqmAQoKQWNjZXNzUm9sZRIbChdBQ0NFU1NfUk9MRV9VTlNQRUNJRklFRBAAEhwKGEFDQ0VTU19ST0xFX1RFTkFOVF9PV05FUhABEh0KGUFDQ0VTU19ST0xFX1BST0pFQ1RfQURNSU4QAhIeChpBQ0NFU1NfUk9MRV9QUk9KRUNUX0VESVRPUhADEh4KGkFDQ0VTU19ST0xFX1BST0pFQ1RfVklFV0VSEAQqZAoKSW52aXRlVHlwZRIbChdJTlZJVEVfVFlQRV9VTlNQRUNJRklFRBAAEhwKGElOVklURV9UWVBFX1RFTkFOVF9PV05FUhABEhsKF0lOVklURV9UWVBFX1RFQU1fTUVNQkVSEAIqsgEKEEludml0YXRpb25TdGF0dXMSIQodSU5WSVRBVElPTl9TVEFUVVNfVU5TUEVDSUZJRUQQABIdChlJTlZJVEFUSU9OX1NUQVRVU19QRU5ESU5HEAESHgoaSU5WSVRBVElPTl9TVEFUVVNfQUNDRVBURUQQAhIdChlJTlZJVEFUSU9OX1NUQVRVU19FWFBJUkVEEAMSHQoZSU5WSVRBVElPTl9TVEFUVVNfUkVWT0tFRBAEKucBChhDdXN0b21lckludml0YXRpb25TdGF0dXMSKgomQ1VTVE9NRVJfSU5WSVRBVElPTl9TVEFUVVNfVU5TUEVDSUZJRUQQABImCiJDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19QRU5ESU5HEAESJwojQ1VTVE9NRVJfSU5WSVRBVElPTl9TVEFUVVNfQUNDRVBURUQQAhImCiJDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19FWFBJUkVEEAMSJgoiQ1VTVE9NRVJfSU5WSVRBVElPTl9TVEFUVVNfUkVWT0tFRBAEKlwKCkFwaUtleVR5cGUSHAoYQVBJX0tFWV9UWVBFX1VOU1BFQ0lGSUVEEAASFwoTQVBJX0tFWV9UWVBFX1BVQkxJQxABEhcKE0FQSV9LRVlfVFlQRV9TRUNSRVQQAjL3TgoPSWRlbnRpdHlTZXJ2aWNlEj4KBUxvZ2luEhkuaWRlbnRpdHkudjEuTG9naW5SZXF1ZXN0GhouaWRlbnRpdHkudjEuTG9naW5SZXNwb25zZRJTCgxMb2dpbldpdGhPVFASIC5pZGVudGl0eS52MS5Mb2dpbldpdGhPVFBSZXF1ZXN0GiEuaWRlbnRpdHkudjEuTG9naW5XaXRoT1RQUmVzcG9uc2USTQoKUmVxdWVzdE9UUBIeLmlkZW50aXR5LnYxLlJlcXVlc3RPVFBSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuUmVxdWVzdE9UUFJlc3BvbnNlEkEKBkxvZ291dBIaLmlkZW50aXR5LnYxLkxvZ291dFJlcXVlc3QaGy5pZGVudGl0eS52MS5Mb2dvdXRSZXNwb25zZRJHCghSZWdpc3RlchIcLmlkZW50aXR5LnYxLlJlZ2lzdGVyUmVxdWVzdBodLmlkZW50aXR5LnYxLlJlZ2lzdGVyUmVzcG9uc2USUAoLVmVyaWZ5RW1haWwSHy5pZGVudGl0eS52MS5WZXJpZnlFbWFpbFJlcXVlc3QaIC5pZGVudGl0eS52MS5WZXJpZnlFbWFpbFJlc3BvbnNlEnQKF1Jlc2VuZFZlcmlmaWNhdGlvbkVtYWlsEisuaWRlbnRpdHkudjEuUmVzZW5kVmVyaWZpY2F0aW9uRW1haWxSZXF1ZXN0GiwuaWRlbnRpdHkudjEuUmVzZW5kVmVyaWZpY2F0aW9uRW1haWxSZXNwb25zZRJ6ChlTZW5kRW1haWxWZXJpZmljYXRpb25Db2RlEi0uaWRlbnRpdHkudjEuU2VuZEVtYWlsVmVyaWZpY2F0aW9uQ29kZVJlcXVlc3QaLi5pZGVudGl0eS52MS5TZW5kRW1haWxWZXJpZmljYXRpb25Db2RlUmVzcG9uc2USXAoPVmVyaWZ5RW1haWxDb2RlEiMuaWRlbnRpdHkudjEuVmVyaWZ5RW1haWxDb2RlUmVxdWVzdBokLmlkZW50aXR5LnYxLlZlcmlmeUVtYWlsQ29kZVJlc3BvbnNlEmsKFFJlcXVlc3RQYXNzd29yZFJlc2V0EiguaWRlbnRpdHkudjEuUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXF1ZXN0GikuaWRlbnRpdHkudjEuUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXNwb25zZRJWCg1SZXNldFBhc3N3b3JkEiEuaWRlbnRpdHkudjEuUmVzZXRQYXNzd29yZFJlcXVlc3QaIi5pZGVudGl0eS52MS5SZXNldFBhc3N3b3JkUmVzcG9uc2USWQoOVXBkYXRlUGFzc3dvcmQSIi5pZGVudGl0eS52MS5VcGRhdGVQYXNzd29yZFJlcXVlc3QaIy5pZGVudGl0eS52MS5VcGRhdGVQYXNzd29yZFJlc3BvbnNlElMKDFJlZnJlc2hUb2tlbhIgLmlkZW50aXR5LnYxLlJlZnJlc2hUb2tlblJlcXVlc3QaIS5pZGVudGl0eS52MS5SZWZyZXNoVG9rZW5SZXNwb25zZRJiChFHZXRTZXNzaW9uQ29udGV4dBIlLmlkZW50aXR5LnYxLkdldFNlc3Npb25Db250ZXh0UmVxdWVzdBomLmlkZW50aXR5LnYxLkdldFNlc3Npb25Db250ZXh0UmVzcG9uc2USUwoMU3dpdGNoVGVuYW50EiAuaWRlbnRpdHkudjEuU3dpdGNoVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLlN3aXRjaFRlbmFudFJlc3BvbnNlElYKDVN3aXRjaFByb2plY3QSIS5pZGVudGl0eS52MS5Td2l0Y2hQcm9qZWN0UmVxdWVzdBoiLmlkZW50aXR5LnYxLlN3aXRjaFByb2plY3RSZXNwb25zZRJoChNDbGVhclNlc3Npb25Db250ZXh0EicuaWRlbnRpdHkudjEuQ2xlYXJTZXNzaW9uQ29udGV4dFJlcXVlc3QaKC5pZGVudGl0eS52MS5DbGVhclNlc3Npb25Db250ZXh0UmVzcG9uc2USPgoFR2V0TWUSGS5pZGVudGl0eS52MS5HZXRNZVJlcXVlc3QaGi5pZGVudGl0eS52MS5HZXRNZVJlc3BvbnNlElwKD0NyZWF0ZUFkbWluVXNlchIjLmlkZW50aXR5LnYxLkNyZWF0ZUFkbWluVXNlclJlcXVlc3QaJC5pZGVudGl0eS52MS5DcmVhdGVBZG1pblVzZXJSZXNwb25zZRJTCgxHZXRBZG1pblVzZXISIC5pZGVudGl0eS52MS5HZXRBZG1pblVzZXJSZXF1ZXN0GiEuaWRlbnRpdHkudjEuR2V0QWRtaW5Vc2VyUmVzcG9uc2USXAoPVXBkYXRlQWRtaW5Vc2VyEiMuaWRlbnRpdHkudjEuVXBkYXRlQWRtaW5Vc2VyUmVxdWVzdBokLmlkZW50aXR5LnYxLlVwZGF0ZUFkbWluVXNlclJlc3BvbnNlElkKDkxpc3RBZG1pblVzZXJzEiIuaWRlbnRpdHkudjEuTGlzdEFkbWluVXNlcnNSZXF1ZXN0GiMuaWRlbnRpdHkudjEuTGlzdEFkbWluVXNlcnNSZXNwb25zZRJQCgtHcmFudEFjY2VzcxIfLmlkZW50aXR5LnYxLkdyYW50QWNjZXNzUmVxdWVzdBogLmlkZW50aXR5LnYxLkdyYW50QWNjZXNzUmVzcG9uc2USUwoMUmV2b2tlQWNjZXNzEiAuaWRlbnRpdHkudjEuUmV2b2tlQWNjZXNzUmVxdWVzdBohLmlkZW50aXR5LnYxLlJldm9rZUFjY2Vzc1Jlc3BvbnNlElkKDkNyZWF0ZUN1c3RvbWVyEiIuaWRlbnRpdHkudjEuQ3JlYXRlQ3VzdG9tZXJSZXF1ZXN0GiMuaWRlbnRpdHkudjEuQ3JlYXRlQ3VzdG9tZXJSZXNwb25zZRJQCgtHZXRDdXN0b21lchIfLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyUmVxdWVzdBogLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyUmVzcG9uc2USWQoOVXBkYXRlQ3VzdG9tZXISIi5pZGVudGl0eS52MS5VcGRhdGVDdXN0b21lclJlcXVlc3QaIy5pZGVudGl0eS52MS5VcGRhdGVDdXN0b21lclJlc3BvbnNlElkKDkRlbGV0ZUN1c3RvbWVyEiIuaWRlbnRpdHkudjEuRGVsZXRlQ3VzdG9tZXJSZXF1ZXN0GiMuaWRlbnRpdHkudjEuRGVsZXRlQ3VzdG9tZXJSZXNwb25zZRJWCg1MaXN0Q3VzdG9tZXJzEiEuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVyc1JlcXVlc3QaIi5pZGVudGl0eS52MS5MaXN0Q3VzdG9tZXJzUmVzcG9uc2USXAoPU3VzcGVuZEN1c3RvbWVyEiMuaWRlbnRpdHkudjEuU3VzcGVuZEN1c3RvbWVyUmVxdWVzdBokLmlkZW50aXR5LnYxLlN1c3BlbmRDdXN0b21lclJlc3BvbnNlEmgKE1NldEN1c3RvbWVyUGFzc3dvcmQSJy5pZGVudGl0eS52MS5TZXRDdXN0b21lclBhc3N3b3JkUmVxdWVzdBooLmlkZW50aXR5LnYxLlNldEN1c3RvbWVyUGFzc3dvcmRSZXNwb25zZRJ3ChhDcmVhdGVDdXN0b21lckludml0YXRpb24SLC5pZGVudGl0eS52MS5DcmVhdGVDdXN0b21lckludml0YXRpb25SZXF1ZXN0Gi0uaWRlbnRpdHkudjEuQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USdAoXTGlzdEN1c3RvbWVySW52aXRhdGlvbnMSKy5pZGVudGl0eS52MS5MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1JlcXVlc3QaLC5pZGVudGl0eS52MS5MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1Jlc3BvbnNlEm4KFUdldEN1c3RvbWVySW52aXRhdGlvbhIpLmlkZW50aXR5LnYxLkdldEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QaKi5pZGVudGl0eS52MS5HZXRDdXN0b21lckludml0YXRpb25SZXNwb25zZRJ3ChhSZXZva2VDdXN0b21lckludml0YXRpb24SLC5pZGVudGl0eS52MS5SZXZva2VDdXN0b21lckludml0YXRpb25SZXF1ZXN0Gi0uaWRlbnRpdHkudjEuUmV2b2tlQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USdwoYUmVzZW5kQ3VzdG9tZXJJbnZpdGF0aW9uEiwuaWRlbnRpdHkudjEuUmVzZW5kQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBotLmlkZW50aXR5LnYxLlJlc2VuZEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEn0KGlZhbGlkYXRlQ3VzdG9tZXJJbnZpdGF0aW9uEi4uaWRlbnRpdHkudjEuVmFsaWRhdGVDdXN0b21lckludml0YXRpb25SZXF1ZXN0Gi8uaWRlbnRpdHkudjEuVmFsaWRhdGVDdXN0b21lckludml0YXRpb25SZXNwb25zZRJ3ChhBY2NlcHRDdXN0b21lckludml0YXRpb24SLC5pZGVudGl0eS52MS5BY2NlcHRDdXN0b21lckludml0YXRpb25SZXF1ZXN0Gi0uaWRlbnRpdHkudjEuQWNjZXB0Q3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USUwoMQ3JlYXRlVGVuYW50EiAuaWRlbnRpdHkudjEuQ3JlYXRlVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLkNyZWF0ZVRlbmFudFJlc3BvbnNlEkoKCUdldFRlbmFudBIdLmlkZW50aXR5LnYxLkdldFRlbmFudFJlcXVlc3QaHi5pZGVudGl0eS52MS5HZXRUZW5hbnRSZXNwb25zZRJTCgxVcGRhdGVUZW5hbnQSIC5pZGVudGl0eS52MS5VcGRhdGVUZW5hbnRSZXF1ZXN0GiEuaWRlbnRpdHkudjEuVXBkYXRlVGVuYW50UmVzcG9uc2USUAoLTGlzdFRlbmFudHMSHy5pZGVudGl0eS52MS5MaXN0VGVuYW50c1JlcXVlc3QaIC5pZGVudGl0eS52MS5MaXN0VGVuYW50c1Jlc3BvbnNlElMKDERlbGV0ZVRlbmFudBIgLmlkZW50aXR5LnYxLkRlbGV0ZVRlbmFudFJlcXVlc3QaIS5pZGVudGl0eS52MS5EZWxldGVUZW5hbnRSZXNwb25zZRJWCg1DcmVhdGVQcm9qZWN0EiEuaWRlbnRpdHkudjEuQ3JlYXRlUHJvamVjdFJlcXVlc3QaIi5pZGVudGl0eS52MS5DcmVhdGVQcm9qZWN0UmVzcG9uc2USTQoKR2V0UHJvamVjdBIeLmlkZW50aXR5LnYxLkdldFByb2plY3RSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuR2V0UHJvamVjdFJlc3BvbnNlElYKDVVwZGF0ZVByb2plY3QSIS5pZGVudGl0eS52MS5VcGRhdGVQcm9qZWN0UmVxdWVzdBoiLmlkZW50aXR5LnYxLlVwZGF0ZVByb2plY3RSZXNwb25zZRJTCgxMaXN0UHJvamVjdHMSIC5pZGVudGl0eS52MS5MaXN0UHJvamVjdHNSZXF1ZXN0GiEuaWRlbnRpdHkudjEuTGlzdFByb2plY3RzUmVzcG9uc2USVgoNRGVsZXRlUHJvamVjdBIhLmlkZW50aXR5LnYxLkRlbGV0ZVByb2plY3RSZXF1ZXN0GiIuaWRlbnRpdHkudjEuRGVsZXRlUHJvamVjdFJlc3BvbnNlEmIKEUdldERlZmF1bHRQcm9qZWN0EiUuaWRlbnRpdHkudjEuR2V0RGVmYXVsdFByb2plY3RSZXF1ZXN0GiYuaWRlbnRpdHkudjEuR2V0RGVmYXVsdFByb2plY3RSZXNwb25zZRJiChFTZXREZWZhdWx0UHJvamVjdBIlLmlkZW50aXR5LnYxLlNldERlZmF1bHRQcm9qZWN0UmVxdWVzdBomLmlkZW50aXR5LnYxLlNldERlZmF1bHRQcm9qZWN0UmVzcG9uc2USXwoQQ3JlYXRlSW52aXRhdGlvbhIkLmlkZW50aXR5LnYxLkNyZWF0ZUludml0YXRpb25SZXF1ZXN0GiUuaWRlbnRpdHkudjEuQ3JlYXRlSW52aXRhdGlvblJlc3BvbnNlElwKD0xpc3RJbnZpdGF0aW9ucxIjLmlkZW50aXR5LnYxLkxpc3RJbnZpdGF0aW9uc1JlcXVlc3QaJC5pZGVudGl0eS52MS5MaXN0SW52aXRhdGlvbnNSZXNwb25zZRJfChBSZXZva2VJbnZpdGF0aW9uEiQuaWRlbnRpdHkudjEuUmV2b2tlSW52aXRhdGlvblJlcXVlc3QaJS5pZGVudGl0eS52MS5SZXZva2VJbnZpdGF0aW9uUmVzcG9uc2USXwoQQWNjZXB0SW52aXRhdGlvbhIkLmlkZW50aXR5LnYxLkFjY2VwdEludml0YXRpb25SZXF1ZXN0GiUuaWRlbnRpdHkudjEuQWNjZXB0SW52aXRhdGlvblJlc3BvbnNlEmUKElZhbGlkYXRlSW52aXRhdGlvbhImLmlkZW50aXR5LnYxLlZhbGlkYXRlSW52aXRhdGlvblJlcXVlc3QaJy5pZGVudGl0eS52MS5WYWxpZGF0ZUludml0YXRpb25SZXNwb25zZRJTCgxDcmVhdGVBcGlLZXkSIC5pZGVudGl0eS52MS5DcmVhdGVBcGlLZXlSZXF1ZXN0GiEuaWRlbnRpdHkudjEuQ3JlYXRlQXBpS2V5UmVzcG9uc2USSgoJR2V0QXBpS2V5Eh0uaWRlbnRpdHkudjEuR2V0QXBpS2V5UmVxdWVzdBoeLmlkZW50aXR5LnYxLkdldEFwaUtleVJlc3BvbnNlElAKC0xpc3RBcGlLZXlzEh8uaWRlbnRpdHkudjEuTGlzdEFwaUtleXNSZXF1ZXN0GiAuaWRlbnRpdHkudjEuTGlzdEFwaUtleXNSZXNwb25zZRJTCgxVcGRhdGVBcGlLZXkSIC5pZGVudGl0eS52MS5VcGRhdGVBcGlLZXlSZXF1ZXN0GiEuaWRlbnRpdHkudjEuVXBkYXRlQXBpS2V5UmVzcG9uc2USUwoMUm90YXRlQXBpS2V5EiAuaWRlbnRpdHkudjEuUm90YXRlQXBpS2V5UmVxdWVzdBohLmlkZW50aXR5LnYxLlJvdGF0ZUFwaUtleVJlc3BvbnNlElMKDFJldm9rZUFwaUtleRIgLmlkZW50aXR5LnYxLlJldm9rZUFwaUtleVJlcXVlc3QaIS5pZGVudGl0eS52MS5SZXZva2VBcGlLZXlSZXNwb25zZRJiChFMaXN0QXV0aFByb3ZpZGVycxIlLmlkZW50aXR5LnYxLkxpc3RBdXRoUHJvdmlkZXJzUmVxdWVzdBomLmlkZW50aXR5LnYxLkxpc3RBdXRoUHJvdmlkZXJzUmVzcG9uc2USXAoPR2V0QXV0aFByb3ZpZGVyEiMuaWRlbnRpdHkudjEuR2V0QXV0aFByb3ZpZGVyUmVxdWVzdBokLmlkZW50aXR5LnYxLkdldEF1dGhQcm92aWRlclJlc3BvbnNlEmUKEkNyZWF0ZUF1dGhQcm92aWRlchImLmlkZW50aXR5LnYxLkNyZWF0ZUF1dGhQcm92aWRlclJlcXVlc3QaJy5pZGVudGl0eS52MS5DcmVhdGVBdXRoUHJvdmlkZXJSZXNwb25zZRJlChJVcGRhdGVBdXRoUHJvdmlkZXISJi5pZGVudGl0eS52MS5VcGRhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0GicuaWRlbnRpdHkudjEuVXBkYXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USZQoSRGVsZXRlQXV0aFByb3ZpZGVyEiYuaWRlbnRpdHkudjEuRGVsZXRlQXV0aFByb3ZpZGVyUmVxdWVzdBonLmlkZW50aXR5LnYxLkRlbGV0ZUF1dGhQcm92aWRlclJlc3BvbnNlEmgKE1B1Ymxpc2hBdXRoUHJvdmlkZXISJy5pZGVudGl0eS52MS5QdWJsaXNoQXV0aFByb3ZpZGVyUmVxdWVzdBooLmlkZW50aXR5LnYxLlB1Ymxpc2hBdXRoUHJvdmlkZXJSZXNwb25zZRJuChVVbnB1Ymxpc2hBdXRoUHJvdmlkZXISKS5pZGVudGl0eS52MS5VbnB1Ymxpc2hBdXRoUHJvdmlkZXJSZXF1ZXN0GiouaWRlbnRpdHkudjEuVW5wdWJsaXNoQXV0aFByb3ZpZGVyUmVzcG9uc2USgwEKHEdldEF1dGhQcm92aWRlclB1Ymxpc2hTdGF0dXMSMC5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzUmVxdWVzdBoxLmlkZW50aXR5LnYxLkdldEF1dGhQcm92aWRlclB1Ymxpc2hTdGF0dXNSZXNwb25zZRKAAQobU2NoZWR1bGVBdXRoUHJvdmlkZXJQdWJsaXNoEi8uaWRlbnRpdHkudjEuU2NoZWR1bGVBdXRoUHJvdmlkZXJQdWJsaXNoUmVxdWVzdBowLmlkZW50aXR5LnYxLlNjaGVkdWxlQXV0aFByb3ZpZGVyUHVibGlzaFJlc3BvbnNlEpUBCiJDYW5jZWxTY2hlZHVsZWRBdXRoUHJvdmlkZXJQdWJsaXNoEjYuaWRlbnRpdHkudjEuQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaFJlcXVlc3QaNy5pZGVudGl0eS52MS5DYW5jZWxTY2hlZHVsZWRBdXRoUHJvdmlkZXJQdWJsaXNoUmVzcG9uc2USbgoVRW5hYmxlZE9BdXRoUHJvdmlkZXJzEikuaWRlbnRpdHkudjEuRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVxdWVzdBoqLmlkZW50aXR5LnYxLkVuYWJsZWRPQXV0aFByb3ZpZGVyc1Jlc3BvbnNlEl8KEE1pbnRTZXJ2aWNlVG9rZW4SJC5pZGVudGl0eS52MS5NaW50U2VydmljZVRva2VuUmVxdWVzdBolLmlkZW50aXR5LnYxLk1pbnRTZXJ2aWNlVG9rZW5SZXNwb25zZRJcCg9VcGRhdGVNeVByb2ZpbGUSIy5pZGVudGl0eS52MS5VcGRhdGVNeVByb2ZpbGVSZXF1ZXN0GiQuaWRlbnRpdHkudjEuVXBkYXRlTXlQcm9maWxlUmVzcG9uc2UScQoWTGlzdE15T0F1dGhDb25uZWN0aW9ucxIqLmlkZW50aXR5LnYxLkxpc3RNeU9BdXRoQ29ubmVjdGlvbnNSZXF1ZXN0GisuaWRlbnRpdHkudjEuTGlzdE15T0F1dGhDb25uZWN0aW9uc1Jlc3BvbnNlEmgKE1VubGlua09BdXRoUHJvdmlkZXISJy5pZGVudGl0eS52MS5VbmxpbmtPQXV0aFByb3ZpZGVyUmVxdWVzdBooLmlkZW50aXR5LnYxLlVubGlua09BdXRoUHJvdmlkZXJSZXNwb25zZRJxChZDaGVja0VtYWlsQXZhaWxhYmlsaXR5EiouaWRlbnRpdHkudjEuQ2hlY2tFbWFpbEF2YWlsYWJpbGl0eVJlcXVlc3QaKy5pZGVudGl0eS52MS5DaGVja0VtYWlsQXZhaWxhYmlsaXR5UmVzcG9uc2USawoUQ29tcGxldGVBY2NvdW50U2V0dXASKC5pZGVudGl0eS52MS5Db21wbGV0ZUFjY291bnRTZXR1cFJlcXVlc3QaKS5pZGVudGl0eS52MS5Db21wbGV0ZUFjY291bnRTZXR1cFJlc3BvbnNlEmgKE0NyZWF0ZVNpZ251cFNlc3Npb24SJy5pZGVudGl0eS52MS5DcmVhdGVTaWdudXBTZXNzaW9uUmVxdWVzdBooLmlkZW50aXR5LnYxLkNyZWF0ZVNpZ251cFNlc3Npb25SZXNwb25zZRJfChBSZXNlbmRJbnZpdGF0aW9uEiQuaWRlbnRpdHkudjEuUmVzZW5kSW52aXRhdGlvblJlcXVlc3QaJS5pZGVudGl0eS52MS5SZXNlbmRJbnZpdGF0aW9uUmVzcG9uc2USVgoNR2V0SW52aXRhdGlvbhIhLmlkZW50aXR5LnYxLkdldEludml0YXRpb25SZXF1ZXN0GiIuaWRlbnRpdHkudjEuR2V0SW52aXRhdGlvblJlc3BvbnNlElkKDkFjdGl2YXRlVGVuYW50EiIuaWRlbnRpdHkudjEuQWN0aXZhdGVUZW5hbnRSZXF1ZXN0GiMuaWRlbnRpdHkudjEuQWN0aXZhdGVUZW5hbnRSZXNwb25zZRJrChRTdXNwZW5kVGVuYW50QWNjb3VudBIoLmlkZW50aXR5LnYxLlN1c3BlbmRUZW5hbnRBY2NvdW50UmVxdWVzdBopLmlkZW50aXR5LnYxLlN1c3BlbmRUZW5hbnRBY2NvdW50UmVzcG9uc2USUwoMQ2FuY2VsVGVuYW50EiAuaWRlbnRpdHkudjEuQ2FuY2VsVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLkNhbmNlbFRlbmFudFJlc3BvbnNlEl8KEFJlYWN0aXZhdGVUZW5hbnQSJC5pZGVudGl0eS52MS5SZWFjdGl2YXRlVGVuYW50UmVxdWVzdBolLmlkZW50aXR5LnYxLlJlYWN0aXZhdGVUZW5hbnRSZXNwb25zZRJiChFNYXJrVGVuYW50UGFzdER1ZRIlLmlkZW50aXR5LnYxLk1hcmtUZW5hbnRQYXN0RHVlUmVxdWVzdBomLmlkZW50aXR5LnYxLk1hcmtUZW5hbnRQYXN0RHVlUmVzcG9uc2USUAoLQ2h1cm5UZW5hbnQSHy5pZGVudGl0eS52MS5DaHVyblRlbmFudFJlcXVlc3QaIC5pZGVudGl0eS52MS5DaHVyblRlbmFudFJlc3BvbnNlEm4KFUdldEN1c3RvbWVyQXV0aENvbmZpZxIpLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyQXV0aENvbmZpZ1JlcXVlc3QaKi5pZGVudGl0eS52MS5HZXRDdXN0b21lckF1dGhDb25maWdSZXNwb25zZRJoChNWZXJpZnlDdXN0b21lclRva2VuEicuaWRlbnRpdHkudjEuVmVyaWZ5Q3VzdG9tZXJUb2tlblJlcXVlc3QaKC5pZGVudGl0eS52MS5WZXJpZnlDdXN0b21lclRva2VuUmVzcG9uc2USgAEKG0dldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1cxIvLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1c1JlcXVlc3QaMC5pZGVudGl0eS52MS5HZXRDdXN0b21lck1hbmFnZW1lbnRTdGF0dXNSZXNwb25zZRJZCg5WYWxpZGF0ZUFwaUtleRIiLmlkZW50aXR5LnYxLlZhbGlkYXRlQXBpS2V5UmVxdWVzdBojLmlkZW50aXR5LnYxLlZhbGlkYXRlQXBpS2V5UmVzcG9uc2USVgoNQ3VzdG9tZXJMb2dpbhIhLmlkZW50aXR5LnYxLkN1c3RvbWVyTG9naW5SZXF1ZXN0GiIuaWRlbnRpdHkudjEuQ3VzdG9tZXJMb2dpblJlc3BvbnNlEl8KEEN1c3RvbWVyUmVnaXN0ZXISJC5pZGVudGl0eS52MS5DdXN0b21lclJlZ2lzdGVyUmVxdWVzdBolLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVnaXN0ZXJSZXNwb25zZRJrChRDdXN0b21lclJlZnJlc2hUb2tlbhIoLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVmcmVzaFRva2VuUmVxdWVzdBopLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVmcmVzaFRva2VuUmVzcG9uc2USZQoSQ3VzdG9tZXJSZXF1ZXN0T1RQEiYuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXF1ZXN0T1RQUmVxdWVzdBonLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVxdWVzdE9UUFJlc3BvbnNlEmIKEUN1c3RvbWVyVmVyaWZ5T1RQEiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJWZXJpZnlPVFBSZXF1ZXN0GiYuaWRlbnRpdHkudjEuQ3VzdG9tZXJWZXJpZnlPVFBSZXNwb25zZRKDAQocQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldBIwLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXF1ZXN0GjEuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldFJlc3BvbnNlEm4KFUN1c3RvbWVyUmVzZXRQYXNzd29yZBIpLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVzZXRQYXNzd29yZFJlcXVlc3QaKi5pZGVudGl0eS52MS5DdXN0b21lclJlc2V0UGFzc3dvcmRSZXNwb25zZRJlChJTdG9yZVByb3ZpZGVyVG9rZW4SJi5pZGVudGl0eS52MS5TdG9yZVByb3ZpZGVyVG9rZW5SZXF1ZXN0GicuaWRlbnRpdHkudjEuU3RvcmVQcm92aWRlclRva2VuUmVzcG9uc2USXwoQR2V0UHJvdmlkZXJUb2tlbhIkLmlkZW50aXR5LnYxLkdldFByb3ZpZGVyVG9rZW5SZXF1ZXN0GiUuaWRlbnRpdHkudjEuR2V0UHJvdmlkZXJUb2tlblJlc3BvbnNlEmsKFERlbGV0ZVByb3ZpZGVyVG9rZW5zEiguaWRlbnRpdHkudjEuRGVsZXRlUHJvdmlkZXJUb2tlbnNSZXF1ZXN0GikuaWRlbnRpdHkudjEuRGVsZXRlUHJvdmlkZXJUb2tlbnNSZXNwb25zZRJlChJTdGFydFByb3ZpZGVyTG9naW4SJi5pZGVudGl0eS52MS5TdGFydFByb3ZpZGVyTG9naW5SZXF1ZXN0GicuaWRlbnRpdHkudjEuU3RhcnRQcm92aWRlckxvZ2luUmVzcG9uc2USaAoTRmluaXNoUHJvdmlkZXJMb2dpbhInLmlkZW50aXR5LnYxLkZpbmlzaFByb3ZpZGVyTG9naW5SZXF1ZXN0GiguaWRlbnRpdHkudjEuRmluaXNoUHJvdmlkZXJMb2dpblJlc3BvbnNlQj1aO2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9pZGVudGl0eS92MTtpZGVudGl0eXYxYgZwcm90bzM", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_publish_v1_publish]);
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Describes the message identity.v1.AdminUser.
|
|
@@ -1489,33 +1489,61 @@ export const StoreProviderTokenRequestSchema = /*@__PURE__*/
|
|
|
1489
1489
|
export const StoreProviderTokenResponseSchema = /*@__PURE__*/
|
|
1490
1490
|
messageDesc(file_identity_v1_identity, 210);
|
|
1491
1491
|
|
|
1492
|
+
/**
|
|
1493
|
+
* Describes the message identity.v1.StartProviderLoginRequest.
|
|
1494
|
+
* Use `create(StartProviderLoginRequestSchema)` to create a new message.
|
|
1495
|
+
*/
|
|
1496
|
+
export const StartProviderLoginRequestSchema = /*@__PURE__*/
|
|
1497
|
+
messageDesc(file_identity_v1_identity, 211);
|
|
1498
|
+
|
|
1499
|
+
/**
|
|
1500
|
+
* Describes the message identity.v1.StartProviderLoginResponse.
|
|
1501
|
+
* Use `create(StartProviderLoginResponseSchema)` to create a new message.
|
|
1502
|
+
*/
|
|
1503
|
+
export const StartProviderLoginResponseSchema = /*@__PURE__*/
|
|
1504
|
+
messageDesc(file_identity_v1_identity, 212);
|
|
1505
|
+
|
|
1506
|
+
/**
|
|
1507
|
+
* Describes the message identity.v1.FinishProviderLoginRequest.
|
|
1508
|
+
* Use `create(FinishProviderLoginRequestSchema)` to create a new message.
|
|
1509
|
+
*/
|
|
1510
|
+
export const FinishProviderLoginRequestSchema = /*@__PURE__*/
|
|
1511
|
+
messageDesc(file_identity_v1_identity, 213);
|
|
1512
|
+
|
|
1513
|
+
/**
|
|
1514
|
+
* Describes the message identity.v1.FinishProviderLoginResponse.
|
|
1515
|
+
* Use `create(FinishProviderLoginResponseSchema)` to create a new message.
|
|
1516
|
+
*/
|
|
1517
|
+
export const FinishProviderLoginResponseSchema = /*@__PURE__*/
|
|
1518
|
+
messageDesc(file_identity_v1_identity, 214);
|
|
1519
|
+
|
|
1492
1520
|
/**
|
|
1493
1521
|
* Describes the message identity.v1.GetProviderTokenRequest.
|
|
1494
1522
|
* Use `create(GetProviderTokenRequestSchema)` to create a new message.
|
|
1495
1523
|
*/
|
|
1496
1524
|
export const GetProviderTokenRequestSchema = /*@__PURE__*/
|
|
1497
|
-
messageDesc(file_identity_v1_identity,
|
|
1525
|
+
messageDesc(file_identity_v1_identity, 215);
|
|
1498
1526
|
|
|
1499
1527
|
/**
|
|
1500
1528
|
* Describes the message identity.v1.GetProviderTokenResponse.
|
|
1501
1529
|
* Use `create(GetProviderTokenResponseSchema)` to create a new message.
|
|
1502
1530
|
*/
|
|
1503
1531
|
export const GetProviderTokenResponseSchema = /*@__PURE__*/
|
|
1504
|
-
messageDesc(file_identity_v1_identity,
|
|
1532
|
+
messageDesc(file_identity_v1_identity, 216);
|
|
1505
1533
|
|
|
1506
1534
|
/**
|
|
1507
1535
|
* Describes the message identity.v1.DeleteProviderTokensRequest.
|
|
1508
1536
|
* Use `create(DeleteProviderTokensRequestSchema)` to create a new message.
|
|
1509
1537
|
*/
|
|
1510
1538
|
export const DeleteProviderTokensRequestSchema = /*@__PURE__*/
|
|
1511
|
-
messageDesc(file_identity_v1_identity,
|
|
1539
|
+
messageDesc(file_identity_v1_identity, 217);
|
|
1512
1540
|
|
|
1513
1541
|
/**
|
|
1514
1542
|
* Describes the message identity.v1.DeleteProviderTokensResponse.
|
|
1515
1543
|
* Use `create(DeleteProviderTokensResponseSchema)` to create a new message.
|
|
1516
1544
|
*/
|
|
1517
1545
|
export const DeleteProviderTokensResponseSchema = /*@__PURE__*/
|
|
1518
|
-
messageDesc(file_identity_v1_identity,
|
|
1546
|
+
messageDesc(file_identity_v1_identity, 218);
|
|
1519
1547
|
|
|
1520
1548
|
/**
|
|
1521
1549
|
* Describes the enum identity.v1.AdminUserStatus.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
// @ts-nocheck
|
|
5
5
|
|
|
6
|
-
import { BatchPublishVersionsRequest, BatchPublishVersionsResponse, BatchRecordOperationsRequest, BatchRecordOperationsResponse, BatchResolveRecordsRequest, BatchResolveRecordsResponse, BulkUpdateRecordsRequest, BulkUpdateRecordsResponse, CancelScheduledRecordPublishRequest, CancelScheduledRecordPublishResponse, CheckLookupAvailabilityRequest, CheckLookupAvailabilityResponse, CreateRecordRequest, CreateRecordResponse, CreateVariantRequest, CreateVariantResponse, CreateVersionRequest, CreateVersionResponse, DeleteEmbeddingsRequest, DeleteEmbeddingsResponse, DeleteRecordRequest, DeleteRecordResponse, DeleteVariantRequest, DeleteVariantResponse, DuplicateRecordRequest, DuplicateRecordResponse, DuplicateRecordsBulkRequest, DuplicateRecordsBulkResponse, FindSimilarRecordsRequest, FindSimilarRecordsResponse, GetEmbeddingStatsRequest, GetEmbeddingStatsResponse, GetRecordByKeyOrIdRequest, GetRecordByKeyOrIdResponse, GetRecordByKeyRequest, GetRecordByKeyResponse, GetRecordEmbeddingsRequest, GetRecordEmbeddingsResponse, GetRecordRequest, GetRecordResponse, GetScheduledPublishRequest, GetScheduledPublishResponse, GlobalSearchRequest, GlobalSearchResponse, ListDraftVersionsRequest, ListDraftVersionsResponse, ListLookupConflictsRequest, ListLookupConflictsResponse, ListRecordsRequest, ListRecordsResponse, ListRecordVariantsRequest, ListRecordVariantsResponse, ListRecordVersionsRequest, ListRecordVersionsResponse, ListScheduledPublishesRequest, ListScheduledPublishesResponse, LookupRecordModelsRequest, LookupRecordModelsResponse, LookupRecordRequest, LookupRecordResponse, PublishVersionRequest, PublishVersionResponse, RebuildModelLookupsRequest, RebuildModelLookupsResponse, RevertToVersionRequest, RevertToVersionResponse, SaveContentRequest, SaveContentResponse, ScheduleRecordPublishRequest, ScheduleRecordPublishResponse, SearchEmbeddingsRequest, SearchEmbeddingsResponse, SetDefaultVariantRequest, SetDefaultVariantResponse, UnpublishRecordRequest, UnpublishRecordResponse, UpdateRecordRequest, UpdateRecordResponse, UpdateVariantRequest, UpdateVariantResponse, UpsertRecordRequest, UpsertRecordResponse, WriteEmbeddingsRequest, WriteEmbeddingsResponse } from "./records_pbjs";
|
|
6
|
+
import { BatchPublishVersionsRequest, BatchPublishVersionsResponse, BatchRecordOperationsRequest, BatchRecordOperationsResponse, BatchResolveRecordsRequest, BatchResolveRecordsResponse, BulkUpdateRecordsRequest, BulkUpdateRecordsResponse, CancelScheduledRecordPublishRequest, CancelScheduledRecordPublishResponse, CheckLookupAvailabilityRequest, CheckLookupAvailabilityResponse, CreateRecordRequest, CreateRecordResponse, CreateVariantRequest, CreateVariantResponse, CreateVersionRequest, CreateVersionResponse, DeleteEmbeddingsRequest, DeleteEmbeddingsResponse, DeleteRecordRequest, DeleteRecordResponse, DeleteVariantRequest, DeleteVariantResponse, DuplicateRecordRequest, DuplicateRecordResponse, DuplicateRecordsBulkRequest, DuplicateRecordsBulkResponse, EnqueueGenerateEmbeddingRequest, EnqueueGenerateEmbeddingResponse, FindSimilarRecordsRequest, FindSimilarRecordsResponse, GetEmbeddingStatsRequest, GetEmbeddingStatsResponse, GetRecordByKeyOrIdRequest, GetRecordByKeyOrIdResponse, GetRecordByKeyRequest, GetRecordByKeyResponse, GetRecordEmbeddingsRequest, GetRecordEmbeddingsResponse, GetRecordRequest, GetRecordResponse, GetScheduledPublishRequest, GetScheduledPublishResponse, GlobalSearchRequest, GlobalSearchResponse, ListDraftVersionsRequest, ListDraftVersionsResponse, ListLookupConflictsRequest, ListLookupConflictsResponse, ListRecordsRequest, ListRecordsResponse, ListRecordVariantsRequest, ListRecordVariantsResponse, ListRecordVersionsRequest, ListRecordVersionsResponse, ListScheduledPublishesRequest, ListScheduledPublishesResponse, LookupRecordModelsRequest, LookupRecordModelsResponse, LookupRecordRequest, LookupRecordResponse, PublishVersionRequest, PublishVersionResponse, RebuildModelLookupsRequest, RebuildModelLookupsResponse, RevertToVersionRequest, RevertToVersionResponse, SaveContentRequest, SaveContentResponse, ScheduleRecordPublishRequest, ScheduleRecordPublishResponse, SearchEmbeddingsRequest, SearchEmbeddingsResponse, SetDefaultVariantRequest, SetDefaultVariantResponse, UnpublishRecordRequest, UnpublishRecordResponse, UpdateRecordRequest, UpdateRecordResponse, UpdateVariantRequest, UpdateVariantResponse, UpsertRecordRequest, UpsertRecordResponse, WriteEmbeddingsRequest, WriteEmbeddingsResponse } from "./records_pbjs";
|
|
7
7
|
import { MethodKind } from "@bufbuild/protobuf";
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -414,6 +414,15 @@ export declare const RecordsService: {
|
|
|
414
414
|
readonly O: typeof SearchEmbeddingsResponse,
|
|
415
415
|
readonly kind: MethodKind.Unary,
|
|
416
416
|
},
|
|
417
|
+
/**
|
|
418
|
+
* @generated from rpc records.v1.RecordsService.EnqueueGenerateEmbedding
|
|
419
|
+
*/
|
|
420
|
+
readonly enqueueGenerateEmbedding: {
|
|
421
|
+
readonly name: "EnqueueGenerateEmbedding",
|
|
422
|
+
readonly I: typeof EnqueueGenerateEmbeddingRequest,
|
|
423
|
+
readonly O: typeof EnqueueGenerateEmbeddingResponse,
|
|
424
|
+
readonly kind: MethodKind.Unary,
|
|
425
|
+
},
|
|
417
426
|
}
|
|
418
427
|
};
|
|
419
428
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
// @ts-nocheck
|
|
5
5
|
|
|
6
|
-
import { BatchPublishVersionsRequest, BatchPublishVersionsResponse, BatchRecordOperationsRequest, BatchRecordOperationsResponse, BatchResolveRecordsRequest, BatchResolveRecordsResponse, BulkUpdateRecordsRequest, BulkUpdateRecordsResponse, CancelScheduledRecordPublishRequest, CancelScheduledRecordPublishResponse, CheckLookupAvailabilityRequest, CheckLookupAvailabilityResponse, CreateRecordRequest, CreateRecordResponse, CreateVariantRequest, CreateVariantResponse, CreateVersionRequest, CreateVersionResponse, DeleteEmbeddingsRequest, DeleteEmbeddingsResponse, DeleteRecordRequest, DeleteRecordResponse, DeleteVariantRequest, DeleteVariantResponse, DuplicateRecordRequest, DuplicateRecordResponse, DuplicateRecordsBulkRequest, DuplicateRecordsBulkResponse, FindSimilarRecordsRequest, FindSimilarRecordsResponse, GetEmbeddingStatsRequest, GetEmbeddingStatsResponse, GetRecordByKeyOrIdRequest, GetRecordByKeyOrIdResponse, GetRecordByKeyRequest, GetRecordByKeyResponse, GetRecordEmbeddingsRequest, GetRecordEmbeddingsResponse, GetRecordRequest, GetRecordResponse, GetScheduledPublishRequest, GetScheduledPublishResponse, GlobalSearchRequest, GlobalSearchResponse, ListDraftVersionsRequest, ListDraftVersionsResponse, ListLookupConflictsRequest, ListLookupConflictsResponse, ListRecordsRequest, ListRecordsResponse, ListRecordVariantsRequest, ListRecordVariantsResponse, ListRecordVersionsRequest, ListRecordVersionsResponse, ListScheduledPublishesRequest, ListScheduledPublishesResponse, LookupRecordModelsRequest, LookupRecordModelsResponse, LookupRecordRequest, LookupRecordResponse, PublishVersionRequest, PublishVersionResponse, RebuildModelLookupsRequest, RebuildModelLookupsResponse, RevertToVersionRequest, RevertToVersionResponse, SaveContentRequest, SaveContentResponse, ScheduleRecordPublishRequest, ScheduleRecordPublishResponse, SearchEmbeddingsRequest, SearchEmbeddingsResponse, SetDefaultVariantRequest, SetDefaultVariantResponse, UnpublishRecordRequest, UnpublishRecordResponse, UpdateRecordRequest, UpdateRecordResponse, UpdateVariantRequest, UpdateVariantResponse, UpsertRecordRequest, UpsertRecordResponse, WriteEmbeddingsRequest, WriteEmbeddingsResponse } from "./records_pbjs";
|
|
6
|
+
import { BatchPublishVersionsRequest, BatchPublishVersionsResponse, BatchRecordOperationsRequest, BatchRecordOperationsResponse, BatchResolveRecordsRequest, BatchResolveRecordsResponse, BulkUpdateRecordsRequest, BulkUpdateRecordsResponse, CancelScheduledRecordPublishRequest, CancelScheduledRecordPublishResponse, CheckLookupAvailabilityRequest, CheckLookupAvailabilityResponse, CreateRecordRequest, CreateRecordResponse, CreateVariantRequest, CreateVariantResponse, CreateVersionRequest, CreateVersionResponse, DeleteEmbeddingsRequest, DeleteEmbeddingsResponse, DeleteRecordRequest, DeleteRecordResponse, DeleteVariantRequest, DeleteVariantResponse, DuplicateRecordRequest, DuplicateRecordResponse, DuplicateRecordsBulkRequest, DuplicateRecordsBulkResponse, EnqueueGenerateEmbeddingRequest, EnqueueGenerateEmbeddingResponse, FindSimilarRecordsRequest, FindSimilarRecordsResponse, GetEmbeddingStatsRequest, GetEmbeddingStatsResponse, GetRecordByKeyOrIdRequest, GetRecordByKeyOrIdResponse, GetRecordByKeyRequest, GetRecordByKeyResponse, GetRecordEmbeddingsRequest, GetRecordEmbeddingsResponse, GetRecordRequest, GetRecordResponse, GetScheduledPublishRequest, GetScheduledPublishResponse, GlobalSearchRequest, GlobalSearchResponse, ListDraftVersionsRequest, ListDraftVersionsResponse, ListLookupConflictsRequest, ListLookupConflictsResponse, ListRecordsRequest, ListRecordsResponse, ListRecordVariantsRequest, ListRecordVariantsResponse, ListRecordVersionsRequest, ListRecordVersionsResponse, ListScheduledPublishesRequest, ListScheduledPublishesResponse, LookupRecordModelsRequest, LookupRecordModelsResponse, LookupRecordRequest, LookupRecordResponse, PublishVersionRequest, PublishVersionResponse, RebuildModelLookupsRequest, RebuildModelLookupsResponse, RevertToVersionRequest, RevertToVersionResponse, SaveContentRequest, SaveContentResponse, ScheduleRecordPublishRequest, ScheduleRecordPublishResponse, SearchEmbeddingsRequest, SearchEmbeddingsResponse, SetDefaultVariantRequest, SetDefaultVariantResponse, UnpublishRecordRequest, UnpublishRecordResponse, UpdateRecordRequest, UpdateRecordResponse, UpdateVariantRequest, UpdateVariantResponse, UpsertRecordRequest, UpsertRecordResponse, WriteEmbeddingsRequest, WriteEmbeddingsResponse } from "./records_pbjs";
|
|
7
7
|
import { MethodKind } from "@bufbuild/protobuf";
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -414,6 +414,15 @@ export const RecordsService = {
|
|
|
414
414
|
O: SearchEmbeddingsResponse,
|
|
415
415
|
kind: MethodKind.Unary,
|
|
416
416
|
},
|
|
417
|
+
/**
|
|
418
|
+
* @generated from rpc records.v1.RecordsService.EnqueueGenerateEmbedding
|
|
419
|
+
*/
|
|
420
|
+
enqueueGenerateEmbedding: {
|
|
421
|
+
name: "EnqueueGenerateEmbedding",
|
|
422
|
+
I: EnqueueGenerateEmbeddingRequest,
|
|
423
|
+
O: EnqueueGenerateEmbeddingResponse,
|
|
424
|
+
kind: MethodKind.Unary,
|
|
425
|
+
},
|
|
417
426
|
}
|
|
418
427
|
};
|
|
419
428
|
|