@eide/foir-proto-ts 0.43.0 → 0.44.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eide/foir-proto-ts",
3
- "version": "0.43.0",
3
+ "version": "0.44.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./analytics/v1/analytics_pb": "./src/analytics/v1/analytics_pb.js",
@@ -687,30 +687,57 @@ export declare type GetExperimentConversionsResponse = Message<"analytics.v1.Get
687
687
  export declare const GetExperimentConversionsResponseSchema: GenMessage<GetExperimentConversionsResponse>;
688
688
 
689
689
  /**
690
- * @generated from message analytics.v1.FunnelStep
690
+ * FunnelStepStat is one (step, variant) cell in the funnel breakdown.
691
+ * step_index is 0-based against the experiment's declared funnel_steps in
692
+ * order. unique_count is the number of distinct identities (customer_id
693
+ * or viewer_key, whichever the conversion event carried) who recorded an
694
+ * event matching this step. drop_off_rate is computed against the same
695
+ * variant's previous step; for step_index=0 it is always 0.
696
+ *
697
+ * @generated from message analytics.v1.FunnelStepStat
691
698
  */
692
- export declare type FunnelStep = Message<"analytics.v1.FunnelStep"> & {
699
+ export declare type FunnelStepStat = Message<"analytics.v1.FunnelStepStat"> & {
700
+ /**
701
+ * @generated from field: string variant_key = 1;
702
+ */
703
+ variantKey: string;
704
+
693
705
  /**
694
- * @generated from field: string step_name = 1;
706
+ * @generated from field: int32 step_index = 2;
707
+ */
708
+ stepIndex: number;
709
+
710
+ /**
711
+ * @generated from field: string step_key = 3;
712
+ */
713
+ stepKey: string;
714
+
715
+ /**
716
+ * @generated from field: string step_name = 4;
695
717
  */
696
718
  stepName: string;
697
719
 
698
720
  /**
699
- * @generated from field: int64 count = 2;
721
+ * @generated from field: int64 unique_count = 5;
722
+ */
723
+ uniqueCount: bigint;
724
+
725
+ /**
726
+ * @generated from field: int64 event_count = 6;
700
727
  */
701
- count: bigint;
728
+ eventCount: bigint;
702
729
 
703
730
  /**
704
- * @generated from field: double drop_off_rate = 3;
731
+ * @generated from field: double drop_off_rate = 7;
705
732
  */
706
733
  dropOffRate: number;
707
734
  };
708
735
 
709
736
  /**
710
- * Describes the message analytics.v1.FunnelStep.
711
- * Use `create(FunnelStepSchema)` to create a new message.
737
+ * Describes the message analytics.v1.FunnelStepStat.
738
+ * Use `create(FunnelStepStatSchema)` to create a new message.
712
739
  */
713
- export declare const FunnelStepSchema: GenMessage<FunnelStep>;
740
+ export declare const FunnelStepStatSchema: GenMessage<FunnelStepStat>;
714
741
 
715
742
  /**
716
743
  * @generated from message analytics.v1.GetExperimentFunnelAnalysisRequest
@@ -743,9 +770,9 @@ export declare const GetExperimentFunnelAnalysisRequestSchema: GenMessage<GetExp
743
770
  */
744
771
  export declare type GetExperimentFunnelAnalysisResponse = Message<"analytics.v1.GetExperimentFunnelAnalysisResponse"> & {
745
772
  /**
746
- * @generated from field: repeated analytics.v1.FunnelStep steps = 1;
773
+ * @generated from field: repeated analytics.v1.FunnelStepStat stats = 1;
747
774
  */
748
- steps: FunnelStep[];
775
+ stats: FunnelStepStat[];
749
776
  };
750
777
 
751
778
  /**
@@ -9,7 +9,7 @@ import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bu
9
9
  * Describes the file analytics/v1/analytics.proto.
10
10
  */
11
11
  export const file_analytics_v1_analytics = /*@__PURE__*/
12
- fileDesc("ChxhbmFseXRpY3MvdjEvYW5hbHl0aWNzLnByb3RvEgxhbmFseXRpY3MudjEiogEKEEFuYWx5dGljc1N1bW1hcnkSFQoNdG90YWxfcmVjb3JkcxgBIAEoBRIUCgx0b3RhbF9tb2RlbHMYAiABKAUSFwoPdG90YWxfY3VzdG9tZXJzGAMgASgFEhMKC3RvdGFsX3VzZXJzGAQgASgFEhoKEmFjdGl2ZV9leHBlcmltZW50cxgFIAEoBRIXCg9hY3RpdmVfc2VnbWVudHMYBiABKAUiKQoKVHJlbmRQb2ludBIMCgRkYXRlGAEgASgJEg0KBXZhbHVlGAIgASgDIi4KEERpc3RyaWJ1dGlvbkl0ZW0SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDInAKD1NlY3VyaXR5U3VtbWFyeRIUCgx0b3RhbF9sb2dpbnMYASABKAUSFQoNZmFpbGVkX2xvZ2lucxgCIAEoBRIYChBhY2NvdW50X2xvY2tvdXRzGAMgASgFEhYKDnN1c3BpY2lvdXNfaXBzGAQgASgFIm4KD1N1c3BpY2lvdXNMb2dpbhINCgVlbWFpbBgBIAEoCRIQCghpcF9jb3VudBgCIAEoBRILCgNpcHMYAyADKAkSLQoJbGFzdF9zZWVuGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJiCgtGYWlsZWRMb2dpbhISCgppZGVudGlmaWVyGAEgASgJEg0KBWNvdW50GAIgASgFEjAKDGxhc3RfYXR0ZW1wdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAibgoOQWNjb3VudExvY2tvdXQSDQoFZW1haWwYASABKAkSLQoJbG9ja2VkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBITCgZyZWFzb24YAyABKAlIAIgBAUIJCgdfcmVhc29uIogBChpHZXRBbmFseXRpY3NTdW1tYXJ5UmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQgcKBV9mcm9tQgUKA190byJOChtHZXRBbmFseXRpY3NTdW1tYXJ5UmVzcG9uc2USLwoHc3VtbWFyeRgBIAEoCzIeLmFuYWx5dGljcy52MS5BbmFseXRpY3NTdW1tYXJ5IrcBCg9HZXRUcmVuZFJlcXVlc3QSDgoGbWV0cmljGAEgASgJEi0KBGZyb20YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESKwoCdG8YAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESGAoLZ3JhbnVsYXJpdHkYBCABKAlIAogBAUIHCgVfZnJvbUIFCgNfdG9CDgoMX2dyYW51bGFyaXR5IjwKEEdldFRyZW5kUmVzcG9uc2USKAoGcG9pbnRzGAEgAygLMhguYW5hbHl0aWNzLnYxLlRyZW5kUG9pbnQiNwoWR2V0RGlzdHJpYnV0aW9uUmVxdWVzdBIOCgZtZXRyaWMYASABKAkSDQoFbGltaXQYCiABKAUiSAoXR2V0RGlzdHJpYnV0aW9uUmVzcG9uc2USLQoFaXRlbXMYASADKAsyHi5hbmFseXRpY3MudjEuRGlzdHJpYnV0aW9uSXRlbSKtAQoZR2V0U2VjdXJpdHlTdW1tYXJ5UmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhYKCXRlbmFudF9pZBgDIAEoCUgCiAEBQgcKBV9mcm9tQgUKA190b0IMCgpfdGVuYW50X2lkIkwKGkdldFNlY3VyaXR5U3VtbWFyeVJlc3BvbnNlEi4KB3N1bW1hcnkYASABKAsyHS5hbmFseXRpY3MudjEuU2VjdXJpdHlTdW1tYXJ5IlEKGkdldFN1c3BpY2lvdXNMb2dpbnNSZXF1ZXN0Eg0KBWxpbWl0GAEgASgFEhYKCXRlbmFudF9pZBgCIAEoCUgAiAEBQgwKCl90ZW5hbnRfaWQiTAobR2V0U3VzcGljaW91c0xvZ2luc1Jlc3BvbnNlEi0KBmxvZ2lucxgBIAMoCzIdLmFuYWx5dGljcy52MS5TdXNwaWNpb3VzTG9naW4iZQoWR2V0RmFpbGVkTG9naW5zUmVxdWVzdBIPCgJieRgBIAEoCUgAiAEBEg0KBWxpbWl0GAogASgFEhYKCXRlbmFudF9pZBgDIAEoCUgBiAEBQgUKA19ieUIMCgpfdGVuYW50X2lkIkUKF0dldEZhaWxlZExvZ2luc1Jlc3BvbnNlEioKB2VudHJpZXMYASADKAsyGS5hbmFseXRpY3MudjEuRmFpbGVkTG9naW4iUAoZR2V0QWNjb3VudExvY2tvdXRzUmVxdWVzdBINCgVsaW1pdBgBIAEoBRIWCgl0ZW5hbnRfaWQYAiABKAlIAIgBAUIMCgpfdGVuYW50X2lkIkwKGkdldEFjY291bnRMb2Nrb3V0c1Jlc3BvbnNlEi4KCGxvY2tvdXRzGAEgAygLMhwuYW5hbHl0aWNzLnYxLkFjY291bnRMb2Nrb3V0IlwKFlZhcmlhbnRQZXJmb3JtYW5jZUl0ZW0SEwoLdmFyaWFudF9rZXkYASABKAkSEwoLcmVzb2x1dGlvbnMYAiABKAMSGAoQdW5pcXVlX2N1c3RvbWVycxgDIAEoAyKKAQocR2V0VmFyaWFudFBlcmZvcm1hbmNlUmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQgcKBV9mcm9tQgUKA190byJUCh1HZXRWYXJpYW50UGVyZm9ybWFuY2VSZXNwb25zZRIzCgVpdGVtcxgBIAMoCzIkLmFuYWx5dGljcy52MS5WYXJpYW50UGVyZm9ybWFuY2VJdGVtIlgKFVNlZ21lbnRFbmdhZ2VtZW50SXRlbRITCgtzZWdtZW50X2tleRgBIAEoCRIUCgxtZW1iZXJfY291bnQYAiABKAMSFAoMYWN0aXZlX2NvdW50GAMgASgDIokBChtHZXRTZWdtZW50RW5nYWdlbWVudFJlcXVlc3QSLQoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIrCgJ0bxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBAUIHCgVfZnJvbUIFCgNfdG8iUgocR2V0U2VnbWVudEVuZ2FnZW1lbnRSZXNwb25zZRIyCgVpdGVtcxgBIAMoCzIjLmFuYWx5dGljcy52MS5TZWdtZW50RW5nYWdlbWVudEl0ZW0idAoYRXhwZXJpbWVudENvbnZlcnNpb25JdGVtEhUKDWV4cGVyaW1lbnRfaWQYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkSEwoLY29udmVyc2lvbnMYAyABKAMSFwoPY29udmVyc2lvbl9yYXRlGAQgASgBIrsBCh9HZXRFeHBlcmltZW50Q29udmVyc2lvbnNSZXF1ZXN0EhoKDWV4cGVyaW1lbnRfaWQYASABKAlIAIgBARItCgRmcm9tGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEisKAnRvGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBQhAKDl9leHBlcmltZW50X2lkQgcKBV9mcm9tQgUKA190byJZCiBHZXRFeHBlcmltZW50Q29udmVyc2lvbnNSZXNwb25zZRI1CgVpdGVtcxgBIAMoCzImLmFuYWx5dGljcy52MS5FeHBlcmltZW50Q29udmVyc2lvbkl0ZW0iRQoKRnVubmVsU3RlcBIRCglzdGVwX25hbWUYASABKAkSDQoFY291bnQYAiABKAMSFQoNZHJvcF9vZmZfcmF0ZRgDIAEoASKnAQoiR2V0RXhwZXJpbWVudEZ1bm5lbEFuYWx5c2lzUmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJEi0KBGZyb20YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESKwoCdG8YAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQFCBwoFX2Zyb21CBQoDX3RvIk4KI0dldEV4cGVyaW1lbnRGdW5uZWxBbmFseXNpc1Jlc3BvbnNlEicKBXN0ZXBzGAEgAygLMhguYW5hbHl0aWNzLnYxLkZ1bm5lbFN0ZXAiggIKHFJlY29yZENvbnZlcnNpb25FdmVudFJlcXVlc3QSFgoOZXhwZXJpbWVudF9rZXkYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkSEgoKaXNfY29udHJvbBgDIAEoCBISCgpldmVudF9uYW1lGAQgASgJEhgKC2N1c3RvbWVyX2lkGAUgASgJSACIAQESFwoKdmlld2VyX2tleRgGIAEoCUgBiAEBEi4KCG1ldGFkYXRhGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBQg4KDF9jdXN0b21lcl9pZEINCgtfdmlld2VyX2tleUILCglfbWV0YWRhdGEiMAodUmVjb3JkQ29udmVyc2lvbkV2ZW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCDKaCgoQQW5hbHl0aWNzU2VydmljZRJqChNHZXRBbmFseXRpY3NTdW1tYXJ5EiguYW5hbHl0aWNzLnYxLkdldEFuYWx5dGljc1N1bW1hcnlSZXF1ZXN0GikuYW5hbHl0aWNzLnYxLkdldEFuYWx5dGljc1N1bW1hcnlSZXNwb25zZRJJCghHZXRUcmVuZBIdLmFuYWx5dGljcy52MS5HZXRUcmVuZFJlcXVlc3QaHi5hbmFseXRpY3MudjEuR2V0VHJlbmRSZXNwb25zZRJeCg9HZXREaXN0cmlidXRpb24SJC5hbmFseXRpY3MudjEuR2V0RGlzdHJpYnV0aW9uUmVxdWVzdBolLmFuYWx5dGljcy52MS5HZXREaXN0cmlidXRpb25SZXNwb25zZRJnChJHZXRTZWN1cml0eVN1bW1hcnkSJy5hbmFseXRpY3MudjEuR2V0U2VjdXJpdHlTdW1tYXJ5UmVxdWVzdBooLmFuYWx5dGljcy52MS5HZXRTZWN1cml0eVN1bW1hcnlSZXNwb25zZRJqChNHZXRTdXNwaWNpb3VzTG9naW5zEiguYW5hbHl0aWNzLnYxLkdldFN1c3BpY2lvdXNMb2dpbnNSZXF1ZXN0GikuYW5hbHl0aWNzLnYxLkdldFN1c3BpY2lvdXNMb2dpbnNSZXNwb25zZRJeCg9HZXRGYWlsZWRMb2dpbnMSJC5hbmFseXRpY3MudjEuR2V0RmFpbGVkTG9naW5zUmVxdWVzdBolLmFuYWx5dGljcy52MS5HZXRGYWlsZWRMb2dpbnNSZXNwb25zZRJnChJHZXRBY2NvdW50TG9ja291dHMSJy5hbmFseXRpY3MudjEuR2V0QWNjb3VudExvY2tvdXRzUmVxdWVzdBooLmFuYWx5dGljcy52MS5HZXRBY2NvdW50TG9ja291dHNSZXNwb25zZRJwChVHZXRWYXJpYW50UGVyZm9ybWFuY2USKi5hbmFseXRpY3MudjEuR2V0VmFyaWFudFBlcmZvcm1hbmNlUmVxdWVzdBorLmFuYWx5dGljcy52MS5HZXRWYXJpYW50UGVyZm9ybWFuY2VSZXNwb25zZRJtChRHZXRTZWdtZW50RW5nYWdlbWVudBIpLmFuYWx5dGljcy52MS5HZXRTZWdtZW50RW5nYWdlbWVudFJlcXVlc3QaKi5hbmFseXRpY3MudjEuR2V0U2VnbWVudEVuZ2FnZW1lbnRSZXNwb25zZRJ5ChhHZXRFeHBlcmltZW50Q29udmVyc2lvbnMSLS5hbmFseXRpY3MudjEuR2V0RXhwZXJpbWVudENvbnZlcnNpb25zUmVxdWVzdBouLmFuYWx5dGljcy52MS5HZXRFeHBlcmltZW50Q29udmVyc2lvbnNSZXNwb25zZRKCAQobR2V0RXhwZXJpbWVudEZ1bm5lbEFuYWx5c2lzEjAuYW5hbHl0aWNzLnYxLkdldEV4cGVyaW1lbnRGdW5uZWxBbmFseXNpc1JlcXVlc3QaMS5hbmFseXRpY3MudjEuR2V0RXhwZXJpbWVudEZ1bm5lbEFuYWx5c2lzUmVzcG9uc2UScAoVUmVjb3JkQ29udmVyc2lvbkV2ZW50EiouYW5hbHl0aWNzLnYxLlJlY29yZENvbnZlcnNpb25FdmVudFJlcXVlc3QaKy5hbmFseXRpY3MudjEuUmVjb3JkQ29udmVyc2lvbkV2ZW50UmVzcG9uc2VCP1o9Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL2FuYWx5dGljcy92MTthbmFseXRpY3N2MWIGcHJvdG8z", [file_google_protobuf_struct, file_google_protobuf_timestamp]);
12
+ fileDesc("ChxhbmFseXRpY3MvdjEvYW5hbHl0aWNzLnByb3RvEgxhbmFseXRpY3MudjEiogEKEEFuYWx5dGljc1N1bW1hcnkSFQoNdG90YWxfcmVjb3JkcxgBIAEoBRIUCgx0b3RhbF9tb2RlbHMYAiABKAUSFwoPdG90YWxfY3VzdG9tZXJzGAMgASgFEhMKC3RvdGFsX3VzZXJzGAQgASgFEhoKEmFjdGl2ZV9leHBlcmltZW50cxgFIAEoBRIXCg9hY3RpdmVfc2VnbWVudHMYBiABKAUiKQoKVHJlbmRQb2ludBIMCgRkYXRlGAEgASgJEg0KBXZhbHVlGAIgASgDIi4KEERpc3RyaWJ1dGlvbkl0ZW0SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDInAKD1NlY3VyaXR5U3VtbWFyeRIUCgx0b3RhbF9sb2dpbnMYASABKAUSFQoNZmFpbGVkX2xvZ2lucxgCIAEoBRIYChBhY2NvdW50X2xvY2tvdXRzGAMgASgFEhYKDnN1c3BpY2lvdXNfaXBzGAQgASgFIm4KD1N1c3BpY2lvdXNMb2dpbhINCgVlbWFpbBgBIAEoCRIQCghpcF9jb3VudBgCIAEoBRILCgNpcHMYAyADKAkSLQoJbGFzdF9zZWVuGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJiCgtGYWlsZWRMb2dpbhISCgppZGVudGlmaWVyGAEgASgJEg0KBWNvdW50GAIgASgFEjAKDGxhc3RfYXR0ZW1wdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAibgoOQWNjb3VudExvY2tvdXQSDQoFZW1haWwYASABKAkSLQoJbG9ja2VkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBITCgZyZWFzb24YAyABKAlIAIgBAUIJCgdfcmVhc29uIogBChpHZXRBbmFseXRpY3NTdW1tYXJ5UmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQgcKBV9mcm9tQgUKA190byJOChtHZXRBbmFseXRpY3NTdW1tYXJ5UmVzcG9uc2USLwoHc3VtbWFyeRgBIAEoCzIeLmFuYWx5dGljcy52MS5BbmFseXRpY3NTdW1tYXJ5IrcBCg9HZXRUcmVuZFJlcXVlc3QSDgoGbWV0cmljGAEgASgJEi0KBGZyb20YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESKwoCdG8YAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESGAoLZ3JhbnVsYXJpdHkYBCABKAlIAogBAUIHCgVfZnJvbUIFCgNfdG9CDgoMX2dyYW51bGFyaXR5IjwKEEdldFRyZW5kUmVzcG9uc2USKAoGcG9pbnRzGAEgAygLMhguYW5hbHl0aWNzLnYxLlRyZW5kUG9pbnQiNwoWR2V0RGlzdHJpYnV0aW9uUmVxdWVzdBIOCgZtZXRyaWMYASABKAkSDQoFbGltaXQYCiABKAUiSAoXR2V0RGlzdHJpYnV0aW9uUmVzcG9uc2USLQoFaXRlbXMYASADKAsyHi5hbmFseXRpY3MudjEuRGlzdHJpYnV0aW9uSXRlbSKtAQoZR2V0U2VjdXJpdHlTdW1tYXJ5UmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhYKCXRlbmFudF9pZBgDIAEoCUgCiAEBQgcKBV9mcm9tQgUKA190b0IMCgpfdGVuYW50X2lkIkwKGkdldFNlY3VyaXR5U3VtbWFyeVJlc3BvbnNlEi4KB3N1bW1hcnkYASABKAsyHS5hbmFseXRpY3MudjEuU2VjdXJpdHlTdW1tYXJ5IlEKGkdldFN1c3BpY2lvdXNMb2dpbnNSZXF1ZXN0Eg0KBWxpbWl0GAEgASgFEhYKCXRlbmFudF9pZBgCIAEoCUgAiAEBQgwKCl90ZW5hbnRfaWQiTAobR2V0U3VzcGljaW91c0xvZ2luc1Jlc3BvbnNlEi0KBmxvZ2lucxgBIAMoCzIdLmFuYWx5dGljcy52MS5TdXNwaWNpb3VzTG9naW4iZQoWR2V0RmFpbGVkTG9naW5zUmVxdWVzdBIPCgJieRgBIAEoCUgAiAEBEg0KBWxpbWl0GAogASgFEhYKCXRlbmFudF9pZBgDIAEoCUgBiAEBQgUKA19ieUIMCgpfdGVuYW50X2lkIkUKF0dldEZhaWxlZExvZ2luc1Jlc3BvbnNlEioKB2VudHJpZXMYASADKAsyGS5hbmFseXRpY3MudjEuRmFpbGVkTG9naW4iUAoZR2V0QWNjb3VudExvY2tvdXRzUmVxdWVzdBINCgVsaW1pdBgBIAEoBRIWCgl0ZW5hbnRfaWQYAiABKAlIAIgBAUIMCgpfdGVuYW50X2lkIkwKGkdldEFjY291bnRMb2Nrb3V0c1Jlc3BvbnNlEi4KCGxvY2tvdXRzGAEgAygLMhwuYW5hbHl0aWNzLnYxLkFjY291bnRMb2Nrb3V0IlwKFlZhcmlhbnRQZXJmb3JtYW5jZUl0ZW0SEwoLdmFyaWFudF9rZXkYASABKAkSEwoLcmVzb2x1dGlvbnMYAiABKAMSGAoQdW5pcXVlX2N1c3RvbWVycxgDIAEoAyKKAQocR2V0VmFyaWFudFBlcmZvcm1hbmNlUmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQgcKBV9mcm9tQgUKA190byJUCh1HZXRWYXJpYW50UGVyZm9ybWFuY2VSZXNwb25zZRIzCgVpdGVtcxgBIAMoCzIkLmFuYWx5dGljcy52MS5WYXJpYW50UGVyZm9ybWFuY2VJdGVtIlgKFVNlZ21lbnRFbmdhZ2VtZW50SXRlbRITCgtzZWdtZW50X2tleRgBIAEoCRIUCgxtZW1iZXJfY291bnQYAiABKAMSFAoMYWN0aXZlX2NvdW50GAMgASgDIokBChtHZXRTZWdtZW50RW5nYWdlbWVudFJlcXVlc3QSLQoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIrCgJ0bxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBAUIHCgVfZnJvbUIFCgNfdG8iUgocR2V0U2VnbWVudEVuZ2FnZW1lbnRSZXNwb25zZRIyCgVpdGVtcxgBIAMoCzIjLmFuYWx5dGljcy52MS5TZWdtZW50RW5nYWdlbWVudEl0ZW0idAoYRXhwZXJpbWVudENvbnZlcnNpb25JdGVtEhUKDWV4cGVyaW1lbnRfaWQYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkSEwoLY29udmVyc2lvbnMYAyABKAMSFwoPY29udmVyc2lvbl9yYXRlGAQgASgBIrsBCh9HZXRFeHBlcmltZW50Q29udmVyc2lvbnNSZXF1ZXN0EhoKDWV4cGVyaW1lbnRfaWQYASABKAlIAIgBARItCgRmcm9tGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEisKAnRvGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBQhAKDl9leHBlcmltZW50X2lkQgcKBV9mcm9tQgUKA190byJZCiBHZXRFeHBlcmltZW50Q29udmVyc2lvbnNSZXNwb25zZRI1CgVpdGVtcxgBIAMoCzImLmFuYWx5dGljcy52MS5FeHBlcmltZW50Q29udmVyc2lvbkl0ZW0ioAEKDkZ1bm5lbFN0ZXBTdGF0EhMKC3ZhcmlhbnRfa2V5GAEgASgJEhIKCnN0ZXBfaW5kZXgYAiABKAUSEAoIc3RlcF9rZXkYAyABKAkSEQoJc3RlcF9uYW1lGAQgASgJEhQKDHVuaXF1ZV9jb3VudBgFIAEoAxITCgtldmVudF9jb3VudBgGIAEoAxIVCg1kcm9wX29mZl9yYXRlGAcgASgBIqcBCiJHZXRFeHBlcmltZW50RnVubmVsQW5hbHlzaXNSZXF1ZXN0EhUKDWV4cGVyaW1lbnRfaWQYASABKAkSLQoEZnJvbRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIrCgJ0bxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBAUIHCgVfZnJvbUIFCgNfdG8iUgojR2V0RXhwZXJpbWVudEZ1bm5lbEFuYWx5c2lzUmVzcG9uc2USKwoFc3RhdHMYASADKAsyHC5hbmFseXRpY3MudjEuRnVubmVsU3RlcFN0YXQiggIKHFJlY29yZENvbnZlcnNpb25FdmVudFJlcXVlc3QSFgoOZXhwZXJpbWVudF9rZXkYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkSEgoKaXNfY29udHJvbBgDIAEoCBISCgpldmVudF9uYW1lGAQgASgJEhgKC2N1c3RvbWVyX2lkGAUgASgJSACIAQESFwoKdmlld2VyX2tleRgGIAEoCUgBiAEBEi4KCG1ldGFkYXRhGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBQg4KDF9jdXN0b21lcl9pZEINCgtfdmlld2VyX2tleUILCglfbWV0YWRhdGEiMAodUmVjb3JkQ29udmVyc2lvbkV2ZW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCDKaCgoQQW5hbHl0aWNzU2VydmljZRJqChNHZXRBbmFseXRpY3NTdW1tYXJ5EiguYW5hbHl0aWNzLnYxLkdldEFuYWx5dGljc1N1bW1hcnlSZXF1ZXN0GikuYW5hbHl0aWNzLnYxLkdldEFuYWx5dGljc1N1bW1hcnlSZXNwb25zZRJJCghHZXRUcmVuZBIdLmFuYWx5dGljcy52MS5HZXRUcmVuZFJlcXVlc3QaHi5hbmFseXRpY3MudjEuR2V0VHJlbmRSZXNwb25zZRJeCg9HZXREaXN0cmlidXRpb24SJC5hbmFseXRpY3MudjEuR2V0RGlzdHJpYnV0aW9uUmVxdWVzdBolLmFuYWx5dGljcy52MS5HZXREaXN0cmlidXRpb25SZXNwb25zZRJnChJHZXRTZWN1cml0eVN1bW1hcnkSJy5hbmFseXRpY3MudjEuR2V0U2VjdXJpdHlTdW1tYXJ5UmVxdWVzdBooLmFuYWx5dGljcy52MS5HZXRTZWN1cml0eVN1bW1hcnlSZXNwb25zZRJqChNHZXRTdXNwaWNpb3VzTG9naW5zEiguYW5hbHl0aWNzLnYxLkdldFN1c3BpY2lvdXNMb2dpbnNSZXF1ZXN0GikuYW5hbHl0aWNzLnYxLkdldFN1c3BpY2lvdXNMb2dpbnNSZXNwb25zZRJeCg9HZXRGYWlsZWRMb2dpbnMSJC5hbmFseXRpY3MudjEuR2V0RmFpbGVkTG9naW5zUmVxdWVzdBolLmFuYWx5dGljcy52MS5HZXRGYWlsZWRMb2dpbnNSZXNwb25zZRJnChJHZXRBY2NvdW50TG9ja291dHMSJy5hbmFseXRpY3MudjEuR2V0QWNjb3VudExvY2tvdXRzUmVxdWVzdBooLmFuYWx5dGljcy52MS5HZXRBY2NvdW50TG9ja291dHNSZXNwb25zZRJwChVHZXRWYXJpYW50UGVyZm9ybWFuY2USKi5hbmFseXRpY3MudjEuR2V0VmFyaWFudFBlcmZvcm1hbmNlUmVxdWVzdBorLmFuYWx5dGljcy52MS5HZXRWYXJpYW50UGVyZm9ybWFuY2VSZXNwb25zZRJtChRHZXRTZWdtZW50RW5nYWdlbWVudBIpLmFuYWx5dGljcy52MS5HZXRTZWdtZW50RW5nYWdlbWVudFJlcXVlc3QaKi5hbmFseXRpY3MudjEuR2V0U2VnbWVudEVuZ2FnZW1lbnRSZXNwb25zZRJ5ChhHZXRFeHBlcmltZW50Q29udmVyc2lvbnMSLS5hbmFseXRpY3MudjEuR2V0RXhwZXJpbWVudENvbnZlcnNpb25zUmVxdWVzdBouLmFuYWx5dGljcy52MS5HZXRFeHBlcmltZW50Q29udmVyc2lvbnNSZXNwb25zZRKCAQobR2V0RXhwZXJpbWVudEZ1bm5lbEFuYWx5c2lzEjAuYW5hbHl0aWNzLnYxLkdldEV4cGVyaW1lbnRGdW5uZWxBbmFseXNpc1JlcXVlc3QaMS5hbmFseXRpY3MudjEuR2V0RXhwZXJpbWVudEZ1bm5lbEFuYWx5c2lzUmVzcG9uc2UScAoVUmVjb3JkQ29udmVyc2lvbkV2ZW50EiouYW5hbHl0aWNzLnYxLlJlY29yZENvbnZlcnNpb25FdmVudFJlcXVlc3QaKy5hbmFseXRpY3MudjEuUmVjb3JkQ29udmVyc2lvbkV2ZW50UmVzcG9uc2VCP1o9Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL2FuYWx5dGljcy92MTthbmFseXRpY3N2MWIGcHJvdG8z", [file_google_protobuf_struct, file_google_protobuf_timestamp]);
13
13
 
14
14
  /**
15
15
  * Describes the message analytics.v1.AnalyticsSummary.
@@ -222,10 +222,10 @@ export const GetExperimentConversionsResponseSchema = /*@__PURE__*/
222
222
  messageDesc(file_analytics_v1_analytics, 29);
223
223
 
224
224
  /**
225
- * Describes the message analytics.v1.FunnelStep.
226
- * Use `create(FunnelStepSchema)` to create a new message.
225
+ * Describes the message analytics.v1.FunnelStepStat.
226
+ * Use `create(FunnelStepStatSchema)` to create a new message.
227
227
  */
228
- export const FunnelStepSchema = /*@__PURE__*/
228
+ export const FunnelStepStatSchema = /*@__PURE__*/
229
229
  messageDesc(file_analytics_v1_analytics, 30);
230
230
 
231
231
  /**
@@ -85,6 +85,11 @@ export declare const ExperimentVariantSchema: GenMessage<ExperimentVariant>;
85
85
  * An experiment with zero goals declared accepts any event_name (no
86
86
  * goal-match enforcement).
87
87
  *
88
+ * At most one goal per experiment may be marked is_primary=true. The primary
89
+ * goal is the metric the admin dashboard surfaces by default in the
90
+ * experiment list and uses to highlight winning variants; secondary goals
91
+ * are tracked but don't drive the headline number.
92
+ *
88
93
  * @generated from message experiments.v1.ExperimentGoal
89
94
  */
90
95
  export declare type ExperimentGoal = Message<"experiments.v1.ExperimentGoal"> & {
@@ -102,6 +107,11 @@ export declare type ExperimentGoal = Message<"experiments.v1.ExperimentGoal"> &
102
107
  * @generated from field: optional string description = 3;
103
108
  */
104
109
  description?: string | undefined;
110
+
111
+ /**
112
+ * @generated from field: bool is_primary = 4;
113
+ */
114
+ isPrimary: boolean;
105
115
  };
106
116
 
107
117
  /**
@@ -110,6 +120,43 @@ export declare type ExperimentGoal = Message<"experiments.v1.ExperimentGoal"> &
110
120
  */
111
121
  export declare const ExperimentGoalSchema: GenMessage<ExperimentGoal>;
112
122
 
123
+ /**
124
+ * ExperimentFunnelStep is one step in the conversion funnel for an
125
+ * experiment. Steps are evaluated in declaration order: a visitor counts
126
+ * toward step N's unique-count only after they've recorded an event
127
+ * matching some prior step's goal_key. Drop-off rate at step N is reported
128
+ * per variant relative to step N-1.
129
+ *
130
+ * goal_key is the event_name a recordConversion call must carry to advance
131
+ * the funnel. It need not match a top-level Experiment.goals entry — the
132
+ * funnel exists in parallel with goals and acts as its own accept-list for
133
+ * recordConversion when goals is empty.
134
+ *
135
+ * @generated from message experiments.v1.ExperimentFunnelStep
136
+ */
137
+ export declare type ExperimentFunnelStep = Message<"experiments.v1.ExperimentFunnelStep"> & {
138
+ /**
139
+ * @generated from field: string goal_key = 1;
140
+ */
141
+ goalKey: string;
142
+
143
+ /**
144
+ * @generated from field: string name = 2;
145
+ */
146
+ name: string;
147
+
148
+ /**
149
+ * @generated from field: optional string description = 3;
150
+ */
151
+ description?: string | undefined;
152
+ };
153
+
154
+ /**
155
+ * Describes the message experiments.v1.ExperimentFunnelStep.
156
+ * Use `create(ExperimentFunnelStepSchema)` to create a new message.
157
+ */
158
+ export declare const ExperimentFunnelStepSchema: GenMessage<ExperimentFunnelStep>;
159
+
113
160
  /**
114
161
  * @generated from message experiments.v1.Experiment
115
162
  */
@@ -168,6 +215,17 @@ export declare type Experiment = Message<"experiments.v1.Experiment"> & {
168
215
  */
169
216
  assignmentPersistence: string;
170
217
 
218
+ /**
219
+ * Mutual exclusion: experiments sharing a non-empty exclusion_group_key
220
+ * are mutually exclusive — a visitor bucketed into one of them is
221
+ * ineligible for the others. Empty/unset means the experiment runs
222
+ * independently and a visitor can be in it concurrently with any other
223
+ * experiment.
224
+ *
225
+ * @generated from field: optional string exclusion_group_key = 24;
226
+ */
227
+ exclusionGroupKey?: string | undefined;
228
+
171
229
  /**
172
230
  * Scheduling.
173
231
  *
@@ -192,6 +250,11 @@ export declare type Experiment = Message<"experiments.v1.Experiment"> & {
192
250
  */
193
251
  goals: ExperimentGoal[];
194
252
 
253
+ /**
254
+ * @generated from field: repeated experiments.v1.ExperimentFunnelStep funnel_steps = 37;
255
+ */
256
+ funnelSteps: ExperimentFunnelStep[];
257
+
195
258
  /**
196
259
  * Ownership.
197
260
  *
@@ -459,6 +522,16 @@ export declare type CreateExperimentRequest = Message<"experiments.v1.CreateExpe
459
522
  * @generated from field: repeated experiments.v1.ExperimentGoal goals = 10;
460
523
  */
461
524
  goals: ExperimentGoal[];
525
+
526
+ /**
527
+ * @generated from field: repeated experiments.v1.ExperimentFunnelStep funnel_steps = 11;
528
+ */
529
+ funnelSteps: ExperimentFunnelStep[];
530
+
531
+ /**
532
+ * @generated from field: optional string exclusion_group_key = 12;
533
+ */
534
+ exclusionGroupKey?: string | undefined;
462
535
  };
463
536
 
464
537
  /**
@@ -660,6 +733,30 @@ export declare type UpdateExperimentRequest = Message<"experiments.v1.UpdateExpe
660
733
  * @generated from field: bool goals_clear = 11;
661
734
  */
662
735
  goalsClear: boolean;
736
+
737
+ /**
738
+ * Same pattern for funnel_steps and exclusion_group_key — repeated and
739
+ * optional scalar fields need an explicit clear flag because the unset/
740
+ * empty wire shape is indistinguishable from "no change."
741
+ *
742
+ * @generated from field: repeated experiments.v1.ExperimentFunnelStep funnel_steps = 12;
743
+ */
744
+ funnelSteps: ExperimentFunnelStep[];
745
+
746
+ /**
747
+ * @generated from field: bool funnel_steps_clear = 13;
748
+ */
749
+ funnelStepsClear: boolean;
750
+
751
+ /**
752
+ * @generated from field: optional string exclusion_group_key = 14;
753
+ */
754
+ exclusionGroupKey?: string | undefined;
755
+
756
+ /**
757
+ * @generated from field: bool exclusion_group_key_clear = 15;
758
+ */
759
+ exclusionGroupKeyClear: boolean;
663
760
  };
