@eide/foir-proto-ts 0.60.0 → 0.62.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.60.0",
3
+ "version": "0.62.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./analytics/v1/analytics_pb": "./src/analytics/v1/analytics_pb.js",
@@ -3660,6 +3660,36 @@ export declare type ResolvedDesignTokens = Message<"settings.v1.ResolvedDesignTo
3660
3660
  * @generated from field: repeated settings.v1.ResolvedTypographyToken typography = 7;
3661
3661
  */
3662
3662
  typography: ResolvedTypographyToken[];
3663
+
3664
+ /**
3665
+ * Spacing scale — dimension tokens grouped under `spacing.*`. Names
3666
+ * like xs / sm / md / lg / xl are the convention.
3667
+ *
3668
+ * @generated from field: repeated settings.v1.ResolvedDimensionToken spacings = 8;
3669
+ */
3670
+ spacings: ResolvedDimensionToken[];
3671
+
3672
+ /**
3673
+ * Border-radius values — dimension tokens grouped under `radius.*`.
3674
+ *
3675
+ * @generated from field: repeated settings.v1.ResolvedDimensionToken radii = 9;
3676
+ */
3677
+ radii: ResolvedDimensionToken[];
3678
+
3679
+ /**
3680
+ * Shadows — composite tokens with offset/blur/spread/color and an
3681
+ * optional layered form for stacked drop shadows.
3682
+ *
3683
+ * @generated from field: repeated settings.v1.ResolvedShadowToken shadows = 10;
3684
+ */
3685
+ shadows: ResolvedShadowToken[];
3686
+
3687
+ /**
3688
+ * Borders — composite tokens with width/style/color.
3689
+ *
3690
+ * @generated from field: repeated settings.v1.ResolvedBorderToken borders = 11;
3691
+ */
3692
+ borders: ResolvedBorderToken[];
3663
3693
  };
3664
3694
 
3665
3695
  /**
@@ -3886,6 +3916,158 @@ export declare type ResolvedTypographyToken = Message<"settings.v1.ResolvedTypog
3886
3916
  */
3887
3917
  export declare const ResolvedTypographyTokenSchema: GenMessage<ResolvedTypographyToken>;
3888
3918
 
3919
+ /**
3920
+ * @generated from message settings.v1.ResolvedShadowToken
3921
+ */
3922
+ export declare type ResolvedShadowToken = Message<"settings.v1.ResolvedShadowToken"> & {
3923
+ /**
3924
+ * @generated from field: string path = 1;
3925
+ */
3926
+ path: string;
3927
+
3928
+ /**
3929
+ * @generated from field: string name = 2;
3930
+ */
3931
+ name: string;
3932
+
3933
+ /**
3934
+ * @generated from field: optional string description = 3;
3935
+ */
3936
+ description?: string | undefined;
3937
+
3938
+ /**
3939
+ * One layer per stacked drop shadow. Single-shadow tokens have a
3940
+ * one-element list. Storefronts join layers with `, ` when emitting
3941
+ * `box-shadow`.
3942
+ *
3943
+ * @generated from field: repeated settings.v1.ResolvedShadowLayer layers = 4;
3944
+ */
3945
+ layers: ResolvedShadowLayer[];
3946
+ };
3947
+
3948
+ /**
3949
+ * Describes the message settings.v1.ResolvedShadowToken.
3950
+ * Use `create(ResolvedShadowTokenSchema)` to create a new message.
3951
+ */
3952
+ export declare const ResolvedShadowTokenSchema: GenMessage<ResolvedShadowToken>;
3953
+
3954
+ /**
3955
+ * @generated from message settings.v1.ResolvedShadowLayer
3956
+ */
3957
+ export declare type ResolvedShadowLayer = Message<"settings.v1.ResolvedShadowLayer"> & {
3958
+ /**
3959
+ * "0px"
3960
+ *
3961
+ * @generated from field: string offset_x = 1;
3962
+ */
3963
+ offsetX: string;
3964
+
3965
+ /**
3966
+ * "4px"
3967
+ *
3968
+ * @generated from field: string offset_y = 2;
3969
+ */
3970
+ offsetY: string;
3971
+
3972
+ /**
3973
+ * "6px"
3974
+ *
3975
+ * @generated from field: string blur = 3;
3976
+ */
3977
+ blur: string;
3978
+
3979
+ /**
3980
+ * "0px"
3981
+ *
3982
+ * @generated from field: string spread = 4;
3983
+ */
3984
+ spread: string;
3985
+
3986
+ /**
3987
+ * "#00000033"
3988
+ *
3989
+ * @generated from field: string color = 5;
3990
+ */
3991
+ color: string;
3992
+
3993
+ /**
3994
+ * True when the shadow is rendered inside the element (CSS `inset`).
3995
+ *
3996
+ * @generated from field: bool inset = 6;
3997
+ */
3998
+ inset: boolean;
3999
+ };
4000
+
4001
+ /**
4002
+ * Describes the message settings.v1.ResolvedShadowLayer.
4003
+ * Use `create(ResolvedShadowLayerSchema)` to create a new message.
4004
+ */
4005
+ export declare const ResolvedShadowLayerSchema: GenMessage<ResolvedShadowLayer>;
4006
+
4007
+ /**
4008
+ * @generated from message settings.v1.ResolvedBorderToken
4009
+ */
4010
+ export declare type ResolvedBorderToken = Message<"settings.v1.ResolvedBorderToken"> & {
4011
+ /**
4012
+ * @generated from field: string path = 1;
4013
+ */
4014
+ path: string;
4015
+
4016
+ /**
4017
+ * @generated from field: string name = 2;
4018
+ */
4019
+ name: string;
4020
+
4021
+ /**
4022
+ * @generated from field: optional string description = 3;
4023
+ */
4024
+ description?: string | undefined;
4025
+
4026
+ /**
4027
+ * @generated from field: settings.v1.ResolvedBorderValue value = 4;
4028
+ */
4029
+ value?: ResolvedBorderValue | undefined;
4030
+ };
4031
+
4032
+ /**
4033
+ * Describes the message settings.v1.ResolvedBorderToken.
4034
+ * Use `create(ResolvedBorderTokenSchema)` to create a new message.
4035
+ */
4036
+ export declare const ResolvedBorderTokenSchema: GenMessage<ResolvedBorderToken>;
4037
+
4038
+ /**
4039
+ * @generated from message settings.v1.ResolvedBorderValue
4040
+ */
4041
+ export declare type ResolvedBorderValue = Message<"settings.v1.ResolvedBorderValue"> & {
4042
+ /**
4043
+ * "#2c4433"
4044
+ *
4045
+ * @generated from field: string color = 1;
4046
+ */
4047
+ color: string;
4048
+
4049
+ /**
4050
+ * "1px"
4051
+ *
4052
+ * @generated from field: string width = 2;
4053
+ */
4054
+ width: string;
4055
+
4056
+ /**
4057
+ * One of "solid" | "dashed" | "dotted" | "double" | "groove" | "ridge"
4058
+ * | "inset" | "outset" | "none". Storefronts pass through verbatim.
4059
+ *
4060
+ * @generated from field: string style = 3;
4061
+ */
4062
+ style: string;
4063
+ };
4064
+
4065
+ /**
4066
+ * Describes the message settings.v1.ResolvedBorderValue.
4067
+ * Use `create(ResolvedBorderValueSchema)` to create a new message.
4068
+ */
4069
+ export declare const ResolvedBorderValueSchema: GenMessage<ResolvedBorderValue>;
4070
+
3889
4071
  /**
3890
4072
  * @generated from message settings.v1.ResolvedTypographyValue
3891
4073
  */
@@ -11,7 +11,7 @@ import { file_publish_v1_publish } from "../../publish/v1/publish_pb.js";
11
11
  * Describes the file settings/v1/settings.proto.
12
12
  */
13
13
  export const file_settings_v1_settings = /*@__PURE__*/