664
761
 
665
762
  /**
@@ -10,7 +10,7 @@ import { file_expressions_v1_expressions } from "../../expressions/v1/expression
10
10
  * Describes the file experiments/v1/experiments.proto.
11
11
  */
12
12
  export const file_experiments_v1_experiments = /*@__PURE__*/
13
- fileDesc("CiBleHBlcmltZW50cy92MS9leHBlcmltZW50cy5wcm90bxIOZXhwZXJpbWVudHMudjEiswEKE0V4cGVyaW1lbnRUYXJnZXRpbmcSDAoEdHlwZRgBIAEoCRIXCgpzZWdtZW50X2lkGAIgASgJSACIAQESGAoLc2VnbWVudF9rZXkYAyABKAlIAYgBARIyCgVydWxlcxgEIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAKIAQFCDQoLX3NlZ21lbnRfaWRCDgoMX3NlZ21lbnRfa2V5QggKBl9ydWxlcyJ4ChFFeHBlcmltZW50VmFyaWFudBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIPCgdwZXJjZW50GAMgASgFEiwKBmNvbmZpZxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBAUIJCgdfY29uZmlnIlUKDkV4cGVyaW1lbnRHb2FsEgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQFCDgoMX2Rlc2NyaXB0aW9uIo0GCgpFeHBlcmltZW50EgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESMAoGc3RhdHVzGAogASgOMiAuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFN0YXR1cxIRCglpc19hY3RpdmUYCyABKAgSNgoJdGFyZ2V0aW5nGBQgASgLMiMuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFRhcmdldGluZxIXCg9jb250cm9sX3BlcmNlbnQYFSABKAUSMwoIdmFyaWFudHMYFiADKAsyIS5leHBlcmltZW50cy52MS5FeHBlcmltZW50VmFyaWFudBIeChZhc3NpZ25tZW50X3BlcnNpc3RlbmNlGBcgASgJEjMKCnN0YXJ0X2RhdGUYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESMQoIZW5kX2RhdGUYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESLQoHbWV0cmljcxgjIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARItCgVnb2FscxgkIAMoCzIeLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRHb2FsEhEKCXRlbmFudF9pZBgoIAEoCRISCgpwcm9qZWN0X2lkGCkgASgJEhcKCmNyZWF0ZWRfYnkYLSABKAlIBIgBARIXCgp1cGRhdGVkX2J5GC4gASgJSAWIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX2Rlc2NyaXB0aW9uQg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIKCghfbWV0cmljc0INCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSLUAwoURXhwZXJpbWVudEFzc2lnbm1lbnQSCgoCaWQYASABKAkSFQoNZXhwZXJpbWVudF9pZBgCIAEoCRIYCgtjdXN0b21lcl9pZBgDIAEoCUgAiAEBEhMKC3ZhcmlhbnRfa2V5GAQgASgJEhkKEWFzc2lnbm1lbnRfbWV0aG9kGAUgASgJEhYKDmV4cGVyaW1lbnRfa2V5GAYgASgJEhcKCnZpZXdlcl9rZXkYByABKAlIAYgBARIRCgl0ZW5hbnRfaWQYCiABKAkSEgoKcHJvamVjdF9pZBgLIAEoCRIvCgthc3NpZ25lZF9hdBgUIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMQoNZmlyc3Rfc2Vlbl9hdBgVIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMAoMbGFzdF9zZWVuX2F0GBYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpleHBpcmVzX2F0GBcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBQg4KDF9jdXN0b21lcl9pZEINCgtfdmlld2VyX2tleUINCgtfZXhwaXJlc19hdCJFChVFeHBlcmltZW50RGVjbGFyYXRpb24SFgoOZXhwZXJpbWVudF9rZXkYASABKAkSFAoMdmFyaWFudF9rZXlzGAIgAygJIqcBCgxWYXJpYW50U3RhdHMSEwoLdmFyaWFudF9rZXkYASABKAkSGAoQYXNzaWdubWVudF9jb3VudBgCIAEoBRIXCg9jb252ZXJzaW9uX3JhdGUYAyABKAESOAoSYWRkaXRpb25hbF9tZXRyaWNzGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBQhUKE19hZGRpdGlvbmFsX21ldHJpY3MiYQoPRXhwZXJpbWVudFN0YXRzEjMKDXZhcmlhbnRfc3RhdHMYASADKAsyHC5leHBlcmltZW50cy52MS5WYXJpYW50U3RhdHMSGQoRdG90YWxfYXNzaWdubWVudHMYAiABKAUigwQKF0NyZWF0ZUV4cGVyaW1lbnRSZXF1ZXN0EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESOwoJdGFyZ2V0aW5nGAQgASgLMiMuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFRhcmdldGluZ0gBiAEBEhwKD2NvbnRyb2xfcGVyY2VudBgFIAEoBUgCiAEBEjMKCHZhcmlhbnRzGAYgAygLMiEuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFZhcmlhbnQSMwoKc3RhcnRfZGF0ZRgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARIxCghlbmRfZGF0ZRgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIjChZhc3NpZ25tZW50X3BlcnNpc3RlbmNlGAkgASgJSAWIAQESLQoFZ29hbHMYCiADKAsyHi5leHBlcmltZW50cy52MS5FeHBlcmltZW50R29hbEIOCgxfZGVzY3JpcHRpb25CDAoKX3RhcmdldGluZ0ISChBfY29udHJvbF9wZXJjZW50Qg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIZChdfYXNzaWdubWVudF9wZXJzaXN0ZW5jZSJKChhDcmVhdGVFeHBlcmltZW50UmVzcG9uc2USLgoKZXhwZXJpbWVudBgBIAEoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQiIgoUR2V0RXhwZXJpbWVudFJlcXVlc3QSCgoCaWQYASABKAkiRwoVR2V0RXhwZXJpbWVudFJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50IigKGUdldEV4cGVyaW1lbnRCeUtleVJlcXVlc3QSCwoDa2V5GAEgASgJIkwKGkdldEV4cGVyaW1lbnRCeUtleVJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50Ip8BChZMaXN0RXhwZXJpbWVudHNSZXF1ZXN0EjUKBnN0YXR1cxgBIAEoDjIgLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRTdGF0dXNIAIgBARIWCglpc19hY3RpdmUYAiABKAhIAYgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCCQoHX3N0YXR1c0IMCgpfaXNfYWN0aXZlIlkKF0xpc3RFeHBlcmltZW50c1Jlc3BvbnNlEi8KC2V4cGVyaW1lbnRzGAEgAygLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudBINCgV0b3RhbBgCIAEoBSKlBAoXVXBkYXRlRXhwZXJpbWVudFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESOwoJdGFyZ2V0aW5nGAQgASgLMiMuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFRhcmdldGluZ0gCiAEBEhwKD2NvbnRyb2xfcGVyY2VudBgFIAEoBUgDiAEBEjMKCHZhcmlhbnRzGAYgAygLMiEuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFZhcmlhbnQSMwoKc3RhcnRfZGF0ZRgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIxCghlbmRfZGF0ZRgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARIjChZhc3NpZ25tZW50X3BlcnNpc3RlbmNlGAkgASgJSAaIAQESLQoFZ29hbHMYCiADKAsyHi5leHBlcmltZW50cy52MS5FeHBlcmltZW50R29hbBITCgtnb2Fsc19jbGVhchgLIAEoCEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CDAoKX3RhcmdldGluZ0ISChBfY29udHJvbF9wZXJjZW50Qg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIZChdfYXNzaWdubWVudF9wZXJzaXN0ZW5jZSJKChhVcGRhdGVFeHBlcmltZW50UmVzcG9uc2USLgoKZXhwZXJpbWVudBgBIAEoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQiJQoXRGVsZXRlRXhwZXJpbWVudFJlcXVlc3QSCgoCaWQYASABKAkiKwoYRGVsZXRlRXhwZXJpbWVudFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLwoWU3RhcnRFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkkKF1N0YXJ0RXhwZXJpbWVudFJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50Ii8KFlBhdXNlRXhwZXJpbWVudFJlcXVlc3QSFQoNZXhwZXJpbWVudF9pZBgBIAEoCSJJChdQYXVzZUV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCIwChdSZXN1bWVFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkoKGFJlc3VtZUV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCItChRFbmRFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkcKFUVuZEV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCIyChlHZXRFeHBlcmltZW50U3RhdHNSZXF1ZXN0EhUKDWV4cGVyaW1lbnRfaWQYASABKAkiTAoaR2V0RXhwZXJpbWVudFN0YXRzUmVzcG9uc2USLgoFc3RhdHMYASABKAsyHy5leHBlcmltZW50cy52MS5FeHBlcmltZW50U3RhdHMinAEKHEZvcmNlQXNzaWduRXhwZXJpbWVudFJlcXVlc3QSGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBARIVCg1leHBlcmltZW50X2lkGAIgASgJEhMKC3ZhcmlhbnRfa2V5GAMgASgJEhcKCnZpZXdlcl9rZXkYBCABKAlIAYgBAUIOCgxfY3VzdG9tZXJfaWRCDQoLX3ZpZXdlcl9rZXkiWQodRm9yY2VBc3NpZ25FeHBlcmltZW50UmVzcG9uc2USOAoKYXNzaWdubWVudBgBIAEoCzIkLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRBc3NpZ25tZW50IowBCiFSZW1vdmVFeHBlcmltZW50QXNzaWdubWVudFJlcXVlc3QSGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBARIVCg1leHBlcmltZW50X2lkGAIgASgJEhcKCnZpZXdlcl9rZXkYAyABKAlIAYgBAUIOCgxfY3VzdG9tZXJfaWRCDQoLX3ZpZXdlcl9rZXkiNQoiUmVtb3ZlRXhwZXJpbWVudEFzc2lnbm1lbnRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIlEKHEFwcGx5RXhwZXJpbWVudFdpbm5lclJlcXVlc3QSFQoNZXhwZXJpbWVudF9pZBgBIAEoCRIaChJ3aW5uZXJfdmFyaWFudF9rZXkYAiABKAkijQEKHUFwcGx5RXhwZXJpbWVudFdpbm5lclJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50Eh0KFWFmZmVjdGVkX3JlY29yZF9jb3VudBgCIAEoBRIdChVjbGVhcmVkX3ZhcmlhbnRfY291bnQYAyABKAUiWgolUHJldmlld0V4cGVyaW1lbnRXaW5uZXJSb2xsb3V0UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJEhoKEndpbm5lcl92YXJpYW50X2tleRgCIAEoCSJnCg5BZmZlY3RlZFJlY29yZBIRCglyZWNvcmRfaWQYASABKAkSIgoaY3VycmVudF9kZWZhdWx0X3ZhcmlhbnRfaWQYAiABKAkSHgoWbmV3X2RlZmF1bHRfdmFyaWFudF9pZBgDIAEoCSKBAQomUHJldmlld0V4cGVyaW1lbnRXaW5uZXJSb2xsb3V0UmVzcG9uc2USOAoQYWZmZWN0ZWRfcmVjb3JkcxgBIAMoCzIeLmV4cGVyaW1lbnRzLnYxLkFmZmVjdGVkUmVjb3JkEh0KFWNsZWFyZWRfdmFyaWFudF9jb3VudBgCIAEoBSIyChlSb2xsYmFja0V4cGVyaW1lbnRSZXF1ZXN0EhUKDWV4cGVyaW1lbnRfaWQYASABKAkiiwEKGlJvbGxiYWNrRXhwZXJpbWVudFJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50Eh0KFXJlc3RvcmVkX3JlY29yZF9jb3VudBgCIAEoBRIeChZyZXN0b3JlZF92YXJpYW50X2NvdW50GAMgASgFImkKFUdldEFzc2lnbm1lbnRzUmVxdWVzdBIYCgtjdXN0b21lcl9pZBgBIAEoCUgAiAEBEhcKCnZpZXdlcl9rZXkYAiABKAlIAYgBAUIOCgxfY3VzdG9tZXJfaWRCDQoLX3ZpZXdlcl9rZXkiUwoWR2V0QXNzaWdubWVudHNSZXNwb25zZRI5Cgthc3NpZ25tZW50cxgBIAMoCzIkLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRBc3NpZ25tZW50IiMKIUxpc3RFeHBlcmltZW50RGVjbGFyYXRpb25zUmVxdWVzdCJhCiJMaXN0RXhwZXJpbWVudERlY2xhcmF0aW9uc1Jlc3BvbnNlEjsKDGRlY2xhcmF0aW9ucxgBIAMoCzIlLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnREZWNsYXJhdGlvbiKCAQoWUmVzb2x2ZUV4cG9zdXJlUmVxdWVzdBIWCg5leHBlcmltZW50X2tleRgBIAEoCRIYCgtjdXN0b21lcl9pZBgCIAEoCUgAiAEBEhcKCnZpZXdlcl9rZXkYAyABKAlIAYgBAUIOCgxfY3VzdG9tZXJfaWRCDQoLX3ZpZXdlcl9rZXkipAEKF1Jlc29sdmVFeHBvc3VyZVJlc3BvbnNlEhYKDmV4cGVyaW1lbnRfa2V5GAEgASgJEhMKC3ZhcmlhbnRfa2V5GAIgASgJEhIKCmlzX2NvbnRyb2wYAyABKAgSEgoKaXNfZXhwb3NlZBgEIAEoCBIZChFhc3NpZ25tZW50X21ldGhvZBgFIAEoCRIZChFpc19uZXdfYXNzaWdubWVudBgGIAEoCCqwAQoQRXhwZXJpbWVudFN0YXR1cxIhCh1FWFBFUklNRU5UX1NUQVRVU19VTlNQRUNJRklFRBAAEhsKF0VYUEVSSU1FTlRfU1RBVFVTX0RSQUZUEAESHQoZRVhQRVJJTUVOVF9TVEFUVVNfUlVOTklORxACEhwKGEVYUEVSSU1FTlRfU1RBVFVTX1BBVVNFRBADEh8KG0VYUEVSSU1FTlRfU1RBVFVTX0NPTVBMRVRFRBAEMq4QChJFeHBlcmltZW50c1NlcnZpY2USXAoNR2V0RXhwZXJpbWVudBIkLmV4cGVyaW1lbnRzLnYxLkdldEV4cGVyaW1lbnRSZXF1ZXN0GiUuZXhwZXJpbWVudHMudjEuR2V0RXhwZXJpbWVudFJlc3BvbnNlEmsKEkdldEV4cGVyaW1lbnRCeUtleRIpLmV4cGVyaW1lbnRzLnYxLkdldEV4cGVyaW1lbnRCeUtleVJlcXVlc3QaKi5leHBlcmltZW50cy52MS5HZXRFeHBlcmltZW50QnlLZXlSZXNwb25zZRJiCg9MaXN0RXhwZXJpbWVudHMSJi5leHBlcmltZW50cy52MS5MaXN0RXhwZXJpbWVudHNSZXF1ZXN0GicuZXhwZXJpbWVudHMudjEuTGlzdEV4cGVyaW1lbnRzUmVzcG9uc2USZQoQQ3JlYXRlRXhwZXJpbWVudBInLmV4cGVyaW1lbnRzLnYxLkNyZWF0ZUV4cGVyaW1lbnRSZXF1ZXN0GiguZXhwZXJpbWVudHMudjEuQ3JlYXRlRXhwZXJpbWVudFJlc3BvbnNlEmUKEFVwZGF0ZUV4cGVyaW1lbnQSJy5leHBlcmltZW50cy52MS5VcGRhdGVFeHBlcmltZW50UmVxdWVzdBooLmV4cGVyaW1lbnRzLnYxLlVwZGF0ZUV4cGVyaW1lbnRSZXNwb25zZRJlChBEZWxldGVFeHBlcmltZW50EicuZXhwZXJpbWVudHMudjEuRGVsZXRlRXhwZXJpbWVudFJlcXVlc3QaKC5leHBlcmltZW50cy52MS5EZWxldGVFeHBlcmltZW50UmVzcG9uc2USYgoPU3RhcnRFeHBlcmltZW50EiYuZXhwZXJpbWVudHMudjEuU3RhcnRFeHBlcmltZW50UmVxdWVzdBonLmV4cGVyaW1lbnRzLnYxLlN0YXJ0RXhwZXJpbWVudFJlc3BvbnNlEmIKD1BhdXNlRXhwZXJpbWVudBImLmV4cGVyaW1lbnRzLnYxLlBhdXNlRXhwZXJpbWVudFJlcXVlc3QaJy5leHBlcmltZW50cy52MS5QYXVzZUV4cGVyaW1lbnRSZXNwb25zZRJlChBSZXN1bWVFeHBlcmltZW50EicuZXhwZXJpbWVudHMudjEuUmVzdW1lRXhwZXJpbWVudFJlcXVlc3QaKC5leHBlcmltZW50cy52MS5SZXN1bWVFeHBlcmltZW50UmVzcG9uc2USXAoNRW5kRXhwZXJpbWVudBIkLmV4cGVyaW1lbnRzLnYxLkVuZEV4cGVyaW1lbnRSZXF1ZXN0GiUuZXhwZXJpbWVudHMudjEuRW5kRXhwZXJpbWVudFJlc3BvbnNlEnQKFUFwcGx5RXhwZXJpbWVudFdpbm5lchIsLmV4cGVyaW1lbnRzLnYxLkFwcGx5RXhwZXJpbWVudFdpbm5lclJlcXVlc3QaLS5leHBlcmltZW50cy52MS5BcHBseUV4cGVyaW1lbnRXaW5uZXJSZXNwb25zZRKPAQoeUHJldmlld0V4cGVyaW1lbnRXaW5uZXJSb2xsb3V0EjUuZXhwZXJpbWVudHMudjEuUHJldmlld0V4cGVyaW1lbnRXaW5uZXJSb2xsb3V0UmVxdWVzdBo2LmV4cGVyaW1lbnRzLnYxLlByZXZpZXdFeHBlcmltZW50V2lubmVyUm9sbG91dFJlc3BvbnNlEmsKElJvbGxiYWNrRXhwZXJpbWVudBIpLmV4cGVyaW1lbnRzLnYxLlJvbGxiYWNrRXhwZXJpbWVudFJlcXVlc3QaKi5leHBlcmltZW50cy52MS5Sb2xsYmFja0V4cGVyaW1lbnRSZXNwb25zZRJrChJHZXRFeHBlcmltZW50U3RhdHMSKS5leHBlcmltZW50cy52MS5HZXRFeHBlcmltZW50U3RhdHNSZXF1ZXN0GiouZXhwZXJpbWVudHMudjEuR2V0RXhwZXJpbWVudFN0YXRzUmVzcG9uc2USdAoVRm9yY2VBc3NpZ25FeHBlcmltZW50EiwuZXhwZXJpbWVudHMudjEuRm9yY2VBc3NpZ25FeHBlcmltZW50UmVxdWVzdBotLmV4cGVyaW1lbnRzLnYxLkZvcmNlQXNzaWduRXhwZXJpbWVudFJlc3BvbnNlEoMBChpSZW1vdmVFeHBlcmltZW50QXNzaWdubWVudBIxLmV4cGVyaW1lbnRzLnYxLlJlbW92ZUV4cGVyaW1lbnRBc3NpZ25tZW50UmVxdWVzdBoyLmV4cGVyaW1lbnRzLnYxLlJlbW92ZUV4cGVyaW1lbnRBc3NpZ25tZW50UmVzcG9uc2USXwoOR2V0QXNzaWdubWVudHMSJS5leHBlcmltZW50cy52MS5HZXRBc3NpZ25tZW50c1JlcXVlc3QaJi5leHBlcmltZW50cy52MS5HZXRBc3NpZ25tZW50c1Jlc3BvbnNlEmIKD1Jlc29sdmVFeHBvc3VyZRImLmV4cGVyaW1lbnRzLnYxLlJlc29sdmVFeHBvc3VyZVJlcXVlc3QaJy5leHBlcmltZW50cy52MS5SZXNvbHZlRXhwb3N1cmVSZXNwb25zZRKDAQoaTGlzdEV4cGVyaW1lbnREZWNsYXJhdGlvbnMSMS5leHBlcmltZW50cy52MS5MaXN0RXhwZXJpbWVudERlY2xhcmF0aW9uc1JlcXVlc3QaMi5leHBlcmltZW50cy52MS5MaXN0RXhwZXJpbWVudERlY2xhcmF0aW9uc1Jlc3BvbnNlQkNaQWdpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9leHBlcmltZW50cy92MTtleHBlcmltZW50c3YxYgZwcm90bzM", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_expressions_v1_expressions]);
13
+ fileDesc("CiBleHBlcmltZW50cy92MS9leHBlcmltZW50cy5wcm90bxIOZXhwZXJpbWVudHMudjEiswEKE0V4cGVyaW1lbnRUYXJnZXRpbmcSDAoEdHlwZRgBIAEoCRIXCgpzZWdtZW50X2lkGAIgASgJSACIAQESGAoLc2VnbWVudF9rZXkYAyABKAlIAYgBARIyCgVydWxlcxgEIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAKIAQFCDQoLX3NlZ21lbnRfaWRCDgoMX3NlZ21lbnRfa2V5QggKBl9ydWxlcyJ4ChFFeHBlcmltZW50VmFyaWFudBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIPCgdwZXJjZW50GAMgASgFEiwKBmNvbmZpZxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBAUIJCgdfY29uZmlnImkKDkV4cGVyaW1lbnRHb2FsEgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEgoKaXNfcHJpbWFyeRgEIAEoCEIOCgxfZGVzY3JpcHRpb24iYAoURXhwZXJpbWVudEZ1bm5lbFN0ZXASEAoIZ29hbF9rZXkYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBQg4KDF9kZXNjcmlwdGlvbiKDBwoKRXhwZXJpbWVudBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjAKBnN0YXR1cxgKIAEoDjIgLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRTdGF0dXMSEQoJaXNfYWN0aXZlGAsgASgIEjYKCXRhcmdldGluZxgUIAEoCzIjLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRUYXJnZXRpbmcSFwoPY29udHJvbF9wZXJjZW50GBUgASgFEjMKCHZhcmlhbnRzGBYgAygLMiEuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFZhcmlhbnQSHgoWYXNzaWdubWVudF9wZXJzaXN0ZW5jZRgXIAEoCRIgChNleGNsdXNpb25fZ3JvdXBfa2V5GBggASgJSAGIAQESMwoKc3RhcnRfZGF0ZRgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIxCghlbmRfZGF0ZRgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARItCgdtZXRyaWNzGCMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEi0KBWdvYWxzGCQgAygLMh4uZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudEdvYWwSOgoMZnVubmVsX3N0ZXBzGCUgAygLMiQuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudEZ1bm5lbFN0ZXASEQoJdGVuYW50X2lkGCggASgJEhIKCnByb2plY3RfaWQYKSABKAkSFwoKY3JlYXRlZF9ieRgtIAEoCUgFiAEBEhcKCnVwZGF0ZWRfYnkYLiABKAlIBogBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CFgoUX2V4Y2x1c2lvbl9ncm91cF9rZXlCDQoLX3N0YXJ0X2RhdGVCCwoJX2VuZF9kYXRlQgoKCF9tZXRyaWNzQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5ItQDChRFeHBlcmltZW50QXNzaWdubWVudBIKCgJpZBgBIAEoCRIVCg1leHBlcmltZW50X2lkGAIgASgJEhgKC2N1c3RvbWVyX2lkGAMgASgJSACIAQESEwoLdmFyaWFudF9rZXkYBCABKAkSGQoRYXNzaWdubWVudF9tZXRob2QYBSABKAkSFgoOZXhwZXJpbWVudF9rZXkYBiABKAkSFwoKdmlld2VyX2tleRgHIAEoCUgBiAEBEhEKCXRlbmFudF9pZBgKIAEoCRISCgpwcm9qZWN0X2lkGAsgASgJEi8KC2Fzc2lnbmVkX2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1maXJzdF9zZWVuX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgxsYXN0X3NlZW5fYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCmV4cGlyZXNfYXQYFyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCDgoMX2N1c3RvbWVyX2lkQg0KC192aWV3ZXJfa2V5Qg0KC19leHBpcmVzX2F0IkUKFUV4cGVyaW1lbnREZWNsYXJhdGlvbhIWCg5leHBlcmltZW50X2tleRgBIAEoCRIUCgx2YXJpYW50X2tleXMYAiADKAkipwEKDFZhcmlhbnRTdGF0cxITCgt2YXJpYW50X2tleRgBIAEoCRIYChBhc3NpZ25tZW50X2NvdW50GAIgASgFEhcKD2NvbnZlcnNpb25fcmF0ZRgDIAEoARI4ChJhZGRpdGlvbmFsX21ldHJpY3MYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCFQoTX2FkZGl0aW9uYWxfbWV0cmljcyJhCg9FeHBlcmltZW50U3RhdHMSMwoNdmFyaWFudF9zdGF0cxgBIAMoCzIcLmV4cGVyaW1lbnRzLnYxLlZhcmlhbnRTdGF0cxIZChF0b3RhbF9hc3NpZ25tZW50cxgCIAEoBSL5BAoXQ3JlYXRlRXhwZXJpbWVudFJlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARI7Cgl0YXJnZXRpbmcYBCABKAsyIy5leHBlcmltZW50cy52MS5FeHBlcmltZW50VGFyZ2V0aW5nSAGIAQESHAoPY29udHJvbF9wZXJjZW50GAUgASgFSAKIAQESMwoIdmFyaWFudHMYBiADKAsyIS5leHBlcmltZW50cy52MS5FeHBlcmltZW50VmFyaWFudBIzCgpzdGFydF9kYXRlGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBEjEKCGVuZF9kYXRlGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEiMKFmFzc2lnbm1lbnRfcGVyc2lzdGVuY2UYCSABKAlIBYgBARItCgVnb2FscxgKIAMoCzIeLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRHb2FsEjoKDGZ1bm5lbF9zdGVwcxgLIAMoCzIkLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRGdW5uZWxTdGVwEiAKE2V4Y2x1c2lvbl9ncm91cF9rZXkYDCABKAlIBogBAUIOCgxfZGVzY3JpcHRpb25CDAoKX3RhcmdldGluZ0ISChBfY29udHJvbF9wZXJjZW50Qg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIZChdfYXNzaWdubWVudF9wZXJzaXN0ZW5jZUIWChRfZXhjbHVzaW9uX2dyb3VwX2tleSJKChhDcmVhdGVFeHBlcmltZW50UmVzcG9uc2USLgoKZXhwZXJpbWVudBgBIAEoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQiIgoUR2V0RXhwZXJpbWVudFJlcXVlc3QSCgoCaWQYASABKAkiRwoVR2V0RXhwZXJpbWVudFJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50IigKGUdldEV4cGVyaW1lbnRCeUtleVJlcXVlc3QSCwoDa2V5GAEgASgJIkwKGkdldEV4cGVyaW1lbnRCeUtleVJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50Ip8BChZMaXN0RXhwZXJpbWVudHNSZXF1ZXN0EjUKBnN0YXR1cxgBIAEoDjIgLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRTdGF0dXNIAIgBARIWCglpc19hY3RpdmUYAiABKAhIAYgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCCQoHX3N0YXR1c0IMCgpfaXNfYWN0aXZlIlkKF0xpc3RFeHBlcmltZW50c1Jlc3BvbnNlEi8KC2V4cGVyaW1lbnRzGAEgAygLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudBINCgV0b3RhbBgCIAEoBSLaBQoXVXBkYXRlRXhwZXJpbWVudFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESOwoJdGFyZ2V0aW5nGAQgASgLMiMuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFRhcmdldGluZ0gCiAEBEhwKD2NvbnRyb2xfcGVyY2VudBgFIAEoBUgDiAEBEjMKCHZhcmlhbnRzGAYgAygLMiEuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFZhcmlhbnQSMwoKc3RhcnRfZGF0ZRgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIxCghlbmRfZGF0ZRgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARIjChZhc3NpZ25tZW50X3BlcnNpc3RlbmNlGAkgASgJSAaIAQESLQoFZ29hbHMYCiADKAsyHi5leHBlcmltZW50cy52MS5FeHBlcmltZW50R29hbBITCgtnb2Fsc19jbGVhchgLIAEoCBI6CgxmdW5uZWxfc3RlcHMYDCADKAsyJC5leHBlcmltZW50cy52MS5FeHBlcmltZW50RnVubmVsU3RlcBIaChJmdW5uZWxfc3RlcHNfY2xlYXIYDSABKAgSIAoTZXhjbHVzaW9uX2dyb3VwX2tleRgOIAEoCUgHiAEBEiEKGWV4Y2x1c2lvbl9ncm91cF9rZXlfY2xlYXIYDyABKAhCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl90YXJnZXRpbmdCEgoQX2NvbnRyb2xfcGVyY2VudEINCgtfc3RhcnRfZGF0ZUILCglfZW5kX2RhdGVCGQoXX2Fzc2lnbm1lbnRfcGVyc2lzdGVuY2VCFgoUX2V4Y2x1c2lvbl9ncm91cF9rZXkiSgoYVXBkYXRlRXhwZXJpbWVudFJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50IiUKF0RlbGV0ZUV4cGVyaW1lbnRSZXF1ZXN0EgoKAmlkGAEgASgJIisKGERlbGV0ZUV4cGVyaW1lbnRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi8KFlN0YXJ0RXhwZXJpbWVudFJlcXVlc3QSFQoNZXhwZXJpbWVudF9pZBgBIAEoCSJJChdTdGFydEV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCIvChZQYXVzZUV4cGVyaW1lbnRSZXF1ZXN0EhUKDWV4cGVyaW1lbnRfaWQYASABKAkiSQoXUGF1c2VFeHBlcmltZW50UmVzcG9uc2USLgoKZXhwZXJpbWVudBgBIAEoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQiMAoXUmVzdW1lRXhwZXJpbWVudFJlcXVlc3QSFQoNZXhwZXJpbWVudF9pZBgBIAEoCSJKChhSZXN1bWVFeHBlcmltZW50UmVzcG9uc2USLgoKZXhwZXJpbWVudBgBIAEoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQiLQoURW5kRXhwZXJpbWVudFJlcXVlc3QSFQoNZXhwZXJpbWVudF9pZBgBIAEoCSJHChVFbmRFeHBlcmltZW50UmVzcG9uc2USLgoKZXhwZXJpbWVudBgBIAEoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQiMgoZR2V0RXhwZXJpbWVudFN0YXRzUmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkwKGkdldEV4cGVyaW1lbnRTdGF0c1Jlc3BvbnNlEi4KBXN0YXRzGAEgASgLMh8uZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFN0YXRzIpwBChxGb3JjZUFzc2lnbkV4cGVyaW1lbnRSZXF1ZXN0EhgKC2N1c3RvbWVyX2lkGAEgASgJSACIAQESFQoNZXhwZXJpbWVudF9pZBgCIAEoCRITCgt2YXJpYW50X2tleRgDIAEoCRIXCgp2aWV3ZXJfa2V5GAQgASgJSAGIAQFCDgoMX2N1c3RvbWVyX2lkQg0KC192aWV3ZXJfa2V5IlkKHUZvcmNlQXNzaWduRXhwZXJpbWVudFJlc3BvbnNlEjgKCmFzc2lnbm1lbnQYASABKAsyJC5leHBlcmltZW50cy52MS5FeHBlcmltZW50QXNzaWdubWVudCKMAQohUmVtb3ZlRXhwZXJpbWVudEFzc2lnbm1lbnRSZXF1ZXN0EhgKC2N1c3RvbWVyX2lkGAEgASgJSACIAQESFQoNZXhwZXJpbWVudF9pZBgCIAEoCRIXCgp2aWV3ZXJfa2V5GAMgASgJSAGIAQFCDgoMX2N1c3RvbWVyX2lkQg0KC192aWV3ZXJfa2V5IjUKIlJlbW92ZUV4cGVyaW1lbnRBc3NpZ25tZW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJRChxBcHBseUV4cGVyaW1lbnRXaW5uZXJSZXF1ZXN0EhUKDWV4cGVyaW1lbnRfaWQYASABKAkSGgoSd2lubmVyX3ZhcmlhbnRfa2V5GAIgASgJIo0BCh1BcHBseUV4cGVyaW1lbnRXaW5uZXJSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudBIdChVhZmZlY3RlZF9yZWNvcmRfY291bnQYAiABKAUSHQoVY2xlYXJlZF92YXJpYW50X2NvdW50GAMgASgFIloKJVByZXZpZXdFeHBlcmltZW50V2lubmVyUm9sbG91dFJlcXVlc3QSFQoNZXhwZXJpbWVudF9pZBgBIAEoCRIaChJ3aW5uZXJfdmFyaWFudF9rZXkYAiABKAkiZwoOQWZmZWN0ZWRSZWNvcmQSEQoJcmVjb3JkX2lkGAEgASgJEiIKGmN1cnJlbnRfZGVmYXVsdF92YXJpYW50X2lkGAIgASgJEh4KFm5ld19kZWZhdWx0X3ZhcmlhbnRfaWQYAyABKAkigQEKJlByZXZpZXdFeHBlcmltZW50V2lubmVyUm9sbG91dFJlc3BvbnNlEjgKEGFmZmVjdGVkX3JlY29yZHMYASADKAsyHi5leHBlcmltZW50cy52MS5BZmZlY3RlZFJlY29yZBIdChVjbGVhcmVkX3ZhcmlhbnRfY291bnQYAiABKAUiMgoZUm9sbGJhY2tFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIosBChpSb2xsYmFja0V4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudBIdChVyZXN0b3JlZF9yZWNvcmRfY291bnQYAiABKAUSHgoWcmVzdG9yZWRfdmFyaWFudF9jb3VudBgDIAEoBSJpChVHZXRBc3NpZ25tZW50c1JlcXVlc3QSGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBARIXCgp2aWV3ZXJfa2V5GAIgASgJSAGIAQFCDgoMX2N1c3RvbWVyX2lkQg0KC192aWV3ZXJfa2V5IlMKFkdldEFzc2lnbm1lbnRzUmVzcG9uc2USOQoLYXNzaWdubWVudHMYASADKAsyJC5leHBlcmltZW50cy52MS5FeHBlcmltZW50QXNzaWdubWVudCIjCiFMaXN0RXhwZXJpbWVudERlY2xhcmF0aW9uc1JlcXVlc3QiYQoiTGlzdEV4cGVyaW1lbnREZWNsYXJhdGlvbnNSZXNwb25zZRI7CgxkZWNsYXJhdGlvbnMYASADKAsyJS5leHBlcmltZW50cy52MS5FeHBlcmltZW50RGVjbGFyYXRpb24iggEKFlJlc29sdmVFeHBvc3VyZVJlcXVlc3QSFgoOZXhwZXJpbWVudF9rZXkYASABKAkSGAoLY3VzdG9tZXJfaWQYAiABKAlIAIgBARIXCgp2aWV3ZXJfa2V5GAMgASgJSAGIAQFCDgoMX2N1c3RvbWVyX2lkQg0KC192aWV3ZXJfa2V5IqQBChdSZXNvbHZlRXhwb3N1cmVSZXNwb25zZRIWCg5leHBlcmltZW50X2tleRgBIAEoCRITCgt2YXJpYW50X2tleRgCIAEoCRISCgppc19jb250cm9sGAMgASgIEhIKCmlzX2V4cG9zZWQYBCABKAgSGQoRYXNzaWdubWVudF9tZXRob2QYBSABKAkSGQoRaXNfbmV3X2Fzc2lnbm1lbnQYBiABKAgqsAEKEEV4cGVyaW1lbnRTdGF0dXMSIQodRVhQRVJJTUVOVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIbChdFWFBFUklNRU5UX1NUQVRVU19EUkFGVBABEh0KGUVYUEVSSU1FTlRfU1RBVFVTX1JVTk5JTkcQAhIcChhFWFBFUklNRU5UX1NUQVRVU19QQVVTRUQQAxIfChtFWFBFUklNRU5UX1NUQVRVU19DT01QTEVURUQQBDKuEAoSRXhwZXJpbWVudHNTZXJ2aWNlElwKDUdldEV4cGVyaW1lbnQSJC5leHBlcmltZW50cy52MS5HZXRFeHBlcmltZW50UmVxdWVzdBolLmV4cGVyaW1lbnRzLnYxLkdldEV4cGVyaW1lbnRSZXNwb25zZRJrChJHZXRFeHBlcmltZW50QnlLZXkSKS5leHBlcmltZW50cy52MS5HZXRFeHBlcmltZW50QnlLZXlSZXF1ZXN0GiouZXhwZXJpbWVudHMudjEuR2V0RXhwZXJpbWVudEJ5S2V5UmVzcG9uc2USYgoPTGlzdEV4cGVyaW1lbnRzEiYuZXhwZXJpbWVudHMudjEuTGlzdEV4cGVyaW1lbnRzUmVxdWVzdBonLmV4cGVyaW1lbnRzLnYxLkxpc3RFeHBlcmltZW50c1Jlc3BvbnNlEmUKEENyZWF0ZUV4cGVyaW1lbnQSJy5leHBlcmltZW50cy52MS5DcmVhdGVFeHBlcmltZW50UmVxdWVzdBooLmV4cGVyaW1lbnRzLnYxLkNyZWF0ZUV4cGVyaW1lbnRSZXNwb25zZRJlChBVcGRhdGVFeHBlcmltZW50EicuZXhwZXJpbWVudHMudjEuVXBkYXRlRXhwZXJpbWVudFJlcXVlc3QaKC5leHBlcmltZW50cy52MS5VcGRhdGVFeHBlcmltZW50UmVzcG9uc2USZQoQRGVsZXRlRXhwZXJpbWVudBInLmV4cGVyaW1lbnRzLnYxLkRlbGV0ZUV4cGVyaW1lbnRSZXF1ZXN0GiguZXhwZXJpbWVudHMudjEuRGVsZXRlRXhwZXJpbWVudFJlc3BvbnNlEmIKD1N0YXJ0RXhwZXJpbWVudBImLmV4cGVyaW1lbnRzLnYxLlN0YXJ0RXhwZXJpbWVudFJlcXVlc3QaJy5leHBlcmltZW50cy52MS5TdGFydEV4cGVyaW1lbnRSZXNwb25zZRJiCg9QYXVzZUV4cGVyaW1lbnQSJi5leHBlcmltZW50cy52MS5QYXVzZUV4cGVyaW1lbnRSZXF1ZXN0GicuZXhwZXJpbWVudHMudjEuUGF1c2VFeHBlcmltZW50UmVzcG9uc2USZQoQUmVzdW1lRXhwZXJpbWVudBInLmV4cGVyaW1lbnRzLnYxLlJlc3VtZUV4cGVyaW1lbnRSZXF1ZXN0GiguZXhwZXJpbWVudHMudjEuUmVzdW1lRXhwZXJpbWVudFJlc3BvbnNlElwKDUVuZEV4cGVyaW1lbnQSJC5leHBlcmltZW50cy52MS5FbmRFeHBlcmltZW50UmVxdWVzdBolLmV4cGVyaW1lbnRzLnYxLkVuZEV4cGVyaW1lbnRSZXNwb25zZRJ0ChVBcHBseUV4cGVyaW1lbnRXaW5uZXISLC5leHBlcmltZW50cy52MS5BcHBseUV4cGVyaW1lbnRXaW5uZXJSZXF1ZXN0Gi0uZXhwZXJpbWVudHMudjEuQXBwbHlFeHBlcmltZW50V2lubmVyUmVzcG9uc2USjwEKHlByZXZpZXdFeHBlcmltZW50V2lubmVyUm9sbG91dBI1LmV4cGVyaW1lbnRzLnYxLlByZXZpZXdFeHBlcmltZW50V2lubmVyUm9sbG91dFJlcXVlc3QaNi5leHBlcmltZW50cy52MS5QcmV2aWV3RXhwZXJpbWVudFdpbm5lclJvbGxvdXRSZXNwb25zZRJrChJSb2xsYmFja0V4cGVyaW1lbnQSKS5leHBlcmltZW50cy52MS5Sb2xsYmFja0V4cGVyaW1lbnRSZXF1ZXN0GiouZXhwZXJpbWVudHMudjEuUm9sbGJhY2tFeHBlcmltZW50UmVzcG9uc2USawoSR2V0RXhwZXJpbWVudFN0YXRzEikuZXhwZXJpbWVudHMudjEuR2V0RXhwZXJpbWVudFN0YXRzUmVxdWVzdBoqLmV4cGVyaW1lbnRzLnYxLkdldEV4cGVyaW1lbnRTdGF0c1Jlc3BvbnNlEnQKFUZvcmNlQXNzaWduRXhwZXJpbWVudBIsLmV4cGVyaW1lbnRzLnYxLkZvcmNlQXNzaWduRXhwZXJpbWVudFJlcXVlc3QaLS5leHBlcmltZW50cy52MS5Gb3JjZUFzc2lnbkV4cGVyaW1lbnRSZXNwb25zZRKDAQoaUmVtb3ZlRXhwZXJpbWVudEFzc2lnbm1lbnQSMS5leHBlcmltZW50cy52MS5SZW1vdmVFeHBlcmltZW50QXNzaWdubWVudFJlcXVlc3QaMi5leHBlcmltZW50cy52MS5SZW1vdmVFeHBlcmltZW50QXNzaWdubWVudFJlc3BvbnNlEl8KDkdldEFzc2lnbm1lbnRzEiUuZXhwZXJpbWVudHMudjEuR2V0QXNzaWdubWVudHNSZXF1ZXN0GiYuZXhwZXJpbWVudHMudjEuR2V0QXNzaWdubWVudHNSZXNwb25zZRJiCg9SZXNvbHZlRXhwb3N1cmUSJi5leHBlcmltZW50cy52MS5SZXNvbHZlRXhwb3N1cmVSZXF1ZXN0GicuZXhwZXJpbWVudHMudjEuUmVzb2x2ZUV4cG9zdXJlUmVzcG9uc2USgwEKGkxpc3RFeHBlcmltZW50RGVjbGFyYXRpb25zEjEuZXhwZXJpbWVudHMudjEuTGlzdEV4cGVyaW1lbnREZWNsYXJhdGlvbnNSZXF1ZXN0GjIuZXhwZXJpbWVudHMudjEuTGlzdEV4cGVyaW1lbnREZWNsYXJhdGlvbnNSZXNwb25zZUJDWkFnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vZXhwZXJpbWVudHMvdjE7ZXhwZXJpbWVudHN2MWIGcHJvdG8z", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_expressions_v1_expressions]);
14
14
 
15
15
  /**
16
16
  * Describes the message experiments.v1.ExperimentTargeting.
@@ -33,313 +33,320 @@ export const ExperimentVariantSchema = /*@__PURE__*/
33
33
  export const ExperimentGoalSchema = /*@__PURE__*/
34
34
  messageDesc(file_experiments_v1_experiments, 2);
35
35
 
36
+ /**
37
+ * Describes the message experiments.v1.ExperimentFunnelStep.
38
+ * Use `create(ExperimentFunnelStepSchema)` to create a new message.
39
+ */
40
+ export const ExperimentFunnelStepSchema = /*@__PURE__*/
41
+ messageDesc(file_experiments_v1_experiments, 3);
42
+
36
43
  /**
37
44
  * Describes the message experiments.v1.Experiment.
38
45
  * Use `create(ExperimentSchema)` to create a new message.
39
46
  */
40
47
  export const ExperimentSchema = /*@__PURE__*/
41
- messageDesc(file_experiments_v1_experiments, 3);
48
+ messageDesc(file_experiments_v1_experiments, 4);
42
49
 
43
50
  /**
44
51
  * Describes the message experiments.v1.ExperimentAssignment.
45
52
  * Use `create(ExperimentAssignmentSchema)` to create a new message.
46
53
  */
47
54
  export const ExperimentAssignmentSchema = /*@__PURE__*/