14
- fileDesc("ChpzZXR0aW5ncy92MS9zZXR0aW5ncy5wcm90bxILc2V0dGluZ3MudjEiggMKB1NldHRpbmcSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEhAKCGNhdGVnb3J5GAMgASgJEisKBXZhbHVlGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhkKDGRpc3BsYXlfbmFtZRgFIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAYgASgJSAKIAQESEQoJZGF0YV90eXBlGAcgASgJEhEKCWlzX3B1YmxpYxgIIAEoCBIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQggKBl92YWx1ZUIPCg1fZGlzcGxheV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfcHJvamVjdF9pZCKrBAoIQXVkaXRMb2cSCgoCaWQYASABKAkSLQoJdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgd1c2VyX2lkGAMgASgJSACIAQESFgoJdGVuYW50X2lkGAQgASgJSAGIAQESFwoKcHJvamVjdF9pZBgFIAEoCUgCiAEBEg4KBmFjdGlvbhgGIAEoCRIVCg1yZXNvdXJjZV90eXBlGAcgASgJEhgKC3Jlc291cmNlX2lkGAggASgJSAOIAQESLAoGYmVmb3JlGAkgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEisKBWFmdGVyGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgFiAEBEi4KCG1ldGFkYXRhGAsgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgGiAEBEhcKCmlwX2FkZHJlc3MYDCABKAlIB4gBARIXCgp1c2VyX2FnZW50GA0gASgJSAiIAQESFwoKcmVxdWVzdF9pZBgOIAEoCUgJiAEBQgoKCF91c2VyX2lkQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCDgoMX3Jlc291cmNlX2lkQgkKB19iZWZvcmVCCAoGX2FmdGVyQgsKCV9tZXRhZGF0YUINCgtfaXBfYWRkcmVzc0INCgtfdXNlcl9hZ2VudEINCgtfcmVxdWVzdF9pZCKdBQoETm90ZRIKCgJpZBgBIAEoCRITCgtlbnRpdHlfdHlwZRgCIAEoCRIRCgllbnRpdHlfaWQYAyABKAkSHwoSZW50aXR5X25hdHVyYWxfa2V5GAQgASgJSACIAQESFwoKdmVyc2lvbl9pZBgFIAEoCUgBiAEBEigKB2NvbnRlbnQYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eh8KEmNvbnRlbnRfcGxhaW5fdGV4dBgHIAEoCUgCiAEBEhsKDnBhcmVudF9ub3RlX2lkGAogASgJSAOIAQESGwoOdGhyZWFkX3Jvb3RfaWQYCyABKAlIBIgBARITCgtpc19yZXNvbHZlZBgPIAEoCBI0CgtyZXNvbHZlZF9hdBgQIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARIYCgtyZXNvbHZlZF9ieRgRIAEoCUgGiAEBEi4KCG1ldGFkYXRhGBQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBEhEKCXRlbmFudF9pZBgeIAEoCRIXCgpwcm9qZWN0X2lkGB8gASgJSAiIAQESEgoKY3JlYXRlZF9ieRgoIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIVChNfZW50aXR5X25hdHVyYWxfa2V5Qg0KC192ZXJzaW9uX2lkQhUKE19jb250ZW50X3BsYWluX3RleHRCEQoPX3BhcmVudF9ub3RlX2lkQhEKD190aHJlYWRfcm9vdF9pZEIOCgxfcmVzb2x2ZWRfYXRCDgoMX3Jlc29sdmVkX2J5QgsKCV9tZXRhZGF0YUINCgtfcHJvamVjdF9pZCKqBQoFU2hhcmUSCgoCaWQYASABKAkSNQoNcmVzb3VyY2VfdHlwZRgCIAEoDjIeLnNldHRpbmdzLnYxLlNoYXJlUmVzb3VyY2VUeXBlEhYKCXJlY29yZF9pZBgDIAEoCUgAiAEBEhQKB2ZpbGVfaWQYBCABKAlIAYgBARIWCgltb2RlbF9rZXkYBSABKAlIAogBARIfChdzaGFyZWRfd2l0aF9jdXN0b21lcl9pZBgGIAEoCRIwCgpwZXJtaXNzaW9uGAcgASgOMhwuc2V0dGluZ3MudjEuU2hhcmVQZXJtaXNzaW9uEigKBnN0YXR1cxgKIAEoDjIYLnNldHRpbmdzLnYxLlNoYXJlU3RhdHVzEjQKC2FjY2VwdGVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBEjMKCmV4cGlyZXNfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgFiAEBEhcKCnJldm9rZWRfYnkYHyABKAlIBogBARIzCgpyZXZva2VkX2F0GCAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgHiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgwKCl9yZWNvcmRfaWRCCgoIX2ZpbGVfaWRCDAoKX21vZGVsX2tleUIOCgxfYWNjZXB0ZWRfYXRCDQoLX2V4cGlyZXNfYXRCDQoLX2NyZWF0ZWRfYnlCDQoLX3Jldm9rZWRfYnlCDQoLX3Jldm9rZWRfYXQiUgoSR2V0U2V0dGluZ3NSZXF1ZXN0EhUKCGNhdGVnb3J5GAEgASgJSACIAQESEAoDa2V5GAIgASgJSAGIAQFCCwoJX2NhdGVnb3J5QgYKBF9rZXkiPQoTR2V0U2V0dGluZ3NSZXNwb25zZRImCghzZXR0aW5ncxgBIAMoCzIULnNldHRpbmdzLnYxLlNldHRpbmciSwoUVXBkYXRlU2V0dGluZ1JlcXVlc3QSCwoDa2V5GAEgASgJEiYKBXZhbHVlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCI+ChVVcGRhdGVTZXR0aW5nUmVzcG9uc2USJQoHc2V0dGluZxgBIAEoCzIULnNldHRpbmdzLnYxLlNldHRpbmciuwIKFExpc3RBdWRpdExvZ3NSZXF1ZXN0EhMKBmFjdGlvbhgBIAEoCUgAiAEBEhoKDXJlc291cmNlX3R5cGUYAiABKAlIAYgBARIYCgtyZXNvdXJjZV9pZBgDIAEoCUgCiAEBEhQKB3VzZXJfaWQYBCABKAlIA4gBARItCgRmcm9tGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEisKAnRvGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUIJCgdfYWN0aW9uQhAKDl9yZXNvdXJjZV90eXBlQg4KDF9yZXNvdXJjZV9pZEIKCghfdXNlcl9pZEIHCgVfZnJvbUIFCgNfdG8iSwoVTGlzdEF1ZGl0TG9nc1Jlc3BvbnNlEiMKBGxvZ3MYASADKAsyFS5zZXR0aW5ncy52MS5BdWRpdExvZxINCgV0b3RhbBgCIAEoBSKVAQoRQ3JlYXRlTm90ZVJlcXVlc3QSEwoLZW50aXR5X3R5cGUYASABKAkSEQoJZW50aXR5X2lkGAIgASgJEigKB2NvbnRlbnQYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhsKDnBhcmVudF9ub3RlX2lkGAQgASgJSACIAQFCEQoPX3BhcmVudF9ub3RlX2lkIjUKEkNyZWF0ZU5vdGVSZXNwb25zZRIfCgRub3RlGAEgASgLMhEuc2V0dGluZ3MudjEuTm90ZSIcCg5HZXROb3RlUmVxdWVzdBIKCgJpZBgBIAEoCSIyCg9HZXROb3RlUmVzcG9uc2USHwoEbm90ZRgBIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUiiQEKEExpc3ROb3Rlc1JlcXVlc3QSEwoLZW50aXR5X3R5cGUYASABKAkSEQoJZW50aXR5X2lkGAIgASgJEhsKDnBhcmVudF9ub3RlX2lkGAMgASgJSACIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQhEKD19wYXJlbnRfbm90ZV9pZCJEChFMaXN0Tm90ZXNSZXNwb25zZRIgCgVub3RlcxgBIAMoCzIRLnNldHRpbmdzLnYxLk5vdGUSDQoFdG90YWwYAiABKAUihAEKEVVwZGF0ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJEi0KB2NvbnRlbnQYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESGAoLaXNfcmVzb2x2ZWQYAyABKAhIAYgBAUIKCghfY29udGVudEIOCgxfaXNfcmVzb2x2ZWQiNQoSVXBkYXRlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlIh8KEURlbGV0ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIiUKEkRlbGV0ZU5vdGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIqwFCgtOb3RlTWVudGlvbhIKCgJpZBgBIAEoCRIPCgdub3RlX2lkGAIgASgJEhkKEW1lbnRpb25lZF91c2VyX2lkGAMgASgJEg4KBnN0YXR1cxgEIAEoCRIwCgdzZWVuX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjgKD2Fja25vd2xlZGdlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI1Cgxjb21wbGV0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESGwoOY29tcGxldGVkX25vdGUYCCABKAlIA4gBARI1CgxkaXNtaXNzZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESGwoOZGlzbWlzc19yZWFzb24YCiABKAlIBYgBARIxCghkdWVfZGF0ZRgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBogBARIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgHiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9zZWVuX2F0QhIKEF9hY2tub3dsZWRnZWRfYXRCDwoNX2NvbXBsZXRlZF9hdEIRCg9fY29tcGxldGVkX25vdGVCDwoNX2Rpc21pc3NlZF9hdEIRCg9fZGlzbWlzc19yZWFzb25CCwoJX2R1ZV9kYXRlQg0KC19wcm9qZWN0X2lkItoBChJNZW50aW9uV2l0aENvbnRleHQSKQoHbWVudGlvbhgBIAEoCzIYLnNldHRpbmdzLnYxLk5vdGVNZW50aW9uEh8KBG5vdGUYAiABKAsyES5zZXR0aW5ncy52MS5Ob3RlEhgKC2F1dGhvcl9uYW1lGAMgASgJSACIAQESGAoLZW50aXR5X3R5cGUYBCABKAlIAYgBARIWCgllbnRpdHlfaWQYBSABKAlIAogBAUIOCgxfYXV0aG9yX25hbWVCDgoMX2VudGl0eV90eXBlQgwKCl9lbnRpdHlfaWQiTwoNTWVudGlvbkNvdW50cxIPCgdwZW5kaW5nGAEgASgFEhAKCHBhc3RfZHVlGAIgASgFEhsKE2NvbXBsZXRlZF90aGlzX3dlZWsYAyABKAUicAoVTGlzdE15TWVudGlvbnNSZXF1ZXN0Eg4KBnN0YXR1cxgBIAMoCRIYCgtlbnRpdHlfdHlwZRgCIAEoCUgAiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUIOCgxfZW50aXR5X3R5cGUigwEKFkxpc3RNeU1lbnRpb25zUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5zZXR0aW5ncy52MS5NZW50aW9uV2l0aENvbnRleHQSDQoFdG90YWwYAiABKAUSKgoGY291bnRzGAMgASgLMhouc2V0dGluZ3MudjEuTWVudGlvbkNvdW50cyKgAQoaVXBkYXRlTWVudGlvblN0YXR1c1JlcXVlc3QSEgoKbWVudGlvbl9pZBgBIAEoCRIOCgZzdGF0dXMYAiABKAkSGwoOY29tcGxldGVkX25vdGUYAyABKAlIAIgBARIbCg5kaXNtaXNzX3JlYXNvbhgEIAEoCUgBiAEBQhEKD19jb21wbGV0ZWRfbm90ZUIRCg9fZGlzbWlzc19yZWFzb24iSAobVXBkYXRlTWVudGlvblN0YXR1c1Jlc3BvbnNlEikKB21lbnRpb24YASABKAsyGC5zZXR0aW5ncy52MS5Ob3RlTWVudGlvbiLaAQoSQ3JlYXRlU2hhcmVSZXF1ZXN0EjUKDXJlc291cmNlX3R5cGUYASABKA4yHi5zZXR0aW5ncy52MS5TaGFyZVJlc291cmNlVHlwZRIWCglyZWNvcmRfaWQYAiABKAlIAIgBARIUCgdmaWxlX2lkGAMgASgJSAGIAQESEwoLY3VzdG9tZXJfaWQYBCABKAkSMAoKcGVybWlzc2lvbhgFIAEoDjIcLnNldHRpbmdzLnYxLlNoYXJlUGVybWlzc2lvbkIMCgpfcmVjb3JkX2lkQgoKCF9maWxlX2lkIjgKE0NyZWF0ZVNoYXJlUmVzcG9uc2USIQoFc2hhcmUYASABKAsyEi5zZXR0aW5ncy52MS5TaGFyZSIdCg9HZXRTaGFyZVJlcXVlc3QSCgoCaWQYASABKAkiNQoQR2V0U2hhcmVSZXNwb25zZRIhCgVzaGFyZRgBIAEoCzISLnNldHRpbmdzLnYxLlNoYXJlIsgBChFMaXN0U2hhcmVzUmVxdWVzdBI6Cg1yZXNvdXJjZV90eXBlGAEgASgOMh4uc2V0dGluZ3MudjEuU2hhcmVSZXNvdXJjZVR5cGVIAIgBARIWCglyZWNvcmRfaWQYAiABKAlIAYgBARIUCgdmaWxlX2lkGAMgASgJSAKIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQhAKDl9yZXNvdXJjZV90eXBlQgwKCl9yZWNvcmRfaWRCCgoIX2ZpbGVfaWQiRwoSTGlzdFNoYXJlc1Jlc3BvbnNlEiIKBnNoYXJlcxgBIAMoCzISLnNldHRpbmdzLnYxLlNoYXJlEg0KBXRvdGFsGAIgASgFIqABChJVcGRhdGVTaGFyZVJlcXVlc3QSCgoCaWQYASABKAkSNQoKcGVybWlzc2lvbhgCIAEoDjIcLnNldHRpbmdzLnYxLlNoYXJlUGVybWlzc2lvbkgAiAEBEi0KBnN0YXR1cxgDIAEoDjIYLnNldHRpbmdzLnYxLlNoYXJlU3RhdHVzSAGIAQFCDQoLX3Blcm1pc3Npb25CCQoHX3N0YXR1cyI4ChNVcGRhdGVTaGFyZVJlc3BvbnNlEiEKBXNoYXJlGAEgASgLMhIuc2V0dGluZ3MudjEuU2hhcmUiIAoSUmV2b2tlU2hhcmVSZXF1ZXN0EgoKAmlkGAEgASgJIiYKE1Jldm9rZVNoYXJlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIgChJBY2NlcHRTaGFyZVJlcXVlc3QSCgoCaWQYASABKAkiOAoTQWNjZXB0U2hhcmVSZXNwb25zZRIhCgVzaGFyZRgBIAEoCzISLnNldHRpbmdzLnYxLlNoYXJlIiEKE0RlY2xpbmVTaGFyZVJlcXVlc3QSCgoCaWQYASABKAkiOQoURGVjbGluZVNoYXJlUmVzcG9uc2USIQoFc2hhcmUYASABKAsyEi5zZXR0aW5ncy52MS5TaGFyZSK/AwoGTG9jYWxlEgoKAmlkGAEgASgJEg4KBmxvY2FsZRgCIAEoCRIUCgxkaXNwbGF5X25hbWUYAyABKAkSGAoLbmF0aXZlX25hbWUYBCABKAlIAIgBARISCgppc19kZWZhdWx0GAUgASgIEhEKCWlzX2FjdGl2ZRgGIAEoCBIOCgZpc19ydGwYByABKAgSHAoPZmFsbGJhY2tfbG9jYWxlGAggASgJSAGIAQESGQoRZmFsbGJhY2tfcHJpb3JpdHkYCSABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgCiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIA4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfbmF0aXZlX25hbWVCEgoQX2ZhbGxiYWNrX2xvY2FsZUINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSJnChJMaXN0TG9jYWxlc1JlcXVlc3QSHQoQaW5jbHVkZV9pbmFjdGl2ZRgBIAEoCEgAiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUITChFfaW5jbHVkZV9pbmFjdGl2ZSJKChNMaXN0TG9jYWxlc1Jlc3BvbnNlEiQKB2xvY2FsZXMYASADKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUSDQoFdG90YWwYAiABKAUiHgoQR2V0TG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSI4ChFHZXRMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUi3wEKE0NyZWF0ZUxvY2FsZVJlcXVlc3QSDgoGbG9jYWxlGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtuYXRpdmVfbmFtZRgDIAEoCUgAiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAYgBARITCgZpc19ydGwYBSABKAhIAogBARIcCg9mYWxsYmFja19sb2NhbGUYBiABKAlIA4gBAUIOCgxfbmF0aXZlX25hbWVCDQoLX2lzX2RlZmF1bHRCCQoHX2lzX3J0bEISChBfZmFsbGJhY2tfbG9jYWxlIjsKFENyZWF0ZUxvY2FsZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSKXAgoTVXBkYXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCRIZCgxkaXNwbGF5X25hbWUYAiABKAlIAIgBARIYCgtuYXRpdmVfbmFtZRgDIAEoCUgBiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAogBARIWCglpc19hY3RpdmUYBSABKAhIA4gBARITCgZpc19ydGwYBiABKAhIBIgBARIcCg9mYWxsYmFja19sb2NhbGUYByABKAlIBYgBAUIPCg1fZGlzcGxheV9uYW1lQg4KDF9uYXRpdmVfbmFtZUINCgtfaXNfZGVmYXVsdEIMCgpfaXNfYWN0aXZlQgkKB19pc19ydGxCEgoQX2ZhbGxiYWNrX2xvY2FsZSI7ChRVcGRhdGVMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUiIQoTRGVsZXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSInChREZWxldGVMb2NhbGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIpQBCg5OYXZQcmVmZXJlbmNlcxIZChFmYXZvcml0ZV9wcm9qZWN0cxgBIAMoCRIaChJmYXZvcml0ZV9uYXZfaXRlbXMYAiADKAkSGgoSY29sbGFwc2VkX3NlY3Rpb25zGAMgAygJEi8KDm5hdl9pdGVtX29yZGVyGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCIaChhHZXROYXZQcmVmZXJlbmNlc1JlcXVlc3QiTQoZR2V0TmF2UHJlZmVyZW5jZXNSZXNwb25zZRIwCgtwcmVmZXJlbmNlcxgBIAEoCzIbLnNldHRpbmdzLnYxLk5hdlByZWZlcmVuY2VzIvwBChtVcGRhdGVOYXZQcmVmZXJlbmNlc1JlcXVlc3QSNQoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlc0gAiAEBEh4KEXRvZ2dsZV9wcm9qZWN0X2lkGAIgASgJSAGIAQESHAoPdG9nZ2xlX25hdl9pdGVtGAMgASgJSAKIAQESGwoOdG9nZ2xlX3NlY3Rpb24YBCABKAlIA4gBAUIOCgxfcHJlZmVyZW5jZXNCFAoSX3RvZ2dsZV9wcm9qZWN0X2lkQhIKEF90b2dnbGVfbmF2X2l0ZW1CEQoPX3RvZ2dsZV9zZWN0aW9uIlAKHFVwZGF0ZU5hdlByZWZlcmVuY2VzUmVzcG9uc2USMAoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlcyJeChJSZWNlbnRseU9wZW5lZEl0ZW0SDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgRwYXRoGAQgASgJEhEKCXRpbWVzdGFtcBgFIAEoAyIqChlMaXN0UmVjZW50bHlPcGVuZWRSZXF1ZXN0Eg0KBWxpbWl0GAEgASgFIkwKGkxpc3RSZWNlbnRseU9wZW5lZFJlc3BvbnNlEi4KBWl0ZW1zGAEgAygLMh8uc2V0dGluZ3MudjEuUmVjZW50bHlPcGVuZWRJdGVtIlMKGlRyYWNrUmVjZW50bHlPcGVuZWRSZXF1ZXN0EgwKBHR5cGUYASABKAkSCgoCaWQYAiABKAkSDQoFbGFiZWwYAyABKAkSDAoEcGF0aBgEIAEoCSIuChtUcmFja1JlY2VudGx5T3BlbmVkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI3ChtSZW1vdmVSZWNlbnRseU9wZW5lZFJlcXVlc3QSDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCSIvChxSZW1vdmVSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiHAoaQ2xlYXJSZWNlbnRseU9wZW5lZFJlcXVlc3QiLgobQ2xlYXJSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgizwUKEENvbnRleHREaW1lbnNpb24SCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARITCgtzb3VyY2VfdHlwZRgFIAEoCRIYChBzb3VyY2VfbW9kZWxfa2V5GAYgASgJEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgHIAEoCUgBiAEBEhEKCWlzX3N5c3RlbRgIIAEoCBIXCg9idWlsdF9pbl92YWx1ZXMYCSADKAkSEQoJZGF0YV90eXBlGAogASgJEhAKCGNhdGVnb3J5GAsgASgJEhMKC2lzX3JlcXVpcmVkGAwgASgIEhIKCnNvcnRfb3JkZXIYDSABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgCiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIA4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBg8IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GD0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBQg4KDF9kZXNjcmlwdGlvbkIVChNfZGVmYXVsdF9yZWNvcmRfa2V5Qg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5QhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdCIzChVDb250ZXh0RGltZW5zaW9uVmFsdWUSCwoDa2V5GAEgASgJEg0KBWxhYmVsGAIgASgJIl0KHExpc3RDb250ZXh0RGltZW5zaW9uc1JlcXVlc3QSEwoGc2VhcmNoGAEgASgJSACIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zZWFyY2giYQodTGlzdENvbnRleHREaW1lbnNpb25zUmVzcG9uc2USMQoKZGltZW5zaW9ucxgBIAMoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24SDQoFdG90YWwYAiABKAUiKAoaR2V0Q29udGV4dERpbWVuc2lvblJlcXVlc3QSCgoCaWQYASABKAkiTwobR2V0Q29udGV4dERpbWVuc2lvblJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24iywEKHUNyZWF0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEwoLc291cmNlX3R5cGUYBCABKAkSGAoQc291cmNlX21vZGVsX2tleRgFIAEoCRIfChJkZWZhdWx0X3JlY29yZF9rZXkYBiABKAlIAYgBAUIOCgxfZGVzY3JpcHRpb25CFQoTX2RlZmF1bHRfcmVjb3JkX2tleSJSCh5DcmVhdGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiLdAQodVXBkYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESHQoQc291cmNlX21vZGVsX2tleRgEIAEoCUgCiAEBEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgFIAEoCUgDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkITChFfc291cmNlX21vZGVsX2tleUIVChNfZGVmYXVsdF9yZWNvcmRfa2V5IlIKHlVwZGF0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIisKHURlbGV0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIjEKHkRlbGV0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIngKIEdldENvbnRleHREaW1lbnNpb25WYWx1ZXNSZXF1ZXN0EhUKDWRpbWVuc2lvbl9rZXkYASABKAkSEwoGc2VhcmNoGAIgASgJSACIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zZWFyY2giZgohR2V0Q29udGV4dERpbWVuc2lvblZhbHVlc1Jlc3BvbnNlEjIKBnZhbHVlcxgBIAMoCzIiLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb25WYWx1ZRINCgV0b3RhbBgCIAEoBSLnAQoUQ3VzdG9tZXJQcm9maWxlRmllbGQSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBHR5cGUYAyABKAkSDQoFbGFiZWwYBCABKAkSEAoIcmVxdWlyZWQYBSABKAgSFgoJaGVscF90ZXh0GAYgASgJSACIAQESGAoLcGxhY2Vob2xkZXIYByABKAlIAYgBARIsCgZjb25maWcYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQFCDAoKX2hlbHBfdGV4dEIOCgxfcGxhY2Vob2xkZXJCCQoHX2NvbmZpZyKSAwoVQ3VzdG9tZXJQcm9maWxlU2NoZW1hEgoKAmlkGAEgASgJEjEKBmZpZWxkcxgCIAMoCzIhLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZUZpZWxkEhUKDXB1YmxpY19maWVsZHMYAyADKAkSDwoHdmVyc2lvbhgEIAEoBRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBg8IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GD0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdCIhCh9HZXRDdXN0b21lclByb2ZpbGVTY2hlbWFSZXF1ZXN0IlYKIEdldEN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlc3BvbnNlEjIKBnNjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYSLyAwoTVmFyaWFudENhdGFsb2dFbnRyeRIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgFIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESEAoIcHJpb3JpdHkYBiABKAUSEgoKaXNfZGVmYXVsdBgHIAEoCBIRCglpc19hY3RpdmUYCCABKAgSGAoLZmFsbGJhY2tfaWQYCiABKAlIAogBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIXCgpjcmVhdGVkX2J5GB4gASgJSAOIAQESFwoKdXBkYXRlZF9ieRgfIAEoCUgEiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9kZXNjcmlwdGlvbkISChBfdGFyZ2V0aW5nX3J1bGVzQg4KDF9mYWxsYmFja19pZEINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSKAAQoZTGlzdFZhcmlhbnRDYXRhbG9nUmVxdWVzdBIWCglpc19hY3RpdmUYASABKAhIAIgBARITCgZzZWFyY2gYAiABKAlIAYgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCDAoKX2lzX2FjdGl2ZUIJCgdfc2VhcmNoIl4KGkxpc3RWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEjEKB2VudHJpZXMYASADKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Eg0KBXRvdGFsGAIgASgFIisKHUdldFZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIlEKHkdldFZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRIvCgVlbnRyeRgBIAEoCzIgLnNldHRpbmdzLnYxLlZhcmlhbnRDYXRhbG9nRW50cnkiqwIKIENyZWF0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESPAoPdGFyZ2V0aW5nX3J1bGVzGAQgASgLMh4uZXhwcmVzc2lvbnMudjEuUnVsZUV4cHJlc3Npb25IAYgBARIVCghwcmlvcml0eRgFIAEoBUgCiAEBEhcKCmlzX2RlZmF1bHQYBiABKAhIA4gBARIWCglpc19hY3RpdmUYByABKAhIBIgBAUIOCgxfZGVzY3JpcHRpb25CEgoQX3RhcmdldGluZ19ydWxlc0ILCglfcHJpb3JpdHlCDQoLX2lzX2RlZmF1bHRCDAoKX2lzX2FjdGl2ZSJUCiFDcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5IrgCCiBVcGRhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESGAoLZGVzY3JpcHRpb24YAyABKAlIAYgBARI8Cg90YXJnZXRpbmdfcnVsZXMYBCABKAsyHi5leHByZXNzaW9ucy52MS5SdWxlRXhwcmVzc2lvbkgCiAEBEhUKCHByaW9yaXR5GAUgASgFSAOIAQESFwoKaXNfZGVmYXVsdBgGIAEoCEgEiAEBEhYKCWlzX2FjdGl2ZRgHIAEoCEgFiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkISChBfdGFyZ2V0aW5nX3J1bGVzQgsKCV9wcmlvcml0eUINCgtfaXNfZGVmYXVsdEIMCgpfaXNfYWN0aXZlIlQKIVVwZGF0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRIvCgVlbnRyeRgBIAEoCzIgLnNldHRpbmdzLnYxLlZhcmlhbnRDYXRhbG9nRW50cnkiLgogRGVsZXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QSCgoCaWQYASABKAkiNAohRGVsZXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiMAoZR2V0Q3VzdG9tZXJQcm9maWxlUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCSJDChpHZXRDdXN0b21lclByb2ZpbGVSZXNwb25zZRIlCgRkYXRhGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJXChlTZXRDdXN0b21lclByb2ZpbGVSZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEiUKBGRhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Ii0KGlNldEN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgibgoiVXBkYXRlQ3VzdG9tZXJQcm9maWxlU2NoZW1hUmVxdWVzdBIxCgZmaWVsZHMYASADKAsyIS5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVGaWVsZBIVCg1wdWJsaWNfZmllbGRzGAIgAygJIlkKI1VwZGF0ZUN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlc3BvbnNlEjIKBnNjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYSJTChVDdXN0b21lclByb2ZpbGVSZXN1bHQSEwoLY3VzdG9tZXJfaWQYASABKAkSJQoEZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiTQodU2VhcmNoQ3VzdG9tZXJQcm9maWxlc1JlcXVlc3QSDQoFcXVlcnkYASABKAkSDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFImQKHlNlYXJjaEN1c3RvbWVyUHJvZmlsZXNSZXNwb25zZRIzCgdyZXN1bHRzGAEgAygLMiIuc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlUmVzdWx0Eg0KBXRvdGFsGAIgASgFIjMKHERlbGV0ZUN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkiMAodRGVsZXRlQ3VzdG9tZXJQcm9maWxlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI9CiZHZXRDdXN0b21lclJlc29sdXRpb25BdHRyaWJ1dGVzUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCSJZChNSZXNvbHV0aW9uQXR0cmlidXRlEgsKA2tleRgBIAEoCRI1CgZ2YWx1ZXMYAiADKAsyJS5zZXR0aW5ncy52MS5SZXNvbHV0aW9uQXR0cmlidXRlVmFsdWUigAEKGFJlc29sdXRpb25BdHRyaWJ1dGVWYWx1ZRINCgV2YWx1ZRgBIAEoCRINCgVjb3VudBgCIAEoBRI1CgxsYXN0X3NlZW5fYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX2xhc3Rfc2Vlbl9hdCKMAgonR2V0Q3VzdG9tZXJSZXNvbHV0aW9uQXR0cmlidXRlc1Jlc3BvbnNlEhkKEXRvdGFsX3Jlc29sdXRpb25zGAEgASgFEjQKCmF0dHJpYnV0ZXMYAiADKAsyIC5zZXR0aW5ncy52MS5SZXNvbHV0aW9uQXR0cmlidXRlEjYKDWZpcnN0X3NlZW5fYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESNQoMbGFzdF9zZWVuX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQhAKDl9maXJzdF9zZWVuX2F0Qg8KDV9sYXN0X3NlZW5fYXQiLAoXR2V0RWRpdG9yQ29uZmlnc1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJIsACChVFZGl0b3JDb25maWdQbGFjZW1lbnQSEQoJY29uZmlnX2lkGAEgASgJEhIKCmNvbmZpZ19rZXkYAiABKAkSEAoDdXJsGAMgASgJSACIAQESGwoOYWxsb3dlZF9vcmlnaW4YBCABKAlIAYgBARITCgZoZWlnaHQYBSABKAVIAogBARISCgVsYWJlbBgGIAEoCUgDiAEBEhQKB2FwaV9rZXkYByABKAlIBIgBARIUCgdhcGlfdXJsGAggASgJSAWIAQESHgoRY29ubmVjdGlvbl9kb21haW4YCSABKAlIBogBAUIGCgRfdXJsQhEKD19hbGxvd2VkX29yaWdpbkIJCgdfaGVpZ2h0QggKBl9sYWJlbEIKCghfYXBpX2tleUIKCghfYXBpX3VybEIUChJfY29ubmVjdGlvbl9kb21haW4iUgoYR2V0RWRpdG9yQ29uZmlnc1Jlc3BvbnNlEjYKCnBsYWNlbWVudHMYASADKAsyIi5zZXR0aW5ncy52MS5FZGl0b3JDb25maWdQbGFjZW1lbnQiIAoSUmVzb2x2ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIjYKE1Jlc29sdmVOb3RlUmVzcG9uc2USHwoEbm90ZRgBIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUiIgoUVW5yZXNvbHZlTm90ZVJlcXVlc3QSCgoCaWQYASABKAkiOAoVVW5yZXNvbHZlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlImwKElNlYXJjaE5vdGVzUmVxdWVzdBINCgVxdWVyeRgBIAEoCRIYCgtlbnRpdHlfdHlwZRgCIAEoCUgAiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUIOCgxfZW50aXR5X3R5cGUiRgoTU2VhcmNoTm90ZXNSZXNwb25zZRIgCgVub3RlcxgBIAMoCzIRLnNldHRpbmdzLnYxLk5vdGUSDQoFdG90YWwYAiABKAUiGQoXTWFya01lbnRpb25zU2VlblJlcXVlc3QiKQoYTWFya01lbnRpb25zU2VlblJlc3BvbnNlEg0KBWNvdW50GAEgASgFIi4KH0dldENvbnRleHREaW1lbnNpb25CeUtleVJlcXVlc3QSCwoDa2V5GAEgASgJIlQKIEdldENvbnRleHREaW1lbnNpb25CeUtleVJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24iGQoXR2V0RGVmYXVsdExvY2FsZVJlcXVlc3QiPwoYR2V0RGVmYXVsdExvY2FsZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSImChZHZXRMb2NhbGVCeUNvZGVSZXF1ZXN0EgwKBGNvZGUYASABKAkiPgoXR2V0TG9jYWxlQnlDb2RlUmVzcG9uc2USIwoGbG9jYWxlGAEgASgLMhMuc2V0dGluZ3MudjEuTG9jYWxlIiYKJEdldERlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdCJYCiVHZXREZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEi8KBWVudHJ5GAEgASgLMiAuc2V0dGluZ3MudjEuVmFyaWFudENhdGFsb2dFbnRyeSIjChREZWxldGVTZXR0aW5nUmVxdWVzdBILCgNrZXkYASABKAkiKAoVRGVsZXRlU2V0dGluZ1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiMwofRGVsZXRlU2V0dGluZ3NCeUNhdGVnb3J5UmVxdWVzdBIQCghjYXRlZ29yeRgBIAEoCSIxCiBEZWxldGVTZXR0aW5nc0J5Q2F0ZWdvcnlSZXNwb25zZRINCgVjb3VudBgBIAEoBSJNChZCdWxrU2V0U2V0dGluZ3NSZXF1ZXN0EjMKCHNldHRpbmdzGAEgAygLMiEuc2V0dGluZ3MudjEuVXBkYXRlU2V0dGluZ1JlcXVlc3QiKAoXQnVsa1NldFNldHRpbmdzUmVzcG9uc2USDQoFY291bnQYASABKAUiKQonRW5zdXJlRGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0IlsKKEVuc3VyZURlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5IvADCgxEZXNpZ25Ub2tlbnMSKQoIZG9jdW1lbnQYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EjMKCHJlc29sdmVkGAIgASgLMiEuc2V0dGluZ3MudjEuUmVzb2x2ZWREZXNpZ25Ub2tlbnMSDwoHdmVyc2lvbhgKIAEoBRIeChFwdWJsaXNoZWRfdmVyc2lvbhgLIAEoBUgAiAEBEhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEj0KFHNjaGVkdWxlZF9wdWJsaXNoX2F0GDwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEj8KFnNjaGVkdWxlZF91bnB1Ymxpc2hfYXQYPSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCFAoSX3B1Ymxpc2hlZF92ZXJzaW9uQhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdCKpAwoUUmVzb2x2ZWREZXNpZ25Ub2tlbnMSLwoGY29sb3JzGAEgAygLMh8uc2V0dGluZ3MudjEuUmVzb2x2ZWRDb2xvclRva2VuEjsKDWZvbnRfZmFtaWxpZXMYAiADKAsyJC5zZXR0aW5ncy52MS5SZXNvbHZlZEZvbnRGYW1pbHlUb2tlbhI6Cgxmb250X3dlaWdodHMYAyADKAsyJC5zZXR0aW5ncy52MS5SZXNvbHZlZEZvbnRXZWlnaHRUb2tlbhI3Cgpmb250X3NpemVzGAQgAygLMiMuc2V0dGluZ3MudjEuUmVzb2x2ZWREaW1lbnNpb25Ub2tlbhI2CgxsaW5lX2hlaWdodHMYBSADKAsyIC5zZXR0aW5ncy52MS5SZXNvbHZlZE51bWJlclRva2VuEjwKD2xldHRlcl9zcGFjaW5ncxgGIAMoCzIjLnNldHRpbmdzLnYxLlJlc29sdmVkRGltZW5zaW9uVG9rZW4SOAoKdHlwb2dyYXBoeRgHIAMoCzIkLnNldHRpbmdzLnYxLlJlc29sdmVkVHlwb2dyYXBoeVRva2VuImkKElJlc29sdmVkQ29sb3JUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAEoCUIOCgxfZGVzY3JpcHRpb24ibgoXUmVzb2x2ZWRGb250RmFtaWx5VG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESDQoFdmFsdWUYBCADKAlCDgoMX2Rlc2NyaXB0aW9uIm4KF1Jlc29sdmVkRm9udFdlaWdodFRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBXZhbHVlGAQgASgFQg4KDF9kZXNjcmlwdGlvbiJtChZSZXNvbHZlZERpbWVuc2lvblRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBXZhbHVlGAQgASgJQg4KDF9kZXNjcmlwdGlvbiJqChNSZXNvbHZlZE51bWJlclRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBXZhbHVlGAQgASgBQg4KDF9kZXNjcmlwdGlvbiLMAQoXUmVzb2x2ZWRUeXBvZ3JhcGh5VG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESMwoFdmFsdWUYBCABKAsyJC5zZXR0aW5ncy52MS5SZXNvbHZlZFR5cG9ncmFwaHlWYWx1ZRISCgVsYWJlbBgFIAEoCUgBiAEBEhAKA3RhZxgGIAEoCUgCiAEBQg4KDF9kZXNjcmlwdGlvbkIICgZfbGFiZWxCBgoEX3RhZyKbAQoXUmVzb2x2ZWRUeXBvZ3JhcGh5VmFsdWUSEwoLZm9udF9mYW1pbHkYASADKAkSEQoJZm9udF9zaXplGAIgASgJEhMKC2ZvbnRfd2VpZ2h0GAMgASgFEhMKC2xpbmVfaGVpZ2h0GAQgASgBEhYKDmxldHRlcl9zcGFjaW5nGAUgASgJEhYKDnRleHRfdHJhbnNmb3JtGAYgASgJIkQKFkdldERlc2lnblRva2Vuc1JlcXVlc3QSKgoHY2hhbm5lbBgBIAEoDjIZLnB1Ymxpc2gudjEuU2NoZW1hQ2hhbm5lbCJEChdHZXREZXNpZ25Ub2tlbnNSZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMiRgoZVXBkYXRlRGVzaWduVG9rZW5zUmVxdWVzdBIpCghkb2N1bWVudBgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiRwoaVXBkYXRlRGVzaWduVG9rZW5zUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zIhwKGlB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXF1ZXN0In4KG1B1Ymxpc2hEZXNpZ25Ub2tlbnNSZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMSNAoQYnJlYWtpbmdfY2hhbmdlcxgCIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2UiHgocVW5wdWJsaXNoRGVzaWduVG9rZW5zUmVxdWVzdCJKCh1VbnB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMiJQojR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1c1JlcXVlc3QiUQokR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyKcAQoiU2NoZWR1bGVEZXNpZ25Ub2tlbnNQdWJsaXNoUmVxdWVzdBIuCgpwdWJsaXNoX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCJQCiNTY2hlZHVsZURlc2lnblRva2Vuc1B1Ymxpc2hSZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMiKwopQ2FuY2VsU2NoZWR1bGVkRGVzaWduVG9rZW5zUHVibGlzaFJlcXVlc3QiVwoqQ2FuY2VsU2NoZWR1bGVkRGVzaWduVG9rZW5zUHVibGlzaFJlc3BvbnNlEikKBnRva2VucxgBIAEoCzIZLnNldHRpbmdzLnYxLkRlc2lnblRva2VucyI3CiFDb3VudERlc2lnblRva2VuUmVmZXJlbmNlc1JlcXVlc3QSEgoKdG9rZW5fcGF0aBgBIAEoCSJTCiJDb3VudERlc2lnblRva2VuUmVmZXJlbmNlc1Jlc3BvbnNlEhcKD3BhcmFncmFwaF9jb3VudBgBIAEoBRIUCgxyZWNvcmRfY291bnQYAiABKAUiRQoXR2V0UHJvamVjdFNjaGVtYVJlcXVlc3QSKgoHY2hhbm5lbBgBIAEoDjIZLnB1Ymxpc2gudjEuU2NoZW1hQ2hhbm5lbCJlChJQcm9qZWN0U2NoZW1hTW9kZWwSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSEwoLZmllbGRzX2pzb24YBCABKAkSEwoLY29uZmlnX2pzb24YBSABKAkiwgEKHVByb2plY3RTY2hlbWFDb250ZXh0RGltZW5zaW9uEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEh0KEHNvdXJjZV9tb2RlbF9rZXkYBCABKAlIAIgBARIfChJkZWZhdWx0X3JlY29yZF9rZXkYBSABKAlIAYgBARIOCgZ2YWx1ZXMYBiADKAlCEwoRX3NvdXJjZV9tb2RlbF9rZXlCFQoTX2RlZmF1bHRfcmVjb3JkX2tleSKOAQoZUHJvamVjdFNjaGVtYUF1dGhQcm92aWRlchILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIMCgR0eXBlGAMgASgJEg8KB2VuYWJsZWQYBCABKAgSLAoGY29uZmlnGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBQgkKB19jb25maWci/QEKFlByb2plY3RTY2hlbWFPcGVyYXRpb24SCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSEAoIZW5kcG9pbnQYAyABKAkSEgoKdGltZW91dF9tcxgEIAEoBRIyCgxpbnB1dF9zY2hlbWEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESMwoNb3V0cHV0X3NjaGVtYRgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIWCg5zdXBwb3J0c19hc3luYxgHIAEoCEIPCg1faW5wdXRfc2NoZW1hQhAKDl9vdXRwdXRfc2NoZW1hIkQKFFByb2plY3RTY2hlbWFTZWdtZW50EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhEKCWlzX2FjdGl2ZRgDIAEoCCJZChpQcm9qZWN0U2NoZW1hUHJvZmlsZVNjaGVtYRITCgtmaWVsZHNfanNvbhgBIAEoCRIVCg1wdWJsaWNfZmllbGRzGAIgAygJEg8KB3ZlcnNpb24YAyABKAUikgMKGEdldFByb2plY3RTY2hlbWFSZXNwb25zZRIvCgZtb2RlbHMYASADKAsyHy5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hTW9kZWwSPgoKZGltZW5zaW9ucxgCIAMoCzIqLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFDb250ZXh0RGltZW5zaW9uEj4KDmF1dGhfcHJvdmlkZXJzGAMgAygLMiYuc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYUF1dGhQcm92aWRlchI3CgpvcGVyYXRpb25zGAQgAygLMiMuc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYU9wZXJhdGlvbhIzCghzZWdtZW50cxgFIAMoCzIhLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFTZWdtZW50EkQKDnByb2ZpbGVfc2NoZW1hGAcgASgLMicuc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYVByb2ZpbGVTY2hlbWFIAIgBAUIRCg9fcHJvZmlsZV9zY2hlbWEiLAoeUHVibGlzaENvbnRleHREaW1lbnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIokBCh9QdWJsaXNoQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24SNAoQYnJlYWtpbmdfY2hhbmdlcxgCIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2UiLgogVW5wdWJsaXNoQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCgoCaWQYASABKAkiVQohVW5wdWJsaXNoQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24iNQonR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXNSZXF1ZXN0EgoKAmlkGAEgASgJIlUKKEdldENvbnRleHREaW1lbnNpb25QdWJsaXNoU3RhdHVzUmVzcG9uc2USKQoGc3RhdHVzGAEgASgLMhkucHVibGlzaC52MS5QdWJsaXNoU3RhdHVzIh0KG1B1Ymxpc2hQcm9maWxlU2NoZW1hUmVxdWVzdCKQAQocUHVibGlzaFByb2ZpbGVTY2hlbWFSZXNwb25zZRI6Cg5wcm9maWxlX3NjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYRI0ChBicmVha2luZ19jaGFuZ2VzGAIgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSIfCh1VbnB1Ymxpc2hQcm9maWxlU2NoZW1hUmVxdWVzdCJcCh5VbnB1Ymxpc2hQcm9maWxlU2NoZW1hUmVzcG9uc2USOgoOcHJvZmlsZV9zY2hlbWEYASABKAsyIi5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVTY2hlbWEiJgokR2V0UHJvZmlsZVNjaGVtYVB1Ymxpc2hTdGF0dXNSZXF1ZXN0IlIKJUdldFByb2ZpbGVTY2hlbWFQdWJsaXNoU3RhdHVzUmVzcG9uc2USKQoGc3RhdHVzGAEgASgLMhkucHVibGlzaC52MS5QdWJsaXNoU3RhdHVzIh0KG1B1Ymxpc2hQcm9qZWN0U2NoZW1hUmVxdWVzdCL2AQocUHVibGlzaFByb2plY3RTY2hlbWFSZXNwb25zZRIYChBtb2RlbHNfcHVibGlzaGVkGAEgASgFEhwKFG9wZXJhdGlvbnNfcHVibGlzaGVkGAIgASgFEiQKHGNvbnRleHRfZGltZW5zaW9uc19wdWJsaXNoZWQYAyABKAUSIAoYYXV0aF9wcm92aWRlcnNfcHVibGlzaGVkGAQgASgFEiAKGHByb2ZpbGVfc2NoZW1hX3B1Ymxpc2hlZBgFIAEoCBI0ChBicmVha2luZ19jaGFuZ2VzGAYgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSIgCh5HZXRQcm9qZWN0UHVibGlzaFN0YXR1c1JlcXVlc3QigwEKH0dldFByb2plY3RQdWJsaXNoU3RhdHVzUmVzcG9uc2USKgoHcGVuZGluZxgBIAMoCzIZLnB1Ymxpc2gudjEuUGVuZGluZ0VudGl0eRI0ChBicmVha2luZ19jaGFuZ2VzGAIgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSKsAQomU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiWwonU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24iOwotQ2FuY2VsU2NoZWR1bGVkQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXF1ZXN0EgoKAmlkGAEgASgJImIKLkNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiKdAQojU2NoZWR1bGVQcm9maWxlU2NoZW1hUHVibGlzaFJlcXVlc3QSLgoKcHVibGlzaF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiYgokU2NoZWR1bGVQcm9maWxlU2NoZW1hUHVibGlzaFJlc3BvbnNlEjoKDnByb2ZpbGVfc2NoZW1hGAEgASgLMiIuc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlU2NoZW1hIiwKKkNhbmNlbFNjaGVkdWxlZFByb2ZpbGVTY2hlbWFQdWJsaXNoUmVxdWVzdCJpCitDYW5jZWxTY2hlZHVsZWRQcm9maWxlU2NoZW1hUHVibGlzaFJlc3BvbnNlEjoKDnByb2ZpbGVfc2NoZW1hGAEgASgLMiIuc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlU2NoZW1hKnYKEVNoYXJlUmVzb3VyY2VUeXBlEiMKH1NIQVJFX1JFU09VUkNFX1RZUEVfVU5TUEVDSUZJRUQQABIeChpTSEFSRV9SRVNPVVJDRV9UWVBFX1JFQ09SRBABEhwKGFNIQVJFX1JFU09VUkNFX1RZUEVfRklMRRACKoUBCg9TaGFyZVBlcm1pc3Npb24SIAocU0hBUkVfUEVSTUlTU0lPTl9VTlNQRUNJRklFRBAAEhkKFVNIQVJFX1BFUk1JU1NJT05fVklFVxABEhkKFVNIQVJFX1BFUk1JU1NJT05fRURJVBACEhoKFlNIQVJFX1BFUk1JU1NJT05fQURNSU4QAyp7CgtTaGFyZVN0YXR1cxIcChhTSEFSRV9TVEFUVVNfVU5TUEVDSUZJRUQQABIYChRTSEFSRV9TVEFUVVNfUEVORElORxABEhkKFVNIQVJFX1NUQVRVU19BQ0NFUFRFRBACEhkKFVNIQVJFX1NUQVRVU19ERUNMSU5FRBADMt9CCg9TZXR0aW5nc1NlcnZpY2USUAoLR2V0U2V0dGluZ3MSHy5zZXR0aW5ncy52MS5HZXRTZXR0aW5nc1JlcXVlc3QaIC5zZXR0aW5ncy52MS5HZXRTZXR0aW5nc1Jlc3BvbnNlElYKDVVwZGF0ZVNldHRpbmcSIS5zZXR0aW5ncy52MS5VcGRhdGVTZXR0aW5nUmVxdWVzdBoiLnNldHRpbmdzLnYxLlVwZGF0ZVNldHRpbmdSZXNwb25zZRJWCg1EZWxldGVTZXR0aW5nEiEuc2V0dGluZ3MudjEuRGVsZXRlU2V0dGluZ1JlcXVlc3QaIi5zZXR0aW5ncy52MS5EZWxldGVTZXR0aW5nUmVzcG9uc2USdwoYRGVsZXRlU2V0dGluZ3NCeUNhdGVnb3J5Eiwuc2V0dGluZ3MudjEuRGVsZXRlU2V0dGluZ3NCeUNhdGVnb3J5UmVxdWVzdBotLnNldHRpbmdzLnYxLkRlbGV0ZVNldHRpbmdzQnlDYXRlZ29yeVJlc3BvbnNlElwKD0J1bGtTZXRTZXR0aW5ncxIjLnNldHRpbmdzLnYxLkJ1bGtTZXRTZXR0aW5nc1JlcXVlc3QaJC5zZXR0aW5ncy52MS5CdWxrU2V0U2V0dGluZ3NSZXNwb25zZRJWCg1MaXN0QXVkaXRMb2dzEiEuc2V0dGluZ3MudjEuTGlzdEF1ZGl0TG9nc1JlcXVlc3QaIi5zZXR0aW5ncy52MS5MaXN0QXVkaXRMb2dzUmVzcG9uc2USTQoKQ3JlYXRlTm90ZRIeLnNldHRpbmdzLnYxLkNyZWF0ZU5vdGVSZXF1ZXN0Gh8uc2V0dGluZ3MudjEuQ3JlYXRlTm90ZVJlc3BvbnNlEkQKB0dldE5vdGUSGy5zZXR0aW5ncy52MS5HZXROb3RlUmVxdWVzdBocLnNldHRpbmdzLnYxLkdldE5vdGVSZXNwb25zZRJKCglMaXN0Tm90ZXMSHS5zZXR0aW5ncy52MS5MaXN0Tm90ZXNSZXF1ZXN0Gh4uc2V0dGluZ3MudjEuTGlzdE5vdGVzUmVzcG9uc2USTQoKVXBkYXRlTm90ZRIeLnNldHRpbmdzLnYxLlVwZGF0ZU5vdGVSZXF1ZXN0Gh8uc2V0dGluZ3MudjEuVXBkYXRlTm90ZVJlc3BvbnNlEk0KCkRlbGV0ZU5vdGUSHi5zZXR0aW5ncy52MS5EZWxldGVOb3RlUmVxdWVzdBofLnNldHRpbmdzLnYxLkRlbGV0ZU5vdGVSZXNwb25zZRJQCgtSZXNvbHZlTm90ZRIfLnNldHRpbmdzLnYxLlJlc29sdmVOb3RlUmVxdWVzdBogLnNldHRpbmdzLnYxLlJlc29sdmVOb3RlUmVzcG9uc2USVgoNVW5yZXNvbHZlTm90ZRIhLnNldHRpbmdzLnYxLlVucmVzb2x2ZU5vdGVSZXF1ZXN0GiIuc2V0dGluZ3MudjEuVW5yZXNvbHZlTm90ZVJlc3BvbnNlElAKC1NlYXJjaE5vdGVzEh8uc2V0dGluZ3MudjEuU2VhcmNoTm90ZXNSZXF1ZXN0GiAuc2V0dGluZ3MudjEuU2VhcmNoTm90ZXNSZXNwb25zZRJZCg5MaXN0TXlNZW50aW9ucxIiLnNldHRpbmdzLnYxLkxpc3RNeU1lbnRpb25zUmVxdWVzdBojLnNldHRpbmdzLnYxLkxpc3RNeU1lbnRpb25zUmVzcG9uc2USaAoTVXBkYXRlTWVudGlvblN0YXR1cxInLnNldHRpbmdzLnYxLlVwZGF0ZU1lbnRpb25TdGF0dXNSZXF1ZXN0Giguc2V0dGluZ3MudjEuVXBkYXRlTWVudGlvblN0YXR1c1Jlc3BvbnNlEl8KEE1hcmtNZW50aW9uc1NlZW4SJC5zZXR0aW5ncy52MS5NYXJrTWVudGlvbnNTZWVuUmVxdWVzdBolLnNldHRpbmdzLnYxLk1hcmtNZW50aW9uc1NlZW5SZXNwb25zZRJQCgtMaXN0TG9jYWxlcxIfLnNldHRpbmdzLnYxLkxpc3RMb2NhbGVzUmVxdWVzdBogLnNldHRpbmdzLnYxLkxpc3RMb2NhbGVzUmVzcG9uc2USSgoJR2V0TG9jYWxlEh0uc2V0dGluZ3MudjEuR2V0TG9jYWxlUmVxdWVzdBoeLnNldHRpbmdzLnYxLkdldExvY2FsZVJlc3BvbnNlEl8KEEdldERlZmF1bHRMb2NhbGUSJC5zZXR0aW5ncy52MS5HZXREZWZhdWx0TG9jYWxlUmVxdWVzdBolLnNldHRpbmdzLnYxLkdldERlZmF1bHRMb2NhbGVSZXNwb25zZRJcCg9HZXRMb2NhbGVCeUNvZGUSIy5zZXR0aW5ncy52MS5HZXRMb2NhbGVCeUNvZGVSZXF1ZXN0GiQuc2V0dGluZ3MudjEuR2V0TG9jYWxlQnlDb2RlUmVzcG9uc2USUwoMQ3JlYXRlTG9jYWxlEiAuc2V0dGluZ3MudjEuQ3JlYXRlTG9jYWxlUmVxdWVzdBohLnNldHRpbmdzLnYxLkNyZWF0ZUxvY2FsZVJlc3BvbnNlElMKDFVwZGF0ZUxvY2FsZRIgLnNldHRpbmdzLnYxLlVwZGF0ZUxvY2FsZVJlcXVlc3QaIS5zZXR0aW5ncy52MS5VcGRhdGVMb2NhbGVSZXNwb25zZRJTCgxEZWxldGVMb2NhbGUSIC5zZXR0aW5ncy52MS5EZWxldGVMb2NhbGVSZXF1ZXN0GiEuc2V0dGluZ3MudjEuRGVsZXRlTG9jYWxlUmVzcG9uc2USYgoRR2V0TmF2UHJlZmVyZW5jZXMSJS5zZXR0aW5ncy52MS5HZXROYXZQcmVmZXJlbmNlc1JlcXVlc3QaJi5zZXR0aW5ncy52MS5HZXROYXZQcmVmZXJlbmNlc1Jlc3BvbnNlEmsKFFVwZGF0ZU5hdlByZWZlcmVuY2VzEiguc2V0dGluZ3MudjEuVXBkYXRlTmF2UHJlZmVyZW5jZXNSZXF1ZXN0Gikuc2V0dGluZ3MudjEuVXBkYXRlTmF2UHJlZmVyZW5jZXNSZXNwb25zZRJlChJMaXN0UmVjZW50bHlPcGVuZWQSJi5zZXR0aW5ncy52MS5MaXN0UmVjZW50bHlPcGVuZWRSZXF1ZXN0Gicuc2V0dGluZ3MudjEuTGlzdFJlY2VudGx5T3BlbmVkUmVzcG9uc2USaAoTVHJhY2tSZWNlbnRseU9wZW5lZBInLnNldHRpbmdzLnYxLlRyYWNrUmVjZW50bHlPcGVuZWRSZXF1ZXN0Giguc2V0dGluZ3MudjEuVHJhY2tSZWNlbnRseU9wZW5lZFJlc3BvbnNlEmsKFFJlbW92ZVJlY2VudGx5T3BlbmVkEiguc2V0dGluZ3MudjEuUmVtb3ZlUmVjZW50bHlPcGVuZWRSZXF1ZXN0Gikuc2V0dGluZ3MudjEuUmVtb3ZlUmVjZW50bHlPcGVuZWRSZXNwb25zZRJoChNDbGVhclJlY2VudGx5T3BlbmVkEicuc2V0dGluZ3MudjEuQ2xlYXJSZWNlbnRseU9wZW5lZFJlcXVlc3QaKC5zZXR0aW5ncy52MS5DbGVhclJlY2VudGx5T3BlbmVkUmVzcG9uc2USUAoLQ3JlYXRlU2hhcmUSHy5zZXR0aW5ncy52MS5DcmVhdGVTaGFyZVJlcXVlc3QaIC5zZXR0aW5ncy52MS5DcmVhdGVTaGFyZVJlc3BvbnNlEkcKCEdldFNoYXJlEhwuc2V0dGluZ3MudjEuR2V0U2hhcmVSZXF1ZXN0Gh0uc2V0dGluZ3MudjEuR2V0U2hhcmVSZXNwb25zZRJNCgpMaXN0U2hhcmVzEh4uc2V0dGluZ3MudjEuTGlzdFNoYXJlc1JlcXVlc3QaHy5zZXR0aW5ncy52MS5MaXN0U2hhcmVzUmVzcG9uc2USUAoLVXBkYXRlU2hhcmUSHy5zZXR0aW5ncy52MS5VcGRhdGVTaGFyZVJlcXVlc3QaIC5zZXR0aW5ncy52MS5VcGRhdGVTaGFyZVJlc3BvbnNlElAKC1Jldm9rZVNoYXJlEh8uc2V0dGluZ3MudjEuUmV2b2tlU2hhcmVSZXF1ZXN0GiAuc2V0dGluZ3MudjEuUmV2b2tlU2hhcmVSZXNwb25zZRJQCgtBY2NlcHRTaGFyZRIfLnNldHRpbmdzLnYxLkFjY2VwdFNoYXJlUmVxdWVzdBogLnNldHRpbmdzLnYxLkFjY2VwdFNoYXJlUmVzcG9uc2USUwoMRGVjbGluZVNoYXJlEiAuc2V0dGluZ3MudjEuRGVjbGluZVNoYXJlUmVxdWVzdBohLnNldHRpbmdzLnYxLkRlY2xpbmVTaGFyZVJlc3BvbnNlEm4KFUxpc3RDb250ZXh0RGltZW5zaW9ucxIpLnNldHRpbmdzLnYxLkxpc3RDb250ZXh0RGltZW5zaW9uc1JlcXVlc3QaKi5zZXR0aW5ncy52MS5MaXN0Q29udGV4dERpbWVuc2lvbnNSZXNwb25zZRJoChNHZXRDb250ZXh0RGltZW5zaW9uEicuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblJlcXVlc3QaKC5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USdwoYR2V0Q29udGV4dERpbWVuc2lvbkJ5S2V5Eiwuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvbkJ5S2V5UmVxdWVzdBotLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25CeUtleVJlc3BvbnNlEnEKFkNyZWF0ZUNvbnRleHREaW1lbnNpb24SKi5zZXR0aW5ncy52MS5DcmVhdGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBorLnNldHRpbmdzLnYxLkNyZWF0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRJxChZVcGRhdGVDb250ZXh0RGltZW5zaW9uEiouc2V0dGluZ3MudjEuVXBkYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QaKy5zZXR0aW5ncy52MS5VcGRhdGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2UScQoWRGVsZXRlQ29udGV4dERpbWVuc2lvbhIqLnNldHRpbmdzLnYxLkRlbGV0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0Gisuc2V0dGluZ3MudjEuRGVsZXRlQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEnoKGUdldENvbnRleHREaW1lbnNpb25WYWx1ZXMSLS5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzUmVxdWVzdBouLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25WYWx1ZXNSZXNwb25zZRJ3ChhHZXRDdXN0b21lclByb2ZpbGVTY2hlbWESLC5zZXR0aW5ncy52MS5HZXRDdXN0b21lclByb2ZpbGVTY2hlbWFSZXF1ZXN0Gi0uc2V0dGluZ3MudjEuR2V0Q3VzdG9tZXJQcm9maWxlU2NoZW1hUmVzcG9uc2USZQoSR2V0Q3VzdG9tZXJQcm9maWxlEiYuc2V0dGluZ3MudjEuR2V0Q3VzdG9tZXJQcm9maWxlUmVxdWVzdBonLnNldHRpbmdzLnYxLkdldEN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEmUKElNldEN1c3RvbWVyUHJvZmlsZRImLnNldHRpbmdzLnYxLlNldEN1c3RvbWVyUHJvZmlsZVJlcXVlc3QaJy5zZXR0aW5ncy52MS5TZXRDdXN0b21lclByb2ZpbGVSZXNwb25zZRKAAQobVXBkYXRlQ3VzdG9tZXJQcm9maWxlU2NoZW1hEi8uc2V0dGluZ3MudjEuVXBkYXRlQ3VzdG9tZXJQcm9maWxlU2NoZW1hUmVxdWVzdBowLnNldHRpbmdzLnYxLlVwZGF0ZUN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlc3BvbnNlEnEKFlNlYXJjaEN1c3RvbWVyUHJvZmlsZXMSKi5zZXR0aW5ncy52MS5TZWFyY2hDdXN0b21lclByb2ZpbGVzUmVxdWVzdBorLnNldHRpbmdzLnYxLlNlYXJjaEN1c3RvbWVyUHJvZmlsZXNSZXNwb25zZRJuChVEZWxldGVDdXN0b21lclByb2ZpbGUSKS5zZXR0aW5ncy52MS5EZWxldGVDdXN0b21lclByb2ZpbGVSZXF1ZXN0Giouc2V0dGluZ3MudjEuRGVsZXRlQ3VzdG9tZXJQcm9maWxlUmVzcG9uc2USjAEKH0dldEN1c3RvbWVyUmVzb2x1dGlvbkF0dHJpYnV0ZXMSMy5zZXR0aW5ncy52MS5HZXRDdXN0b21lclJlc29sdXRpb25BdHRyaWJ1dGVzUmVxdWVzdBo0LnNldHRpbmdzLnYxLkdldEN1c3RvbWVyUmVzb2x1dGlvbkF0dHJpYnV0ZXNSZXNwb25zZRJfChBHZXRFZGl0b3JDb25maWdzEiQuc2V0dGluZ3MudjEuR2V0RWRpdG9yQ29uZmlnc1JlcXVlc3QaJS5zZXR0aW5ncy52MS5HZXRFZGl0b3JDb25maWdzUmVzcG9uc2USZQoSTGlzdFZhcmlhbnRDYXRhbG9nEiYuc2V0dGluZ3MudjEuTGlzdFZhcmlhbnRDYXRhbG9nUmVxdWVzdBonLnNldHRpbmdzLnYxLkxpc3RWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEnEKFkdldFZhcmlhbnRDYXRhbG9nRW50cnkSKi5zZXR0aW5ncy52MS5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBorLnNldHRpbmdzLnYxLkdldFZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRJ6ChlDcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5Ei0uc2V0dGluZ3MudjEuQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaLi5zZXR0aW5ncy52MS5DcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USegoZVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeRItLnNldHRpbmdzLnYxLlVwZGF0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0Gi4uc2V0dGluZ3MudjEuVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEnoKGURlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnkSLS5zZXR0aW5ncy52MS5EZWxldGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBouLnNldHRpbmdzLnYxLkRlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRKGAQodR2V0RGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnkSMS5zZXR0aW5ncy52MS5HZXREZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaMi5zZXR0aW5ncy52MS5HZXREZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEo8BCiBFbnN1cmVEZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeRI0LnNldHRpbmdzLnYxLkVuc3VyZURlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBo1LnNldHRpbmdzLnYxLkVuc3VyZURlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USXwoQR2V0UHJvamVjdFNjaGVtYRIkLnNldHRpbmdzLnYxLkdldFByb2plY3RTY2hlbWFSZXF1ZXN0GiUuc2V0dGluZ3MudjEuR2V0UHJvamVjdFNjaGVtYVJlc3BvbnNlEnQKF1B1Ymxpc2hDb250ZXh0RGltZW5zaW9uEisuc2V0dGluZ3MudjEuUHVibGlzaENvbnRleHREaW1lbnNpb25SZXF1ZXN0Giwuc2V0dGluZ3MudjEuUHVibGlzaENvbnRleHREaW1lbnNpb25SZXNwb25zZRJ6ChlVbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uEi0uc2V0dGluZ3MudjEuVW5wdWJsaXNoQ29udGV4dERpbWVuc2lvblJlcXVlc3QaLi5zZXR0aW5ncy52MS5VbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USjwEKIEdldENvbnRleHREaW1lbnNpb25QdWJsaXNoU3RhdHVzEjQuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXNSZXF1ZXN0GjUuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXNSZXNwb25zZRKMAQofU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaBIzLnNldHRpbmdzLnYxLlNjaGVkdWxlQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXF1ZXN0GjQuc2V0dGluZ3MudjEuU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlc3BvbnNlEqEBCiZDYW5jZWxTY2hlZHVsZWRDb250ZXh0RGltZW5zaW9uUHVibGlzaBI6LnNldHRpbmdzLnYxLkNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVxdWVzdBo7LnNldHRpbmdzLnYxLkNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVzcG9uc2USawoUUHVibGlzaFByb2ZpbGVTY2hlbWESKC5zZXR0aW5ncy52MS5QdWJsaXNoUHJvZmlsZVNjaGVtYVJlcXVlc3QaKS5zZXR0aW5ncy52MS5QdWJsaXNoUHJvZmlsZVNjaGVtYVJlc3BvbnNlEnEKFlVucHVibGlzaFByb2ZpbGVTY2hlbWESKi5zZXR0aW5ncy52MS5VbnB1Ymxpc2hQcm9maWxlU2NoZW1hUmVxdWVzdBorLnNldHRpbmdzLnYxLlVucHVibGlzaFByb2ZpbGVTY2hlbWFSZXNwb25zZRKGAQodR2V0UHJvZmlsZVNjaGVtYVB1Ymxpc2hTdGF0dXMSMS5zZXR0aW5ncy52MS5HZXRQcm9maWxlU2NoZW1hUHVibGlzaFN0YXR1c1JlcXVlc3QaMi5zZXR0aW5ncy52MS5HZXRQcm9maWxlU2NoZW1hUHVibGlzaFN0YXR1c1Jlc3BvbnNlEoMBChxTY2hlZHVsZVByb2ZpbGVTY2hlbWFQdWJsaXNoEjAuc2V0dGluZ3MudjEuU2NoZWR1bGVQcm9maWxlU2NoZW1hUHVibGlzaFJlcXVlc3QaMS5zZXR0aW5ncy52MS5TY2hlZHVsZVByb2ZpbGVTY2hlbWFQdWJsaXNoUmVzcG9uc2USmAEKI0NhbmNlbFNjaGVkdWxlZFByb2ZpbGVTY2hlbWFQdWJsaXNoEjcuc2V0dGluZ3MudjEuQ2FuY2VsU2NoZWR1bGVkUHJvZmlsZVNjaGVtYVB1Ymxpc2hSZXF1ZXN0Gjguc2V0dGluZ3MudjEuQ2FuY2VsU2NoZWR1bGVkUHJvZmlsZVNjaGVtYVB1Ymxpc2hSZXNwb25zZRJ0ChdHZXRQcm9qZWN0UHVibGlzaFN0YXR1cxIrLnNldHRpbmdzLnYxLkdldFByb2plY3RQdWJsaXNoU3RhdHVzUmVxdWVzdBosLnNldHRpbmdzLnYxLkdldFByb2plY3RQdWJsaXNoU3RhdHVzUmVzcG9uc2USawoUUHVibGlzaFByb2plY3RTY2hlbWESKC5zZXR0aW5ncy52MS5QdWJsaXNoUHJvamVjdFNjaGVtYVJlcXVlc3QaKS5zZXR0aW5ncy52MS5QdWJsaXNoUHJvamVjdFNjaGVtYVJlc3BvbnNlElwKD0dldERlc2lnblRva2VucxIjLnNldHRpbmdzLnYxLkdldERlc2lnblRva2Vuc1JlcXVlc3QaJC5zZXR0aW5ncy52MS5HZXREZXNpZ25Ub2tlbnNSZXNwb25zZRJlChJVcGRhdGVEZXNpZ25Ub2tlbnMSJi5zZXR0aW5ncy52MS5VcGRhdGVEZXNpZ25Ub2tlbnNSZXF1ZXN0Gicuc2V0dGluZ3MudjEuVXBkYXRlRGVzaWduVG9rZW5zUmVzcG9uc2USaAoTUHVibGlzaERlc2lnblRva2VucxInLnNldHRpbmdzLnYxLlB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXF1ZXN0Giguc2V0dGluZ3MudjEuUHVibGlzaERlc2lnblRva2Vuc1Jlc3BvbnNlEm4KFVVucHVibGlzaERlc2lnblRva2VucxIpLnNldHRpbmdzLnYxLlVucHVibGlzaERlc2lnblRva2Vuc1JlcXVlc3QaKi5zZXR0aW5ncy52MS5VbnB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXNwb25zZRKDAQocR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1cxIwLnNldHRpbmdzLnYxLkdldERlc2lnblRva2Vuc1B1Ymxpc2hTdGF0dXNSZXF1ZXN0GjEuc2V0dGluZ3MudjEuR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1c1Jlc3BvbnNlEoABChtTY2hlZHVsZURlc2lnblRva2Vuc1B1Ymxpc2gSLy5zZXR0aW5ncy52MS5TY2hlZHVsZURlc2lnblRva2Vuc1B1Ymxpc2hSZXF1ZXN0GjAuc2V0dGluZ3MudjEuU2NoZWR1bGVEZXNpZ25Ub2tlbnNQdWJsaXNoUmVzcG9uc2USlQEKIkNhbmNlbFNjaGVkdWxlZERlc2lnblRva2Vuc1B1Ymxpc2gSNi5zZXR0aW5ncy52MS5DYW5jZWxTY2hlZHVsZWREZXNpZ25Ub2tlbnNQdWJsaXNoUmVxdWVzdBo3LnNldHRpbmdzLnYxLkNhbmNlbFNjaGVkdWxlZERlc2lnblRva2Vuc1B1Ymxpc2hSZXNwb25zZRJ9ChpDb3VudERlc2lnblRva2VuUmVmZXJlbmNlcxIuLnNldHRpbmdzLnYxLkNvdW50RGVzaWduVG9rZW5SZWZlcmVuY2VzUmVxdWVzdBovLnNldHRpbmdzLnYxLkNvdW50RGVzaWduVG9rZW5SZWZlcmVuY2VzUmVzcG9uc2VCPVo7Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL3NldHRpbmdzL3YxO3NldHRpbmdzdjFiBnByb3RvMw", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_expressions_v1_expressions, file_publish_v1_publish]);
14
+ fileDesc("ChpzZXR0aW5ncy92MS9zZXR0aW5ncy5wcm90bxILc2V0dGluZ3MudjEiggMKB1NldHRpbmcSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEhAKCGNhdGVnb3J5GAMgASgJEisKBXZhbHVlGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhkKDGRpc3BsYXlfbmFtZRgFIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAYgASgJSAKIAQESEQoJZGF0YV90eXBlGAcgASgJEhEKCWlzX3B1YmxpYxgIIAEoCBIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQggKBl92YWx1ZUIPCg1fZGlzcGxheV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfcHJvamVjdF9pZCKrBAoIQXVkaXRMb2cSCgoCaWQYASABKAkSLQoJdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgd1c2VyX2lkGAMgASgJSACIAQESFgoJdGVuYW50X2lkGAQgASgJSAGIAQESFwoKcHJvamVjdF9pZBgFIAEoCUgCiAEBEg4KBmFjdGlvbhgGIAEoCRIVCg1yZXNvdXJjZV90eXBlGAcgASgJEhgKC3Jlc291cmNlX2lkGAggASgJSAOIAQESLAoGYmVmb3JlGAkgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEisKBWFmdGVyGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgFiAEBEi4KCG1ldGFkYXRhGAsgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgGiAEBEhcKCmlwX2FkZHJlc3MYDCABKAlIB4gBARIXCgp1c2VyX2FnZW50GA0gASgJSAiIAQESFwoKcmVxdWVzdF9pZBgOIAEoCUgJiAEBQgoKCF91c2VyX2lkQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCDgoMX3Jlc291cmNlX2lkQgkKB19iZWZvcmVCCAoGX2FmdGVyQgsKCV9tZXRhZGF0YUINCgtfaXBfYWRkcmVzc0INCgtfdXNlcl9hZ2VudEINCgtfcmVxdWVzdF9pZCKdBQoETm90ZRIKCgJpZBgBIAEoCRITCgtlbnRpdHlfdHlwZRgCIAEoCRIRCgllbnRpdHlfaWQYAyABKAkSHwoSZW50aXR5X25hdHVyYWxfa2V5GAQgASgJSACIAQESFwoKdmVyc2lvbl9pZBgFIAEoCUgBiAEBEigKB2NvbnRlbnQYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eh8KEmNvbnRlbnRfcGxhaW5fdGV4dBgHIAEoCUgCiAEBEhsKDnBhcmVudF9ub3RlX2lkGAogASgJSAOIAQESGwoOdGhyZWFkX3Jvb3RfaWQYCyABKAlIBIgBARITCgtpc19yZXNvbHZlZBgPIAEoCBI0CgtyZXNvbHZlZF9hdBgQIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARIYCgtyZXNvbHZlZF9ieRgRIAEoCUgGiAEBEi4KCG1ldGFkYXRhGBQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBEhEKCXRlbmFudF9pZBgeIAEoCRIXCgpwcm9qZWN0X2lkGB8gASgJSAiIAQESEgoKY3JlYXRlZF9ieRgoIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIVChNfZW50aXR5X25hdHVyYWxfa2V5Qg0KC192ZXJzaW9uX2lkQhUKE19jb250ZW50X3BsYWluX3RleHRCEQoPX3BhcmVudF9ub3RlX2lkQhEKD190aHJlYWRfcm9vdF9pZEIOCgxfcmVzb2x2ZWRfYXRCDgoMX3Jlc29sdmVkX2J5QgsKCV9tZXRhZGF0YUINCgtfcHJvamVjdF9pZCKqBQoFU2hhcmUSCgoCaWQYASABKAkSNQoNcmVzb3VyY2VfdHlwZRgCIAEoDjIeLnNldHRpbmdzLnYxLlNoYXJlUmVzb3VyY2VUeXBlEhYKCXJlY29yZF9pZBgDIAEoCUgAiAEBEhQKB2ZpbGVfaWQYBCABKAlIAYgBARIWCgltb2RlbF9rZXkYBSABKAlIAogBARIfChdzaGFyZWRfd2l0aF9jdXN0b21lcl9pZBgGIAEoCRIwCgpwZXJtaXNzaW9uGAcgASgOMhwuc2V0dGluZ3MudjEuU2hhcmVQZXJtaXNzaW9uEigKBnN0YXR1cxgKIAEoDjIYLnNldHRpbmdzLnYxLlNoYXJlU3RhdHVzEjQKC2FjY2VwdGVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBEjMKCmV4cGlyZXNfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgFiAEBEhcKCnJldm9rZWRfYnkYHyABKAlIBogBARIzCgpyZXZva2VkX2F0GCAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgHiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgwKCl9yZWNvcmRfaWRCCgoIX2ZpbGVfaWRCDAoKX21vZGVsX2tleUIOCgxfYWNjZXB0ZWRfYXRCDQoLX2V4cGlyZXNfYXRCDQoLX2NyZWF0ZWRfYnlCDQoLX3Jldm9rZWRfYnlCDQoLX3Jldm9rZWRfYXQiUgoSR2V0U2V0dGluZ3NSZXF1ZXN0EhUKCGNhdGVnb3J5GAEgASgJSACIAQESEAoDa2V5GAIgASgJSAGIAQFCCwoJX2NhdGVnb3J5QgYKBF9rZXkiPQoTR2V0U2V0dGluZ3NSZXNwb25zZRImCghzZXR0aW5ncxgBIAMoCzIULnNldHRpbmdzLnYxLlNldHRpbmciSwoUVXBkYXRlU2V0dGluZ1JlcXVlc3QSCwoDa2V5GAEgASgJEiYKBXZhbHVlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCI+ChVVcGRhdGVTZXR0aW5nUmVzcG9uc2USJQoHc2V0dGluZxgBIAEoCzIULnNldHRpbmdzLnYxLlNldHRpbmciuwIKFExpc3RBdWRpdExvZ3NSZXF1ZXN0EhMKBmFjdGlvbhgBIAEoCUgAiAEBEhoKDXJlc291cmNlX3R5cGUYAiABKAlIAYgBARIYCgtyZXNvdXJjZV9pZBgDIAEoCUgCiAEBEhQKB3VzZXJfaWQYBCABKAlIA4gBARItCgRmcm9tGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEisKAnRvGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUIJCgdfYWN0aW9uQhAKDl9yZXNvdXJjZV90eXBlQg4KDF9yZXNvdXJjZV9pZEIKCghfdXNlcl9pZEIHCgVfZnJvbUIFCgNfdG8iSwoVTGlzdEF1ZGl0TG9nc1Jlc3BvbnNlEiMKBGxvZ3MYASADKAsyFS5zZXR0aW5ncy52MS5BdWRpdExvZxINCgV0b3RhbBgCIAEoBSKVAQoRQ3JlYXRlTm90ZVJlcXVlc3QSEwoLZW50aXR5X3R5cGUYASABKAkSEQoJZW50aXR5X2lkGAIgASgJEigKB2NvbnRlbnQYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhsKDnBhcmVudF9ub3RlX2lkGAQgASgJSACIAQFCEQoPX3BhcmVudF9ub3RlX2lkIjUKEkNyZWF0ZU5vdGVSZXNwb25zZRIfCgRub3RlGAEgASgLMhEuc2V0dGluZ3MudjEuTm90ZSIcCg5HZXROb3RlUmVxdWVzdBIKCgJpZBgBIAEoCSIyCg9HZXROb3RlUmVzcG9uc2USHwoEbm90ZRgBIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUiiQEKEExpc3ROb3Rlc1JlcXVlc3QSEwoLZW50aXR5X3R5cGUYASABKAkSEQoJZW50aXR5X2lkGAIgASgJEhsKDnBhcmVudF9ub3RlX2lkGAMgASgJSACIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQhEKD19wYXJlbnRfbm90ZV9pZCJEChFMaXN0Tm90ZXNSZXNwb25zZRIgCgVub3RlcxgBIAMoCzIRLnNldHRpbmdzLnYxLk5vdGUSDQoFdG90YWwYAiABKAUihAEKEVVwZGF0ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJEi0KB2NvbnRlbnQYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESGAoLaXNfcmVzb2x2ZWQYAyABKAhIAYgBAUIKCghfY29udGVudEIOCgxfaXNfcmVzb2x2ZWQiNQoSVXBkYXRlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlIh8KEURlbGV0ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIiUKEkRlbGV0ZU5vdGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIqwFCgtOb3RlTWVudGlvbhIKCgJpZBgBIAEoCRIPCgdub3RlX2lkGAIgASgJEhkKEW1lbnRpb25lZF91c2VyX2lkGAMgASgJEg4KBnN0YXR1cxgEIAEoCRIwCgdzZWVuX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjgKD2Fja25vd2xlZGdlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI1Cgxjb21wbGV0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESGwoOY29tcGxldGVkX25vdGUYCCABKAlIA4gBARI1CgxkaXNtaXNzZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESGwoOZGlzbWlzc19yZWFzb24YCiABKAlIBYgBARIxCghkdWVfZGF0ZRgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBogBARIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgHiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9zZWVuX2F0QhIKEF9hY2tub3dsZWRnZWRfYXRCDwoNX2NvbXBsZXRlZF9hdEIRCg9fY29tcGxldGVkX25vdGVCDwoNX2Rpc21pc3NlZF9hdEIRCg9fZGlzbWlzc19yZWFzb25CCwoJX2R1ZV9kYXRlQg0KC19wcm9qZWN0X2lkItoBChJNZW50aW9uV2l0aENvbnRleHQSKQoHbWVudGlvbhgBIAEoCzIYLnNldHRpbmdzLnYxLk5vdGVNZW50aW9uEh8KBG5vdGUYAiABKAsyES5zZXR0aW5ncy52MS5Ob3RlEhgKC2F1dGhvcl9uYW1lGAMgASgJSACIAQESGAoLZW50aXR5X3R5cGUYBCABKAlIAYgBARIWCgllbnRpdHlfaWQYBSABKAlIAogBAUIOCgxfYXV0aG9yX25hbWVCDgoMX2VudGl0eV90eXBlQgwKCl9lbnRpdHlfaWQiTwoNTWVudGlvbkNvdW50cxIPCgdwZW5kaW5nGAEgASgFEhAKCHBhc3RfZHVlGAIgASgFEhsKE2NvbXBsZXRlZF90aGlzX3dlZWsYAyABKAUicAoVTGlzdE15TWVudGlvbnNSZXF1ZXN0Eg4KBnN0YXR1cxgBIAMoCRIYCgtlbnRpdHlfdHlwZRgCIAEoCUgAiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUIOCgxfZW50aXR5X3R5cGUigwEKFkxpc3RNeU1lbnRpb25zUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5zZXR0aW5ncy52MS5NZW50aW9uV2l0aENvbnRleHQSDQoFdG90YWwYAiABKAUSKgoGY291bnRzGAMgASgLMhouc2V0dGluZ3MudjEuTWVudGlvbkNvdW50cyKgAQoaVXBkYXRlTWVudGlvblN0YXR1c1JlcXVlc3QSEgoKbWVudGlvbl9pZBgBIAEoCRIOCgZzdGF0dXMYAiABKAkSGwoOY29tcGxldGVkX25vdGUYAyABKAlIAIgBARIbCg5kaXNtaXNzX3JlYXNvbhgEIAEoCUgBiAEBQhEKD19jb21wbGV0ZWRfbm90ZUIRCg9fZGlzbWlzc19yZWFzb24iSAobVXBkYXRlTWVudGlvblN0YXR1c1Jlc3BvbnNlEikKB21lbnRpb24YASABKAsyGC5zZXR0aW5ncy52MS5Ob3RlTWVudGlvbiLaAQoSQ3JlYXRlU2hhcmVSZXF1ZXN0EjUKDXJlc291cmNlX3R5cGUYASABKA4yHi5zZXR0aW5ncy52MS5TaGFyZVJlc291cmNlVHlwZRIWCglyZWNvcmRfaWQYAiABKAlIAIgBARIUCgdmaWxlX2lkGAMgASgJSAGIAQESEwoLY3VzdG9tZXJfaWQYBCABKAkSMAoKcGVybWlzc2lvbhgFIAEoDjIcLnNldHRpbmdzLnYxLlNoYXJlUGVybWlzc2lvbkIMCgpfcmVjb3JkX2lkQgoKCF9maWxlX2lkIjgKE0NyZWF0ZVNoYXJlUmVzcG9uc2USIQoFc2hhcmUYASABKAsyEi5zZXR0aW5ncy52MS5TaGFyZSIdCg9HZXRTaGFyZVJlcXVlc3QSCgoCaWQYASABKAkiNQoQR2V0U2hhcmVSZXNwb25zZRIhCgVzaGFyZRgBIAEoCzISLnNldHRpbmdzLnYxLlNoYXJlIsgBChFMaXN0U2hhcmVzUmVxdWVzdBI6Cg1yZXNvdXJjZV90eXBlGAEgASgOMh4uc2V0dGluZ3MudjEuU2hhcmVSZXNvdXJjZVR5cGVIAIgBARIWCglyZWNvcmRfaWQYAiABKAlIAYgBARIUCgdmaWxlX2lkGAMgASgJSAKIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQhAKDl9yZXNvdXJjZV90eXBlQgwKCl9yZWNvcmRfaWRCCgoIX2ZpbGVfaWQiRwoSTGlzdFNoYXJlc1Jlc3BvbnNlEiIKBnNoYXJlcxgBIAMoCzISLnNldHRpbmdzLnYxLlNoYXJlEg0KBXRvdGFsGAIgASgFIqABChJVcGRhdGVTaGFyZVJlcXVlc3QSCgoCaWQYASABKAkSNQoKcGVybWlzc2lvbhgCIAEoDjIcLnNldHRpbmdzLnYxLlNoYXJlUGVybWlzc2lvbkgAiAEBEi0KBnN0YXR1cxgDIAEoDjIYLnNldHRpbmdzLnYxLlNoYXJlU3RhdHVzSAGIAQFCDQoLX3Blcm1pc3Npb25CCQoHX3N0YXR1cyI4ChNVcGRhdGVTaGFyZVJlc3BvbnNlEiEKBXNoYXJlGAEgASgLMhIuc2V0dGluZ3MudjEuU2hhcmUiIAoSUmV2b2tlU2hhcmVSZXF1ZXN0EgoKAmlkGAEgASgJIiYKE1Jldm9rZVNoYXJlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIgChJBY2NlcHRTaGFyZVJlcXVlc3QSCgoCaWQYASABKAkiOAoTQWNjZXB0U2hhcmVSZXNwb25zZRIhCgVzaGFyZRgBIAEoCzISLnNldHRpbmdzLnYxLlNoYXJlIiEKE0RlY2xpbmVTaGFyZVJlcXVlc3QSCgoCaWQYASABKAkiOQoURGVjbGluZVNoYXJlUmVzcG9uc2USIQoFc2hhcmUYASABKAsyEi5zZXR0aW5ncy52MS5TaGFyZSK/AwoGTG9jYWxlEgoKAmlkGAEgASgJEg4KBmxvY2FsZRgCIAEoCRIUCgxkaXNwbGF5X25hbWUYAyABKAkSGAoLbmF0aXZlX25hbWUYBCABKAlIAIgBARISCgppc19kZWZhdWx0GAUgASgIEhEKCWlzX2FjdGl2ZRgGIAEoCBIOCgZpc19ydGwYByABKAgSHAoPZmFsbGJhY2tfbG9jYWxlGAggASgJSAGIAQESGQoRZmFsbGJhY2tfcHJpb3JpdHkYCSABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgCiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIA4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfbmF0aXZlX25hbWVCEgoQX2ZhbGxiYWNrX2xvY2FsZUINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSJnChJMaXN0TG9jYWxlc1JlcXVlc3QSHQoQaW5jbHVkZV9pbmFjdGl2ZRgBIAEoCEgAiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUITChFfaW5jbHVkZV9pbmFjdGl2ZSJKChNMaXN0TG9jYWxlc1Jlc3BvbnNlEiQKB2xvY2FsZXMYASADKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUSDQoFdG90YWwYAiABKAUiHgoQR2V0TG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSI4ChFHZXRMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUi3wEKE0NyZWF0ZUxvY2FsZVJlcXVlc3QSDgoGbG9jYWxlGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtuYXRpdmVfbmFtZRgDIAEoCUgAiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAYgBARITCgZpc19ydGwYBSABKAhIAogBARIcCg9mYWxsYmFja19sb2NhbGUYBiABKAlIA4gBAUIOCgxfbmF0aXZlX25hbWVCDQoLX2lzX2RlZmF1bHRCCQoHX2lzX3J0bEISChBfZmFsbGJhY2tfbG9jYWxlIjsKFENyZWF0ZUxvY2FsZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSKXAgoTVXBkYXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCRIZCgxkaXNwbGF5X25hbWUYAiABKAlIAIgBARIYCgtuYXRpdmVfbmFtZRgDIAEoCUgBiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAogBARIWCglpc19hY3RpdmUYBSABKAhIA4gBARITCgZpc19ydGwYBiABKAhIBIgBARIcCg9mYWxsYmFja19sb2NhbGUYByABKAlIBYgBAUIPCg1fZGlzcGxheV9uYW1lQg4KDF9uYXRpdmVfbmFtZUINCgtfaXNfZGVmYXVsdEIMCgpfaXNfYWN0aXZlQgkKB19pc19ydGxCEgoQX2ZhbGxiYWNrX2xvY2FsZSI7ChRVcGRhdGVMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUiIQoTRGVsZXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSInChREZWxldGVMb2NhbGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIpQBCg5OYXZQcmVmZXJlbmNlcxIZChFmYXZvcml0ZV9wcm9qZWN0cxgBIAMoCRIaChJmYXZvcml0ZV9uYXZfaXRlbXMYAiADKAkSGgoSY29sbGFwc2VkX3NlY3Rpb25zGAMgAygJEi8KDm5hdl9pdGVtX29yZGVyGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCIaChhHZXROYXZQcmVmZXJlbmNlc1JlcXVlc3QiTQoZR2V0TmF2UHJlZmVyZW5jZXNSZXNwb25zZRIwCgtwcmVmZXJlbmNlcxgBIAEoCzIbLnNldHRpbmdzLnYxLk5hdlByZWZlcmVuY2VzIvwBChtVcGRhdGVOYXZQcmVmZXJlbmNlc1JlcXVlc3QSNQoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlc0gAiAEBEh4KEXRvZ2dsZV9wcm9qZWN0X2lkGAIgASgJSAGIAQESHAoPdG9nZ2xlX25hdl9pdGVtGAMgASgJSAKIAQESGwoOdG9nZ2xlX3NlY3Rpb24YBCABKAlIA4gBAUIOCgxfcHJlZmVyZW5jZXNCFAoSX3RvZ2dsZV9wcm9qZWN0X2lkQhIKEF90b2dnbGVfbmF2X2l0ZW1CEQoPX3RvZ2dsZV9zZWN0aW9uIlAKHFVwZGF0ZU5hdlByZWZlcmVuY2VzUmVzcG9uc2USMAoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlcyJeChJSZWNlbnRseU9wZW5lZEl0ZW0SDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgRwYXRoGAQgASgJEhEKCXRpbWVzdGFtcBgFIAEoAyIqChlMaXN0UmVjZW50bHlPcGVuZWRSZXF1ZXN0Eg0KBWxpbWl0GAEgASgFIkwKGkxpc3RSZWNlbnRseU9wZW5lZFJlc3BvbnNlEi4KBWl0ZW1zGAEgAygLMh8uc2V0dGluZ3MudjEuUmVjZW50bHlPcGVuZWRJdGVtIlMKGlRyYWNrUmVjZW50bHlPcGVuZWRSZXF1ZXN0EgwKBHR5cGUYASABKAkSCgoCaWQYAiABKAkSDQoFbGFiZWwYAyABKAkSDAoEcGF0aBgEIAEoCSIuChtUcmFja1JlY2VudGx5T3BlbmVkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI3ChtSZW1vdmVSZWNlbnRseU9wZW5lZFJlcXVlc3QSDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCSIvChxSZW1vdmVSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiHAoaQ2xlYXJSZWNlbnRseU9wZW5lZFJlcXVlc3QiLgobQ2xlYXJSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgizwUKEENvbnRleHREaW1lbnNpb24SCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARITCgtzb3VyY2VfdHlwZRgFIAEoCRIYChBzb3VyY2VfbW9kZWxfa2V5GAYgASgJEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgHIAEoCUgBiAEBEhEKCWlzX3N5c3RlbRgIIAEoCBIXCg9idWlsdF9pbl92YWx1ZXMYCSADKAkSEQoJZGF0YV90eXBlGAogASgJEhAKCGNhdGVnb3J5GAsgASgJEhMKC2lzX3JlcXVpcmVkGAwgASgIEhIKCnNvcnRfb3JkZXIYDSABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgCiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIA4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBg8IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GD0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBQg4KDF9kZXNjcmlwdGlvbkIVChNfZGVmYXVsdF9yZWNvcmRfa2V5Qg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5QhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdCIzChVDb250ZXh0RGltZW5zaW9uVmFsdWUSCwoDa2V5GAEgASgJEg0KBWxhYmVsGAIgASgJIl0KHExpc3RDb250ZXh0RGltZW5zaW9uc1JlcXVlc3QSEwoGc2VhcmNoGAEgASgJSACIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zZWFyY2giYQodTGlzdENvbnRleHREaW1lbnNpb25zUmVzcG9uc2USMQoKZGltZW5zaW9ucxgBIAMoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24SDQoFdG90YWwYAiABKAUiKAoaR2V0Q29udGV4dERpbWVuc2lvblJlcXVlc3QSCgoCaWQYASABKAkiTwobR2V0Q29udGV4dERpbWVuc2lvblJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24iywEKHUNyZWF0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEwoLc291cmNlX3R5cGUYBCABKAkSGAoQc291cmNlX21vZGVsX2tleRgFIAEoCRIfChJkZWZhdWx0X3JlY29yZF9rZXkYBiABKAlIAYgBAUIOCgxfZGVzY3JpcHRpb25CFQoTX2RlZmF1bHRfcmVjb3JkX2tleSJSCh5DcmVhdGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiLdAQodVXBkYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESHQoQc291cmNlX21vZGVsX2tleRgEIAEoCUgCiAEBEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgFIAEoCUgDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkITChFfc291cmNlX21vZGVsX2tleUIVChNfZGVmYXVsdF9yZWNvcmRfa2V5IlIKHlVwZGF0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIisKHURlbGV0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIjEKHkRlbGV0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIngKIEdldENvbnRleHREaW1lbnNpb25WYWx1ZXNSZXF1ZXN0EhUKDWRpbWVuc2lvbl9rZXkYASABKAkSEwoGc2VhcmNoGAIgASgJSACIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zZWFyY2giZgohR2V0Q29udGV4dERpbWVuc2lvblZhbHVlc1Jlc3BvbnNlEjIKBnZhbHVlcxgBIAMoCzIiLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb25WYWx1ZRINCgV0b3RhbBgCIAEoBSLnAQoUQ3VzdG9tZXJQcm9maWxlRmllbGQSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBHR5cGUYAyABKAkSDQoFbGFiZWwYBCABKAkSEAoIcmVxdWlyZWQYBSABKAgSFgoJaGVscF90ZXh0GAYgASgJSACIAQESGAoLcGxhY2Vob2xkZXIYByABKAlIAYgBARIsCgZjb25maWcYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQFCDAoKX2hlbHBfdGV4dEIOCgxfcGxhY2Vob2xkZXJCCQoHX2NvbmZpZyKSAwoVQ3VzdG9tZXJQcm9maWxlU2NoZW1hEgoKAmlkGAEgASgJEjEKBmZpZWxkcxgCIAMoCzIhLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZUZpZWxkEhUKDXB1YmxpY19maWVsZHMYAyADKAkSDwoHdmVyc2lvbhgEIAEoBRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBg8IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GD0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdCIhCh9HZXRDdXN0b21lclByb2ZpbGVTY2hlbWFSZXF1ZXN0IlYKIEdldEN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlc3BvbnNlEjIKBnNjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYSLyAwoTVmFyaWFudENhdGFsb2dFbnRyeRIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgFIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESEAoIcHJpb3JpdHkYBiABKAUSEgoKaXNfZGVmYXVsdBgHIAEoCBIRCglpc19hY3RpdmUYCCABKAgSGAoLZmFsbGJhY2tfaWQYCiABKAlIAogBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIXCgpjcmVhdGVkX2J5GB4gASgJSAOIAQESFwoKdXBkYXRlZF9ieRgfIAEoCUgEiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9kZXNjcmlwdGlvbkISChBfdGFyZ2V0aW5nX3J1bGVzQg4KDF9mYWxsYmFja19pZEINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSKAAQoZTGlzdFZhcmlhbnRDYXRhbG9nUmVxdWVzdBIWCglpc19hY3RpdmUYASABKAhIAIgBARITCgZzZWFyY2gYAiABKAlIAYgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCDAoKX2lzX2FjdGl2ZUIJCgdfc2VhcmNoIl4KGkxpc3RWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEjEKB2VudHJpZXMYASADKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Eg0KBXRvdGFsGAIgASgFIisKHUdldFZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIlEKHkdldFZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRIvCgVlbnRyeRgBIAEoCzIgLnNldHRpbmdzLnYxLlZhcmlhbnRDYXRhbG9nRW50cnkiqwIKIENyZWF0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESPAoPdGFyZ2V0aW5nX3J1bGVzGAQgASgLMh4uZXhwcmVzc2lvbnMudjEuUnVsZUV4cHJlc3Npb25IAYgBARIVCghwcmlvcml0eRgFIAEoBUgCiAEBEhcKCmlzX2RlZmF1bHQYBiABKAhIA4gBARIWCglpc19hY3RpdmUYByABKAhIBIgBAUIOCgxfZGVzY3JpcHRpb25CEgoQX3RhcmdldGluZ19ydWxlc0ILCglfcHJpb3JpdHlCDQoLX2lzX2RlZmF1bHRCDAoKX2lzX2FjdGl2ZSJUCiFDcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5IrgCCiBVcGRhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESGAoLZGVzY3JpcHRpb24YAyABKAlIAYgBARI8Cg90YXJnZXRpbmdfcnVsZXMYBCABKAsyHi5leHByZXNzaW9ucy52MS5SdWxlRXhwcmVzc2lvbkgCiAEBEhUKCHByaW9yaXR5GAUgASgFSAOIAQESFwoKaXNfZGVmYXVsdBgGIAEoCEgEiAEBEhYKCWlzX2FjdGl2ZRgHIAEoCEgFiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkISChBfdGFyZ2V0aW5nX3J1bGVzQgsKCV9wcmlvcml0eUINCgtfaXNfZGVmYXVsdEIMCgpfaXNfYWN0aXZlIlQKIVVwZGF0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRIvCgVlbnRyeRgBIAEoCzIgLnNldHRpbmdzLnYxLlZhcmlhbnRDYXRhbG9nRW50cnkiLgogRGVsZXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QSCgoCaWQYASABKAkiNAohRGVsZXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiMAoZR2V0Q3VzdG9tZXJQcm9maWxlUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCSJDChpHZXRDdXN0b21lclByb2ZpbGVSZXNwb25zZRIlCgRkYXRhGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJXChlTZXRDdXN0b21lclByb2ZpbGVSZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEiUKBGRhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Ii0KGlNldEN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgibgoiVXBkYXRlQ3VzdG9tZXJQcm9maWxlU2NoZW1hUmVxdWVzdBIxCgZmaWVsZHMYASADKAsyIS5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVGaWVsZBIVCg1wdWJsaWNfZmllbGRzGAIgAygJIlkKI1VwZGF0ZUN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlc3BvbnNlEjIKBnNjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYSJTChVDdXN0b21lclByb2ZpbGVSZXN1bHQSEwoLY3VzdG9tZXJfaWQYASABKAkSJQoEZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiTQodU2VhcmNoQ3VzdG9tZXJQcm9maWxlc1JlcXVlc3QSDQoFcXVlcnkYASABKAkSDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFImQKHlNlYXJjaEN1c3RvbWVyUHJvZmlsZXNSZXNwb25zZRIzCgdyZXN1bHRzGAEgAygLMiIuc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlUmVzdWx0Eg0KBXRvdGFsGAIgASgFIjMKHERlbGV0ZUN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkiMAodRGVsZXRlQ3VzdG9tZXJQcm9maWxlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI9CiZHZXRDdXN0b21lclJlc29sdXRpb25BdHRyaWJ1dGVzUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCSJZChNSZXNvbHV0aW9uQXR0cmlidXRlEgsKA2tleRgBIAEoCRI1CgZ2YWx1ZXMYAiADKAsyJS5zZXR0aW5ncy52MS5SZXNvbHV0aW9uQXR0cmlidXRlVmFsdWUigAEKGFJlc29sdXRpb25BdHRyaWJ1dGVWYWx1ZRINCgV2YWx1ZRgBIAEoCRINCgVjb3VudBgCIAEoBRI1CgxsYXN0X3NlZW5fYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX2xhc3Rfc2Vlbl9hdCKMAgonR2V0Q3VzdG9tZXJSZXNvbHV0aW9uQXR0cmlidXRlc1Jlc3BvbnNlEhkKEXRvdGFsX3Jlc29sdXRpb25zGAEgASgFEjQKCmF0dHJpYnV0ZXMYAiADKAsyIC5zZXR0aW5ncy52MS5SZXNvbHV0aW9uQXR0cmlidXRlEjYKDWZpcnN0X3NlZW5fYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESNQoMbGFzdF9zZWVuX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQhAKDl9maXJzdF9zZWVuX2F0Qg8KDV9sYXN0X3NlZW5fYXQiLAoXR2V0RWRpdG9yQ29uZmlnc1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJIsACChVFZGl0b3JDb25maWdQbGFjZW1lbnQSEQoJY29uZmlnX2lkGAEgASgJEhIKCmNvbmZpZ19rZXkYAiABKAkSEAoDdXJsGAMgASgJSACIAQESGwoOYWxsb3dlZF9vcmlnaW4YBCABKAlIAYgBARITCgZoZWlnaHQYBSABKAVIAogBARISCgVsYWJlbBgGIAEoCUgDiAEBEhQKB2FwaV9rZXkYByABKAlIBIgBARIUCgdhcGlfdXJsGAggASgJSAWIAQESHgoRY29ubmVjdGlvbl9kb21haW4YCSABKAlIBogBAUIGCgRfdXJsQhEKD19hbGxvd2VkX29yaWdpbkIJCgdfaGVpZ2h0QggKBl9sYWJlbEIKCghfYXBpX2tleUIKCghfYXBpX3VybEIUChJfY29ubmVjdGlvbl9kb21haW4iUgoYR2V0RWRpdG9yQ29uZmlnc1Jlc3BvbnNlEjYKCnBsYWNlbWVudHMYASADKAsyIi5zZXR0aW5ncy52MS5FZGl0b3JDb25maWdQbGFjZW1lbnQiIAoSUmVzb2x2ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIjYKE1Jlc29sdmVOb3RlUmVzcG9uc2USHwoEbm90ZRgBIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUiIgoUVW5yZXNvbHZlTm90ZVJlcXVlc3QSCgoCaWQYASABKAkiOAoVVW5yZXNvbHZlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlImwKElNlYXJjaE5vdGVzUmVxdWVzdBINCgVxdWVyeRgBIAEoCRIYCgtlbnRpdHlfdHlwZRgCIAEoCUgAiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUIOCgxfZW50aXR5X3R5cGUiRgoTU2VhcmNoTm90ZXNSZXNwb25zZRIgCgVub3RlcxgBIAMoCzIRLnNldHRpbmdzLnYxLk5vdGUSDQoFdG90YWwYAiABKAUiGQoXTWFya01lbnRpb25zU2VlblJlcXVlc3QiKQoYTWFya01lbnRpb25zU2VlblJlc3BvbnNlEg0KBWNvdW50GAEgASgFIi4KH0dldENvbnRleHREaW1lbnNpb25CeUtleVJlcXVlc3QSCwoDa2V5GAEgASgJIlQKIEdldENvbnRleHREaW1lbnNpb25CeUtleVJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24iGQoXR2V0RGVmYXVsdExvY2FsZVJlcXVlc3QiPwoYR2V0RGVmYXVsdExvY2FsZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSImChZHZXRMb2NhbGVCeUNvZGVSZXF1ZXN0EgwKBGNvZGUYASABKAkiPgoXR2V0TG9jYWxlQnlDb2RlUmVzcG9uc2USIwoGbG9jYWxlGAEgASgLMhMuc2V0dGluZ3MudjEuTG9jYWxlIiYKJEdldERlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdCJYCiVHZXREZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEi8KBWVudHJ5GAEgASgLMiAuc2V0dGluZ3MudjEuVmFyaWFudENhdGFsb2dFbnRyeSIjChREZWxldGVTZXR0aW5nUmVxdWVzdBILCgNrZXkYASABKAkiKAoVRGVsZXRlU2V0dGluZ1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiMwofRGVsZXRlU2V0dGluZ3NCeUNhdGVnb3J5UmVxdWVzdBIQCghjYXRlZ29yeRgBIAEoCSIxCiBEZWxldGVTZXR0aW5nc0J5Q2F0ZWdvcnlSZXNwb25zZRINCgVjb3VudBgBIAEoBSJNChZCdWxrU2V0U2V0dGluZ3NSZXF1ZXN0EjMKCHNldHRpbmdzGAEgAygLMiEuc2V0dGluZ3MudjEuVXBkYXRlU2V0dGluZ1JlcXVlc3QiKAoXQnVsa1NldFNldHRpbmdzUmVzcG9uc2USDQoFY291bnQYASABKAUiKQonRW5zdXJlRGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0IlsKKEVuc3VyZURlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5IvADCgxEZXNpZ25Ub2tlbnMSKQoIZG9jdW1lbnQYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EjMKCHJlc29sdmVkGAIgASgLMiEuc2V0dGluZ3MudjEuUmVzb2x2ZWREZXNpZ25Ub2tlbnMSDwoHdmVyc2lvbhgKIAEoBRIeChFwdWJsaXNoZWRfdmVyc2lvbhgLIAEoBUgAiAEBEhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEj0KFHNjaGVkdWxlZF9wdWJsaXNoX2F0GDwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEj8KFnNjaGVkdWxlZF91bnB1Ymxpc2hfYXQYPSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCFAoSX3B1Ymxpc2hlZF92ZXJzaW9uQhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdCL6BAoUUmVzb2x2ZWREZXNpZ25Ub2tlbnMSLwoGY29sb3JzGAEgAygLMh8uc2V0dGluZ3MudjEuUmVzb2x2ZWRDb2xvclRva2VuEjsKDWZvbnRfZmFtaWxpZXMYAiADKAsyJC5zZXR0aW5ncy52MS5SZXNvbHZlZEZvbnRGYW1pbHlUb2tlbhI6Cgxmb250X3dlaWdodHMYAyADKAsyJC5zZXR0aW5ncy52MS5SZXNvbHZlZEZvbnRXZWlnaHRUb2tlbhI3Cgpmb250X3NpemVzGAQgAygLMiMuc2V0dGluZ3MudjEuUmVzb2x2ZWREaW1lbnNpb25Ub2tlbhI2CgxsaW5lX2hlaWdodHMYBSADKAsyIC5zZXR0aW5ncy52MS5SZXNvbHZlZE51bWJlclRva2VuEjwKD2xldHRlcl9zcGFjaW5ncxgGIAMoCzIjLnNldHRpbmdzLnYxLlJlc29sdmVkRGltZW5zaW9uVG9rZW4SOAoKdHlwb2dyYXBoeRgHIAMoCzIkLnNldHRpbmdzLnYxLlJlc29sdmVkVHlwb2dyYXBoeVRva2VuEjUKCHNwYWNpbmdzGAggAygLMiMuc2V0dGluZ3MudjEuUmVzb2x2ZWREaW1lbnNpb25Ub2tlbhIyCgVyYWRpaRgJIAMoCzIjLnNldHRpbmdzLnYxLlJlc29sdmVkRGltZW5zaW9uVG9rZW4SMQoHc2hhZG93cxgKIAMoCzIgLnNldHRpbmdzLnYxLlJlc29sdmVkU2hhZG93VG9rZW4SMQoHYm9yZGVycxgLIAMoCzIgLnNldHRpbmdzLnYxLlJlc29sdmVkQm9yZGVyVG9rZW4iaQoSUmVzb2x2ZWRDb2xvclRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBXZhbHVlGAQgASgJQg4KDF9kZXNjcmlwdGlvbiJuChdSZXNvbHZlZEZvbnRGYW1pbHlUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAMoCUIOCgxfZGVzY3JpcHRpb24ibgoXUmVzb2x2ZWRGb250V2VpZ2h0VG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESDQoFdmFsdWUYBCABKAVCDgoMX2Rlc2NyaXB0aW9uIm0KFlJlc29sdmVkRGltZW5zaW9uVG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESDQoFdmFsdWUYBCABKAlCDgoMX2Rlc2NyaXB0aW9uImoKE1Jlc29sdmVkTnVtYmVyVG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESDQoFdmFsdWUYBCABKAFCDgoMX2Rlc2NyaXB0aW9uIswBChdSZXNvbHZlZFR5cG9ncmFwaHlUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARIzCgV2YWx1ZRgEIAEoCzIkLnNldHRpbmdzLnYxLlJlc29sdmVkVHlwb2dyYXBoeVZhbHVlEhIKBWxhYmVsGAUgASgJSAGIAQESEAoDdGFnGAYgASgJSAKIAQFCDgoMX2Rlc2NyaXB0aW9uQggKBl9sYWJlbEIGCgRfdGFnIo0BChNSZXNvbHZlZFNoYWRvd1Rva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjAKBmxheWVycxgEIAMoCzIgLnNldHRpbmdzLnYxLlJlc29sdmVkU2hhZG93TGF5ZXJCDgoMX2Rlc2NyaXB0aW9uInUKE1Jlc29sdmVkU2hhZG93TGF5ZXISEAoIb2Zmc2V0X3gYASABKAkSEAoIb2Zmc2V0X3kYAiABKAkSDAoEYmx1chgDIAEoCRIOCgZzcHJlYWQYBCABKAkSDQoFY29sb3IYBSABKAkSDQoFaW5zZXQYBiABKAgijAEKE1Jlc29sdmVkQm9yZGVyVG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESLwoFdmFsdWUYBCABKAsyIC5zZXR0aW5ncy52MS5SZXNvbHZlZEJvcmRlclZhbHVlQg4KDF9kZXNjcmlwdGlvbiJCChNSZXNvbHZlZEJvcmRlclZhbHVlEg0KBWNvbG9yGAEgASgJEg0KBXdpZHRoGAIgASgJEg0KBXN0eWxlGAMgASgJIpsBChdSZXNvbHZlZFR5cG9ncmFwaHlWYWx1ZRITCgtmb250X2ZhbWlseRgBIAMoCRIRCglmb250X3NpemUYAiABKAkSEwoLZm9udF93ZWlnaHQYAyABKAUSEwoLbGluZV9oZWlnaHQYBCABKAESFgoObGV0dGVyX3NwYWNpbmcYBSABKAkSFgoOdGV4dF90cmFuc2Zvcm0YBiABKAkiRAoWR2V0RGVzaWduVG9rZW5zUmVxdWVzdBIqCgdjaGFubmVsGAEgASgOMhkucHVibGlzaC52MS5TY2hlbWFDaGFubmVsIkQKF0dldERlc2lnblRva2Vuc1Jlc3BvbnNlEikKBnRva2VucxgBIAEoCzIZLnNldHRpbmdzLnYxLkRlc2lnblRva2VucyJGChlVcGRhdGVEZXNpZ25Ub2tlbnNSZXF1ZXN0EikKCGRvY3VtZW50GAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJHChpVcGRhdGVEZXNpZ25Ub2tlbnNSZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMiHAoaUHVibGlzaERlc2lnblRva2Vuc1JlcXVlc3QifgobUHVibGlzaERlc2lnblRva2Vuc1Jlc3BvbnNlEikKBnRva2VucxgBIAEoCzIZLnNldHRpbmdzLnYxLkRlc2lnblRva2VucxI0ChBicmVha2luZ19jaGFuZ2VzGAIgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSIeChxVbnB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXF1ZXN0IkoKHVVucHVibGlzaERlc2lnblRva2Vuc1Jlc3BvbnNlEikKBnRva2VucxgBIAEoCzIZLnNldHRpbmdzLnYxLkRlc2lnblRva2VucyIlCiNHZXREZXNpZ25Ub2tlbnNQdWJsaXNoU3RhdHVzUmVxdWVzdCJRCiRHZXREZXNpZ25Ub2tlbnNQdWJsaXNoU3RhdHVzUmVzcG9uc2USKQoGc3RhdHVzGAEgASgLMhkucHVibGlzaC52MS5QdWJsaXNoU3RhdHVzIpwBCiJTY2hlZHVsZURlc2lnblRva2Vuc1B1Ymxpc2hSZXF1ZXN0Ei4KCnB1Ymxpc2hfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjUKDHVucHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIPCg1fdW5wdWJsaXNoX2F0IlAKI1NjaGVkdWxlRGVzaWduVG9rZW5zUHVibGlzaFJlc3BvbnNlEikKBnRva2VucxgBIAEoCzIZLnNldHRpbmdzLnYxLkRlc2lnblRva2VucyIrCilDYW5jZWxTY2hlZHVsZWREZXNpZ25Ub2tlbnNQdWJsaXNoUmVxdWVzdCJXCipDYW5jZWxTY2hlZHVsZWREZXNpZ25Ub2tlbnNQdWJsaXNoUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zIjcKIUNvdW50RGVzaWduVG9rZW5SZWZlcmVuY2VzUmVxdWVzdBISCgp0b2tlbl9wYXRoGAEgASgJIlMKIkNvdW50RGVzaWduVG9rZW5SZWZlcmVuY2VzUmVzcG9uc2USFwoPcGFyYWdyYXBoX2NvdW50GAEgASgFEhQKDHJlY29yZF9jb3VudBgCIAEoBSJFChdHZXRQcm9qZWN0U2NoZW1hUmVxdWVzdBIqCgdjaGFubmVsGAEgASgOMhkucHVibGlzaC52MS5TY2hlbWFDaGFubmVsImUKElByb2plY3RTY2hlbWFNb2RlbBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRITCgtmaWVsZHNfanNvbhgEIAEoCRITCgtjb25maWdfanNvbhgFIAEoCSLCAQodUHJvamVjdFNjaGVtYUNvbnRleHREaW1lbnNpb24SCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSHQoQc291cmNlX21vZGVsX2tleRgEIAEoCUgAiAEBEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgFIAEoCUgBiAEBEg4KBnZhbHVlcxgGIAMoCUITChFfc291cmNlX21vZGVsX2tleUIVChNfZGVmYXVsdF9yZWNvcmRfa2V5Io4BChlQcm9qZWN0U2NoZW1hQXV0aFByb3ZpZGVyEgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEgwKBHR5cGUYAyABKAkSDwoHZW5hYmxlZBgEIAEoCBIsCgZjb25maWcYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCCQoHX2NvbmZpZyL9AQoWUHJvamVjdFNjaGVtYU9wZXJhdGlvbhILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIQCghlbmRwb2ludBgDIAEoCRISCgp0aW1lb3V0X21zGAQgASgFEjIKDGlucHV0X3NjaGVtYRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARIzCg1vdXRwdXRfc2NoZW1hGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEhYKDnN1cHBvcnRzX2FzeW5jGAcgASgIQg8KDV9pbnB1dF9zY2hlbWFCEAoOX291dHB1dF9zY2hlbWEiRAoUUHJvamVjdFNjaGVtYVNlZ21lbnQSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSEQoJaXNfYWN0aXZlGAMgASgIIlkKGlByb2plY3RTY2hlbWFQcm9maWxlU2NoZW1hEhMKC2ZpZWxkc19qc29uGAEgASgJEhUKDXB1YmxpY19maWVsZHMYAiADKAkSDwoHdmVyc2lvbhgDIAEoBSKSAwoYR2V0UHJvamVjdFNjaGVtYVJlc3BvbnNlEi8KBm1vZGVscxgBIAMoCzIfLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFNb2RlbBI+CgpkaW1lbnNpb25zGAIgAygLMiouc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYUNvbnRleHREaW1lbnNpb24SPgoOYXV0aF9wcm92aWRlcnMYAyADKAsyJi5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hQXV0aFByb3ZpZGVyEjcKCm9wZXJhdGlvbnMYBCADKAsyIy5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hT3BlcmF0aW9uEjMKCHNlZ21lbnRzGAUgAygLMiEuc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYVNlZ21lbnQSRAoOcHJvZmlsZV9zY2hlbWEYByABKAsyJy5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hUHJvZmlsZVNjaGVtYUgAiAEBQhEKD19wcm9maWxlX3NjaGVtYSIsCh5QdWJsaXNoQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCgoCaWQYASABKAkiiQEKH1B1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbhI0ChBicmVha2luZ19jaGFuZ2VzGAIgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSIuCiBVbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJVCiFVbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiI1CidHZXRDb250ZXh0RGltZW5zaW9uUHVibGlzaFN0YXR1c1JlcXVlc3QSCgoCaWQYASABKAkiVQooR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXNSZXNwb25zZRIpCgZzdGF0dXMYASABKAsyGS5wdWJsaXNoLnYxLlB1Ymxpc2hTdGF0dXMiHQobUHVibGlzaFByb2ZpbGVTY2hlbWFSZXF1ZXN0IpABChxQdWJsaXNoUHJvZmlsZVNjaGVtYVJlc3BvbnNlEjoKDnByb2ZpbGVfc2NoZW1hGAEgASgLMiIuc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlU2NoZW1hEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIh8KHVVucHVibGlzaFByb2ZpbGVTY2hlbWFSZXF1ZXN0IlwKHlVucHVibGlzaFByb2ZpbGVTY2hlbWFSZXNwb25zZRI6Cg5wcm9maWxlX3NjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYSImCiRHZXRQcm9maWxlU2NoZW1hUHVibGlzaFN0YXR1c1JlcXVlc3QiUgolR2V0UHJvZmlsZVNjaGVtYVB1Ymxpc2hTdGF0dXNSZXNwb25zZRIpCgZzdGF0dXMYASABKAsyGS5wdWJsaXNoLnYxLlB1Ymxpc2hTdGF0dXMiHQobUHVibGlzaFByb2plY3RTY2hlbWFSZXF1ZXN0IvYBChxQdWJsaXNoUHJvamVjdFNjaGVtYVJlc3BvbnNlEhgKEG1vZGVsc19wdWJsaXNoZWQYASABKAUSHAoUb3BlcmF0aW9uc19wdWJsaXNoZWQYAiABKAUSJAocY29udGV4dF9kaW1lbnNpb25zX3B1Ymxpc2hlZBgDIAEoBRIgChhhdXRoX3Byb3ZpZGVyc19wdWJsaXNoZWQYBCABKAUSIAoYcHJvZmlsZV9zY2hlbWFfcHVibGlzaGVkGAUgASgIEjQKEGJyZWFraW5nX2NoYW5nZXMYBiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIiAKHkdldFByb2plY3RQdWJsaXNoU3RhdHVzUmVxdWVzdCKDAQofR2V0UHJvamVjdFB1Ymxpc2hTdGF0dXNSZXNwb25zZRIqCgdwZW5kaW5nGAEgAygLMhkucHVibGlzaC52MS5QZW5kaW5nRW50aXR5EjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIqwBCiZTY2hlZHVsZUNvbnRleHREaW1lbnNpb25QdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCRIuCgpwdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCJbCidTY2hlZHVsZUNvbnRleHREaW1lbnNpb25QdWJsaXNoUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiI7Ci1DYW5jZWxTY2hlZHVsZWRDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkiYgouQ2FuY2VsU2NoZWR1bGVkQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIp0BCiNTY2hlZHVsZVByb2ZpbGVTY2hlbWFQdWJsaXNoUmVxdWVzdBIuCgpwdWJsaXNoX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCJiCiRTY2hlZHVsZVByb2ZpbGVTY2hlbWFQdWJsaXNoUmVzcG9uc2USOgoOcHJvZmlsZV9zY2hlbWEYASABKAsyIi5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVTY2hlbWEiLAoqQ2FuY2VsU2NoZWR1bGVkUHJvZmlsZVNjaGVtYVB1Ymxpc2hSZXF1ZXN0ImkKK0NhbmNlbFNjaGVkdWxlZFByb2ZpbGVTY2hlbWFQdWJsaXNoUmVzcG9uc2USOgoOcHJvZmlsZV9zY2hlbWEYASABKAsyIi5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVTY2hlbWEqdgoRU2hhcmVSZXNvdXJjZVR5cGUSIwofU0hBUkVfUkVTT1VSQ0VfVFlQRV9VTlNQRUNJRklFRBAAEh4KGlNIQVJFX1JFU09VUkNFX1RZUEVfUkVDT1JEEAESHAoYU0hBUkVfUkVTT1VSQ0VfVFlQRV9GSUxFEAIqhQEKD1NoYXJlUGVybWlzc2lvbhIgChxTSEFSRV9QRVJNSVNTSU9OX1VOU1BFQ0lGSUVEEAASGQoVU0hBUkVfUEVSTUlTU0lPTl9WSUVXEAESGQoVU0hBUkVfUEVSTUlTU0lPTl9FRElUEAISGgoWU0hBUkVfUEVSTUlTU0lPTl9BRE1JThADKnsKC1NoYXJlU3RhdHVzEhwKGFNIQVJFX1NUQVRVU19VTlNQRUNJRklFRBAAEhgKFFNIQVJFX1NUQVRVU19QRU5ESU5HEAESGQoVU0hBUkVfU1RBVFVTX0FDQ0VQVEVEEAISGQoVU0hBUkVfU1RBVFVTX0RFQ0xJTkVEEAMy30IKD1NldHRpbmdzU2VydmljZRJQCgtHZXRTZXR0aW5ncxIfLnNldHRpbmdzLnYxLkdldFNldHRpbmdzUmVxdWVzdBogLnNldHRpbmdzLnYxLkdldFNldHRpbmdzUmVzcG9uc2USVgoNVXBkYXRlU2V0dGluZxIhLnNldHRpbmdzLnYxLlVwZGF0ZVNldHRpbmdSZXF1ZXN0GiIuc2V0dGluZ3MudjEuVXBkYXRlU2V0dGluZ1Jlc3BvbnNlElYKDURlbGV0ZVNldHRpbmcSIS5zZXR0aW5ncy52MS5EZWxldGVTZXR0aW5nUmVxdWVzdBoiLnNldHRpbmdzLnYxLkRlbGV0ZVNldHRpbmdSZXNwb25zZRJ3ChhEZWxldGVTZXR0aW5nc0J5Q2F0ZWdvcnkSLC5zZXR0aW5ncy52MS5EZWxldGVTZXR0aW5nc0J5Q2F0ZWdvcnlSZXF1ZXN0Gi0uc2V0dGluZ3MudjEuRGVsZXRlU2V0dGluZ3NCeUNhdGVnb3J5UmVzcG9uc2USXAoPQnVsa1NldFNldHRpbmdzEiMuc2V0dGluZ3MudjEuQnVsa1NldFNldHRpbmdzUmVxdWVzdBokLnNldHRpbmdzLnYxLkJ1bGtTZXRTZXR0aW5nc1Jlc3BvbnNlElYKDUxpc3RBdWRpdExvZ3MSIS5zZXR0aW5ncy52MS5MaXN0QXVkaXRMb2dzUmVxdWVzdBoiLnNldHRpbmdzLnYxLkxpc3RBdWRpdExvZ3NSZXNwb25zZRJNCgpDcmVhdGVOb3RlEh4uc2V0dGluZ3MudjEuQ3JlYXRlTm90ZVJlcXVlc3QaHy5zZXR0aW5ncy52MS5DcmVhdGVOb3RlUmVzcG9uc2USRAoHR2V0Tm90ZRIbLnNldHRpbmdzLnYxLkdldE5vdGVSZXF1ZXN0Ghwuc2V0dGluZ3MudjEuR2V0Tm90ZVJlc3BvbnNlEkoKCUxpc3ROb3RlcxIdLnNldHRpbmdzLnYxLkxpc3ROb3Rlc1JlcXVlc3QaHi5zZXR0aW5ncy52MS5MaXN0Tm90ZXNSZXNwb25zZRJNCgpVcGRhdGVOb3RlEh4uc2V0dGluZ3MudjEuVXBkYXRlTm90ZVJlcXVlc3QaHy5zZXR0aW5ncy52MS5VcGRhdGVOb3RlUmVzcG9uc2USTQoKRGVsZXRlTm90ZRIeLnNldHRpbmdzLnYxLkRlbGV0ZU5vdGVSZXF1ZXN0Gh8uc2V0dGluZ3MudjEuRGVsZXRlTm90ZVJlc3BvbnNlElAKC1Jlc29sdmVOb3RlEh8uc2V0dGluZ3MudjEuUmVzb2x2ZU5vdGVSZXF1ZXN0GiAuc2V0dGluZ3MudjEuUmVzb2x2ZU5vdGVSZXNwb25zZRJWCg1VbnJlc29sdmVOb3RlEiEuc2V0dGluZ3MudjEuVW5yZXNvbHZlTm90ZVJlcXVlc3QaIi5zZXR0aW5ncy52MS5VbnJlc29sdmVOb3RlUmVzcG9uc2USUAoLU2VhcmNoTm90ZXMSHy5zZXR0aW5ncy52MS5TZWFyY2hOb3Rlc1JlcXVlc3QaIC5zZXR0aW5ncy52MS5TZWFyY2hOb3Rlc1Jlc3BvbnNlElkKDkxpc3RNeU1lbnRpb25zEiIuc2V0dGluZ3MudjEuTGlzdE15TWVudGlvbnNSZXF1ZXN0GiMuc2V0dGluZ3MudjEuTGlzdE15TWVudGlvbnNSZXNwb25zZRJoChNVcGRhdGVNZW50aW9uU3RhdHVzEicuc2V0dGluZ3MudjEuVXBkYXRlTWVudGlvblN0YXR1c1JlcXVlc3QaKC5zZXR0aW5ncy52MS5VcGRhdGVNZW50aW9uU3RhdHVzUmVzcG9uc2USXwoQTWFya01lbnRpb25zU2VlbhIkLnNldHRpbmdzLnYxLk1hcmtNZW50aW9uc1NlZW5SZXF1ZXN0GiUuc2V0dGluZ3MudjEuTWFya01lbnRpb25zU2VlblJlc3BvbnNlElAKC0xpc3RMb2NhbGVzEh8uc2V0dGluZ3MudjEuTGlzdExvY2FsZXNSZXF1ZXN0GiAuc2V0dGluZ3MudjEuTGlzdExvY2FsZXNSZXNwb25zZRJKCglHZXRMb2NhbGUSHS5zZXR0aW5ncy52MS5HZXRMb2NhbGVSZXF1ZXN0Gh4uc2V0dGluZ3MudjEuR2V0TG9jYWxlUmVzcG9uc2USXwoQR2V0RGVmYXVsdExvY2FsZRIkLnNldHRpbmdzLnYxLkdldERlZmF1bHRMb2NhbGVSZXF1ZXN0GiUuc2V0dGluZ3MudjEuR2V0RGVmYXVsdExvY2FsZVJlc3BvbnNlElwKD0dldExvY2FsZUJ5Q29kZRIjLnNldHRpbmdzLnYxLkdldExvY2FsZUJ5Q29kZVJlcXVlc3QaJC5zZXR0aW5ncy52MS5HZXRMb2NhbGVCeUNvZGVSZXNwb25zZRJTCgxDcmVhdGVMb2NhbGUSIC5zZXR0aW5ncy52MS5DcmVhdGVMb2NhbGVSZXF1ZXN0GiEuc2V0dGluZ3MudjEuQ3JlYXRlTG9jYWxlUmVzcG9uc2USUwoMVXBkYXRlTG9jYWxlEiAuc2V0dGluZ3MudjEuVXBkYXRlTG9jYWxlUmVxdWVzdBohLnNldHRpbmdzLnYxLlVwZGF0ZUxvY2FsZVJlc3BvbnNlElMKDERlbGV0ZUxvY2FsZRIgLnNldHRpbmdzLnYxLkRlbGV0ZUxvY2FsZVJlcXVlc3QaIS5zZXR0aW5ncy52MS5EZWxldGVMb2NhbGVSZXNwb25zZRJiChFHZXROYXZQcmVmZXJlbmNlcxIlLnNldHRpbmdzLnYxLkdldE5hdlByZWZlcmVuY2VzUmVxdWVzdBomLnNldHRpbmdzLnYxLkdldE5hdlByZWZlcmVuY2VzUmVzcG9uc2USawoUVXBkYXRlTmF2UHJlZmVyZW5jZXMSKC5zZXR0aW5ncy52MS5VcGRhdGVOYXZQcmVmZXJlbmNlc1JlcXVlc3QaKS5zZXR0aW5ncy52MS5VcGRhdGVOYXZQcmVmZXJlbmNlc1Jlc3BvbnNlEmUKEkxpc3RSZWNlbnRseU9wZW5lZBImLnNldHRpbmdzLnYxLkxpc3RSZWNlbnRseU9wZW5lZFJlcXVlc3QaJy5zZXR0aW5ncy52MS5MaXN0UmVjZW50bHlPcGVuZWRSZXNwb25zZRJoChNUcmFja1JlY2VudGx5T3BlbmVkEicuc2V0dGluZ3MudjEuVHJhY2tSZWNlbnRseU9wZW5lZFJlcXVlc3QaKC5zZXR0aW5ncy52MS5UcmFja1JlY2VudGx5T3BlbmVkUmVzcG9uc2USawoUUmVtb3ZlUmVjZW50bHlPcGVuZWQSKC5zZXR0aW5ncy52MS5SZW1vdmVSZWNlbnRseU9wZW5lZFJlcXVlc3QaKS5zZXR0aW5ncy52MS5SZW1vdmVSZWNlbnRseU9wZW5lZFJlc3BvbnNlEmgKE0NsZWFyUmVjZW50bHlPcGVuZWQSJy5zZXR0aW5ncy52MS5DbGVhclJlY2VudGx5T3BlbmVkUmVxdWVzdBooLnNldHRpbmdzLnYxLkNsZWFyUmVjZW50bHlPcGVuZWRSZXNwb25zZRJQCgtDcmVhdGVTaGFyZRIfLnNldHRpbmdzLnYxLkNyZWF0ZVNoYXJlUmVxdWVzdBogLnNldHRpbmdzLnYxLkNyZWF0ZVNoYXJlUmVzcG9uc2USRwoIR2V0U2hhcmUSHC5zZXR0aW5ncy52MS5HZXRTaGFyZVJlcXVlc3QaHS5zZXR0aW5ncy52MS5HZXRTaGFyZVJlc3BvbnNlEk0KCkxpc3RTaGFyZXMSHi5zZXR0aW5ncy52MS5MaXN0U2hhcmVzUmVxdWVzdBofLnNldHRpbmdzLnYxLkxpc3RTaGFyZXNSZXNwb25zZRJQCgtVcGRhdGVTaGFyZRIfLnNldHRpbmdzLnYxLlVwZGF0ZVNoYXJlUmVxdWVzdBogLnNldHRpbmdzLnYxLlVwZGF0ZVNoYXJlUmVzcG9uc2USUAoLUmV2b2tlU2hhcmUSHy5zZXR0aW5ncy52MS5SZXZva2VTaGFyZVJlcXVlc3QaIC5zZXR0aW5ncy52MS5SZXZva2VTaGFyZVJlc3BvbnNlElAKC0FjY2VwdFNoYXJlEh8uc2V0dGluZ3MudjEuQWNjZXB0U2hhcmVSZXF1ZXN0GiAuc2V0dGluZ3MudjEuQWNjZXB0U2hhcmVSZXNwb25zZRJTCgxEZWNsaW5lU2hhcmUSIC5zZXR0aW5ncy52MS5EZWNsaW5lU2hhcmVSZXF1ZXN0GiEuc2V0dGluZ3MudjEuRGVjbGluZVNoYXJlUmVzcG9uc2USbgoVTGlzdENvbnRleHREaW1lbnNpb25zEikuc2V0dGluZ3MudjEuTGlzdENvbnRleHREaW1lbnNpb25zUmVxdWVzdBoqLnNldHRpbmdzLnYxLkxpc3RDb250ZXh0RGltZW5zaW9uc1Jlc3BvbnNlEmgKE0dldENvbnRleHREaW1lbnNpb24SJy5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uUmVxdWVzdBooLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25SZXNwb25zZRJ3ChhHZXRDb250ZXh0RGltZW5zaW9uQnlLZXkSLC5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uQnlLZXlSZXF1ZXN0Gi0uc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvbkJ5S2V5UmVzcG9uc2UScQoWQ3JlYXRlQ29udGV4dERpbWVuc2lvbhIqLnNldHRpbmdzLnYxLkNyZWF0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0Gisuc2V0dGluZ3MudjEuQ3JlYXRlQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEnEKFlVwZGF0ZUNvbnRleHREaW1lbnNpb24SKi5zZXR0aW5ncy52MS5VcGRhdGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBorLnNldHRpbmdzLnYxLlVwZGF0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRJxChZEZWxldGVDb250ZXh0RGltZW5zaW9uEiouc2V0dGluZ3MudjEuRGVsZXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QaKy5zZXR0aW5ncy52MS5EZWxldGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USegoZR2V0Q29udGV4dERpbWVuc2lvblZhbHVlcxItLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25WYWx1ZXNSZXF1ZXN0Gi4uc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblZhbHVlc1Jlc3BvbnNlEncKGEdldEN1c3RvbWVyUHJvZmlsZVNjaGVtYRIsLnNldHRpbmdzLnYxLkdldEN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlcXVlc3QaLS5zZXR0aW5ncy52MS5HZXRDdXN0b21lclByb2ZpbGVTY2hlbWFSZXNwb25zZRJlChJHZXRDdXN0b21lclByb2ZpbGUSJi5zZXR0aW5ncy52MS5HZXRDdXN0b21lclByb2ZpbGVSZXF1ZXN0Gicuc2V0dGluZ3MudjEuR2V0Q3VzdG9tZXJQcm9maWxlUmVzcG9uc2USZQoSU2V0Q3VzdG9tZXJQcm9maWxlEiYuc2V0dGluZ3MudjEuU2V0Q3VzdG9tZXJQcm9maWxlUmVxdWVzdBonLnNldHRpbmdzLnYxLlNldEN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEoABChtVcGRhdGVDdXN0b21lclByb2ZpbGVTY2hlbWESLy5zZXR0aW5ncy52MS5VcGRhdGVDdXN0b21lclByb2ZpbGVTY2hlbWFSZXF1ZXN0GjAuc2V0dGluZ3MudjEuVXBkYXRlQ3VzdG9tZXJQcm9maWxlU2NoZW1hUmVzcG9uc2UScQoWU2VhcmNoQ3VzdG9tZXJQcm9maWxlcxIqLnNldHRpbmdzLnYxLlNlYXJjaEN1c3RvbWVyUHJvZmlsZXNSZXF1ZXN0Gisuc2V0dGluZ3MudjEuU2VhcmNoQ3VzdG9tZXJQcm9maWxlc1Jlc3BvbnNlEm4KFURlbGV0ZUN1c3RvbWVyUHJvZmlsZRIpLnNldHRpbmdzLnYxLkRlbGV0ZUN1c3RvbWVyUHJvZmlsZVJlcXVlc3QaKi5zZXR0aW5ncy52MS5EZWxldGVDdXN0b21lclByb2ZpbGVSZXNwb25zZRKMAQofR2V0Q3VzdG9tZXJSZXNvbHV0aW9uQXR0cmlidXRlcxIzLnNldHRpbmdzLnYxLkdldEN1c3RvbWVyUmVzb2x1dGlvbkF0dHJpYnV0ZXNSZXF1ZXN0GjQuc2V0dGluZ3MudjEuR2V0Q3VzdG9tZXJSZXNvbHV0aW9uQXR0cmlidXRlc1Jlc3BvbnNlEl8KEEdldEVkaXRvckNvbmZpZ3MSJC5zZXR0aW5ncy52MS5HZXRFZGl0b3JDb25maWdzUmVxdWVzdBolLnNldHRpbmdzLnYxLkdldEVkaXRvckNvbmZpZ3NSZXNwb25zZRJlChJMaXN0VmFyaWFudENhdGFsb2cSJi5zZXR0aW5ncy52MS5MaXN0VmFyaWFudENhdGFsb2dSZXF1ZXN0Gicuc2V0dGluZ3MudjEuTGlzdFZhcmlhbnRDYXRhbG9nUmVzcG9uc2UScQoWR2V0VmFyaWFudENhdGFsb2dFbnRyeRIqLnNldHRpbmdzLnYxLkdldFZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0Gisuc2V0dGluZ3MudjEuR2V0VmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEnoKGUNyZWF0ZVZhcmlhbnRDYXRhbG9nRW50cnkSLS5zZXR0aW5ncy52MS5DcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBouLnNldHRpbmdzLnYxLkNyZWF0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRJ6ChlVcGRhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5Ei0uc2V0dGluZ3MudjEuVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaLi5zZXR0aW5ncy52MS5VcGRhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USegoZRGVsZXRlVmFyaWFudENhdGFsb2dFbnRyeRItLnNldHRpbmdzLnYxLkRlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0Gi4uc2V0dGluZ3MudjEuRGVsZXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEoYBCh1HZXREZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeRIxLnNldHRpbmdzLnYxLkdldERlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBoyLnNldHRpbmdzLnYxLkdldERlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USjwEKIEVuc3VyZURlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5EjQuc2V0dGluZ3MudjEuRW5zdXJlRGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0GjUuc2V0dGluZ3MudjEuRW5zdXJlRGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRJfChBHZXRQcm9qZWN0U2NoZW1hEiQuc2V0dGluZ3MudjEuR2V0UHJvamVjdFNjaGVtYVJlcXVlc3QaJS5zZXR0aW5ncy52MS5HZXRQcm9qZWN0U2NoZW1hUmVzcG9uc2USdAoXUHVibGlzaENvbnRleHREaW1lbnNpb24SKy5zZXR0aW5ncy52MS5QdWJsaXNoQ29udGV4dERpbWVuc2lvblJlcXVlc3QaLC5zZXR0aW5ncy52MS5QdWJsaXNoQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEnoKGVVucHVibGlzaENvbnRleHREaW1lbnNpb24SLS5zZXR0aW5ncy52MS5VbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVxdWVzdBouLnNldHRpbmdzLnYxLlVucHVibGlzaENvbnRleHREaW1lbnNpb25SZXNwb25zZRKPAQogR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXMSNC5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uUHVibGlzaFN0YXR1c1JlcXVlc3QaNS5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uUHVibGlzaFN0YXR1c1Jlc3BvbnNlEowBCh9TY2hlZHVsZUNvbnRleHREaW1lbnNpb25QdWJsaXNoEjMuc2V0dGluZ3MudjEuU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlcXVlc3QaNC5zZXR0aW5ncy52MS5TY2hlZHVsZUNvbnRleHREaW1lbnNpb25QdWJsaXNoUmVzcG9uc2USoQEKJkNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoEjouc2V0dGluZ3MudjEuQ2FuY2VsU2NoZWR1bGVkQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXF1ZXN0Gjsuc2V0dGluZ3MudjEuQ2FuY2VsU2NoZWR1bGVkQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXNwb25zZRJrChRQdWJsaXNoUHJvZmlsZVNjaGVtYRIoLnNldHRpbmdzLnYxLlB1Ymxpc2hQcm9maWxlU2NoZW1hUmVxdWVzdBopLnNldHRpbmdzLnYxLlB1Ymxpc2hQcm9maWxlU2NoZW1hUmVzcG9uc2UScQoWVW5wdWJsaXNoUHJvZmlsZVNjaGVtYRIqLnNldHRpbmdzLnYxLlVucHVibGlzaFByb2ZpbGVTY2hlbWFSZXF1ZXN0Gisuc2V0dGluZ3MudjEuVW5wdWJsaXNoUHJvZmlsZVNjaGVtYVJlc3BvbnNlEoYBCh1HZXRQcm9maWxlU2NoZW1hUHVibGlzaFN0YXR1cxIxLnNldHRpbmdzLnYxLkdldFByb2ZpbGVTY2hlbWFQdWJsaXNoU3RhdHVzUmVxdWVzdBoyLnNldHRpbmdzLnYxLkdldFByb2ZpbGVTY2hlbWFQdWJsaXNoU3RhdHVzUmVzcG9uc2USgwEKHFNjaGVkdWxlUHJvZmlsZVNjaGVtYVB1Ymxpc2gSMC5zZXR0aW5ncy52MS5TY2hlZHVsZVByb2ZpbGVTY2hlbWFQdWJsaXNoUmVxdWVzdBoxLnNldHRpbmdzLnYxLlNjaGVkdWxlUHJvZmlsZVNjaGVtYVB1Ymxpc2hSZXNwb25zZRKYAQojQ2FuY2VsU2NoZWR1bGVkUHJvZmlsZVNjaGVtYVB1Ymxpc2gSNy5zZXR0aW5ncy52MS5DYW5jZWxTY2hlZHVsZWRQcm9maWxlU2NoZW1hUHVibGlzaFJlcXVlc3QaOC5zZXR0aW5ncy52MS5DYW5jZWxTY2hlZHVsZWRQcm9maWxlU2NoZW1hUHVibGlzaFJlc3BvbnNlEnQKF0dldFByb2plY3RQdWJsaXNoU3RhdHVzEisuc2V0dGluZ3MudjEuR2V0UHJvamVjdFB1Ymxpc2hTdGF0dXNSZXF1ZXN0Giwuc2V0dGluZ3MudjEuR2V0UHJvamVjdFB1Ymxpc2hTdGF0dXNSZXNwb25zZRJrChRQdWJsaXNoUHJvamVjdFNjaGVtYRIoLnNldHRpbmdzLnYxLlB1Ymxpc2hQcm9qZWN0U2NoZW1hUmVxdWVzdBopLnNldHRpbmdzLnYxLlB1Ymxpc2hQcm9qZWN0U2NoZW1hUmVzcG9uc2USXAoPR2V0RGVzaWduVG9rZW5zEiMuc2V0dGluZ3MudjEuR2V0RGVzaWduVG9rZW5zUmVxdWVzdBokLnNldHRpbmdzLnYxLkdldERlc2lnblRva2Vuc1Jlc3BvbnNlEmUKElVwZGF0ZURlc2lnblRva2VucxImLnNldHRpbmdzLnYxLlVwZGF0ZURlc2lnblRva2Vuc1JlcXVlc3QaJy5zZXR0aW5ncy52MS5VcGRhdGVEZXNpZ25Ub2tlbnNSZXNwb25zZRJoChNQdWJsaXNoRGVzaWduVG9rZW5zEicuc2V0dGluZ3MudjEuUHVibGlzaERlc2lnblRva2Vuc1JlcXVlc3QaKC5zZXR0aW5ncy52MS5QdWJsaXNoRGVzaWduVG9rZW5zUmVzcG9uc2USbgoVVW5wdWJsaXNoRGVzaWduVG9rZW5zEikuc2V0dGluZ3MudjEuVW5wdWJsaXNoRGVzaWduVG9rZW5zUmVxdWVzdBoqLnNldHRpbmdzLnYxLlVucHVibGlzaERlc2lnblRva2Vuc1Jlc3BvbnNlEoMBChxHZXREZXNpZ25Ub2tlbnNQdWJsaXNoU3RhdHVzEjAuc2V0dGluZ3MudjEuR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1c1JlcXVlc3QaMS5zZXR0aW5ncy52MS5HZXREZXNpZ25Ub2tlbnNQdWJsaXNoU3RhdHVzUmVzcG9uc2USgAEKG1NjaGVkdWxlRGVzaWduVG9rZW5zUHVibGlzaBIvLnNldHRpbmdzLnYxLlNjaGVkdWxlRGVzaWduVG9rZW5zUHVibGlzaFJlcXVlc3QaMC5zZXR0aW5ncy52MS5TY2hlZHVsZURlc2lnblRva2Vuc1B1Ymxpc2hSZXNwb25zZRKVAQoiQ2FuY2VsU2NoZWR1bGVkRGVzaWduVG9rZW5zUHVibGlzaBI2LnNldHRpbmdzLnYxLkNhbmNlbFNjaGVkdWxlZERlc2lnblRva2Vuc1B1Ymxpc2hSZXF1ZXN0Gjcuc2V0dGluZ3MudjEuQ2FuY2VsU2NoZWR1bGVkRGVzaWduVG9rZW5zUHVibGlzaFJlc3BvbnNlEn0KGkNvdW50RGVzaWduVG9rZW5SZWZlcmVuY2VzEi4uc2V0dGluZ3MudjEuQ291bnREZXNpZ25Ub2tlblJlZmVyZW5jZXNSZXF1ZXN0Gi8uc2V0dGluZ3MudjEuQ291bnREZXNpZ25Ub2tlblJlZmVyZW5jZXNSZXNwb25zZUI9WjtnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vc2V0dGluZ3MvdjE7c2V0dGluZ3N2MWIGcHJvdG8z", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_expressions_v1_expressions, file_publish_v1_publish]);
15
15
 