48
- messageDesc(file_experiments_v1_experiments, 4);
55
+ messageDesc(file_experiments_v1_experiments, 5);
49
56
 
50
57
  /**
51
58
  * Describes the message experiments.v1.ExperimentDeclaration.
52
59
  * Use `create(ExperimentDeclarationSchema)` to create a new message.
53
60
  */
54
61
  export const ExperimentDeclarationSchema = /*@__PURE__*/
55
- messageDesc(file_experiments_v1_experiments, 5);
62
+ messageDesc(file_experiments_v1_experiments, 6);
56
63
 
57
64
  /**
58
65
  * Describes the message experiments.v1.VariantStats.
59
66
  * Use `create(VariantStatsSchema)` to create a new message.
60
67
  */
61
68
  export const VariantStatsSchema = /*@__PURE__*/
62
- messageDesc(file_experiments_v1_experiments, 6);
69
+ messageDesc(file_experiments_v1_experiments, 7);
63
70
 
64
71
  /**
65
72
  * Describes the message experiments.v1.ExperimentStats.
66
73
  * Use `create(ExperimentStatsSchema)` to create a new message.
67
74
  */
68
75
  export const ExperimentStatsSchema = /*@__PURE__*/
69
- messageDesc(file_experiments_v1_experiments, 7);
76
+ messageDesc(file_experiments_v1_experiments, 8);
70
77
 