16
16
  /**
17
17
  * Describes the message settings.v1.Setting.
@@ -1028,348 +1028,376 @@ export const ResolvedNumberTokenSchema = /*@__PURE__*/
1028
1028
  export const ResolvedTypographyTokenSchema = /*@__PURE__*/
1029
1029
  messageDesc(file_settings_v1_settings, 144);
1030
1030
 
1031
+ /**
1032
+ * Describes the message settings.v1.ResolvedShadowToken.
1033
+ * Use `create(ResolvedShadowTokenSchema)` to create a new message.
1034
+ */
1035
+ export const ResolvedShadowTokenSchema = /*@__PURE__*/
1036
+ messageDesc(file_settings_v1_settings, 145);
1037
+
1038
+ /**
1039
+ * Describes the message settings.v1.ResolvedShadowLayer.
1040
+ * Use `create(ResolvedShadowLayerSchema)` to create a new message.
1041
+ */
1042
+ export const ResolvedShadowLayerSchema = /*@__PURE__*/
1043
+ messageDesc(file_settings_v1_settings, 146);
1044
+
1045
+ /**
1046
+ * Describes the message settings.v1.ResolvedBorderToken.
1047
+ * Use `create(ResolvedBorderTokenSchema)` to create a new message.
1048
+ */
1049
+ export const ResolvedBorderTokenSchema = /*@__PURE__*/
1050
+ messageDesc(file_settings_v1_settings, 147);
1051
+
1052
+ /**
1053
+ * Describes the message settings.v1.ResolvedBorderValue.
1054
+ * Use `create(ResolvedBorderValueSchema)` to create a new message.
1055
+ */
1056
+ export const ResolvedBorderValueSchema = /*@__PURE__*/
1057
+ messageDesc(file_settings_v1_settings, 148);
1058
+
1031
1059
  /**
1032
1060
  * Describes the message settings.v1.ResolvedTypographyValue.
1033
1061
  * Use `create(ResolvedTypographyValueSchema)` to create a new message.
1034
1062
  */