71
78
  /**
72
79
  * Describes the message experiments.v1.CreateExperimentRequest.
73
80
  * Use `create(CreateExperimentRequestSchema)` to create a new message.
74
81
  */
75
82
  export const CreateExperimentRequestSchema = /*@__PURE__*/
76
- messageDesc(file_experiments_v1_experiments, 8);
83
+ messageDesc(file_experiments_v1_experiments, 9);
77
84
 
78
85
  /**
79
86
  * Describes the message experiments.v1.CreateExperimentResponse.
80
87
  * Use `create(CreateExperimentResponseSchema)` to create a new message.
81
88
  */
82
89
  export const CreateExperimentResponseSchema = /*@__PURE__*/
83
- messageDesc(file_experiments_v1_experiments, 9);
90
+ messageDesc(file_experiments_v1_experiments, 10);
84
91
 
85
92
  /**
86
93
  * Describes the message experiments.v1.GetExperimentRequest.
87
94
  * Use `create(GetExperimentRequestSchema)` to create a new message.
88
95
  */
89
96
  export const GetExperimentRequestSchema = /*@__PURE__*/
90
- messageDesc(file_experiments_v1_experiments, 10);
97
+ messageDesc(file_experiments_v1_experiments, 11);
91
98
 
92
99
  /**
93
100
  * Describes the message experiments.v1.GetExperimentResponse.
94
101
  * Use `create(GetExperimentResponseSchema)` to create a new message.
95
102
  */