1035
1063
  export const ResolvedTypographyValueSchema = /*@__PURE__*/
1036
- messageDesc(file_settings_v1_settings, 145);
1064
+ messageDesc(file_settings_v1_settings, 149);
1037
1065
 
1038
1066
  /**
1039
1067
  * Describes the message settings.v1.GetDesignTokensRequest.
1040
1068
  * Use `create(GetDesignTokensRequestSchema)` to create a new message.
1041
1069
  */
1042
1070
  export const GetDesignTokensRequestSchema = /*@__PURE__*/
1043
- messageDesc(file_settings_v1_settings, 146);
1071
+ messageDesc(file_settings_v1_settings, 150);
1044
1072
 
1045
1073
  /**
1046
1074
  * Describes the message settings.v1.GetDesignTokensResponse.
1047
1075
  * Use `create(GetDesignTokensResponseSchema)` to create a new message.
1048
1076
  */
1049
1077
  export const GetDesignTokensResponseSchema = /*@__PURE__*/
1050
- messageDesc(file_settings_v1_settings, 147);
1078
+ messageDesc(file_settings_v1_settings, 151);
1051
1079
 
1052
1080
  /**
1053
1081
  * Describes the message settings.v1.UpdateDesignTokensRequest.
1054
1082
  * Use `create(UpdateDesignTokensRequestSchema)` to create a new message.
1055
1083
  */
1056
1084
  export const UpdateDesignTokensRequestSchema = /*@__PURE__*/
1057
- messageDesc(file_settings_v1_settings, 148);
1085
+ messageDesc(file_settings_v1_settings, 152);
1058
1086
 
1059
1087
  /**
1060
1088
  * Describes the message settings.v1.UpdateDesignTokensResponse.
1061
1089
  * Use `create(UpdateDesignTokensResponseSchema)` to create a new message.
1062
1090
  */
1063
1091
  export const UpdateDesignTokensResponseSchema = /*@__PURE__*/
1064
- messageDesc(file_settings_v1_settings, 149);
1092
+ messageDesc(file_settings_v1_settings, 153);
1065
1093
 
1066
1094
  /**
1067
1095
  * Describes the message settings.v1.PublishDesignTokensRequest.
1068
1096
  * Use `create(PublishDesignTokensRequestSchema)` to create a new message.
1069
1097
  */
1070
1098
  export const PublishDesignTokensRequestSchema = /*@__PURE__*/
1071
- messageDesc(file_settings_v1_settings, 150);
1099
+ messageDesc(file_settings_v1_settings, 154);
1072
1100
 
1073
1101
  /**
1074
1102
  * Describes the message settings.v1.PublishDesignTokensResponse.
1075
1103
  * Use `create(PublishDesignTokensResponseSchema)` to create a new message.
1076
1104
  */