96
103
  export const GetExperimentResponseSchema = /*@__PURE__*/
97
- messageDesc(file_experiments_v1_experiments, 11);
104
+ messageDesc(file_experiments_v1_experiments, 12);
98
105
 
99
106
  /**
100
107
  * Describes the message experiments.v1.GetExperimentByKeyRequest.
101
108
  * Use `create(GetExperimentByKeyRequestSchema)` to create a new message.
102
109
  */
103
110
  export const GetExperimentByKeyRequestSchema = /*@__PURE__*/
104
- messageDesc(file_experiments_v1_experiments, 12);
111
+ messageDesc(file_experiments_v1_experiments, 13);
105
112
 
106
113
  /**
107
114
  * Describes the message experiments.v1.GetExperimentByKeyResponse.
108
115
  * Use `create(GetExperimentByKeyResponseSchema)` to create a new message.
109
116
  */
110
117
  export const GetExperimentByKeyResponseSchema = /*@__PURE__*/
111
- messageDesc(file_experiments_v1_experiments, 13);
118
+ messageDesc(file_experiments_v1_experiments, 14);
112
119
 
113
120
  /**
114
121
  * Describes the message experiments.v1.ListExperimentsRequest.
115
122
  * Use `create(ListExperimentsRequestSchema)` to create a new message.
116
123
  */