1077
1105
  export const PublishDesignTokensResponseSchema = /*@__PURE__*/
1078
- messageDesc(file_settings_v1_settings, 151);
1106
+ messageDesc(file_settings_v1_settings, 155);
1079
1107
 
1080
1108
  /**
1081
1109
  * Describes the message settings.v1.UnpublishDesignTokensRequest.
1082
1110
  * Use `create(UnpublishDesignTokensRequestSchema)` to create a new message.
1083
1111
  */
1084
1112
  export const UnpublishDesignTokensRequestSchema = /*@__PURE__*/
1085
- messageDesc(file_settings_v1_settings, 152);
1113
+ messageDesc(file_settings_v1_settings, 156);
1086
1114
 
1087
1115
  /**
1088
1116
  * Describes the message settings.v1.UnpublishDesignTokensResponse.
1089
1117
  * Use `create(UnpublishDesignTokensResponseSchema)` to create a new message.
1090
1118
  */
1091
1119
  export const UnpublishDesignTokensResponseSchema = /*@__PURE__*/
1092
- messageDesc(file_settings_v1_settings, 153);
1120
+ messageDesc(file_settings_v1_settings, 157);
1093
1121
 
1094
1122
  /**
1095
1123
  * Describes the message settings.v1.GetDesignTokensPublishStatusRequest.
1096
1124
  * Use `create(GetDesignTokensPublishStatusRequestSchema)` to create a new message.
1097
1125
  */
1098
1126
  export const GetDesignTokensPublishStatusRequestSchema = /*@__PURE__*/
1099
- messageDesc(file_settings_v1_settings, 154);
1127
+ messageDesc(file_settings_v1_settings, 158);
1100
1128
 
1101
1129
  /**
1102
1130
  * Describes the message settings.v1.GetDesignTokensPublishStatusResponse.
1103
1131
  * Use `create(GetDesignTokensPublishStatusResponseSchema)` to create a new message.
1104
1132
  */
1105
1133
  export const GetDesignTokensPublishStatusResponseSchema = /*@__PURE__*/
1106
- messageDesc(file_settings_v1_settings, 155);
1134
+ messageDesc(file_settings_v1_settings, 159);
1107
1135
 
1108
1136
  /**
1109
1137
  * Describes the message settings.v1.ScheduleDesignTokensPublishRequest.
1110
1138
  * Use `create(ScheduleDesignTokensPublishRequestSchema)` to create a new message.
1111
1139
  */
1112
1140
  export const ScheduleDesignTokensPublishRequestSchema = /*@__PURE__*/
1113
- messageDesc(file_settings_v1_settings, 156);
1141
+ messageDesc(file_settings_v1_settings, 160);
1114
1142
 
1115
1143
  /**
1116
1144
  * Describes the message settings.v1.ScheduleDesignTokensPublishResponse.
1117
1145
  * Use `create(ScheduleDesignTokensPublishResponseSchema)` to create a new message.
1118
1146
  */
1119
1147
  export const ScheduleDesignTokensPublishResponseSchema = /*@__PURE__*/
1120
- messageDesc(file_settings_v1_settings, 157);
1148
+ messageDesc(file_settings_v1_settings, 161);
1121
1149
 
1122
1150
  /**
1123
1151
  * Describes the message settings.v1.CancelScheduledDesignTokensPublishRequest.
1124
1152
  * Use `create(CancelScheduledDesignTokensPublishRequestSchema)` to create a new message.
1125
1153
  */
1126
1154
  export const CancelScheduledDesignTokensPublishRequestSchema = /*@__PURE__*/
1127
- messageDesc(file_settings_v1_settings, 158);
1155
+ messageDesc(file_settings_v1_settings, 162);
1128
1156
 
1129
1157
  /**
1130
1158
  * Describes the message settings.v1.CancelScheduledDesignTokensPublishResponse.
1131
1159
  * Use `create(CancelScheduledDesignTokensPublishResponseSchema)` to create a new message.
1132
1160
  */
1133
1161
  export const CancelScheduledDesignTokensPublishResponseSchema = /*@__PURE__*/
1134
- messageDesc(file_settings_v1_settings, 159);
1162
+ messageDesc(file_settings_v1_settings, 163);
1135
1163
 
1136
1164
  /**
1137
1165
  * Describes the message settings.v1.CountDesignTokenReferencesRequest.
1138
1166
  * Use `create(CountDesignTokenReferencesRequestSchema)` to create a new message.
1139
1167
  */
1140
1168
  export const CountDesignTokenReferencesRequestSchema = /*@__PURE__*/
1141
- messageDesc(file_settings_v1_settings, 160);
1169
+ messageDesc(file_settings_v1_settings, 164);
1142
1170
 
1143
1171
  /**
1144
1172
  * Describes the message settings.v1.CountDesignTokenReferencesResponse.
1145
1173
  * Use `create(CountDesignTokenReferencesResponseSchema)` to create a new message.
1146
1174
  */
1147
1175
  export const CountDesignTokenReferencesResponseSchema = /*@__PURE__*/
1148
- messageDesc(file_settings_v1_settings, 161);
1176
+ messageDesc(file_settings_v1_settings, 165);
1149
1177
 
1150
1178
  /**
1151
1179
  * Describes the message settings.v1.GetProjectSchemaRequest.
1152
1180
  * Use `create(GetProjectSchemaRequestSchema)` to create a new message.
1153
1181
  */
1154
1182
  export const GetProjectSchemaRequestSchema = /*@__PURE__*/
1155
- messageDesc(file_settings_v1_settings, 162);
1183
+ messageDesc(file_settings_v1_settings, 166);
1156
1184
 
1157
1185
  /**
1158
1186
  * Describes the message settings.v1.ProjectSchemaModel.
1159
1187
  * Use `create(ProjectSchemaModelSchema)` to create a new message.
1160
1188
  */
1161
1189
  export const ProjectSchemaModelSchema = /*@__PURE__*/
1162
- messageDesc(file_settings_v1_settings, 163);
1190
+ messageDesc(file_settings_v1_settings, 167);
1163
1191
 
1164
1192
  /**
1165
1193
  * Describes the message settings.v1.ProjectSchemaContextDimension.
1166
1194
  * Use `create(ProjectSchemaContextDimensionSchema)` to create a new message.
1167
1195
  */
1168
1196
  export const ProjectSchemaContextDimensionSchema = /*@__PURE__*/
1169
- messageDesc(file_settings_v1_settings, 164);
1197
+ messageDesc(file_settings_v1_settings, 168);
1170
1198
 
1171
1199
  /**
1172
1200
  * Describes the message settings.v1.ProjectSchemaAuthProvider.
1173
1201
  * Use `create(ProjectSchemaAuthProviderSchema)` to create a new message.
1174
1202
  */
1175
1203
  export const ProjectSchemaAuthProviderSchema = /*@__PURE__*/
1176
- messageDesc(file_settings_v1_settings, 165);
1204
+ messageDesc(file_settings_v1_settings, 169);
1177
1205
 
1178
1206
  /**
1179
1207
  * Describes the message settings.v1.ProjectSchemaOperation.
1180
1208
  * Use `create(ProjectSchemaOperationSchema)` to create a new message.
1181
1209
  */
1182
1210
  export const ProjectSchemaOperationSchema = /*@__PURE__*/
1183
- messageDesc(file_settings_v1_settings, 166);
1211
+ messageDesc(file_settings_v1_settings, 170);
1184
1212
 
1185
1213
  /**
1186
1214
  * Describes the message settings.v1.ProjectSchemaSegment.
1187
1215
  * Use `create(ProjectSchemaSegmentSchema)` to create a new message.
1188
1216
  */
1189
1217
  export const ProjectSchemaSegmentSchema = /*@__PURE__*/
1190
- messageDesc(file_settings_v1_settings, 167);
1218
+ messageDesc(file_settings_v1_settings, 171);
1191
1219
 
1192
1220
  /**
1193
1221
  * Describes the message settings.v1.ProjectSchemaProfileSchema.
1194
1222
  * Use `create(ProjectSchemaProfileSchemaSchema)` to create a new message.
1195
1223
  */
1196
1224
  export const ProjectSchemaProfileSchemaSchema = /*@__PURE__*/
1197
- messageDesc(file_settings_v1_settings, 168);
1225
+ messageDesc(file_settings_v1_settings, 172);
1198
1226
 
1199
1227
  /**
1200
1228
  * Describes the message settings.v1.GetProjectSchemaResponse.
1201
1229
  * Use `create(GetProjectSchemaResponseSchema)` to create a new message.
1202
1230
  */
1203
1231
  export const GetProjectSchemaResponseSchema = /*@__PURE__*/
1204
- messageDesc(file_settings_v1_settings, 169);
1232
+ messageDesc(file_settings_v1_settings, 173);
1205
1233
 
1206
1234
  /**
1207
1235
  * Describes the message settings.v1.PublishContextDimensionRequest.
1208
1236
  * Use `create(PublishContextDimensionRequestSchema)` to create a new message.
1209
1237
  */
1210
1238
  export const PublishContextDimensionRequestSchema = /*@__PURE__*/
1211
- messageDesc(file_settings_v1_settings, 170);
1239
+ messageDesc(file_settings_v1_settings, 174);
1212
1240
 
1213
1241
  /**
1214
1242
  * Describes the message settings.v1.PublishContextDimensionResponse.
1215
1243
  * Use `create(PublishContextDimensionResponseSchema)` to create a new message.
1216
1244
  */
1217
1245
  export const PublishContextDimensionResponseSchema = /*@__PURE__*/
1218
- messageDesc(file_settings_v1_settings, 171);
1246
+ messageDesc(file_settings_v1_settings, 175);
1219
1247
 
1220
1248
  /**
1221
1249
  * Describes the message settings.v1.UnpublishContextDimensionRequest.
1222
1250
  * Use `create(UnpublishContextDimensionRequestSchema)` to create a new message.
1223
1251
  */
1224
1252
  export const UnpublishContextDimensionRequestSchema = /*@__PURE__*/
1225
- messageDesc(file_settings_v1_settings, 172);
1253
+ messageDesc(file_settings_v1_settings, 176);
1226
1254
 
1227
1255
  /**
1228
1256
  * Describes the message settings.v1.UnpublishContextDimensionResponse.
1229
1257
  * Use `create(UnpublishContextDimensionResponseSchema)` to create a new message.
1230
1258
  */
1231
1259
  export const UnpublishContextDimensionResponseSchema = /*@__PURE__*/
1232
- messageDesc(file_settings_v1_settings, 173);
1260
+ messageDesc(file_settings_v1_settings, 177);
1233
1261
 
1234
1262
  /**
1235
1263
  * Describes the message settings.v1.GetContextDimensionPublishStatusRequest.
1236
1264
  * Use `create(GetContextDimensionPublishStatusRequestSchema)` to create a new message.
1237
1265
  */
1238
1266
  export const GetContextDimensionPublishStatusRequestSchema = /*@__PURE__*/
1239
- messageDesc(file_settings_v1_settings, 174);
1267
+ messageDesc(file_settings_v1_settings, 178);
1240
1268
 
1241
1269
  /**
1242
1270
  * Describes the message settings.v1.GetContextDimensionPublishStatusResponse.
1243
1271
  * Use `create(GetContextDimensionPublishStatusResponseSchema)` to create a new message.
1244
1272
  */
1245
1273
  export const GetContextDimensionPublishStatusResponseSchema = /*@__PURE__*/
1246
- messageDesc(file_settings_v1_settings, 175);
1274
+ messageDesc(file_settings_v1_settings, 179);
1247
1275
 
1248
1276
  /**
1249
1277
  * Describes the message settings.v1.PublishProfileSchemaRequest.
1250
1278
  * Use `create(PublishProfileSchemaRequestSchema)` to create a new message.
1251
1279
  */
1252
1280
  export const PublishProfileSchemaRequestSchema = /*@__PURE__*/
1253
- messageDesc(file_settings_v1_settings, 176);
1281
+ messageDesc(file_settings_v1_settings, 180);
1254
1282
 
1255
1283
  /**
1256
1284
  * Describes the message settings.v1.PublishProfileSchemaResponse.
1257
1285
  * Use `create(PublishProfileSchemaResponseSchema)` to create a new message.
1258
1286
  */
1259
1287
  export const PublishProfileSchemaResponseSchema = /*@__PURE__*/
1260
- messageDesc(file_settings_v1_settings, 177);
1288
+ messageDesc(file_settings_v1_settings, 181);
1261
1289
 
1262
1290
  /**
1263
1291
  * Describes the message settings.v1.UnpublishProfileSchemaRequest.
1264
1292
  * Use `create(UnpublishProfileSchemaRequestSchema)` to create a new message.
1265
1293
  */
1266
1294
  export const UnpublishProfileSchemaRequestSchema = /*@__PURE__*/
1267
- messageDesc(file_settings_v1_settings, 178);
1295
+ messageDesc(file_settings_v1_settings, 182);
1268
1296
 
1269
1297
  /**
1270
1298
  * Describes the message settings.v1.UnpublishProfileSchemaResponse.
1271
1299
  * Use `create(UnpublishProfileSchemaResponseSchema)` to create a new message.
1272
1300
  */
1273
1301
  export const UnpublishProfileSchemaResponseSchema = /*@__PURE__*/
1274
- messageDesc(file_settings_v1_settings, 179);
1302
+ messageDesc(file_settings_v1_settings, 183);
1275
1303
 
1276
1304
  /**
1277
1305
  * Describes the message settings.v1.GetProfileSchemaPublishStatusRequest.
1278
1306
  * Use `create(GetProfileSchemaPublishStatusRequestSchema)` to create a new message.
1279
1307
  */
1280
1308
  export const GetProfileSchemaPublishStatusRequestSchema = /*@__PURE__*/
1281
- messageDesc(file_settings_v1_settings, 180);
1309
+ messageDesc(file_settings_v1_settings, 184);
1282
1310
 
1283
1311
  /**
1284
1312
  * Describes the message settings.v1.GetProfileSchemaPublishStatusResponse.
1285
1313
  * Use `create(GetProfileSchemaPublishStatusResponseSchema)` to create a new message.
1286
1314
  */
1287
1315
  export const GetProfileSchemaPublishStatusResponseSchema = /*@__PURE__*/
1288
- messageDesc(file_settings_v1_settings, 181);
1316
+ messageDesc(file_settings_v1_settings, 185);
1289
1317
 
1290
1318
  /**
1291
1319
  * Describes the message settings.v1.PublishProjectSchemaRequest.
1292
1320
  * Use `create(PublishProjectSchemaRequestSchema)` to create a new message.
1293
1321
  */
1294
1322
  export const PublishProjectSchemaRequestSchema = /*@__PURE__*/
1295
- messageDesc(file_settings_v1_settings, 182);
1323
+ messageDesc(file_settings_v1_settings, 186);
1296
1324
 
1297
1325
  /**
1298
1326
  * Describes the message settings.v1.PublishProjectSchemaResponse.
1299
1327
  * Use `create(PublishProjectSchemaResponseSchema)` to create a new message.
1300
1328
  */
1301
1329
  export const PublishProjectSchemaResponseSchema = /*@__PURE__*/
1302
- messageDesc(file_settings_v1_settings, 183);
1330
+ messageDesc(file_settings_v1_settings, 187);
1303
1331
 
1304
1332
  /**
1305
1333
  * Describes the message settings.v1.GetProjectPublishStatusRequest.
1306
1334
  * Use `create(GetProjectPublishStatusRequestSchema)` to create a new message.
1307
1335
  */
1308
1336
  export const GetProjectPublishStatusRequestSchema = /*@__PURE__*/
1309
- messageDesc(file_settings_v1_settings, 184);
1337
+ messageDesc(file_settings_v1_settings, 188);
1310
1338
 
1311
1339
  /**
1312
1340
  * Describes the message settings.v1.GetProjectPublishStatusResponse.
1313
1341
  * Use `create(GetProjectPublishStatusResponseSchema)` to create a new message.
1314
1342
  */
1315
1343
  export const GetProjectPublishStatusResponseSchema = /*@__PURE__*/
1316
- messageDesc(file_settings_v1_settings, 185);
1344
+ messageDesc(file_settings_v1_settings, 189);
1317
1345
 
1318
1346
  /**
1319
1347
  * Describes the message settings.v1.ScheduleContextDimensionPublishRequest.
1320
1348
  * Use `create(ScheduleContextDimensionPublishRequestSchema)` to create a new message.
1321
1349
  */
1322
1350
  export const ScheduleContextDimensionPublishRequestSchema = /*@__PURE__*/
1323
- messageDesc(file_settings_v1_settings, 186);
1351
+ messageDesc(file_settings_v1_settings, 190);
1324
1352
 
1325
1353
  /**
1326
1354
  * Describes the message settings.v1.ScheduleContextDimensionPublishResponse.
1327
1355
  * Use `create(ScheduleContextDimensionPublishResponseSchema)` to create a new message.
1328
1356
  */
1329
1357
  export const ScheduleContextDimensionPublishResponseSchema = /*@__PURE__*/
1330
- messageDesc(file_settings_v1_settings, 187);
1358
+ messageDesc(file_settings_v1_settings, 191);
1331
1359
 
1332
1360
  /**
1333
1361
  * Describes the message settings.v1.CancelScheduledContextDimensionPublishRequest.
1334
1362
  * Use `create(CancelScheduledContextDimensionPublishRequestSchema)` to create a new message.
1335
1363
  */
1336
1364
  export const CancelScheduledContextDimensionPublishRequestSchema = /*@__PURE__*/
1337
- messageDesc(file_settings_v1_settings, 188);
1365
+ messageDesc(file_settings_v1_settings, 192);
1338
1366
 
1339
1367
  /**
1340
1368
  * Describes the message settings.v1.CancelScheduledContextDimensionPublishResponse.
1341
1369
  * Use `create(CancelScheduledContextDimensionPublishResponseSchema)` to create a new message.
1342
1370
  */
1343
1371
  export const CancelScheduledContextDimensionPublishResponseSchema = /*@__PURE__*/
1344
- messageDesc(file_settings_v1_settings, 189);
1372
+ messageDesc(file_settings_v1_settings, 193);
1345
1373
 
1346
1374
  /**
1347
1375
  * Describes the message settings.v1.ScheduleProfileSchemaPublishRequest.
1348
1376
  * Use `create(ScheduleProfileSchemaPublishRequestSchema)` to create a new message.
1349
1377
  */
1350
1378
  export const ScheduleProfileSchemaPublishRequestSchema = /*@__PURE__*/
1351
- messageDesc(file_settings_v1_settings, 190);
1379
+ messageDesc(file_settings_v1_settings, 194);
1352
1380
 
1353
1381
  /**
1354
1382
  * Describes the message settings.v1.ScheduleProfileSchemaPublishResponse.
1355
1383
  * Use `create(ScheduleProfileSchemaPublishResponseSchema)` to create a new message.
1356
1384
  */
1357
1385
  export const ScheduleProfileSchemaPublishResponseSchema = /*@__PURE__*/
1358
- messageDesc(file_settings_v1_settings, 191);
1386
+ messageDesc(file_settings_v1_settings, 195);
1359
1387
 
1360
1388
  /**
1361
1389
  * Describes the message settings.v1.CancelScheduledProfileSchemaPublishRequest.
1362
1390
  * Use `create(CancelScheduledProfileSchemaPublishRequestSchema)` to create a new message.
1363
1391
  */
1364
1392
  export const CancelScheduledProfileSchemaPublishRequestSchema = /*@__PURE__*/
1365
- messageDesc(file_settings_v1_settings, 192);
1393
+ messageDesc(file_settings_v1_settings, 196);
1366
1394
 
1367
1395
  /**
1368
1396
  * Describes the message settings.v1.CancelScheduledProfileSchemaPublishResponse.
1369
1397
  * Use `create(CancelScheduledProfileSchemaPublishResponseSchema)` to create a new message.
1370
1398
  */
1371
1399
  export const CancelScheduledProfileSchemaPublishResponseSchema = /*@__PURE__*/
1372
- messageDesc(file_settings_v1_settings, 193);
1400
+ messageDesc(file_settings_v1_settings, 197);
1373
1401
 
1374
1402
  /**
1375
1403
  * Describes the enum settings.v1.ShareResourceType.
@@ -3,7 +3,7 @@
3
3
  /* eslint-disable */
4
4
  // @ts-nocheck
5
5
 
6
- import { CleanupOrphanedFilesRequest, CleanupOrphanedFilesResponse, ConfirmFileUploadRequest, ConfirmFileUploadResponse, CreateFileUploadRequest, CreateFileUploadResponse, DeleteFileRequest, DeleteFileResponse, GetFileRequest, GetFileResponse, GetStorageUsageRequest, GetStorageUsageResponse, ListFilesRequest, ListFilesResponse, PermanentlyDeleteFileRequest, PermanentlyDeleteFileResponse, RemoveFileUsageRequest, RemoveFileUsageResponse, RestoreFileRequest, RestoreFileResponse, TrackFileUsageRequest, TrackFileUsageResponse, UpdateFileMetadataRequest, UpdateFileMetadataResponse, UpdateFileRequest, UpdateFileResponse } from "./storage_pbjs";
6
+ import { CleanupOrphanedFilesRequest, CleanupOrphanedFilesResponse, ConfirmFileUploadRequest, ConfirmFileUploadResponse, CreateFileUploadRequest, CreateFileUploadResponse, DeleteFileRequest, DeleteFileResponse, GetFileRequest, GetFileResponse, GetStorageUsageRequest, GetStorageUsageResponse, ListFilesRequest, ListFilesResponse, PermanentlyDeleteFileRequest, PermanentlyDeleteFileResponse, RemoveFileUsageRequest, RemoveFileUsageResponse, RestoreFileRequest, RestoreFileResponse, RetryFileGenerationRequest, RetryFileGenerationResponse, TrackFileUsageRequest, TrackFileUsageResponse, UpdateFileMetadataRequest, UpdateFileMetadataResponse, UpdateFileRequest, UpdateFileResponse } from "./storage_pbjs";
7
7
  import { MethodKind } from "@bufbuild/protobuf";
8
8
 
9
9
  /**
@@ -139,6 +139,18 @@ export declare const StorageService: {
139
139
  readonly O: typeof CleanupOrphanedFilesResponse,
140
140
  readonly kind: MethodKind.Unary,
141
141
  },
142
+ /**
143
+ * Re-enqueue generation of a single derived asset for a video file. Used by
144
+ * the admin "Retry" buttons and by the storage sweeper's recovery path.
145
+ *
146
+ * @generated from rpc storage.v1.StorageService.RetryFileGeneration
147
+ */
148
+ readonly retryFileGeneration: {
149
+ readonly name: "RetryFileGeneration",
150
+ readonly I: typeof RetryFileGenerationRequest,
151
+ readonly O: typeof RetryFileGenerationResponse,
152
+ readonly kind: MethodKind.Unary,
153
+ },
142
154
  }
143
155
  };
144
156
 
@@ -3,7 +3,7 @@
3
3
  /* eslint-disable */
4
4
  // @ts-nocheck
5
5
 
6
- import { CleanupOrphanedFilesRequest, CleanupOrphanedFilesResponse, ConfirmFileUploadRequest, ConfirmFileUploadResponse, CreateFileUploadRequest, CreateFileUploadResponse, DeleteFileRequest, DeleteFileResponse, GetFileRequest, GetFileResponse, GetStorageUsageRequest, GetStorageUsageResponse, ListFilesRequest, ListFilesResponse, PermanentlyDeleteFileRequest, PermanentlyDeleteFileResponse, RemoveFileUsageRequest, RemoveFileUsageResponse, RestoreFileRequest, RestoreFileResponse, TrackFileUsageRequest, TrackFileUsageResponse, UpdateFileMetadataRequest, UpdateFileMetadataResponse, UpdateFileRequest, UpdateFileResponse } from "./storage_pbjs";
6
+ import { CleanupOrphanedFilesRequest, CleanupOrphanedFilesResponse, ConfirmFileUploadRequest, ConfirmFileUploadResponse, CreateFileUploadRequest, CreateFileUploadResponse, DeleteFileRequest, DeleteFileResponse, GetFileRequest, GetFileResponse, GetStorageUsageRequest, GetStorageUsageResponse, ListFilesRequest, ListFilesResponse, PermanentlyDeleteFileRequest, PermanentlyDeleteFileResponse, RemoveFileUsageRequest, RemoveFileUsageResponse, RestoreFileRequest, RestoreFileResponse, RetryFileGenerationRequest, RetryFileGenerationResponse, TrackFileUsageRequest, TrackFileUsageResponse, UpdateFileMetadataRequest, UpdateFileMetadataResponse, UpdateFileRequest, UpdateFileResponse } from "./storage_pbjs";
7
7
  import { MethodKind } from "@bufbuild/protobuf";
8
8
 
9
9
  /**
@@ -139,6 +139,18 @@ export const StorageService = {
139
139
  O: CleanupOrphanedFilesResponse,
140
140
  kind: MethodKind.Unary,
141
141
  },
142
+ /**
143
+ * Re-enqueue generation of a single derived asset for a video file. Used by
144
+ * the admin "Retry" buttons and by the storage sweeper's recovery path.
145
+ *
146
+ * @generated from rpc storage.v1.StorageService.RetryFileGeneration
147
+ */
148
+ retryFileGeneration: {
149
+ name: "RetryFileGeneration",
150
+ I: RetryFileGenerationRequest,
151
+ O: RetryFileGenerationResponse,
152
+ kind: MethodKind.Unary,
153
+ },
142
154
  }
143
155
  };
144
156
 
@@ -167,6 +167,68 @@ export declare type File = Message<"storage.v1.File"> & {
167
167
  * @generated from field: optional google.protobuf.Timestamp deleted_at = 62;
168
168
  */
169
169
  deletedAt?: Timestamp | undefined;
170
+
171
+ /**
172
+ * Per-asset processing status (videos only; SKIPPED for non-video files).
173
+ *
174
+ * @generated from field: storage.v1.FileStatus thumbnail_status = 70;
175
+ */
176
+ thumbnailStatus: FileStatus;
177
+
178
+ /**
179
+ * @generated from field: int32 thumbnail_attempts = 71;
180
+ */
181
+ thumbnailAttempts: number;
182
+
183
+ /**
184
+ * @generated from field: optional google.protobuf.Timestamp thumbnail_last_attempt_at = 72;
185
+ */
186
+ thumbnailLastAttemptAt?: Timestamp | undefined;
187
+
188
+ /**
189
+ * @generated from field: optional string thumbnail_last_error = 73;
190
+ */
191
+ thumbnailLastError?: string | undefined;
192
+
193
+ /**
194
+ * @generated from field: storage.v1.FileStatus preview_status = 74;
195
+ */
196
+ previewStatus: FileStatus;
197
+
198
+ /**
199
+ * @generated from field: int32 preview_attempts = 75;
200
+ */
201
+ previewAttempts: number;
202
+
203
+ /**
204
+ * @generated from field: optional google.protobuf.Timestamp preview_last_attempt_at = 76;
205
+ */
206
+ previewLastAttemptAt?: Timestamp | undefined;
207
+
208
+ /**
209
+ * @generated from field: optional string preview_last_error = 77;
210
+ */
211
+ previewLastError?: string | undefined;
212
+
213
+ /**
214
+ * @generated from field: storage.v1.FileStatus hls_status = 78;
215
+ */
216
+ hlsStatus: FileStatus;
217
+
218
+ /**
219
+ * @generated from field: int32 hls_attempts = 79;
220
+ */
221
+ hlsAttempts: number;
222
+
223
+ /**
224
+ * @generated from field: optional google.protobuf.Timestamp hls_last_attempt_at = 80;
225
+ */
226
+ hlsLastAttemptAt?: Timestamp | undefined;
227
+
228
+ /**
229
+ * @generated from field: optional string hls_last_error = 81;
230
+ */
231
+ hlsLastError?: string | undefined;
170
232
  };
171
233
 
172
234
  /**
@@ -748,6 +810,43 @@ export declare type CleanupOrphanedFilesResponse = Message<"storage.v1.CleanupOr
748
810
  */
749
811
  export declare const CleanupOrphanedFilesResponseSchema: GenMessage<CleanupOrphanedFilesResponse>;
750
812
 
813
+ /**
814
+ * @generated from message storage.v1.RetryFileGenerationRequest
815
+ */
816
+ export declare type RetryFileGenerationRequest = Message<"storage.v1.RetryFileGenerationRequest"> & {
817
+ /**
818
+ * @generated from field: string file_id = 1;
819
+ */
820
+ fileId: string;
821
+
822
+ /**
823
+ * @generated from field: storage.v1.FileAssetKind asset = 2;
824
+ */
825
+ asset: FileAssetKind;
826
+ };
827
+
828
+ /**
829
+ * Describes the message storage.v1.RetryFileGenerationRequest.
830
+ * Use `create(RetryFileGenerationRequestSchema)` to create a new message.
831
+ */
832
+ export declare const RetryFileGenerationRequestSchema: GenMessage<RetryFileGenerationRequest>;
833
+
834
+ /**
835
+ * @generated from message storage.v1.RetryFileGenerationResponse
836
+ */
837
+ export declare type RetryFileGenerationResponse = Message<"storage.v1.RetryFileGenerationResponse"> & {
838
+ /**
839
+ * @generated from field: storage.v1.File file = 1;
840
+ */
841
+ file?: File | undefined;
842
+ };
843
+
844
+ /**
845
+ * Describes the message storage.v1.RetryFileGenerationResponse.
846
+ * Use `create(RetryFileGenerationResponseSchema)` to create a new message.
847
+ */
848
+ export declare const RetryFileGenerationResponseSchema: GenMessage<RetryFileGenerationResponse>;
849
+
751
850
  /**
752
851
  * @generated from enum storage.v1.FileStatus
753
852
  */
@@ -776,6 +875,15 @@ export enum FileStatus {
776
875
  * @generated from enum value: FILE_STATUS_FAILED = 4;
777
876
  */
778
877
  FAILED = 4,
878
+
879
+ /**
880
+ * SKIPPED means the asset is not applicable for this file (e.g. HLS for a
881
+ * non-video, or HLS for a tenant without a paid subscription). The sweeper
882
+ * ignores SKIPPED rows.
883
+ *
884
+ * @generated from enum value: FILE_STATUS_SKIPPED = 5;
885
+ */
886
+ SKIPPED = 5,
779
887
  }
780
888
 
781
889
  /**
@@ -808,6 +916,39 @@ export enum FileSource {
808
916
  */
809
917
  export declare const FileSourceSchema: GenEnum<FileSource>;
810
918
 
919
+ /**
920
+ * FileAssetKind identifies a derived asset for a video file. Used by
921
+ * RetryFileGeneration to target a specific output.
922
+ *
923
+ * @generated from enum storage.v1.FileAssetKind
924
+ */
925
+ export enum FileAssetKind {
926
+ /**
927
+ * @generated from enum value: FILE_ASSET_KIND_UNSPECIFIED = 0;
928
+ */
929
+ UNSPECIFIED = 0,
930
+
931
+ /**
932
+ * @generated from enum value: FILE_ASSET_KIND_THUMBNAIL = 1;
933
+ */
934
+ THUMBNAIL = 1,
935
+
936
+ /**
937
+ * @generated from enum value: FILE_ASSET_KIND_PREVIEW = 2;
938
+ */
939
+ PREVIEW = 2,
940
+
941
+ /**
942
+ * @generated from enum value: FILE_ASSET_KIND_HLS = 3;
943
+ */
944
+ HLS = 3,
945
+ }
946
+
947
+ /**
948
+ * Describes the enum storage.v1.FileAssetKind.
949
+ */
950
+ export declare const FileAssetKindSchema: GenEnum<FileAssetKind>;
951
+
811
952
  /**
812
953
  * @generated from service storage.v1.StorageService
813
954
  */
@@ -926,5 +1067,16 @@ export declare const StorageService: GenService<{
926
1067
  input: typeof CleanupOrphanedFilesRequestSchema;
927
1068
  output: typeof CleanupOrphanedFilesResponseSchema;
928
1069
  },
1070
+ /**
1071
+ * Re-enqueue generation of a single derived asset for a video file. Used by
1072
+ * the admin "Retry" buttons and by the storage sweeper's recovery path.
1073
+ *
1074
+ * @generated from rpc storage.v1.StorageService.RetryFileGeneration
1075
+ */
1076
+ retryFileGeneration: {
1077
+ methodKind: "unary";
1078
+ input: typeof RetryFileGenerationRequestSchema;
1079
+ output: typeof RetryFileGenerationResponseSchema;
1080
+ },
929
1081
  }>;
930
1082
 
@@ -9,7 +9,7 @@ import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bu
9
9
  * Describes the file storage/v1/storage.proto.
10
10
  */
11
11
  export const file_storage_v1_storage = /*@__PURE__*/