117
124
  export const ListExperimentsRequestSchema = /*@__PURE__*/
118
- messageDesc(file_experiments_v1_experiments, 14);
125
+ messageDesc(file_experiments_v1_experiments, 15);
119
126
 
120
127
  /**
121
128
  * Describes the message experiments.v1.ListExperimentsResponse.
122
129
  * Use `create(ListExperimentsResponseSchema)` to create a new message.
123
130
  */
124
131
  export const ListExperimentsResponseSchema = /*@__PURE__*/
125
- messageDesc(file_experiments_v1_experiments, 15);
132
+ messageDesc(file_experiments_v1_experiments, 16);
126
133
 
127
134
  /**
128
135
  * Describes the message experiments.v1.UpdateExperimentRequest.
129
136
  * Use `create(UpdateExperimentRequestSchema)` to create a new message.
130
137
  */
131
138
  export const UpdateExperimentRequestSchema = /*@__PURE__*/
132
- messageDesc(file_experiments_v1_experiments, 16);
139
+ messageDesc(file_experiments_v1_experiments, 17);
133
140
 
134
141
  /**
135
142
  * Describes the message experiments.v1.UpdateExperimentResponse.
136
143
  * Use `create(UpdateExperimentResponseSchema)` to create a new message.
137
144
  */
138
145
  export const UpdateExperimentResponseSchema = /*@__PURE__*/
139
- messageDesc(file_experiments_v1_experiments, 17);
146
+ messageDesc(file_experiments_v1_experiments, 18);
140
147
 
141
148
  /**
142
149
  * Describes the message experiments.v1.DeleteExperimentRequest.
143
150
  * Use `create(DeleteExperimentRequestSchema)` to create a new message.
144
151
  */
145
152
  export const DeleteExperimentRequestSchema = /*@__PURE__*/
146
- messageDesc(file_experiments_v1_experiments, 18);
153
+ messageDesc(file_experiments_v1_experiments, 19);
147
154
 
148
155
  /**
149
156
  * Describes the message experiments.v1.DeleteExperimentResponse.
150
157
  * Use `create(DeleteExperimentResponseSchema)` to create a new message.
151
158
  */
152
159
  export const DeleteExperimentResponseSchema = /*@__PURE__*/
153
- messageDesc(file_experiments_v1_experiments, 19);
160
+ messageDesc(file_experiments_v1_experiments, 20);
154
161
 
155
162
  /**
156
163
  * Describes the message experiments.v1.StartExperimentRequest.
157
164
  * Use `create(StartExperimentRequestSchema)` to create a new message.
158
165
  */
159
166
  export const StartExperimentRequestSchema = /*@__PURE__*/
160
- messageDesc(file_experiments_v1_experiments, 20);
167
+ messageDesc(file_experiments_v1_experiments, 21);
161
168
 
162
169
  /**
163
170
  * Describes the message experiments.v1.StartExperimentResponse.
164
171
  * Use `create(StartExperimentResponseSchema)` to create a new message.
165
172
  */
166
173
  export const StartExperimentResponseSchema = /*@__PURE__*/
167
- messageDesc(file_experiments_v1_experiments, 21);
174
+ messageDesc(file_experiments_v1_experiments, 22);
168
175
 
169
176
  /**
170
177
  * Describes the message experiments.v1.PauseExperimentRequest.
171
178
  * Use `create(PauseExperimentRequestSchema)` to create a new message.
172
179
  */
173
180
  export const PauseExperimentRequestSchema = /*@__PURE__*/
174
- messageDesc(file_experiments_v1_experiments, 22);
181
+ messageDesc(file_experiments_v1_experiments, 23);
175
182
 
176
183
  /**
177
184
  * Describes the message experiments.v1.PauseExperimentResponse.
178
185
  * Use `create(PauseExperimentResponseSchema)` to create a new message.
179
186
  */
180
187
  export const PauseExperimentResponseSchema = /*@__PURE__*/
181
- messageDesc(file_experiments_v1_experiments, 23);
188
+ messageDesc(file_experiments_v1_experiments, 24);
182
189
 
183
190
  /**
184
191
  * Describes the message experiments.v1.ResumeExperimentRequest.
185
192
  * Use `create(ResumeExperimentRequestSchema)` to create a new message.
186
193
  */
187
194
  export const ResumeExperimentRequestSchema = /*@__PURE__*/
188
- messageDesc(file_experiments_v1_experiments, 24);
195
+ messageDesc(file_experiments_v1_experiments, 25);
189
196
 
190
197
  /**
191
198
  * Describes the message experiments.v1.ResumeExperimentResponse.
192
199
  * Use `create(ResumeExperimentResponseSchema)` to create a new message.
193
200
  */
194
201
  export const ResumeExperimentResponseSchema = /*@__PURE__*/
195
- messageDesc(file_experiments_v1_experiments, 25);
202
+ messageDesc(file_experiments_v1_experiments, 26);
196
203
 
197
204
  /**
198
205
  * Describes the message experiments.v1.EndExperimentRequest.
199
206
  * Use `create(EndExperimentRequestSchema)` to create a new message.
200
207
  */
201
208
  export const EndExperimentRequestSchema = /*@__PURE__*/
202
- messageDesc(file_experiments_v1_experiments, 26);
209
+ messageDesc(file_experiments_v1_experiments, 27);
203
210
 
204
211
  /**
205
212
  * Describes the message experiments.v1.EndExperimentResponse.
206
213
  * Use `create(EndExperimentResponseSchema)` to create a new message.
207
214
  */
208
215
  export const EndExperimentResponseSchema = /*@__PURE__*/
209
- messageDesc(file_experiments_v1_experiments, 27);
216
+ messageDesc(file_experiments_v1_experiments, 28);
210
217
 
211
218
  /**
212
219
  * Describes the message experiments.v1.GetExperimentStatsRequest.
213
220
  * Use `create(GetExperimentStatsRequestSchema)` to create a new message.
214
221
  */
215
222
  export const GetExperimentStatsRequestSchema = /*@__PURE__*/
216
- messageDesc(file_experiments_v1_experiments, 28);
223
+ messageDesc(file_experiments_v1_experiments, 29);
217
224
 
218
225
  /**
219
226
  * Describes the message experiments.v1.GetExperimentStatsResponse.
220
227
  * Use `create(GetExperimentStatsResponseSchema)` to create a new message.
221
228
  */
222
229
  export const GetExperimentStatsResponseSchema = /*@__PURE__*/
223
- messageDesc(file_experiments_v1_experiments, 29);
230
+ messageDesc(file_experiments_v1_experiments, 30);
224
231
 
225
232
  /**
226
233
  * Describes the message experiments.v1.ForceAssignExperimentRequest.
227
234
  * Use `create(ForceAssignExperimentRequestSchema)` to create a new message.
228
235
  */
229
236
  export const ForceAssignExperimentRequestSchema = /*@__PURE__*/
230
- messageDesc(file_experiments_v1_experiments, 30);
237
+ messageDesc(file_experiments_v1_experiments, 31);
231
238
 
232
239
  /**
233
240
  * Describes the message experiments.v1.ForceAssignExperimentResponse.
234
241
  * Use `create(ForceAssignExperimentResponseSchema)` to create a new message.
235
242
  */
236
243
  export const ForceAssignExperimentResponseSchema = /*@__PURE__*/
237
- messageDesc(file_experiments_v1_experiments, 31);
244
+ messageDesc(file_experiments_v1_experiments, 32);
238
245
 
239
246
  /**
240
247
  * Describes the message experiments.v1.RemoveExperimentAssignmentRequest.
241
248
  * Use `create(RemoveExperimentAssignmentRequestSchema)` to create a new message.
242
249
  */
243
250
  export const RemoveExperimentAssignmentRequestSchema = /*@__PURE__*/
244
- messageDesc(file_experiments_v1_experiments, 32);
251
+ messageDesc(file_experiments_v1_experiments, 33);
245
252
 
246
253
  /**
247
254
  * Describes the message experiments.v1.RemoveExperimentAssignmentResponse.
248
255
  * Use `create(RemoveExperimentAssignmentResponseSchema)` to create a new message.
249
256
  */
250
257
  export const RemoveExperimentAssignmentResponseSchema = /*@__PURE__*/
251
- messageDesc(file_experiments_v1_experiments, 33);
258
+ messageDesc(file_experiments_v1_experiments, 34);
252
259
 
253
260
  /**
254
261
  * Describes the message experiments.v1.ApplyExperimentWinnerRequest.
255
262
  * Use `create(ApplyExperimentWinnerRequestSchema)` to create a new message.
256
263
  */
257
264
  export const ApplyExperimentWinnerRequestSchema = /*@__PURE__*/
258
- messageDesc(file_experiments_v1_experiments, 34);
265
+ messageDesc(file_experiments_v1_experiments, 35);
259
266
 
260
267
  /**
261
268
  * Describes the message experiments.v1.ApplyExperimentWinnerResponse.
262
269
  * Use `create(ApplyExperimentWinnerResponseSchema)` to create a new message.
263
270
  */
264
271
  export const ApplyExperimentWinnerResponseSchema = /*@__PURE__*/
265
- messageDesc(file_experiments_v1_experiments, 35);
272
+ messageDesc(file_experiments_v1_experiments, 36);
266
273
 
267
274
  /**
268
275
  * Describes the message experiments.v1.PreviewExperimentWinnerRolloutRequest.
269
276
  * Use `create(PreviewExperimentWinnerRolloutRequestSchema)` to create a new message.
270
277
  */
271
278
  export const PreviewExperimentWinnerRolloutRequestSchema = /*@__PURE__*/
272
- messageDesc(file_experiments_v1_experiments, 36);
279
+ messageDesc(file_experiments_v1_experiments, 37);
273
280
 
274
281
  /**
275
282
  * Describes the message experiments.v1.AffectedRecord.
276
283
  * Use `create(AffectedRecordSchema)` to create a new message.
277
284
  */
278
285
  export const AffectedRecordSchema = /*@__PURE__*/
279
- messageDesc(file_experiments_v1_experiments, 37);
286
+ messageDesc(file_experiments_v1_experiments, 38);
280
287
 
281
288
  /**
282
289
  * Describes the message experiments.v1.PreviewExperimentWinnerRolloutResponse.
283
290
  * Use `create(PreviewExperimentWinnerRolloutResponseSchema)` to create a new message.
284
291
  */
285
292
  export const PreviewExperimentWinnerRolloutResponseSchema = /*@__PURE__*/
286
- messageDesc(file_experiments_v1_experiments, 38);
293
+ messageDesc(file_experiments_v1_experiments, 39);
287
294
 
288
295
  /**
289
296
  * Describes the message experiments.v1.RollbackExperimentRequest.
290
297
  * Use `create(RollbackExperimentRequestSchema)` to create a new message.
291
298
  */
292
299
  export const RollbackExperimentRequestSchema = /*@__PURE__*/
293
- messageDesc(file_experiments_v1_experiments, 39);
300
+ messageDesc(file_experiments_v1_experiments, 40);
294
301
 
295
302
  /**
296
303
  * Describes the message experiments.v1.RollbackExperimentResponse.
297
304
  * Use `create(RollbackExperimentResponseSchema)` to create a new message.
298
305
  */
299
306
  export const RollbackExperimentResponseSchema = /*@__PURE__*/
300
- messageDesc(file_experiments_v1_experiments, 40);
307
+ messageDesc(file_experiments_v1_experiments, 41);
301
308
 
302
309
  /**
303
310
  * Describes the message experiments.v1.GetAssignmentsRequest.
304
311
  * Use `create(GetAssignmentsRequestSchema)` to create a new message.
305
312
  */
306
313
  export const GetAssignmentsRequestSchema = /*@__PURE__*/
307
- messageDesc(file_experiments_v1_experiments, 41);
314
+ messageDesc(file_experiments_v1_experiments, 42);
308
315
 
309
316
  /**
310
317
  * Describes the message experiments.v1.GetAssignmentsResponse.
311
318
  * Use `create(GetAssignmentsResponseSchema)` to create a new message.
312
319
  */
313
320
  export const GetAssignmentsResponseSchema = /*@__PURE__*/
314
- messageDesc(file_experiments_v1_experiments, 42);
321
+ messageDesc(file_experiments_v1_experiments, 43);
315
322
 
316
323
  /**
317
324
  * Describes the message experiments.v1.ListExperimentDeclarationsRequest.
318
325
  * Use `create(ListExperimentDeclarationsRequestSchema)` to create a new message.
319
326
  */
320
327
  export const ListExperimentDeclarationsRequestSchema = /*@__PURE__*/
321
- messageDesc(file_experiments_v1_experiments, 43);
328
+ messageDesc(file_experiments_v1_experiments, 44);
322
329
 
323
330
  /**
324
331
  * Describes the message experiments.v1.ListExperimentDeclarationsResponse.
325
332
  * Use `create(ListExperimentDeclarationsResponseSchema)` to create a new message.
326
333
  */
327
334
  export const ListExperimentDeclarationsResponseSchema = /*@__PURE__*/
328
- messageDesc(file_experiments_v1_experiments, 44);
335
+ messageDesc(file_experiments_v1_experiments, 45);
329
336
 
330
337
  /**
331
338
  * Describes the message experiments.v1.ResolveExposureRequest.
332
339
  * Use `create(ResolveExposureRequestSchema)` to create a new message.
333
340
  */
334
341
  export const ResolveExposureRequestSchema = /*@__PURE__*/
335
- messageDesc(file_experiments_v1_experiments, 45);
342
+ messageDesc(file_experiments_v1_experiments, 46);
336
343
 
337
344
  /**
338
345
  * Describes the message experiments.v1.ResolveExposureResponse.
339
346
  * Use `create(ResolveExposureResponseSchema)` to create a new message.
340
347
  */
341
348
  export const ResolveExposureResponseSchema = /*@__PURE__*/
342
- messageDesc(file_experiments_v1_experiments, 46);
349
+ messageDesc(file_experiments_v1_experiments, 47);
343
350
 
344
351
  /**
345
352
  * Describes the enum experiments.v1.ExperimentStatus.