12
- fileDesc("ChhzdG9yYWdlL3YxL3N0b3JhZ2UucHJvdG8SCnN0b3JhZ2UudjEi7ggKBEZpbGUSCgoCaWQYASABKAkSEAoIZmlsZW5hbWUYAiABKAkSEQoJbWltZV90eXBlGAMgASgJEgwKBHNpemUYBCABKAMSCwoDdXJsGAUgASgJEhMKC3N0b3JhZ2Vfa2V5GAYgASgJEiYKBnNvdXJjZRgHIAEoDjIWLnN0b3JhZ2UudjEuRmlsZVNvdXJjZRImCgZzdGF0dXMYCCABKA4yFi5zdG9yYWdlLnYxLkZpbGVTdGF0dXMSEwoGZm9sZGVyGAkgASgJSACIAQESDAoEdGFncxgKIAMoCRIpCghtZXRhZGF0YRgLIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSEgoFd2lkdGgYFCABKAVIAYgBARITCgZoZWlnaHQYFSABKAVIAogBARIVCghibHVyaGFzaBgWIAEoCUgDiAEBEhsKDmRvbWluYW50X2NvbG9yGBcgASgJSASIAQESFQoIZHVyYXRpb24YGCABKAFIBYgBARIaCg10aHVtYm5haWxfdXJsGBkgASgJSAaIAQESGAoLcHJldmlld191cmwYGiABKAlIB4gBARIdChBobHNfbWFuaWZlc3RfdXJsGBsgASgJSAiIAQESFQoIYWx0X3RleHQYHCABKAlICYgBARIUCgdjYXB0aW9uGB0gASgJSAqIAQESGAoLZGVzY3JpcHRpb24YHiABKAlIC4gBARI4Cg11c2FnZV9ieV90eXBlGCggAygLMiEuc3RvcmFnZS52MS5GaWxlLlVzYWdlQnlUeXBlRW50cnkSNQoMbGFzdF91c2VkX2F0GCkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgMiAEBEhcKCmNyZWF0ZWRfYnkYMiABKAlIDYgBARIYCgtjdXN0b21lcl9pZBgzIAEoCUgOiAEBEi4KCmNyZWF0ZWRfYXQYPCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYPSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCmRlbGV0ZWRfYXQYPiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSA+IAQEaMgoQVXNhZ2VCeVR5cGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAU6AjgBQgkKB19mb2xkZXJCCAoGX3dpZHRoQgkKB19oZWlnaHRCCwoJX2JsdXJoYXNoQhEKD19kb21pbmFudF9jb2xvckILCglfZHVyYXRpb25CEAoOX3RodW1ibmFpbF91cmxCDgoMX3ByZXZpZXdfdXJsQhMKEV9obHNfbWFuaWZlc3RfdXJsQgsKCV9hbHRfdGV4dEIKCghfY2FwdGlvbkIOCgxfZGVzY3JpcHRpb25CDwoNX2xhc3RfdXNlZF9hdEINCgtfY3JlYXRlZF9ieUIOCgxfY3VzdG9tZXJfaWRCDQoLX2RlbGV0ZWRfYXQiOAoMU3RvcmFnZVVzYWdlEhMKC3RvdGFsX2ZpbGVzGAEgASgFEhMKC3RvdGFsX2J5dGVzGAIgASgDIqkBChdDcmVhdGVGaWxlVXBsb2FkUmVxdWVzdBIQCghmaWxlbmFtZRgBIAEoCRIRCgltaW1lX3R5cGUYAiABKAkSDAoEc2l6ZRgDIAEoAxITCgZmb2xkZXIYBCABKAlIAIgBARIuCghtZXRhZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBAUIJCgdfZm9sZGVyQgsKCV9tZXRhZGF0YSKGAQoYQ3JlYXRlRmlsZVVwbG9hZFJlc3BvbnNlEhEKCXVwbG9hZF9pZBgBIAEoCRISCgp1cGxvYWRfdXJsGAIgASgJEhMKC3N0b3JhZ2Vfa2V5GAMgASgJEi4KCmV4cGlyZXNfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIi0KGENvbmZpcm1GaWxlVXBsb2FkUmVxdWVzdBIRCgl1cGxvYWRfaWQYASABKAkiOwoZQ29uZmlybUZpbGVVcGxvYWRSZXNwb25zZRIeCgRmaWxlGAEgASgLMhAuc3RvcmFnZS52MS5GaWxlIhwKDkdldEZpbGVSZXF1ZXN0EgoKAmlkGAEgASgJIjEKD0dldEZpbGVSZXNwb25zZRIeCgRmaWxlGAEgASgLMhAuc3RvcmFnZS52MS5GaWxlIugBChBMaXN0RmlsZXNSZXF1ZXN0EhMKBmZvbGRlchgBIAEoCUgAiAEBEhYKCW1pbWVfdHlwZRgCIAEoCUgBiAEBEisKBnN0YXR1cxgDIAEoDjIWLnN0b3JhZ2UudjEuRmlsZVN0YXR1c0gCiAEBEhMKBnNlYXJjaBgEIAEoCUgDiAEBEhcKD2luY2x1ZGVfZGVsZXRlZBgFIAEoCBINCgVsaW1pdBgGIAEoBRIOCgZvZmZzZXQYByABKAVCCQoHX2ZvbGRlckIMCgpfbWltZV90eXBlQgkKB19zdGF0dXNCCQoHX3NlYXJjaCJDChFMaXN0RmlsZXNSZXNwb25zZRIfCgVpdGVtcxgBIAMoCzIQLnN0b3JhZ2UudjEuRmlsZRINCgV0b3RhbBgCIAEoBSIYChZHZXRTdG9yYWdlVXNhZ2VSZXF1ZXN0IkIKF0dldFN0b3JhZ2VVc2FnZVJlc3BvbnNlEicKBXVzYWdlGAEgASgLMhguc3RvcmFnZS52MS5TdG9yYWdlVXNhZ2Ui5gEKEVVwZGF0ZUZpbGVSZXF1ZXN0EgoKAmlkGAEgASgJEhUKCGZpbGVuYW1lGAIgASgJSACIAQESEwoGZm9sZGVyGAMgASgJSAGIAQESDAoEdGFncxgEIAMoCRIrCgZzdGF0dXMYBSABKA4yFi5zdG9yYWdlLnYxLkZpbGVTdGF0dXNIAogBARIuCghtZXRhZGF0YRgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBAUILCglfZmlsZW5hbWVCCQoHX2ZvbGRlckIJCgdfc3RhdHVzQgsKCV9tZXRhZGF0YSI0ChJVcGRhdGVGaWxlUmVzcG9uc2USHgoEZmlsZRgBIAEoCzIQLnN0b3JhZ2UudjEuRmlsZSKXAQoZVXBkYXRlRmlsZU1ldGFkYXRhUmVxdWVzdBIKCgJpZBgBIAEoCRIVCghhbHRfdGV4dBgCIAEoCUgAiAEBEhQKB2NhcHRpb24YAyABKAlIAYgBARIYCgtkZXNjcmlwdGlvbhgEIAEoCUgCiAEBQgsKCV9hbHRfdGV4dEIKCghfY2FwdGlvbkIOCgxfZGVzY3JpcHRpb24iPAoaVXBkYXRlRmlsZU1ldGFkYXRhUmVzcG9uc2USHgoEZmlsZRgBIAEoCzIQLnN0b3JhZ2UudjEuRmlsZSIfChFEZWxldGVGaWxlUmVxdWVzdBIKCgJpZBgBIAEoCSIlChJEZWxldGVGaWxlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIqChxQZXJtYW5lbnRseURlbGV0ZUZpbGVSZXF1ZXN0EgoKAmlkGAEgASgJIjAKHVBlcm1hbmVudGx5RGVsZXRlRmlsZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiIAoSUmVzdG9yZUZpbGVSZXF1ZXN0EgoKAmlkGAEgASgJIjUKE1Jlc3RvcmVGaWxlUmVzcG9uc2USHgoEZmlsZRgBIAEoCzIQLnN0b3JhZ2UudjEuRmlsZSI9ChVUcmFja0ZpbGVVc2FnZVJlcXVlc3QSDwoHZmlsZV9pZBgBIAEoCRITCgtlbnRpdHlfdHlwZRgCIAEoCSI4ChZUcmFja0ZpbGVVc2FnZVJlc3BvbnNlEh4KBGZpbGUYASABKAsyEC5zdG9yYWdlLnYxLkZpbGUiPgoWUmVtb3ZlRmlsZVVzYWdlUmVxdWVzdBIPCgdmaWxlX2lkGAEgASgJEhMKC2VudGl0eV90eXBlGAIgASgJIioKF1JlbW92ZUZpbGVVc2FnZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiXAobQ2xlYW51cE9ycGhhbmVkRmlsZXNSZXF1ZXN0Eh0KFW9ycGhhbl90aHJlc2hvbGRfZGF5cxgBIAEoBRIPCgdkcnlfcnVuGAIgASgIEg0KBWxpbWl0GAMgASgFIlUKHENsZWFudXBPcnBoYW5lZEZpbGVzUmVzcG9uc2USDwoHZGVsZXRlZBgBIAEoBRITCgtmcmVlZF9ieXRlcxgCIAEoAxIPCgdkcnlfcnVuGAMgASgIKo0BCgpGaWxlU3RhdHVzEhsKF0ZJTEVfU1RBVFVTX1VOU1BFQ0lGSUVEEAASFwoTRklMRV9TVEFUVVNfUEVORElORxABEhoKFkZJTEVfU1RBVFVTX1BST0NFU1NJTkcQAhIVChFGSUxFX1NUQVRVU19SRUFEWRADEhYKEkZJTEVfU1RBVFVTX0ZBSUxFRBAEKl0KCkZpbGVTb3VyY2USGwoXRklMRV9TT1VSQ0VfVU5TUEVDSUZJRUQQABIYChRGSUxFX1NPVVJDRV9JTlRFUk5BTBABEhgKFEZJTEVfU09VUkNFX0VYVEVSTkFMEAIymAkKDlN0b3JhZ2VTZXJ2aWNlEl0KEENyZWF0ZUZpbGVVcGxvYWQSIy5zdG9yYWdlLnYxLkNyZWF0ZUZpbGVVcGxvYWRSZXF1ZXN0GiQuc3RvcmFnZS52MS5DcmVhdGVGaWxlVXBsb2FkUmVzcG9uc2USYAoRQ29uZmlybUZpbGVVcGxvYWQSJC5zdG9yYWdlLnYxLkNvbmZpcm1GaWxlVXBsb2FkUmVxdWVzdBolLnN0b3JhZ2UudjEuQ29uZmlybUZpbGVVcGxvYWRSZXNwb25zZRJCCgdHZXRGaWxlEhouc3RvcmFnZS52MS5HZXRGaWxlUmVxdWVzdBobLnN0b3JhZ2UudjEuR2V0RmlsZVJlc3BvbnNlEkgKCUxpc3RGaWxlcxIcLnN0b3JhZ2UudjEuTGlzdEZpbGVzUmVxdWVzdBodLnN0b3JhZ2UudjEuTGlzdEZpbGVzUmVzcG9uc2USWgoPR2V0U3RvcmFnZVVzYWdlEiIuc3RvcmFnZS52MS5HZXRTdG9yYWdlVXNhZ2VSZXF1ZXN0GiMuc3RvcmFnZS52MS5HZXRTdG9yYWdlVXNhZ2VSZXNwb25zZRJLCgpVcGRhdGVGaWxlEh0uc3RvcmFnZS52MS5VcGRhdGVGaWxlUmVxdWVzdBoeLnN0b3JhZ2UudjEuVXBkYXRlRmlsZVJlc3BvbnNlEmMKElVwZGF0ZUZpbGVNZXRhZGF0YRIlLnN0b3JhZ2UudjEuVXBkYXRlRmlsZU1ldGFkYXRhUmVxdWVzdBomLnN0b3JhZ2UudjEuVXBkYXRlRmlsZU1ldGFkYXRhUmVzcG9uc2USSwoKRGVsZXRlRmlsZRIdLnN0b3JhZ2UudjEuRGVsZXRlRmlsZVJlcXVlc3QaHi5zdG9yYWdlLnYxLkRlbGV0ZUZpbGVSZXNwb25zZRJsChVQZXJtYW5lbnRseURlbGV0ZUZpbGUSKC5zdG9yYWdlLnYxLlBlcm1hbmVudGx5RGVsZXRlRmlsZVJlcXVlc3QaKS5zdG9yYWdlLnYxLlBlcm1hbmVudGx5RGVsZXRlRmlsZVJlc3BvbnNlEk4KC1Jlc3RvcmVGaWxlEh4uc3RvcmFnZS52MS5SZXN0b3JlRmlsZVJlcXVlc3QaHy5zdG9yYWdlLnYxLlJlc3RvcmVGaWxlUmVzcG9uc2USVwoOVHJhY2tGaWxlVXNhZ2USIS5zdG9yYWdlLnYxLlRyYWNrRmlsZVVzYWdlUmVxdWVzdBoiLnN0b3JhZ2UudjEuVHJhY2tGaWxlVXNhZ2VSZXNwb25zZRJaCg9SZW1vdmVGaWxlVXNhZ2USIi5zdG9yYWdlLnYxLlJlbW92ZUZpbGVVc2FnZVJlcXVlc3QaIy5zdG9yYWdlLnYxLlJlbW92ZUZpbGVVc2FnZVJlc3BvbnNlEmkKFENsZWFudXBPcnBoYW5lZEZpbGVzEicuc3RvcmFnZS52MS5DbGVhbnVwT3JwaGFuZWRGaWxlc1JlcXVlc3QaKC5zdG9yYWdlLnYxLkNsZWFudXBPcnBoYW5lZEZpbGVzUmVzcG9uc2VCO1o5Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL3N0b3JhZ2UvdjE7c3RvcmFnZXYxYgZwcm90bzM", [file_google_protobuf_struct, file_google_protobuf_timestamp]);
12
+ fileDesc("ChhzdG9yYWdlL3YxL3N0b3JhZ2UucHJvdG8SCnN0b3JhZ2UudjEigg4KBEZpbGUSCgoCaWQYASABKAkSEAoIZmlsZW5hbWUYAiABKAkSEQoJbWltZV90eXBlGAMgASgJEgwKBHNpemUYBCABKAMSCwoDdXJsGAUgASgJEhMKC3N0b3JhZ2Vfa2V5GAYgASgJEiYKBnNvdXJjZRgHIAEoDjIWLnN0b3JhZ2UudjEuRmlsZVNvdXJjZRImCgZzdGF0dXMYCCABKA4yFi5zdG9yYWdlLnYxLkZpbGVTdGF0dXMSEwoGZm9sZGVyGAkgASgJSACIAQESDAoEdGFncxgKIAMoCRIpCghtZXRhZGF0YRgLIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSEgoFd2lkdGgYFCABKAVIAYgBARITCgZoZWlnaHQYFSABKAVIAogBARIVCghibHVyaGFzaBgWIAEoCUgDiAEBEhsKDmRvbWluYW50X2NvbG9yGBcgASgJSASIAQESFQoIZHVyYXRpb24YGCABKAFIBYgBARIaCg10aHVtYm5haWxfdXJsGBkgASgJSAaIAQESGAoLcHJldmlld191cmwYGiABKAlIB4gBARIdChBobHNfbWFuaWZlc3RfdXJsGBsgASgJSAiIAQESFQoIYWx0X3RleHQYHCABKAlICYgBARIUCgdjYXB0aW9uGB0gASgJSAqIAQESGAoLZGVzY3JpcHRpb24YHiABKAlIC4gBARI4Cg11c2FnZV9ieV90eXBlGCggAygLMiEuc3RvcmFnZS52MS5GaWxlLlVzYWdlQnlUeXBlRW50cnkSNQoMbGFzdF91c2VkX2F0GCkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgMiAEBEhcKCmNyZWF0ZWRfYnkYMiABKAlIDYgBARIYCgtjdXN0b21lcl9pZBgzIAEoCUgOiAEBEi4KCmNyZWF0ZWRfYXQYPCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYPSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCmRlbGV0ZWRfYXQYPiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSA+IAQESMAoQdGh1bWJuYWlsX3N0YXR1cxhGIAEoDjIWLnN0b3JhZ2UudjEuRmlsZVN0YXR1cxIaChJ0aHVtYm5haWxfYXR0ZW1wdHMYRyABKAUSQgoZdGh1bWJuYWlsX2xhc3RfYXR0ZW1wdF9hdBhIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIEIgBARIhChR0aHVtYm5haWxfbGFzdF9lcnJvchhJIAEoCUgRiAEBEi4KDnByZXZpZXdfc3RhdHVzGEogASgOMhYuc3RvcmFnZS52MS5GaWxlU3RhdHVzEhgKEHByZXZpZXdfYXR0ZW1wdHMYSyABKAUSQAoXcHJldmlld19sYXN0X2F0dGVtcHRfYXQYTCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSBKIAQESHwoScHJldmlld19sYXN0X2Vycm9yGE0gASgJSBOIAQESKgoKaGxzX3N0YXR1cxhOIAEoDjIWLnN0b3JhZ2UudjEuRmlsZVN0YXR1cxIUCgxobHNfYXR0ZW1wdHMYTyABKAUSPAoTaGxzX2xhc3RfYXR0ZW1wdF9hdBhQIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIFIgBARIbCg5obHNfbGFzdF9lcnJvchhRIAEoCUgViAEBGjIKEFVzYWdlQnlUeXBlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgFOgI4AUIJCgdfZm9sZGVyQggKBl93aWR0aEIJCgdfaGVpZ2h0QgsKCV9ibHVyaGFzaEIRCg9fZG9taW5hbnRfY29sb3JCCwoJX2R1cmF0aW9uQhAKDl90aHVtYm5haWxfdXJsQg4KDF9wcmV2aWV3X3VybEITChFfaGxzX21hbmlmZXN0X3VybEILCglfYWx0X3RleHRCCgoIX2NhcHRpb25CDgoMX2Rlc2NyaXB0aW9uQg8KDV9sYXN0X3VzZWRfYXRCDQoLX2NyZWF0ZWRfYnlCDgoMX2N1c3RvbWVyX2lkQg0KC19kZWxldGVkX2F0QhwKGl90aHVtYm5haWxfbGFzdF9hdHRlbXB0X2F0QhcKFV90aHVtYm5haWxfbGFzdF9lcnJvckIaChhfcHJldmlld19sYXN0X2F0dGVtcHRfYXRCFQoTX3ByZXZpZXdfbGFzdF9lcnJvckIWChRfaGxzX2xhc3RfYXR0ZW1wdF9hdEIRCg9faGxzX2xhc3RfZXJyb3IiOAoMU3RvcmFnZVVzYWdlEhMKC3RvdGFsX2ZpbGVzGAEgASgFEhMKC3RvdGFsX2J5dGVzGAIgASgDIqkBChdDcmVhdGVGaWxlVXBsb2FkUmVxdWVzdBIQCghmaWxlbmFtZRgBIAEoCRIRCgltaW1lX3R5cGUYAiABKAkSDAoEc2l6ZRgDIAEoAxITCgZmb2xkZXIYBCABKAlIAIgBARIuCghtZXRhZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBAUIJCgdfZm9sZGVyQgsKCV9tZXRhZGF0YSKGAQoYQ3JlYXRlRmlsZVVwbG9hZFJlc3BvbnNlEhEKCXVwbG9hZF9pZBgBIAEoCRISCgp1cGxvYWRfdXJsGAIgASgJEhMKC3N0b3JhZ2Vfa2V5GAMgASgJEi4KCmV4cGlyZXNfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIi0KGENvbmZpcm1GaWxlVXBsb2FkUmVxdWVzdBIRCgl1cGxvYWRfaWQYASABKAkiOwoZQ29uZmlybUZpbGVVcGxvYWRSZXNwb25zZRIeCgRmaWxlGAEgASgLMhAuc3RvcmFnZS52MS5GaWxlIhwKDkdldEZpbGVSZXF1ZXN0EgoKAmlkGAEgASgJIjEKD0dldEZpbGVSZXNwb25zZRIeCgRmaWxlGAEgASgLMhAuc3RvcmFnZS52MS5GaWxlIugBChBMaXN0RmlsZXNSZXF1ZXN0EhMKBmZvbGRlchgBIAEoCUgAiAEBEhYKCW1pbWVfdHlwZRgCIAEoCUgBiAEBEisKBnN0YXR1cxgDIAEoDjIWLnN0b3JhZ2UudjEuRmlsZVN0YXR1c0gCiAEBEhMKBnNlYXJjaBgEIAEoCUgDiAEBEhcKD2luY2x1ZGVfZGVsZXRlZBgFIAEoCBINCgVsaW1pdBgGIAEoBRIOCgZvZmZzZXQYByABKAVCCQoHX2ZvbGRlckIMCgpfbWltZV90eXBlQgkKB19zdGF0dXNCCQoHX3NlYXJjaCJDChFMaXN0RmlsZXNSZXNwb25zZRIfCgVpdGVtcxgBIAMoCzIQLnN0b3JhZ2UudjEuRmlsZRINCgV0b3RhbBgCIAEoBSIYChZHZXRTdG9yYWdlVXNhZ2VSZXF1ZXN0IkIKF0dldFN0b3JhZ2VVc2FnZVJlc3BvbnNlEicKBXVzYWdlGAEgASgLMhguc3RvcmFnZS52MS5TdG9yYWdlVXNhZ2Ui5gEKEVVwZGF0ZUZpbGVSZXF1ZXN0EgoKAmlkGAEgASgJEhUKCGZpbGVuYW1lGAIgASgJSACIAQESEwoGZm9sZGVyGAMgASgJSAGIAQESDAoEdGFncxgEIAMoCRIrCgZzdGF0dXMYBSABKA4yFi5zdG9yYWdlLnYxLkZpbGVTdGF0dXNIAogBARIuCghtZXRhZGF0YRgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBAUILCglfZmlsZW5hbWVCCQoHX2ZvbGRlckIJCgdfc3RhdHVzQgsKCV9tZXRhZGF0YSI0ChJVcGRhdGVGaWxlUmVzcG9uc2USHgoEZmlsZRgBIAEoCzIQLnN0b3JhZ2UudjEuRmlsZSKXAQoZVXBkYXRlRmlsZU1ldGFkYXRhUmVxdWVzdBIKCgJpZBgBIAEoCRIVCghhbHRfdGV4dBgCIAEoCUgAiAEBEhQKB2NhcHRpb24YAyABKAlIAYgBARIYCgtkZXNjcmlwdGlvbhgEIAEoCUgCiAEBQgsKCV9hbHRfdGV4dEIKCghfY2FwdGlvbkIOCgxfZGVzY3JpcHRpb24iPAoaVXBkYXRlRmlsZU1ldGFkYXRhUmVzcG9uc2USHgoEZmlsZRgBIAEoCzIQLnN0b3JhZ2UudjEuRmlsZSIfChFEZWxldGVGaWxlUmVxdWVzdBIKCgJpZBgBIAEoCSIlChJEZWxldGVGaWxlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIqChxQZXJtYW5lbnRseURlbGV0ZUZpbGVSZXF1ZXN0EgoKAmlkGAEgASgJIjAKHVBlcm1hbmVudGx5RGVsZXRlRmlsZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiIAoSUmVzdG9yZUZpbGVSZXF1ZXN0EgoKAmlkGAEgASgJIjUKE1Jlc3RvcmVGaWxlUmVzcG9uc2USHgoEZmlsZRgBIAEoCzIQLnN0b3JhZ2UudjEuRmlsZSI9ChVUcmFja0ZpbGVVc2FnZVJlcXVlc3QSDwoHZmlsZV9pZBgBIAEoCRITCgtlbnRpdHlfdHlwZRgCIAEoCSI4ChZUcmFja0ZpbGVVc2FnZVJlc3BvbnNlEh4KBGZpbGUYASABKAsyEC5zdG9yYWdlLnYxLkZpbGUiPgoWUmVtb3ZlRmlsZVVzYWdlUmVxdWVzdBIPCgdmaWxlX2lkGAEgASgJEhMKC2VudGl0eV90eXBlGAIgASgJIioKF1JlbW92ZUZpbGVVc2FnZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiXAobQ2xlYW51cE9ycGhhbmVkRmlsZXNSZXF1ZXN0Eh0KFW9ycGhhbl90aHJlc2hvbGRfZGF5cxgBIAEoBRIPCgdkcnlfcnVuGAIgASgIEg0KBWxpbWl0GAMgASgFIlUKHENsZWFudXBPcnBoYW5lZEZpbGVzUmVzcG9uc2USDwoHZGVsZXRlZBgBIAEoBRITCgtmcmVlZF9ieXRlcxgCIAEoAxIPCgdkcnlfcnVuGAMgASgIIlcKGlJldHJ5RmlsZUdlbmVyYXRpb25SZXF1ZXN0Eg8KB2ZpbGVfaWQYASABKAkSKAoFYXNzZXQYAiABKA4yGS5zdG9yYWdlLnYxLkZpbGVBc3NldEtpbmQiPQobUmV0cnlGaWxlR2VuZXJhdGlvblJlc3BvbnNlEh4KBGZpbGUYASABKAsyEC5zdG9yYWdlLnYxLkZpbGUqpgEKCkZpbGVTdGF0dXMSGwoXRklMRV9TVEFUVVNfVU5TUEVDSUZJRUQQABIXChNGSUxFX1NUQVRVU19QRU5ESU5HEAESGgoWRklMRV9TVEFUVVNfUFJPQ0VTU0lORxACEhUKEUZJTEVfU1RBVFVTX1JFQURZEAMSFgoSRklMRV9TVEFUVVNfRkFJTEVEEAQSFwoTRklMRV9TVEFUVVNfU0tJUFBFRBAFKl0KCkZpbGVTb3VyY2USGwoXRklMRV9TT1VSQ0VfVU5TUEVDSUZJRUQQABIYChRGSUxFX1NPVVJDRV9JTlRFUk5BTBABEhgKFEZJTEVfU09VUkNFX0VYVEVSTkFMEAIqhQEKDUZpbGVBc3NldEtpbmQSHwobRklMRV9BU1NFVF9LSU5EX1VOU1BFQ0lGSUVEEAASHQoZRklMRV9BU1NFVF9LSU5EX1RIVU1CTkFJTBABEhsKF0ZJTEVfQVNTRVRfS0lORF9QUkVWSUVXEAISFwoTRklMRV9BU1NFVF9LSU5EX0hMUxADMoAKCg5TdG9yYWdlU2VydmljZRJdChBDcmVhdGVGaWxlVXBsb2FkEiMuc3RvcmFnZS52MS5DcmVhdGVGaWxlVXBsb2FkUmVxdWVzdBokLnN0b3JhZ2UudjEuQ3JlYXRlRmlsZVVwbG9hZFJlc3BvbnNlEmAKEUNvbmZpcm1GaWxlVXBsb2FkEiQuc3RvcmFnZS52MS5Db25maXJtRmlsZVVwbG9hZFJlcXVlc3QaJS5zdG9yYWdlLnYxLkNvbmZpcm1GaWxlVXBsb2FkUmVzcG9uc2USQgoHR2V0RmlsZRIaLnN0b3JhZ2UudjEuR2V0RmlsZVJlcXVlc3QaGy5zdG9yYWdlLnYxLkdldEZpbGVSZXNwb25zZRJICglMaXN0RmlsZXMSHC5zdG9yYWdlLnYxLkxpc3RGaWxlc1JlcXVlc3QaHS5zdG9yYWdlLnYxLkxpc3RGaWxlc1Jlc3BvbnNlEloKD0dldFN0b3JhZ2VVc2FnZRIiLnN0b3JhZ2UudjEuR2V0U3RvcmFnZVVzYWdlUmVxdWVzdBojLnN0b3JhZ2UudjEuR2V0U3RvcmFnZVVzYWdlUmVzcG9uc2USSwoKVXBkYXRlRmlsZRIdLnN0b3JhZ2UudjEuVXBkYXRlRmlsZVJlcXVlc3QaHi5zdG9yYWdlLnYxLlVwZGF0ZUZpbGVSZXNwb25zZRJjChJVcGRhdGVGaWxlTWV0YWRhdGESJS5zdG9yYWdlLnYxLlVwZGF0ZUZpbGVNZXRhZGF0YVJlcXVlc3QaJi5zdG9yYWdlLnYxLlVwZGF0ZUZpbGVNZXRhZGF0YVJlc3BvbnNlEksKCkRlbGV0ZUZpbGUSHS5zdG9yYWdlLnYxLkRlbGV0ZUZpbGVSZXF1ZXN0Gh4uc3RvcmFnZS52MS5EZWxldGVGaWxlUmVzcG9uc2USbAoVUGVybWFuZW50bHlEZWxldGVGaWxlEiguc3RvcmFnZS52MS5QZXJtYW5lbnRseURlbGV0ZUZpbGVSZXF1ZXN0Gikuc3RvcmFnZS52MS5QZXJtYW5lbnRseURlbGV0ZUZpbGVSZXNwb25zZRJOCgtSZXN0b3JlRmlsZRIeLnN0b3JhZ2UudjEuUmVzdG9yZUZpbGVSZXF1ZXN0Gh8uc3RvcmFnZS52MS5SZXN0b3JlRmlsZVJlc3BvbnNlElcKDlRyYWNrRmlsZVVzYWdlEiEuc3RvcmFnZS52MS5UcmFja0ZpbGVVc2FnZVJlcXVlc3QaIi5zdG9yYWdlLnYxLlRyYWNrRmlsZVVzYWdlUmVzcG9uc2USWgoPUmVtb3ZlRmlsZVVzYWdlEiIuc3RvcmFnZS52MS5SZW1vdmVGaWxlVXNhZ2VSZXF1ZXN0GiMuc3RvcmFnZS52MS5SZW1vdmVGaWxlVXNhZ2VSZXNwb25zZRJpChRDbGVhbnVwT3JwaGFuZWRGaWxlcxInLnN0b3JhZ2UudjEuQ2xlYW51cE9ycGhhbmVkRmlsZXNSZXF1ZXN0Giguc3RvcmFnZS52MS5DbGVhbnVwT3JwaGFuZWRGaWxlc1Jlc3BvbnNlEmYKE1JldHJ5RmlsZUdlbmVyYXRpb24SJi5zdG9yYWdlLnYxLlJldHJ5RmlsZUdlbmVyYXRpb25SZXF1ZXN0Gicuc3RvcmFnZS52MS5SZXRyeUZpbGVHZW5lcmF0aW9uUmVzcG9uc2VCO1o5Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL3N0b3JhZ2UvdjE7c3RvcmFnZXYxYgZwcm90bzM", [file_google_protobuf_struct, file_google_protobuf_timestamp]);
13
13
 
14
14
  /**
15
15
  * Describes the message storage.v1.File.
@@ -207,6 +207,20 @@ export const CleanupOrphanedFilesRequestSchema = /*@__PURE__*/
207
207
  export const CleanupOrphanedFilesResponseSchema = /*@__PURE__*/
208
208
  messageDesc(file_storage_v1_storage, 27);
209
209
 
210
+ /**
211
+ * Describes the message storage.v1.RetryFileGenerationRequest.
212
+ * Use `create(RetryFileGenerationRequestSchema)` to create a new message.
213
+ */
214
+ export const RetryFileGenerationRequestSchema = /*@__PURE__*/
215
+ messageDesc(file_storage_v1_storage, 28);
216
+
217
+ /**
218
+ * Describes the message storage.v1.RetryFileGenerationResponse.
219
+ * Use `create(RetryFileGenerationResponseSchema)` to create a new message.
220
+ */
221
+ export const RetryFileGenerationResponseSchema = /*@__PURE__*/
222
+ messageDesc(file_storage_v1_storage, 29);
223
+
210
224
  /**
211
225
  * Describes the enum storage.v1.FileStatus.
212
226
  */
@@ -231,6 +245,21 @@ export const FileSourceSchema = /*@__PURE__*/
231
245
  export const FileSource = /*@__PURE__*/
232
246
  tsEnum(FileSourceSchema);
233
247
 
248
+ /**
249
+ * Describes the enum storage.v1.FileAssetKind.
250
+ */
251
+ export const FileAssetKindSchema = /*@__PURE__*/
252
+ enumDesc(file_storage_v1_storage, 2);
253
+
254
+ /**
255
+ * FileAssetKind identifies a derived asset for a video file. Used by
256
+ * RetryFileGeneration to target a specific output.
257
+ *
258
+ * @generated from enum storage.v1.FileAssetKind
259
+ */
260
+ export const FileAssetKind = /*@__PURE__*/
261
+ tsEnum(FileAssetKindSchema);
262
+
234
263
  /**
235
264
  * @generated from service storage.v1.StorageService
236
265
  */