@streamlayer/sl-eslib 5.271.1 → 5.272.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": "@streamlayer/sl-eslib",
3
- "version": "5.271.1",
3
+ "version": "5.272.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -60,3 +60,11 @@ export const adDetails: typeof Dashboard["method"]["adDetails"];
60
60
  * @generated from rpc streamlayer.analytics.v2.studio.Dashboard.AdPauseTotal
61
61
  */
62
62
  export const adPauseTotal: typeof Dashboard["method"]["adPauseTotal"];
63
+ /**
64
+ * @generated from rpc streamlayer.analytics.v2.studio.Dashboard.AdMetricsByTimeLine
65
+ */
66
+ export const adMetricsByTimeLine: typeof Dashboard["method"]["adMetricsByTimeLine"];
67
+ /**
68
+ * @generated from rpc streamlayer.analytics.v2.studio.Dashboard.PollsCardMetrics
69
+ */
70
+ export const pollsCardMetrics: typeof Dashboard["method"]["pollsCardMetrics"];
@@ -73,3 +73,13 @@ export const adDetails = Dashboard.method.adDetails;
73
73
  * @generated from rpc streamlayer.analytics.v2.studio.Dashboard.AdPauseTotal
74
74
  */
75
75
  export const adPauseTotal = Dashboard.method.adPauseTotal;
76
+
77
+ /**
78
+ * @generated from rpc streamlayer.analytics.v2.studio.Dashboard.AdMetricsByTimeLine
79
+ */
80
+ export const adMetricsByTimeLine = Dashboard.method.adMetricsByTimeLine;
81
+
82
+ /**
83
+ * @generated from rpc streamlayer.analytics.v2.studio.Dashboard.PollsCardMetrics
84
+ */
85
+ export const pollsCardMetrics = Dashboard.method.pollsCardMetrics;
@@ -1342,6 +1342,20 @@ export declare type MetricDescriptor = Message<"streamlayer.analytics.v2.studio.
1342
1342
  * @generated from field: streamlayer.analytics.v2.studio.MetricDescriptor.ValueType value_type = 2;
1343
1343
  */
1344
1344
  valueType: MetricDescriptor_ValueType;
1345
+
1346
+ /**
1347
+ * short dashboard label
1348
+ *
1349
+ * @generated from field: string label = 3;
1350
+ */
1351
+ label: string;
1352
+
1353
+ /**
1354
+ * tooltips
1355
+ *
1356
+ * @generated from field: string description = 4;
1357
+ */
1358
+ description: string;
1345
1359
  };
1346
1360
 
1347
1361
  /**
@@ -1455,6 +1469,44 @@ export declare type AdTotalsRequestFilter = Message<"streamlayer.analytics.v2.st
1455
1469
  * @generated from field: streamlayer.analytics.v2.studio.MetricBreakdown breakdown = 4;
1456
1470
  */
1457
1471
  breakdown: MetricBreakdown;
1472
+
1473
+ /**
1474
+ * @generated from field: optional streamlayer.analytics.v1.common.Period period = 5;
1475
+ */
1476
+ period?: Period;
1477
+
1478
+ /**
1479
+ * 'America/New_York'
1480
+ *
1481
+ * @generated from field: optional string tz = 6;
1482
+ */
1483
+ tz?: string;
1484
+
1485
+ /**
1486
+ * @generated from field: repeated string countries = 7;
1487
+ */
1488
+ countries: string[];
1489
+
1490
+ /**
1491
+ * "CTV" | "Mobile App" | "Mobile Web" | "Desktop Web"
1492
+ *
1493
+ * @generated from field: optional string platform_category = 8;
1494
+ */
1495
+ platformCategory?: string;
1496
+
1497
+ /**
1498
+ * see AdDetailsRequestFilter.platform_os for the accepted values
1499
+ *
1500
+ * @generated from field: repeated string platform_os = 9;
1501
+ */
1502
+ platformOs: string[];
1503
+
1504
+ /**
1505
+ * card types; defaults to everything except EXPOSED_PAUSED_AD (14)
1506
+ *
1507
+ * @generated from field: repeated uint32 topic_types = 10;
1508
+ */
1509
+ topicTypes: number[];
1458
1510
  };
1459
1511
 
1460
1512
  /**
@@ -1564,6 +1616,41 @@ export declare type AdTotalsResponseData = Message<"streamlayer.analytics.v2.stu
1564
1616
  */
1565
1617
  totalAdVideoPlayed: number;
1566
1618
 
1619
+ /**
1620
+ * EMetric.AdCardImpressions (times the card itself rendered)
1621
+ *
1622
+ * @generated from field: uint32 ad_card_impressions = 14;
1623
+ */
1624
+ adCardImpressions: number;
1625
+
1626
+ /**
1627
+ * EMetric.AdCreativeImpressions (display + video)
1628
+ *
1629
+ * @generated from field: uint32 ad_creative_impressions = 15;
1630
+ */
1631
+ adCreativeImpressions: number;
1632
+
1633
+ /**
1634
+ * EMetric.AdNotificationClicks (opens from in-app notifications)
1635
+ *
1636
+ * @generated from field: uint32 ad_notification_clicks = 16;
1637
+ */
1638
+ adNotificationClicks: number;
1639
+
1640
+ /**
1641
+ * EMetric.AdMutesUnmutes
1642
+ *
1643
+ * @generated from field: uint32 ad_mutes_unmutes = 17;
1644
+ */
1645
+ adMutesUnmutes: number;
1646
+
1647
+ /**
1648
+ * EMetric.AdUnitsCount (uniq ad units behind the row)
1649
+ *
1650
+ * @generated from field: uint32 ad_units_count = 18;
1651
+ */
1652
+ adUnitsCount: number;
1653
+
1567
1654
  /**
1568
1655
  * EMetric.TotalAdClicks
1569
1656
  *
@@ -1801,11 +1888,11 @@ export declare type AdTotalsResponseData = Message<"streamlayer.analytics.v2.stu
1801
1888
  adGroup?: string;
1802
1889
 
1803
1890
  /**
1804
- * EMetric.AdUnit
1891
+ * EMetric.AdUnit ("Poll Ad" | "Standard Ad" | "PIP" | ...)
1805
1892
  *
1806
- * @generated from field: optional uint32 ad_unit = 73;
1893
+ * @generated from field: optional string ad_unit = 73;
1807
1894
  */
1808
- adUnit?: number;
1895
+ adUnit?: string;
1809
1896
 
1810
1897
  /**
1811
1898
  * moderation window
@@ -1870,25 +1957,146 @@ export declare type AdTotalsResponseData = Message<"streamlayer.analytics.v2.stu
1870
1957
  /**
1871
1958
  * Game activation context
1872
1959
  *
1873
- * Activation source (Event Trigger, SCTE35, VAST, etc.)
1960
+ * EMetric.ActivationMethod ('manually' | 'by trigger' | 'autopost')
1874
1961
  *
1875
- * @generated from field: optional uint32 activated_by = 90;
1962
+ * @generated from field: optional string activation_method = 90;
1876
1963
  */
1877
- activatedBy?: number;
1964
+ activationMethod?: string;
1878
1965
 
1879
1966
  /**
1880
- * Trigger/instance id
1967
+ * EMetric.ActivationInstance (activated_by_trigger_name)
1881
1968
  *
1882
- * @generated from field: optional string activation_instance_id = 91;
1969
+ * @generated from field: optional string activation_instance = 91;
1883
1970
  */
1884
- activationInstanceId?: string;
1971
+ activationInstance?: string;
1885
1972
 
1886
1973
  /**
1887
- * Activation context details
1974
+ * EMetric.ActivationTime
1888
1975
  *
1889
- * @generated from field: optional string activation_details = 92;
1976
+ * @generated from field: optional google.protobuf.Timestamp activation_time = 92;
1890
1977
  */
1891
- activationDetails?: string;
1978
+ activationTime?: Timestamp;
1979
+
1980
+ /**
1981
+ * percentages and derived values the V2 read path adds
1982
+ *
1983
+ * EMetric.AdVideoQ25Pct
1984
+ *
1985
+ * @generated from field: double ad_video_q25_pct = 100;
1986
+ */
1987
+ adVideoQ25Pct: number;
1988
+
1989
+ /**
1990
+ * EMetric.AdVideoQ50Pct
1991
+ *
1992
+ * @generated from field: double ad_video_q50_pct = 101;
1993
+ */
1994
+ adVideoQ50Pct: number;
1995
+
1996
+ /**
1997
+ * EMetric.AdVideoQ75Pct
1998
+ *
1999
+ * @generated from field: double ad_video_q75_pct = 102;
2000
+ */
2001
+ adVideoQ75Pct: number;
2002
+
2003
+ /**
2004
+ * EMetric.AdVideoCompletePct
2005
+ *
2006
+ * @generated from field: double ad_video_complete_pct = 103;
2007
+ */
2008
+ adVideoCompletePct: number;
2009
+
2010
+ /**
2011
+ * EMetric.AdFrequency1xPct (omitted unless frequency is computed)
2012
+ *
2013
+ * @generated from field: optional double ad_frequency_1x_pct = 104;
2014
+ */
2015
+ adFrequency1xPct?: number;
2016
+
2017
+ /**
2018
+ * EMetric.AdFrequency2xPct
2019
+ *
2020
+ * @generated from field: optional double ad_frequency_2x_pct = 105;
2021
+ */
2022
+ adFrequency2xPct?: number;
2023
+
2024
+ /**
2025
+ * EMetric.AdFrequency3plusPct
2026
+ *
2027
+ * @generated from field: optional double ad_frequency_3plus_pct = 106;
2028
+ */
2029
+ adFrequency3plusPct?: number;
2030
+
2031
+ /**
2032
+ * EMetric.CtaTypeBasicPct
2033
+ *
2034
+ * @generated from field: double cta_type_basic_pct = 107;
2035
+ */
2036
+ ctaTypeBasicPct: number;
2037
+
2038
+ /**
2039
+ * EMetric.CtaTypeAddToWalletPct
2040
+ *
2041
+ * @generated from field: double cta_type_add_to_wallet_pct = 108;
2042
+ */
2043
+ ctaTypeAddToWalletPct: number;
2044
+
2045
+ /**
2046
+ * EMetric.CtaTypeSendToUserPct
2047
+ *
2048
+ * @generated from field: double cta_type_send_to_user_pct = 109;
2049
+ */
2050
+ ctaTypeSendToUserPct: number;
2051
+
2052
+ /**
2053
+ * EMetric.AdEngagementDepth (interactions / engaged views)
2054
+ *
2055
+ * @generated from field: double ad_engagement_depth = 110;
2056
+ */
2057
+ adEngagementDepth: number;
2058
+
2059
+ /**
2060
+ * EMetric.AdEngagedSessions
2061
+ *
2062
+ * @generated from field: uint32 ad_engaged_sessions = 111;
2063
+ */
2064
+ adEngagedSessions: number;
2065
+
2066
+ /**
2067
+ * EMetric.AdSumEngSec (Σ engaged seconds)
2068
+ *
2069
+ * @generated from field: uint64 ad_sum_eng_sec = 112;
2070
+ */
2071
+ adSumEngSec: bigint;
2072
+
2073
+ /**
2074
+ * EMetric.AdFormatsServed
2075
+ *
2076
+ * @generated from field: repeated string ad_formats_served = 113;
2077
+ */
2078
+ adFormatsServed: string[];
2079
+
2080
+ /**
2081
+ * EMetric.DeviceTargeting (AdGroup.device_targetings: 1 MOBILE, 2 CTV, 3 WEB)
2082
+ *
2083
+ * @generated from field: repeated int32 device_targeting = 114;
2084
+ */
2085
+ deviceTargeting: number[];
2086
+
2087
+ /**
2088
+ * EMetric.EventDate ('YYYY-MM-DD')
2089
+ *
2090
+ * @generated from field: optional string event_date = 115;
2091
+ */
2092
+ eventDate?: string;
2093
+
2094
+ /**
2095
+ * EMetric.EventDuration (seconds)
2096
+ *
2097
+ * @generated from field: optional uint32 event_duration = 116;
2098
+ */
2099
+ eventDuration?: number;
1892
2100
  };
1893
2101
 
1894
2102
  /**
@@ -1897,14 +2105,55 @@ export declare type AdTotalsResponseData = Message<"streamlayer.analytics.v2.stu
1897
2105
  */
1898
2106
  export declare const AdTotalsResponseDataSchema: GenMessage<AdTotalsResponseData>;
1899
2107
 
2108
+ /**
2109
+ * One call answers every breakdown: the read path builds all five levels and returns them
2110
+ * together, so `data` is an object with five keys rather than a flat list.
2111
+ *
2112
+ * @generated from message streamlayer.analytics.v2.studio.AdTotalsResponseLevels
2113
+ */
2114
+ export declare type AdTotalsResponseLevels = Message<"streamlayer.analytics.v2.studio.AdTotalsResponseLevels"> & {
2115
+ /**
2116
+ * totals across the whole filter
2117
+ *
2118
+ * @generated from field: streamlayer.analytics.v2.studio.AdTotalsResponseData summary = 1;
2119
+ */
2120
+ summary?: AdTotalsResponseData;
2121
+
2122
+ /**
2123
+ * @generated from field: repeated streamlayer.analytics.v2.studio.AdTotalsResponseData by_event = 2;
2124
+ */
2125
+ byEvent: AdTotalsResponseData[];
2126
+
2127
+ /**
2128
+ * @generated from field: repeated streamlayer.analytics.v2.studio.AdTotalsResponseData by_question = 3;
2129
+ */
2130
+ byQuestion: AdTotalsResponseData[];
2131
+
2132
+ /**
2133
+ * @generated from field: repeated streamlayer.analytics.v2.studio.AdTotalsResponseData by_platform = 4;
2134
+ */
2135
+ byPlatform: AdTotalsResponseData[];
2136
+
2137
+ /**
2138
+ * @generated from field: repeated streamlayer.analytics.v2.studio.AdTotalsResponseData by_ad_unit = 5;
2139
+ */
2140
+ byAdUnit: AdTotalsResponseData[];
2141
+ };
2142
+
2143
+ /**
2144
+ * Describes the message streamlayer.analytics.v2.studio.AdTotalsResponseLevels.
2145
+ * Use `create(AdTotalsResponseLevelsSchema)` to create a new message.
2146
+ */
2147
+ export declare const AdTotalsResponseLevelsSchema: GenMessage<AdTotalsResponseLevels>;
2148
+
1900
2149
  /**
1901
2150
  * @generated from message streamlayer.analytics.v2.studio.AdTotalsResponse
1902
2151
  */
1903
2152
  export declare type AdTotalsResponse = Message<"streamlayer.analytics.v2.studio.AdTotalsResponse"> & {
1904
2153
  /**
1905
- * @generated from field: repeated streamlayer.analytics.v2.studio.AdTotalsResponseData data = 1;
2154
+ * @generated from field: streamlayer.analytics.v2.studio.AdTotalsResponseLevels data = 1;
1906
2155
  */
1907
- data: AdTotalsResponseData[];
2156
+ data?: AdTotalsResponseLevels;
1908
2157
 
1909
2158
  /**
1910
2159
  * @generated from field: streamlayer.analytics.v2.studio.AdTotalsResponse.AdTotalsResponseMeta meta = 2;
@@ -1964,7 +2213,8 @@ export declare type AdDetailsRequestFilter = Message<"streamlayer.analytics.v2.s
1964
2213
  platformCategory?: string;
1965
2214
 
1966
2215
  /**
1967
- * e.g. ["iOS", "Android", "Roku", "ChromeOS", "Windows", "MacOS", "Linux", "ChromeOS", "Tizen", "Other"]
2216
+ * "tvOS" | "AndroidTV" | "Roku" | "FireTV" | "Tizen" | "webOS" | "VIDAA OS" | "SmartCast" |
2217
+ * "TitanOS" | "iOS" | "Android" | "iOS Safari" | "Android Chrome" | "React (Web)"
1968
2218
  *
1969
2219
  * @generated from field: repeated string platform_os = 6;
1970
2220
  */
@@ -2712,6 +2962,388 @@ export declare type AdPauseTotalResponse_AdPauseTotalResponseMeta = Message<"str
2712
2962
  */
2713
2963
  export declare const AdPauseTotalResponse_AdPauseTotalResponseMetaSchema: GenMessage<AdPauseTotalResponse_AdPauseTotalResponseMeta>;
2714
2964
 
2965
+ /**
2966
+ * Ad impressions graph. Pause ads are excluded: they are reported by AdPauseTotal, and a card
2967
+ * never appears in both.
2968
+ *
2969
+ * @generated from message streamlayer.analytics.v2.studio.AdMetricsByTimeLineRequestFilter
2970
+ */
2971
+ export declare type AdMetricsByTimeLineRequestFilter = Message<"streamlayer.analytics.v2.studio.AdMetricsByTimeLineRequestFilter"> & {
2972
+ /**
2973
+ * @generated from field: optional string organization_id = 1;
2974
+ */
2975
+ organizationId?: string;
2976
+
2977
+ /**
2978
+ * @generated from field: repeated uint64 event_ids = 2;
2979
+ */
2980
+ eventIds: bigint[];
2981
+
2982
+ /**
2983
+ * question ids
2984
+ *
2985
+ * @generated from field: repeated string topic_ids = 3;
2986
+ */
2987
+ topicIds: string[];
2988
+
2989
+ /**
2990
+ * @generated from field: optional streamlayer.analytics.v1.common.Period period = 4;
2991
+ */
2992
+ period?: Period;
2993
+
2994
+ /**
2995
+ * @generated from field: streamlayer.analytics.v2.studio.AggPeriod agg_period = 5;
2996
+ */
2997
+ aggPeriod: AggPeriod;
2998
+
2999
+ /**
3000
+ * @generated from field: repeated string countries = 6;
3001
+ */
3002
+ countries: string[];
3003
+
3004
+ /**
3005
+ * "CTV" | "Mobile App" | "Mobile Web" | "Desktop Web"
3006
+ *
3007
+ * @generated from field: optional string platform_category = 7;
3008
+ */
3009
+ platformCategory?: string;
3010
+
3011
+ /**
3012
+ * 'America/New_York'
3013
+ *
3014
+ * @generated from field: optional string tz = 8;
3015
+ */
3016
+ tz?: string;
3017
+ };
3018
+
3019
+ /**
3020
+ * Describes the message streamlayer.analytics.v2.studio.AdMetricsByTimeLineRequestFilter.
3021
+ * Use `create(AdMetricsByTimeLineRequestFilterSchema)` to create a new message.
3022
+ */
3023
+ export declare const AdMetricsByTimeLineRequestFilterSchema: GenMessage<AdMetricsByTimeLineRequestFilter>;
3024
+
3025
+ /**
3026
+ * @generated from message streamlayer.analytics.v2.studio.AdMetricsByTimeLineRequest
3027
+ */
3028
+ export declare type AdMetricsByTimeLineRequest = Message<"streamlayer.analytics.v2.studio.AdMetricsByTimeLineRequest"> & {
3029
+ /**
3030
+ * @generated from field: streamlayer.analytics.v2.studio.AdMetricsByTimeLineRequestFilter filter = 1;
3031
+ */
3032
+ filter?: AdMetricsByTimeLineRequestFilter;
3033
+ };
3034
+
3035
+ /**
3036
+ * Describes the message streamlayer.analytics.v2.studio.AdMetricsByTimeLineRequest.
3037
+ * Use `create(AdMetricsByTimeLineRequestSchema)` to create a new message.
3038
+ */
3039
+ export declare const AdMetricsByTimeLineRequestSchema: GenMessage<AdMetricsByTimeLineRequest>;
3040
+
3041
+ /**
3042
+ * One row per bucket; empty buckets are filled in, so the series has no gaps.
3043
+ *
3044
+ * @generated from message streamlayer.analytics.v2.studio.AdMetricsByTimeLineResponseData
3045
+ */
3046
+ export declare type AdMetricsByTimeLineResponseData = Message<"streamlayer.analytics.v2.studio.AdMetricsByTimeLineResponseData"> & {
3047
+ /**
3048
+ * UNIX timestamp (EPOCH), bucket start
3049
+ *
3050
+ * @generated from field: int64 time_frame = 1;
3051
+ */
3052
+ timeFrame: bigint;
3053
+
3054
+ /**
3055
+ * EMetric.AdCardImpressions
3056
+ *
3057
+ * @generated from field: uint32 ad_card_impressions = 2;
3058
+ */
3059
+ adCardImpressions: number;
3060
+
3061
+ /**
3062
+ * EMetric.TotalAdImpressions
3063
+ *
3064
+ * @generated from field: uint32 total_ad_impressions = 3;
3065
+ */
3066
+ totalAdImpressions: number;
3067
+
3068
+ /**
3069
+ * EMetric.TotalDisplayImpressions
3070
+ *
3071
+ * @generated from field: uint32 total_display_impressions = 4;
3072
+ */
3073
+ totalDisplayImpressions: number;
3074
+
3075
+ /**
3076
+ * EMetric.TotalAdVideoImpressions
3077
+ *
3078
+ * @generated from field: uint32 total_ad_video_impressions = 5;
3079
+ */
3080
+ totalAdVideoImpressions: number;
3081
+
3082
+ /**
3083
+ * EMetric.TotalAdClicks
3084
+ *
3085
+ * @generated from field: uint32 total_ad_clicks = 6;
3086
+ */
3087
+ totalAdClicks: number;
3088
+
3089
+ /**
3090
+ * EMetric.TotalAdInteractions
3091
+ *
3092
+ * @generated from field: uint32 total_ad_interactions = 7;
3093
+ */
3094
+ totalAdInteractions: number;
3095
+
3096
+ /**
3097
+ * EMetric.AdTotalReach
3098
+ *
3099
+ * @generated from field: uint32 ad_total_reach = 8;
3100
+ */
3101
+ adTotalReach: number;
3102
+ };
3103
+
3104
+ /**
3105
+ * Describes the message streamlayer.analytics.v2.studio.AdMetricsByTimeLineResponseData.
3106
+ * Use `create(AdMetricsByTimeLineResponseDataSchema)` to create a new message.
3107
+ */
3108
+ export declare const AdMetricsByTimeLineResponseDataSchema: GenMessage<AdMetricsByTimeLineResponseData>;
3109
+
3110
+ /**
3111
+ * @generated from message streamlayer.analytics.v2.studio.AdMetricsByTimeLineResponse
3112
+ */
3113
+ export declare type AdMetricsByTimeLineResponse = Message<"streamlayer.analytics.v2.studio.AdMetricsByTimeLineResponse"> & {
3114
+ /**
3115
+ * @generated from field: repeated streamlayer.analytics.v2.studio.AdMetricsByTimeLineResponseData data = 1;
3116
+ */
3117
+ data: AdMetricsByTimeLineResponseData[];
3118
+
3119
+ /**
3120
+ * @generated from field: streamlayer.analytics.v2.studio.AdMetricsByTimeLineResponse.AdMetricsByTimeLineResponseMeta meta = 2;
3121
+ */
3122
+ meta?: AdMetricsByTimeLineResponse_AdMetricsByTimeLineResponseMeta;
3123
+ };
3124
+
3125
+ /**
3126
+ * Describes the message streamlayer.analytics.v2.studio.AdMetricsByTimeLineResponse.
3127
+ * Use `create(AdMetricsByTimeLineResponseSchema)` to create a new message.
3128
+ */
3129
+ export declare const AdMetricsByTimeLineResponseSchema: GenMessage<AdMetricsByTimeLineResponse>;
3130
+
3131
+ /**
3132
+ * @generated from message streamlayer.analytics.v2.studio.AdMetricsByTimeLineResponse.AdMetricsByTimeLineResponseMeta
3133
+ */
3134
+ export declare type AdMetricsByTimeLineResponse_AdMetricsByTimeLineResponseMeta = Message<"streamlayer.analytics.v2.studio.AdMetricsByTimeLineResponse.AdMetricsByTimeLineResponseMeta"> & {
3135
+ };
3136
+
3137
+ /**
3138
+ * Describes the message streamlayer.analytics.v2.studio.AdMetricsByTimeLineResponse.AdMetricsByTimeLineResponseMeta.
3139
+ * Use `create(AdMetricsByTimeLineResponse_AdMetricsByTimeLineResponseMetaSchema)` to create a new message.
3140
+ */
3141
+ export declare const AdMetricsByTimeLineResponse_AdMetricsByTimeLineResponseMetaSchema: GenMessage<AdMetricsByTimeLineResponse_AdMetricsByTimeLineResponseMeta>;
3142
+
3143
+ /**
3144
+ * Gamification tab: per-card metrics for feature cards. Ad units share these topic types and are
3145
+ * excluded by their Studio metadata, so a card never appears in both this and the ad reports.
3146
+ *
3147
+ * @generated from message streamlayer.analytics.v2.studio.PollsCardMetricsRequestFilter
3148
+ */
3149
+ export declare type PollsCardMetricsRequestFilter = Message<"streamlayer.analytics.v2.studio.PollsCardMetricsRequestFilter"> & {
3150
+ /**
3151
+ * @generated from field: optional string organization_id = 1;
3152
+ */
3153
+ organizationId?: string;
3154
+
3155
+ /**
3156
+ * @generated from field: repeated uint64 event_ids = 2;
3157
+ */
3158
+ eventIds: bigint[];
3159
+
3160
+ /**
3161
+ * card ids
3162
+ *
3163
+ * @generated from field: repeated string topic_ids = 3;
3164
+ */
3165
+ topicIds: string[];
3166
+
3167
+ /**
3168
+ * POLLS(4,5), TRIVIA(6), PREDICTION(7), FACTOID(8), TWITTER(9), PROMOTION(12)
3169
+ *
3170
+ * @generated from field: repeated uint32 topic_types = 4;
3171
+ */
3172
+ topicTypes: number[];
3173
+
3174
+ /**
3175
+ * @generated from field: optional streamlayer.analytics.v1.common.Period period = 5;
3176
+ */
3177
+ period?: Period;
3178
+
3179
+ /**
3180
+ * @generated from field: repeated string countries = 6;
3181
+ */
3182
+ countries: string[];
3183
+
3184
+ /**
3185
+ * 'America/New_York'
3186
+ *
3187
+ * @generated from field: optional string tz = 7;
3188
+ */
3189
+ tz?: string;
3190
+ };
3191
+
3192
+ /**
3193
+ * Describes the message streamlayer.analytics.v2.studio.PollsCardMetricsRequestFilter.
3194
+ * Use `create(PollsCardMetricsRequestFilterSchema)` to create a new message.
3195
+ */
3196
+ export declare const PollsCardMetricsRequestFilterSchema: GenMessage<PollsCardMetricsRequestFilter>;
3197
+
3198
+ /**
3199
+ * @generated from message streamlayer.analytics.v2.studio.PollsCardMetricsRequest
3200
+ */
3201
+ export declare type PollsCardMetricsRequest = Message<"streamlayer.analytics.v2.studio.PollsCardMetricsRequest"> & {
3202
+ /**
3203
+ * @generated from field: streamlayer.analytics.v2.studio.PollsCardMetricsRequestFilter filter = 1;
3204
+ */
3205
+ filter?: PollsCardMetricsRequestFilter;
3206
+ };
3207
+
3208
+ /**
3209
+ * Describes the message streamlayer.analytics.v2.studio.PollsCardMetricsRequest.
3210
+ * Use `create(PollsCardMetricsRequestSchema)` to create a new message.
3211
+ */
3212
+ export declare const PollsCardMetricsRequestSchema: GenMessage<PollsCardMetricsRequest>;
3213
+
3214
+ /**
3215
+ * @generated from message streamlayer.analytics.v2.studio.PollsCardMetricsResponseData
3216
+ */
3217
+ export declare type PollsCardMetricsResponseData = Message<"streamlayer.analytics.v2.studio.PollsCardMetricsResponseData"> & {
3218
+ /**
3219
+ * @generated from field: uint64 event_id = 1;
3220
+ */
3221
+ eventId: bigint;
3222
+
3223
+ /**
3224
+ * card id
3225
+ *
3226
+ * @generated from field: string question_id = 2;
3227
+ */
3228
+ questionId: string;
3229
+
3230
+ /**
3231
+ * @generated from field: uint32 topic_type = 3;
3232
+ */
3233
+ topicType: number;
3234
+
3235
+ /**
3236
+ * uniq devices the card reached (EMetric.PollsReceived)
3237
+ *
3238
+ * @generated from field: uint32 received = 10;
3239
+ */
3240
+ received: number;
3241
+
3242
+ /**
3243
+ * deliveries, not deduplicated
3244
+ *
3245
+ * @generated from field: uint32 received_sum = 11;
3246
+ */
3247
+ receivedSum: number;
3248
+
3249
+ /**
3250
+ * uniq devices that opened it (EMetric.PollsOpened)
3251
+ *
3252
+ * @generated from field: uint32 opened = 12;
3253
+ */
3254
+ opened: number;
3255
+
3256
+ /**
3257
+ * uniq devices that voted (EMetric.PollsVoted)
3258
+ *
3259
+ * @generated from field: uint32 voted = 13;
3260
+ */
3261
+ voted: number;
3262
+
3263
+ /**
3264
+ * uniq devices that followed a link (EMetric.PollsNavigated)
3265
+ *
3266
+ * @generated from field: uint32 navigated = 14;
3267
+ */
3268
+ navigated: number;
3269
+
3270
+ /**
3271
+ * EMetric.CardImpressions (total opens)
3272
+ *
3273
+ * @generated from field: uint32 card_impressions = 15;
3274
+ */
3275
+ cardImpressions: number;
3276
+
3277
+ /**
3278
+ * EMetric.CardFrequency (opens / viewers who opened)
3279
+ *
3280
+ * @generated from field: double card_frequency = 20;
3281
+ */
3282
+ cardFrequency: number;
3283
+
3284
+ /**
3285
+ * shares of viewers by how often they opened the card; computed only for a single card type
3286
+ *
3287
+ * EMetric.CardFrequency1xPct
3288
+ *
3289
+ * @generated from field: optional double card_frequency_1x_pct = 21;
3290
+ */
3291
+ cardFrequency1xPct?: number;
3292
+
3293
+ /**
3294
+ * EMetric.CardFrequency2xPct
3295
+ *
3296
+ * @generated from field: optional double card_frequency_2x_pct = 22;
3297
+ */
3298
+ cardFrequency2xPct?: number;
3299
+
3300
+ /**
3301
+ * EMetric.CardFrequency3plusPct
3302
+ *
3303
+ * @generated from field: optional double card_frequency_3plus_pct = 23;
3304
+ */
3305
+ cardFrequency3plusPct?: number;
3306
+ };
3307
+
3308
+ /**
3309
+ * Describes the message streamlayer.analytics.v2.studio.PollsCardMetricsResponseData.
3310
+ * Use `create(PollsCardMetricsResponseDataSchema)` to create a new message.
3311
+ */
3312
+ export declare const PollsCardMetricsResponseDataSchema: GenMessage<PollsCardMetricsResponseData>;
3313
+
3314
+ /**
3315
+ * @generated from message streamlayer.analytics.v2.studio.PollsCardMetricsResponse
3316
+ */
3317
+ export declare type PollsCardMetricsResponse = Message<"streamlayer.analytics.v2.studio.PollsCardMetricsResponse"> & {
3318
+ /**
3319
+ * @generated from field: repeated streamlayer.analytics.v2.studio.PollsCardMetricsResponseData data = 1;
3320
+ */
3321
+ data: PollsCardMetricsResponseData[];
3322
+
3323
+ /**
3324
+ * @generated from field: streamlayer.analytics.v2.studio.PollsCardMetricsResponse.PollsCardMetricsResponseMeta meta = 2;
3325
+ */
3326
+ meta?: PollsCardMetricsResponse_PollsCardMetricsResponseMeta;
3327
+ };
3328
+
3329
+ /**
3330
+ * Describes the message streamlayer.analytics.v2.studio.PollsCardMetricsResponse.
3331
+ * Use `create(PollsCardMetricsResponseSchema)` to create a new message.
3332
+ */
3333
+ export declare const PollsCardMetricsResponseSchema: GenMessage<PollsCardMetricsResponse>;
3334
+
3335
+ /**
3336
+ * @generated from message streamlayer.analytics.v2.studio.PollsCardMetricsResponse.PollsCardMetricsResponseMeta
3337
+ */
3338
+ export declare type PollsCardMetricsResponse_PollsCardMetricsResponseMeta = Message<"streamlayer.analytics.v2.studio.PollsCardMetricsResponse.PollsCardMetricsResponseMeta"> & {
3339
+ };
3340
+
3341
+ /**
3342
+ * Describes the message streamlayer.analytics.v2.studio.PollsCardMetricsResponse.PollsCardMetricsResponseMeta.
3343
+ * Use `create(PollsCardMetricsResponse_PollsCardMetricsResponseMetaSchema)` to create a new message.
3344
+ */
3345
+ export declare const PollsCardMetricsResponse_PollsCardMetricsResponseMetaSchema: GenMessage<PollsCardMetricsResponse_PollsCardMetricsResponseMeta>;
3346
+
2715
3347
  /**
2716
3348
  * @generated from enum streamlayer.analytics.v2.studio.WpType
2717
3349
  */
@@ -2787,6 +3419,13 @@ export enum MetricBreakdown {
2787
3419
  * @generated from enum value: METRIC_BREAKDOWN_AD_UNIT_TYPE = 5;
2788
3420
  */
2789
3421
  AD_UNIT_TYPE = 5,
3422
+
3423
+ /**
3424
+ * group by eventId, platform, os
3425
+ *
3426
+ * @generated from enum value: METRIC_BREAKDOWN_PLATFORM_OS = 6;
3427
+ */
3428
+ PLATFORM_OS = 6,
2790
3429
  }
2791
3430
 
2792
3431
  /**
@@ -2967,5 +3606,21 @@ export declare const Dashboard: GenService<{
2967
3606
  input: typeof AdPauseTotalRequestSchema;
2968
3607
  output: typeof AdPauseTotalResponseSchema;
2969
3608
  },
3609
+ /**
3610
+ * @generated from rpc streamlayer.analytics.v2.studio.Dashboard.AdMetricsByTimeLine
3611
+ */
3612
+ adMetricsByTimeLine: {
3613
+ methodKind: "unary";
3614
+ input: typeof AdMetricsByTimeLineRequestSchema;
3615
+ output: typeof AdMetricsByTimeLineResponseSchema;
3616
+ },
3617
+ /**
3618
+ * @generated from rpc streamlayer.analytics.v2.studio.Dashboard.PollsCardMetrics
3619
+ */
3620
+ pollsCardMetrics: {
3621
+ methodKind: "unary";
3622
+ input: typeof PollsCardMetricsRequestSchema;
3623
+ output: typeof PollsCardMetricsResponseSchema;
3624
+ },
2970
3625
  }>;
2971
3626
 
@@ -12,7 +12,7 @@ import { file_streamlayer_analytics_v1_polls_polls } from "../../v1/polls/polls_
12
12
  * Describes the file streamlayer/analytics/v2/studio/dashboard.proto.
13
13
  */
14
14
  export const file_streamlayer_analytics_v2_studio_dashboard = /*@__PURE__*/
15
- fileDesc("Ci9zdHJlYW1sYXllci9hbmFseXRpY3MvdjIvc3R1ZGlvL2Rhc2hib2FyZC5wcm90bxIfc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpbyJRCg5DYXJkU3RhdGlzdGljcxINCgV0b3RhbBgBIAEoBRIOCgZ2aWV3ZWQYAiABKAUSDgoGb3BlbmVkGAMgASgFEhAKCGFuc3dlcmVkGAQgASgFIqwGCh1EYXNoYm9hcmRPdmVydmlld1Jlc3BvbnNlRGF0YRIVCg10b3RhbF92aWV3ZXJzGAEgASgFEh8KF3RvdGFsX3JlZ2lzdHJlZF92aWV3ZXJzGAIgASgFEh0KFXRvdGFsX2VuZ2FnZWRfdmlld2VycxgDIAEoBRIaChJ0b3RhbF9pbnRlcmFjdGlvbnMYBCABKAUSFAoMbGl2ZV92aWV3ZXJzGAUgASgFEhwKFGxpdmVfZW5nYWdlZF92aWV3ZXJzGAYgASgFEiUKHWludGVyYWN0aW9uc19wZXJfZW5nYWdlZF91c2VyGAcgASgBEh4KFmxpdmVfcmVnaXN0cmVkX3ZpZXdlcnMYHiABKAUSGAoQdG90YWxfd3Bfc3RhcnRlZBgIIAEoBRIhChl0b3RhbF93cF9zZXNzaW9uc19zdGFydGVkGC0gASgFEh0KFXVzZXJzX2VuZ2FnZWRfd2l0aF93cBgJIAEoBRIkChx1c2Vyc19lbmdhZ2VkX3dpdGhfYWN0aXZlX3dwGAogASgFEhIKCmFjdGl2ZV93cHMYCyABKAUSGwoTYXZnX3VzZXJzX2FjdGl2ZV93cBgMIAEoARIeChZhdmdfYWN0aXZlX3dwX2R1cmF0aW9uGA0gASgBEikKIWxpdmVfdXNlcnNfZW5nYWdlZF93aXRoX2FjdGl2ZV93cBgOIAEoBRIXCg9saXZlX2FjdGl2ZV93cHMYDyABKAUSGwoTdG90YWxfbWluX3dwMl91c2VycxgQIAEoARIbChN0b3RhbF9taW5fd3AzX3VzZXJzGBEgASgBEhsKE3RvdGFsX21pbl93cDRfdXNlcnMYEiABKAESGwoTdG90YWxfbWluX3dwNV91c2VycxgTIAEoARIbChN0b3RhbF9taW5fd3A2X3VzZXJzGBQgASgBEhsKE3RvdGFsX21pbl93cDdfdXNlcnMYFSABKAESGwoTdG90YWxfbWluX3dwOF91c2VycxgWIAEoARIbChN0b3RhbF9taW5fd3A5X3VzZXJzGBcgASgBEh4KFnRvdGFsX3VzZXJzX3N0YXJ0ZWRfd3AYGCABKAUi/gIKHkRhc2hib2FyZE92ZXJ2aWV3UmVxdWVzdEZpbHRlchIcCg9vcmdhbml6YXRpb25faWQYASABKAlIAIgBARIRCglldmVudF9pZHMYAiADKAQSNwoGcGVyaW9kGAMgASgLMicuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYxLmNvbW1vbi5QZXJpb2QSFQoEZGF0ZRgEIAEoCUICGAFIAYgBARIRCgljb3VudHJpZXMYBSADKAkSGQoMbGl2ZV9tZXRyaWNzGAYgASgISAKIAQESFAoDZndwGAcgASgIQgIYAUgDiAEBEj0KB3dwX3R5cGUYCCABKA4yJy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLldwVHlwZUgEiAEBEg8KAnR6GAkgASgJSAWIAQFCEgoQX29yZ2FuaXphdGlvbl9pZEIHCgVfZGF0ZUIPCg1fbGl2ZV9tZXRyaWNzQgYKBF9md3BCCgoIX3dwX3R5cGVCBQoDX3R6ImsKGERhc2hib2FyZE92ZXJ2aWV3UmVxdWVzdBJPCgZmaWx0ZXIYASABKAsyPy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkRhc2hib2FyZE92ZXJ2aWV3UmVxdWVzdEZpbHRlciLyAQoZRGFzaGJvYXJkT3ZlcnZpZXdSZXNwb25zZRJMCgRkYXRhGAEgASgLMj4uc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5EYXNoYm9hcmRPdmVydmlld1Jlc3BvbnNlRGF0YRJmCgRtZXRhGAIgASgLMlguc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5EYXNoYm9hcmRPdmVydmlld1Jlc3BvbnNlLkRhc2hib2FyZE92ZXJ2aWV3UmVzcG9uc2VNZXRhGh8KHURhc2hib2FyZE92ZXJ2aWV3UmVzcG9uc2VNZXRhIuYBChtGZWF0dXJlZEdyb3Vwc1JlcXVlc3RGaWx0ZXISHAoPb3JnYW5pemF0aW9uX2lkGAEgASgJSACIAQESEQoJZXZlbnRfaWRzGAIgAygEEjcKBnBlcmlvZBgDIAEoCzInLnN0cmVhbWxheWVyLmFuYWx5dGljcy52MS5jb21tb24uUGVyaW9kEhUKBGRhdGUYBCABKAlCAhgBSAGIAQESEQoJY291bnRyaWVzGAUgAygJEg8KAnR6GAYgASgJSAKIAQFCEgoQX29yZ2FuaXphdGlvbl9pZEIHCgVfZGF0ZUIFCgNfdHoiZQoVRmVhdHVyZWRHcm91cHNSZXF1ZXN0EkwKBmZpbHRlchgBIAEoCzI8LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uRmVhdHVyZWRHcm91cHNSZXF1ZXN0RmlsdGVyIpUFChpGZWF0dXJlZEdyb3Vwc1Jlc3BvbnNlRGF0YRIVCg10b3RhbF92aWV3ZXJzGAEgASgFEh0KFXRvdGFsX2VuZ2FnZWRfdmlld2VycxgCIAEoBRIaChJ0b3RhbF9wcm9tcHRzX3NlbnQYAyABKAUSKAogdG90YWxfdW5pcXVlX3ZpZXdlcnNfb3Blbl9wcm9tcHQYBCABKAUSLAokdG90YWxfdW5pcXVlX3ZpZXdlcnNfYW5zd2VyZWRfcHJvbXB0GAUgASgFEjEKKWF2ZXJhZ2VfcHJvbXB0c19vcGVuZWRfcGVyX2VuZ2FnZWRfdmlld2VyGAYgASgBEhwKFHRvdGFsX3Byb21wdHNfb3BlbmVkGAcgASgFEhoKEnRvdGFsX2ludGVyYWN0aW9ucxgIIAEoBRJCCglwb2xsX2NhcmQYCSABKAsyLy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkNhcmRTdGF0aXN0aWNzEkQKC3RyaXZpYV9jYXJkGAogASgLMi8uc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5DYXJkU3RhdGlzdGljcxJICg9wcmVkaWN0aW9uX2NhcmQYCyABKAsyLy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkNhcmRTdGF0aXN0aWNzEkUKDGZhY3RvaWRfY2FyZBgMIAEoCzIvLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uQ2FyZFN0YXRpc3RpY3MSRQoMdHdpdHRlcl9jYXJkGA0gASgLMi8uc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5DYXJkU3RhdGlzdGljcyLjAQoWRmVhdHVyZWRHcm91cHNSZXNwb25zZRJJCgRkYXRhGAEgASgLMjsuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5GZWF0dXJlZEdyb3Vwc1Jlc3BvbnNlRGF0YRJgCgRtZXRhGAIgASgLMlIuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5GZWF0dXJlZEdyb3Vwc1Jlc3BvbnNlLkZlYXR1cmVkR3JvdXBzUmVzcG9uc2VNZXRhGhwKGkZlYXR1cmVkR3JvdXBzUmVzcG9uc2VNZXRhIoQDCh5NZXRyaWNzQnlUaW1lTGluZVJlcXVlc3RGaWx0ZXISHAoPb3JnYW5pemF0aW9uX2lkGAEgASgJSACIAQESEQoJZXZlbnRfaWRzGAIgAygEEhEKCWNvdW50cmllcxgDIAMoCRI8CgZwZXJpb2QYBCABKAsyJy5zdHJlYW1sYXllci5hbmFseXRpY3MudjEuY29tbW9uLlBlcmlvZEgBiAEBEhUKBGRhdGUYBSABKAlCAhgBSAKIAQESPgoKYWdnX3BlcmlvZBgGIAEoDjIqLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uQWdnUGVyaW9kEj0KB3dwX3R5cGUYByABKA4yJy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLldwVHlwZUgDiAEBEg8KAnR6GAggASgJSASIAQFCEgoQX29yZ2FuaXphdGlvbl9pZEIJCgdfcGVyaW9kQgcKBV9kYXRlQgoKCF93cF90eXBlQgUKA190eiJtChpXcE1ldHJpY3NCeVRpbWVMaW5lUmVxdWVzdBJPCgZmaWx0ZXIYASABKAsyPy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLk1ldHJpY3NCeVRpbWVMaW5lUmVxdWVzdEZpbHRlciKeAgofV3BNZXRyaWNzQnlUaW1lTGluZVJlc3BvbnNlRGF0YRISCgp0aW1lX2ZyYW1lGAEgASgDEhUKDXRvdGFsX3dwX3NlZW4YAiABKAUSJAocdXNlcnNfZW5nYWdlZF93aXRoX2FjdGl2ZV93cBgDIAEoBRIdChV1c2Vyc19lbmdhZ2VkX3dpdGhfd3AYBCABKAUSEgoKYWN0aXZlX3dwcxgFIAEoBRIbChNhdmdfdXNlcnNfYWN0aXZlX3dwGAYgASgBEh4KFmF2Z19hY3RpdmVfd3BfZHVyYXRpb24YByABKAESHAoUdG90YWxfbWluX3dwXzJfdXNlcnMYCCABKAESHAoUdG90YWxfbWluX3dwXzNfdXNlcnMYCSABKAEi/AEKG1dwTWV0cmljc0J5VGltZUxpbmVSZXNwb25zZRJOCgRkYXRhGAEgAygLMkAuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5XcE1ldHJpY3NCeVRpbWVMaW5lUmVzcG9uc2VEYXRhEmoKBG1ldGEYAiABKAsyXC5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLldwTWV0cmljc0J5VGltZUxpbmVSZXNwb25zZS5XcE1ldHJpY3NCeVRpbWVMaW5lUmVzcG9uc2VNZXRhGiEKH1dwTWV0cmljc0J5VGltZUxpbmVSZXNwb25zZU1ldGEiaQoWVXNlcnNCeVRpbWVMaW5lUmVxdWVzdBJPCgZmaWx0ZXIYASABKAsyPy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLk1ldHJpY3NCeVRpbWVMaW5lUmVxdWVzdEZpbHRlciLvAgohUG9sbHNTdGF0c0J5VGltZUxpbmVSZXF1ZXN0RmlsdGVyEhwKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUgAiAEBEhAKCGV2ZW50X2lkGAIgASgEEhEKCWNvdW50cmllcxgDIAMoCRI8CgZwZXJpb2QYBCABKAsyJy5zdHJlYW1sYXllci5hbmFseXRpY3MudjEuY29tbW9uLlBlcmlvZEgBiAEBEj4KCmFnZ19wZXJpb2QYBSABKA4yKi5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkFnZ1BlcmlvZBJDCgp0b3BpY190eXBlGAYgASgOMiouc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYxLmNvbW1vbi5Ub3BpY1R5cGVIAogBARIPCgJ0ehgHIAEoCUgDiAEBQhIKEF9vcmdhbml6YXRpb25faWRCCQoHX3BlcmlvZEINCgtfdG9waWNfdHlwZUIFCgNfdHoicQobUG9sbHNTdGF0c0J5VGltZUxpbmVSZXF1ZXN0ElIKBmZpbHRlchgBIAEoCzJCLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uUG9sbHNTdGF0c0J5VGltZUxpbmVSZXF1ZXN0RmlsdGVyIskBChFQb2xsc1RvdGFsUmVxdWVzdBJaCgZmaWx0ZXIYASABKAsySi5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLlBvbGxzVG90YWxSZXF1ZXN0LlBvbGxzVG90YWxSZXF1ZXN0RmlsdGVyGlgKF1BvbGxzVG90YWxSZXF1ZXN0RmlsdGVyEhcKD29yZ2FuaXphdGlvbl9pZBgBIAEoCRIRCglldmVudF9pZHMYAiADKAQSEQoJdG9waWNfaWRzGAMgAygJImAKC01ldHJpY3NEYXRhEg0KBXRvdGFsGAEgASgFEg4KBm9wZW5lZBgCIAEoBRIRCgluYXZpZ2F0ZWQYAyABKAUSEAoIcmVjZWl2ZWQYBCABKAUSDQoFdm90ZWQYBSABKAUisQIKIFBvbGxzU3RhdHNCeVRpbWVMaW5lUmVzcG9uc2VEYXRhEhIKCnRpbWVfZnJhbWUYASABKAkSPAoGY29tbW9uGAIgASgLMiwuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5NZXRyaWNzRGF0YRJeCgdieV90eXBlGAMgAygLMk0uc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5Qb2xsc1N0YXRzQnlUaW1lTGluZVJlc3BvbnNlRGF0YS5CeVR5cGVFbnRyeRpbCgtCeVR5cGVFbnRyeRILCgNrZXkYASABKAkSOwoFdmFsdWUYAiABKAsyLC5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLk1ldHJpY3NEYXRhOgI4ASKBAgocUG9sbHNTdGF0c0J5VGltZUxpbmVSZXNwb25zZRJPCgRkYXRhGAEgAygLMkEuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5Qb2xsc1N0YXRzQnlUaW1lTGluZVJlc3BvbnNlRGF0YRJsCgRtZXRhGAIgASgLMl4uc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5Qb2xsc1N0YXRzQnlUaW1lTGluZVJlc3BvbnNlLlBvbGxzU3RhdHNCeVRpbWVMaW5lUmVzcG9uc2VNZXRhGiIKIFBvbGxzU3RhdHNCeVRpbWVMaW5lUmVzcG9uc2VNZXRhInkKG1VzZXJzQnlUaW1lTGluZVJlc3BvbnNlRGF0YRISCgp0aW1lX2ZyYW1lGAEgASgDEhgKEHJlZ2lzdGVyZWRfdXNlcnMYAiABKAUSFQoNdG90YWxfZGV2aWNlcxgDIAEoBRIVCg1lbmdhZ2VkX3VzZXJzGAQgASgFIugBChdVc2Vyc0J5VGltZUxpbmVSZXNwb25zZRJKCgRkYXRhGAEgAygLMjwuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5Vc2Vyc0J5VGltZUxpbmVSZXNwb25zZURhdGESYgoEbWV0YRgCIAEoCzJULnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uVXNlcnNCeVRpbWVMaW5lUmVzcG9uc2UuVXNlcnNCeVRpbWVMaW5lUmVzcG9uc2VNZXRhGh0KG1VzZXJzQnlUaW1lTGluZVJlc3BvbnNlTWV0YSJ2CiNEZXZpY2VJbnRlcmFjdGlvbnNCeVRpbWVMaW5lUmVxdWVzdBJPCgZmaWx0ZXIYASABKAsyPy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLk1ldHJpY3NCeVRpbWVMaW5lUmVxdWVzdEZpbHRlciLGAQooRGV2aWNlSW50ZXJhY3Rpb25zQnlUaW1lTGluZVJlc3BvbnNlRGF0YRISCgp0aW1lX2ZyYW1lGAEgASgDEgwKBGlfb3MYAiABKAUSEAoIaV9wYWRfb3MYAyABKAUSDwoHYW5kcm9pZBgEIAEoBRIYChBhbGxfaW50ZXJhY3Rpb25zGAUgASgFEgsKA3dlYhgGIAEoBRIOCgZtYWNfb3MYByABKAUSDwoHd2luZG93cxgIIAEoBRINCgVsaW51eBgJIAEoBSKpAgokRGV2aWNlSW50ZXJhY3Rpb25zQnlUaW1lTGluZVJlc3BvbnNlElcKBGRhdGEYASADKAsySS5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkRldmljZUludGVyYWN0aW9uc0J5VGltZUxpbmVSZXNwb25zZURhdGESfAoEbWV0YRgCIAEoCzJuLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uRGV2aWNlSW50ZXJhY3Rpb25zQnlUaW1lTGluZVJlc3BvbnNlLkRldmljZUludGVyYWN0aW9uc0J5VGltZUxpbmVSZXNwb25zZU1ldGEaKgooRGV2aWNlSW50ZXJhY3Rpb25zQnlUaW1lTGluZVJlc3BvbnNlTWV0YSKXAQoaTGlzdENvdW50cmllc1JlcXVlc3RGaWx0ZXISHAoPb3JnYW5pemF0aW9uX2lkGAEgASgJSACIAQESPAoGcGVyaW9kGAIgASgLMicuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYxLmNvbW1vbi5QZXJpb2RIAYgBAUISChBfb3JnYW5pemF0aW9uX2lkQgkKB19wZXJpb2QiYwoUTGlzdENvdW50cmllc1JlcXVlc3QSSwoGZmlsdGVyGAEgASgLMjsuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5MaXN0Q291bnRyaWVzUmVxdWVzdEZpbHRlciJJChlMaXN0Q291bnRyaWVzUmVzcG9uc2VEYXRhEg8KB2NvdW50cnkYASABKAkSDgoGYWxwaGEyGAIgASgJEgsKA2NudBgDIAEoBSLeAQoVTGlzdENvdW50cmllc1Jlc3BvbnNlEkgKBGRhdGEYASADKAsyOi5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkxpc3RDb3VudHJpZXNSZXNwb25zZURhdGESXgoEbWV0YRgCIAEoCzJQLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uTGlzdENvdW50cmllc1Jlc3BvbnNlLkxpc3RDb3VudHJpZXNSZXNwb25zZU1ldGEaGwoZTGlzdENvdW50cmllc1Jlc3BvbnNlTWV0YSLDAQoaRXhwb3J0TWV0cmljc1JlcXVlc3RGaWx0ZXISHAoPb3JnYW5pemF0aW9uX2lkGAEgASgJSACIAQESEQoJZXZlbnRfaWRzGAIgAygEEjcKBnBlcmlvZBgDIAEoCzInLnN0cmVhbWxheWVyLmFuYWx5dGljcy52MS5jb21tb24uUGVyaW9kEg8KB21ldHJpY3MYBCADKAkSDwoCdHoYBSABKAlIAYgBAUISChBfb3JnYW5pemF0aW9uX2lkQgUKA190eiJjChRFeHBvcnRNZXRyaWNzUmVxdWVzdBJLCgZmaWx0ZXIYASABKAsyOy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkV4cG9ydE1ldHJpY3NSZXF1ZXN0RmlsdGVyIp4CChVFeHBvcnRNZXRyaWNzUmVzcG9uc2USXgoEZGF0YRgBIAEoCzJQLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uRXhwb3J0TWV0cmljc1Jlc3BvbnNlLkV4cG9ydE1ldHJpY3NSZXNwb25zZURhdGESXgoEbWV0YRgCIAEoCzJQLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uRXhwb3J0TWV0cmljc1Jlc3BvbnNlLkV4cG9ydE1ldHJpY3NSZXNwb25zZU1ldGEaGwoZRXhwb3J0TWV0cmljc1Jlc3BvbnNlTWV0YRooChlFeHBvcnRNZXRyaWNzUmVzcG9uc2VEYXRhEgsKA3VybBgBIAEoCSJnChhFeHBvcnRFeHRlcm5hbEFkc1JlcXVlc3QSSwoGZmlsdGVyGAEgASgLMjsuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5FeHBvcnRNZXRyaWNzUmVxdWVzdEZpbHRlciKxAQoZRXhwb3J0RXh0ZXJuYWxBZHNSZXNwb25zZRJmCgRkYXRhGAEgASgLMlguc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5FeHBvcnRFeHRlcm5hbEFkc1Jlc3BvbnNlLkV4cG9ydEV4dGVybmFsQWRzUmVzcG9uc2VEYXRhGiwKHUV4cG9ydEV4dGVybmFsQWRzUmVzcG9uc2VEYXRhEgsKA3VybBgBIAEoCSKBAgoQTWV0cmljRGVzY3JpcHRvchITCgttZXRyaWNfbmFtZRgBIAEoCRJPCgp2YWx1ZV90eXBlGAIgASgOMjsuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5NZXRyaWNEZXNjcmlwdG9yLlZhbHVlVHlwZSKGAQoJVmFsdWVUeXBlEhQKEFZBTFVFX1RZUEVfVU5TRVQQABITCg9WQUxVRV9UWVBFX1VJTlQQARIVChFWQUxVRV9UWVBFX0RPVUJMRRACEhYKElZBTFVFX1RZUEVfUEVSQ0VOVBADEh8KG1ZBTFVFX1RZUEVfRFVSQVRJT05fU0VDT05EUxAEIhQKEkxpc3RNZXRyaWNzUmVxdWVzdCLNAQoTTGlzdE1ldHJpY3NSZXNwb25zZRI/CgRkYXRhGAEgAygLMjEuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5NZXRyaWNEZXNjcmlwdG9yEloKBG1ldGEYAiABKAsyTC5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkxpc3RNZXRyaWNzUmVzcG9uc2UuTGlzdE1ldHJpY3NSZXNwb25zZU1ldGEaGQoXTGlzdE1ldHJpY3NSZXNwb25zZU1ldGEitAEKFUFkVG90YWxzUmVxdWVzdEZpbHRlchIcCg9vcmdhbml6YXRpb25faWQYASABKAlIAIgBARIRCglldmVudF9pZHMYAiADKAQSEQoJdG9waWNfaWRzGAMgAygJEkMKCWJyZWFrZG93bhgEIAEoDjIwLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uTWV0cmljQnJlYWtkb3duQhIKEF9vcmdhbml6YXRpb25faWQiWQoPQWRUb3RhbHNSZXF1ZXN0EkYKBmZpbHRlchgBIAEoCzI2LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uQWRUb3RhbHNSZXF1ZXN0RmlsdGVyItUPChRBZFRvdGFsc1Jlc3BvbnNlRGF0YRIVCghldmVudF9pZBgBIAEoBEgAiAEBEhgKC3F1ZXN0aW9uX2lkGAIgASgJSAGIAQESFQoIcGxhdGZvcm0YAyABKAlIAogBARIZCgxhZF91bml0X3R5cGUYBCABKAlIA4gBARIUCgdhZF90eXBlGAUgASgJSASIAQESFgoJYWRfZm9ybWF0GAYgASgJSAWIAQESFQoIY3RhX3R5cGUYByABKAlIBogBARIcChR0b3RhbF9hZF9pbXByZXNzaW9ucxgKIAEoDRIhChl0b3RhbF9kaXNwbGF5X2ltcHJlc3Npb25zGAsgASgNEiIKGnRvdGFsX2FkX3ZpZGVvX2ltcHJlc3Npb25zGAwgASgNEh0KFXRvdGFsX2FkX3ZpZGVvX3BsYXllZBgNIAEoDRIXCg90b3RhbF9hZF9jbGlja3MYFCABKA0SHQoVdG90YWxfYWRfaW50ZXJhY3Rpb25zGBUgASgNEhQKDGFkX3ZpZGVvX3EyNRgWIAEoDRIUCgxhZF92aWRlb19xNTAYFyABKA0SFAoMYWRfdmlkZW9fcTc1GBggASgNEhkKEWFkX3ZpZGVvX2NvbXBsZXRlGBkgASgNEhIKCmFkX3JlcGxheXMYGiABKA0SEgoKYWRfdW5tdXRlcxgbIAEoDRIhChl0b3RhbF9hZF9iYW5uZXJfbmF2aWdhdGVkGBwgASgNEiEKGXRvdGFsX2FkX2J1dHRvbl9uYXZpZ2F0ZWQYHSABKA0SFgoOYWRfdG90YWxfcmVhY2gYHiABKA0SGwoTdG90YWxfZXZlbnRfdmlld2VycxgfIAEoDRIgChh1bmlxX2FkX2Jhbm5lcl9uYXZpZ2F0ZWQYICABKA0SIAoYdW5pcV9hZF9idXR0b25fbmF2aWdhdGVkGCEgASgNEhwKFHVuaXFfYWRfdmlkZW9fcGxheWVkGCIgASgNEhMKC2F2ZXJhZ2VfY3RyGCggASgBEhsKE2FkX2ludGVyYWN0aW9uX3JhdGUYKSABKAESHQoVdmlkZW9fY29tcGxldGlvbl9yYXRlGCogASgBEhQKDGFkX3JlYWNoX3BjdBgrIAEoARIWCg5hZF9yZXBsYXlfcmF0ZRgsIAEoARIUCgxhZF92aWV3X3JhdGUYLSABKAESFAoMYWRfZnJlcXVlbmN5GC4gASgBEhYKDmFkX3VubXV0ZV9yYXRlGC8gASgBEhoKEmFkX2NvbnZlcnNpb25fcmF0ZRgwIAEoARIWCg5hZF9jb252ZXJzaW9ucxgyIAEoDRIYChBhZF9lbmdhZ2VkX3ZpZXdzGDMgASgNEhoKDWFkX2VuZ2FnZW1lbnQYNCABKAFIB4gBARITCgthZF9hdXRvcGxheRg8IAEoCBIZChFhZF9hdWRpb19wcmlvcml0eRg9IAEoCBIUCgdhZF9uYW1lGEYgASgJSAiIAQESGgoNY2FtcGFpZ25fbmFtZRhHIAEoCUgJiAEBEhUKCGFkX2dyb3VwGEggASgJSAqIAQESFAoHYWRfdW5pdBhJIAEoDUgLiAEBEjwKE21vZGVyYXRpb25fc3RhcnRfYXQYSiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAyIAQESOgoRbW9kZXJhdGlvbl9lbmRfYXQYSyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSA2IAQESJAoXbW9kZXJhdGlvbl9kdXJhdGlvbl9zZWMYTCABKA1IDogBARIXCgpldmVudF9uYW1lGFAgASgJSA+IAQESEwoGc2VyaWVzGFEgASgJSBCIAQESEwoGbGVhZ3VlGFIgASgJSBGIAQESOQoQZXZlbnRfc3RhcnRfdGltZRhTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIEogBARI3Cg5ldmVudF9lbmRfdGltZRhUIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIE4gBARIZCgxhY3RpdmF0ZWRfYnkYWiABKA1IFIgBARIjChZhY3RpdmF0aW9uX2luc3RhbmNlX2lkGFsgASgJSBWIAQESHwoSYWN0aXZhdGlvbl9kZXRhaWxzGFwgASgJSBaIAQFCCwoJX2V2ZW50X2lkQg4KDF9xdWVzdGlvbl9pZEILCglfcGxhdGZvcm1CDwoNX2FkX3VuaXRfdHlwZUIKCghfYWRfdHlwZUIMCgpfYWRfZm9ybWF0QgsKCV9jdGFfdHlwZUIQCg5fYWRfZW5nYWdlbWVudEIKCghfYWRfbmFtZUIQCg5fY2FtcGFpZ25fbmFtZUILCglfYWRfZ3JvdXBCCgoIX2FkX3VuaXRCFgoUX21vZGVyYXRpb25fc3RhcnRfYXRCFAoSX21vZGVyYXRpb25fZW5kX2F0QhoKGF9tb2RlcmF0aW9uX2R1cmF0aW9uX3NlY0INCgtfZXZlbnRfbmFtZUIJCgdfc2VyaWVzQgkKB19sZWFndWVCEwoRX2V2ZW50X3N0YXJ0X3RpbWVCEQoPX2V2ZW50X2VuZF90aW1lQg8KDV9hY3RpdmF0ZWRfYnlCGQoXX2FjdGl2YXRpb25faW5zdGFuY2VfaWRCFQoTX2FjdGl2YXRpb25fZGV0YWlscyLFAQoQQWRUb3RhbHNSZXNwb25zZRJDCgRkYXRhGAEgAygLMjUuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5BZFRvdGFsc1Jlc3BvbnNlRGF0YRJUCgRtZXRhGAIgASgLMkYuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5BZFRvdGFsc1Jlc3BvbnNlLkFkVG90YWxzUmVzcG9uc2VNZXRhGhYKFEFkVG90YWxzUmVzcG9uc2VNZXRhIq8CChZBZERldGFpbHNSZXF1ZXN0RmlsdGVyEhwKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUgAiAEBEhEKCWV2ZW50X2lkcxgCIAMoBBIRCgl0b3BpY19pZHMYAyADKAkSPAoGcGVyaW9kGAQgASgLMicuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYxLmNvbW1vbi5QZXJpb2RIAYgBARIeChFwbGF0Zm9ybV9jYXRlZ29yeRgFIAEoCUgCiAEBEhMKC3BsYXRmb3JtX29zGAYgAygJEhEKCWNvdW50cmllcxgHIAMoCRIPCgJ0ehgIIAEoCUgDiAEBQhIKEF9vcmdhbml6YXRpb25faWRCCQoHX3BlcmlvZEIUChJfcGxhdGZvcm1fY2F0ZWdvcnlCBQoDX3R6IlsKEEFkRGV0YWlsc1JlcXVlc3QSRwoGZmlsdGVyGAEgASgLMjcuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5BZERldGFpbHNSZXF1ZXN0RmlsdGVyIr4NChRBZERldGFpbHNSZXNwb25zZVJvdxIQCghldmVudF9pZBgBIAEoBBITCgtxdWVzdGlvbl9pZBgCIAEoCRIQCghwbGF0Zm9ybRgKIAEoCRIcChR0b3RhbF9hZF9pbXByZXNzaW9ucxgUIAEoDRIhChl0b3RhbF9kaXNwbGF5X2ltcHJlc3Npb25zGBUgASgNEiIKGnRvdGFsX2FkX3ZpZGVvX2ltcHJlc3Npb25zGBYgASgNEh0KFXRvdGFsX2FkX3ZpZGVvX3BsYXllZBgXIAEoDRIXCg90b3RhbF9hZF9jbGlja3MYGCABKA0SHQoVdG90YWxfYWRfaW50ZXJhY3Rpb25zGBkgASgNEhQKDGFkX3ZpZGVvX3EyNRgaIAEoDRIUCgxhZF92aWRlb19xNTAYGyABKA0SFAoMYWRfdmlkZW9fcTc1GBwgASgNEhkKEWFkX3ZpZGVvX2NvbXBsZXRlGB0gASgNEhIKCmFkX3JlcGxheXMYHiABKA0SEgoKYWRfdW5tdXRlcxgfIAEoDRIgChh1bmlxX2FkX2Jhbm5lcl9uYXZpZ2F0ZWQYICABKA0SIAoYdW5pcV9hZF9idXR0b25fbmF2aWdhdGVkGCEgASgNEhwKFHVuaXFfYWRfdmlkZW9fcGxheWVkGCIgASgNEhYKDmFkX3RvdGFsX3JlYWNoGCggASgNEhgKEGFkX2VuZ2FnZWRfdmlld3MYKSABKA0SFgoOYWRfY29udmVyc2lvbnMYKiABKA0SGwoTdG90YWxfZXZlbnRfdmlld2VycxgrIAEoDRITCgthdmVyYWdlX2N0chgyIAEoARIbChNhZF9pbnRlcmFjdGlvbl9yYXRlGDMgASgBEh0KFXZpZGVvX2NvbXBsZXRpb25fcmF0ZRg0IAEoARIWCg5hZF9yZXBsYXlfcmF0ZRg1IAEoARIUCgxhZF92aWV3X3JhdGUYNiABKAESFAoMYWRfZnJlcXVlbmN5GDcgASgBEhYKDmFkX3VubXV0ZV9yYXRlGDggASgBEhQKDGFkX3JlYWNoX3BjdBg5IAEoARIaChJhZF9jb252ZXJzaW9uX3JhdGUYOiABKAESGgoNYWRfZW5nYWdlbWVudBg7IAEoAUgAiAEBEhMKC2FkX2F1dG9wbGF5GDwgASgIEhkKEWFkX2F1ZGlvX3ByaW9yaXR5GD0gASgIEhQKB2FkX25hbWUYRiABKAlIAYgBARIaCg1jYW1wYWlnbl9uYW1lGEcgASgJSAKIAQESFQoIYWRfZ3JvdXAYSCABKAlIA4gBARIUCgdhZF91bml0GEkgASgNSASIAQESPAoTbW9kZXJhdGlvbl9zdGFydF9hdBhKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARI6ChFtb2RlcmF0aW9uX2VuZF9hdBhLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBogBARIkChdtb2RlcmF0aW9uX2R1cmF0aW9uX3NlYxhMIAEoDUgHiAEBEhcKCmV2ZW50X25hbWUYUCABKAlICIgBARITCgZzZXJpZXMYUSABKAlICYgBARITCgZsZWFndWUYUiABKAlICogBARI5ChBldmVudF9zdGFydF90aW1lGFMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgLiAEBEjcKDmV2ZW50X2VuZF90aW1lGFQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgMiAEBEhkKDGFjdGl2YXRlZF9ieRhaIAEoDUgNiAEBEiMKFmFjdGl2YXRpb25faW5zdGFuY2VfaWQYWyABKAlIDogBARIfChJhY3RpdmF0aW9uX2RldGFpbHMYXCABKAlID4gBAUIQCg5fYWRfZW5nYWdlbWVudEIKCghfYWRfbmFtZUIQCg5fY2FtcGFpZ25fbmFtZUILCglfYWRfZ3JvdXBCCgoIX2FkX3VuaXRCFgoUX21vZGVyYXRpb25fc3RhcnRfYXRCFAoSX21vZGVyYXRpb25fZW5kX2F0QhoKGF9tb2RlcmF0aW9uX2R1cmF0aW9uX3NlY0INCgtfZXZlbnRfbmFtZUIJCgdfc2VyaWVzQgkKB19sZWFndWVCEwoRX2V2ZW50X3N0YXJ0X3RpbWVCEQoPX2V2ZW50X2VuZF90aW1lQg8KDV9hY3RpdmF0ZWRfYnlCGQoXX2FjdGl2YXRpb25faW5zdGFuY2VfaWRCFQoTX2FjdGl2YXRpb25fZGV0YWlscyLJAQoRQWREZXRhaWxzUmVzcG9uc2USQwoEZGF0YRgBIAMoCzI1LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uQWREZXRhaWxzUmVzcG9uc2VSb3cSVgoEbWV0YRgCIAEoCzJILnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uQWREZXRhaWxzUmVzcG9uc2UuQWREZXRhaWxzUmVzcG9uc2VNZXRhGhcKFUFkRGV0YWlsc1Jlc3BvbnNlTWV0YSKUAgoZQWRQYXVzZVRvdGFsUmVxdWVzdEZpbHRlchIcCg9vcmdhbml6YXRpb25faWQYASABKAlIAIgBARIRCglldmVudF9pZHMYAiADKAQSEQoJdG9waWNfaWRzGAMgAygJEkgKCWJyZWFrZG93bhgEIAEoDjIwLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uTWV0cmljQnJlYWtkb3duSAGIAQESPAoGcGVyaW9kGAUgASgLMicuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYxLmNvbW1vbi5QZXJpb2RIAogBAUISChBfb3JnYW5pemF0aW9uX2lkQgwKCl9icmVha2Rvd25CCQoHX3BlcmlvZCJhChNBZFBhdXNlVG90YWxSZXF1ZXN0EkoKBmZpbHRlchgBIAEoCzI6LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uQWRQYXVzZVRvdGFsUmVxdWVzdEZpbHRlciKhBgoaQWRQYXVzZUV4dFRvdGFsUmVzcG9uc2VSb3cSFQoIZXZlbnRfaWQYASABKARIAIgBARIYCgtxdWVzdGlvbl9pZBgCIAEoCUgBiAEBEhUKCHBsYXRmb3JtGAMgASgJSAKIAQESIwobdG90YWxfZXh0ZXJuYWxfYWRfcmVxdWVzdGVkGAogASgNEiAKGHRvdGFsX2V4dGVybmFsX2FkX2xvYWRlZBgLIAEoDRIiChp0b3RhbF9leHRlcm5hbF9hZF9yZW5kZXJlZBgMIAEoDRIgChh0b3RhbF9leHRlcm5hbF9hZF9jbG9zZWQYDSABKA0SHQoVdG90YWxfYWRfaW50ZXJhY3Rpb25zGA4gASgNEiwKJHRvdGFsX2V4dGVybmFsX2FkX2VuZ2FnbWVudF9zZXNzaW9ucxgPIAEoDRIWCg5hZF90b3RhbF9yZWFjaBgUIAEoDRIdChVleHRlcm5hbF9hZF9maWxsX3JhdGUYHiABKAESDgoGYWRfY3RyGB8gASgBEiQKHGV4dGVybmFsX2FkX2ludGVyYWN0aW9uX3JhdGUYICABKAESFAoMYWRfZnJlcXVlbmN5GCEgASgBEhsKE2FkX2ZyZXF1ZW5jeV8xeF9wY3QYIiABKAESGwoTYWRfZnJlcXVlbmN5XzJ4X3BjdBgjIAEoARIeChZhZF9mcmVxdWVuY3lfM3BsdXNfcGN0GCQgASgBEiQKHHBhdXNlX2FkX3RpbWVfdG9faW50ZXJhY3Rpb24YKCABKAESKQohZXh0ZXJuYWxfYWRfZW5nYWdtZW50X3NlY29uZHNfc3VtGCkgASgEEikKIWV4dGVybmFsX2FkX2VuZ2FnbWVudF9zZWNvbmRzX2F2ZxgqIAEoARIwCihhdmVyYWdlX3RpbWVfZXh0ZXJuYWxfYWRfb3ZlcmxheV9zZXNzaW9uGCsgASgBEiwKJHN1bV90aW1lX2V4dGVybmFsX2FkX292ZXJsYXlfc2Vzc2lvbhgsIAEoBEILCglfZXZlbnRfaWRCDgoMX3F1ZXN0aW9uX2lkQgsKCV9wbGF0Zm9ybSLhAgoZQWRQYXVzZVNMVG90YWxSZXNwb25zZVJvdxIVCghldmVudF9pZBgBIAEoBEgAiAEBEhgKC3F1ZXN0aW9uX2lkGAIgASgJSAGIAQESFQoIcGxhdGZvcm0YAyABKAlIAogBARIbChNhZF9jYXJkX2ltcHJlc3Npb25zGAogASgNEh0KFXRvdGFsX2FkX2ludGVyYWN0aW9ucxgLIAEoDRIWCg5hZF90b3RhbF9yZWFjaBgUIAEoDRIOCgZhZF9jdHIYHiABKAESFAoMYWRfZnJlcXVlbmN5GB8gASgBEhsKE2FkX2ZyZXF1ZW5jeV8xeF9wY3QYICABKAESGwoTYWRfZnJlcXVlbmN5XzJ4X3BjdBghIAEoARIeChZhZF9mcmVxdWVuY3lfM3BsdXNfcGN0GCIgASgBQgsKCV9ldmVudF9pZEIOCgxfcXVlc3Rpb25faWRCCwoJX3BsYXRmb3JtIqwCChRBZFBhdXNlVG90YWxSZXNwb25zZRJcCgRtZXRhGAEgASgLMk4uc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5BZFBhdXNlVG90YWxSZXNwb25zZS5BZFBhdXNlVG90YWxSZXNwb25zZU1ldGESTQoIZXh0X2RhdGEYAiADKAsyOy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkFkUGF1c2VFeHRUb3RhbFJlc3BvbnNlUm93EksKB3NsX2RhdGEYAyADKAsyOi5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkFkUGF1c2VTTFRvdGFsUmVzcG9uc2VSb3caGgoYQWRQYXVzZVRvdGFsUmVzcG9uc2VNZXRhKlQKBldwVHlwZRIRCg1XUF9UWVBFX1VOU0VUEAASDgoKV1BfVFlQRV9XUBABEg8KC1dQX1RZUEVfRldQEAISFgoSV1BfVFlQRV9XUF9BTkRfRldQEAMq0gEKD01ldHJpY0JyZWFrZG93bhIaChZNRVRSSUNfQlJFQUtET1dOX1VOU0VUEAASGgoWTUVUUklDX0JSRUFLRE9XTl9FVkVOVBABEh0KGU1FVFJJQ19CUkVBS0RPV05fUVVFU1RJT04QAhIdChlNRVRSSUNfQlJFQUtET1dOX1BMQVRGT1JNEAMSJgoiTUVUUklDX0JSRUFLRE9XTl9QTEFURk9STV9RVUVTVElPThAEEiEKHU1FVFJJQ19CUkVBS0RPV05fQURfVU5JVF9UWVBFEAUqUAoJQWdnUGVyaW9kEgwKCEFQX1VOU0VUEAASCwoHQVBfMU1JThABEgwKCEFQXzFIT1VSEAoSCwoHQVBfMURBWRAUEg0KCUFQXzFNT05USBAeMr0SCglEYXNoYm9hcmQSrQEKEURhc2hib2FyZE92ZXJ2aWV3Ejkuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5EYXNoYm9hcmRPdmVydmlld1JlcXVlc3QaOi5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkRhc2hib2FyZE92ZXJ2aWV3UmVzcG9uc2UiIYqmHRFkYXNoYm9hcmRPdmVydmlld6CmHQKoph0BsKYdARKhAQoORmVhdHVyZWRHcm91cHMSNi5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkZlYXR1cmVkR3JvdXBzUmVxdWVzdBo3LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uRmVhdHVyZWRHcm91cHNSZXNwb25zZSIeiqYdDmZlYXR1cmVkR3JvdXBzoKYdAqimHQGwph0BErUBChNXcE1ldHJpY3NCeVRpbWVMaW5lEjsuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5XcE1ldHJpY3NCeVRpbWVMaW5lUmVxdWVzdBo8LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uV3BNZXRyaWNzQnlUaW1lTGluZVJlc3BvbnNlIiOKph0Td3BNZXRyaWNzQnlUaW1lTGluZaCmHQKoph0BsKYdARKlAQoPVXNlcnNCeVRpbWVMaW5lEjcuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5Vc2Vyc0J5VGltZUxpbmVSZXF1ZXN0Gjguc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5Vc2Vyc0J5VGltZUxpbmVSZXNwb25zZSIfiqYdD3VzZXJzQnlUaW1lTGluZaCmHQKoph0BsKYdARKQAQoKUG9sbHNUb3RhbBIyLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uUG9sbHNUb3RhbFJlcXVlc3QaMi5zdHJlYW1sYXllci5hbmFseXRpY3MudjEucG9sbHMuVG90YWxQb2xsc1Jlc3BvbnNlIhqKph0KcG9sbHNUb3RhbKCmHQKoph0BsKYdARK5AQoUUG9sbHNTdGF0c0J5VGltZUxpbmUSPC5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLlBvbGxzU3RhdHNCeVRpbWVMaW5lUmVxdWVzdBo9LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uUG9sbHNTdGF0c0J5VGltZUxpbmVSZXNwb25zZSIkiqYdFHBvbGxzU3RhdHNCeVRpbWVMaW5loKYdAqimHQGwph0BEtkBChxEZXZpY2VJbnRlcmFjdGlvbnNCeVRpbWVMaW5lEkQuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5EZXZpY2VJbnRlcmFjdGlvbnNCeVRpbWVMaW5lUmVxdWVzdBpFLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uRGV2aWNlSW50ZXJhY3Rpb25zQnlUaW1lTGluZVJlc3BvbnNlIiyKph0cZGV2aWNlSW50ZXJhY3Rpb25zQnlUaW1lTGluZaCmHQKoph0BsKYdARKdAQoNTGlzdENvdW50cmllcxI1LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uTGlzdENvdW50cmllc1JlcXVlc3QaNi5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkxpc3RDb3VudHJpZXNSZXNwb25zZSIdiqYdDWxpc3RDb3VudHJpZXOgph0CqKYdAbCmHQESlQEKC0xpc3RNZXRyaWNzEjMuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5MaXN0TWV0cmljc1JlcXVlc3QaNC5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkxpc3RNZXRyaWNzUmVzcG9uc2UiG4qmHQtsaXN0TWV0cmljc6CmHQKoph0BsKYdARKdAQoNRXhwb3J0TWV0cmljcxI1LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uRXhwb3J0TWV0cmljc1JlcXVlc3QaNi5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkV4cG9ydE1ldHJpY3NSZXNwb25zZSIdiqYdDWV4cG9ydE1ldHJpY3Ogph0CqKYdAbCmHQESrgEKEUV4cG9ydEV4dGVybmFsQWRzEjkuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5FeHBvcnRFeHRlcm5hbEFkc1JlcXVlc3QaOi5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkV4cG9ydEV4dGVybmFsQWRzUmVzcG9uc2UiIoqmHRJhZC5leHBvcnQuZXh0ZXJuYWygph0CqKYdAbCmHQEShwEKB0FkVG90YWwSMC5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkFkVG90YWxzUmVxdWVzdBoxLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uQWRUb3RhbHNSZXNwb25zZSIXiqYdB2FkVG90YWygph0CqKYdAbCmHQESjQEKCUFkRGV0YWlscxIxLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uQWREZXRhaWxzUmVxdWVzdBoyLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uQWREZXRhaWxzUmVzcG9uc2UiGYqmHQlhZERldGFpbHOgph0CqKYdAbCmHQESmwEKDEFkUGF1c2VUb3RhbBI0LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uQWRQYXVzZVRvdGFsUmVxdWVzdBo1LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uQWRQYXVzZVRvdGFsUmVzcG9uc2UiHoqmHQ5hZC5wYXVzZS50b3RhbKCmHQKoph0BsKYdARoQirUYDGFuYWx5dGljcy52MkKiAQojY29tLnN0cmVhbWxheWVyLmFuYWx5dGljcy5zdHVkaW8udjJCFlN0cmVhbUxheWVyU3R1ZGlvUHJvdG9QAVpYZ2l0aHViLmNvbS9zdHJlYW1sYXllci9zbC1wcm90b2ZpbGVzLy5idWlsZC9nby9zdHJlYW1sYXllci9hbmFseXRpY3MvdjIvc3R1ZGlvO3NsX3N0dWRpb6ICBlNMX0FQSWIGcHJvdG8z", [file_google_protobuf_timestamp, file_streamlayer_common_streamlayer_common, file_streamlayer_analytics_v1_common_analytics_common, file_streamlayer_analytics_v1_polls_polls]);
15
+ fileDesc("Ci9zdHJlYW1sYXllci9hbmFseXRpY3MvdjIvc3R1ZGlvL2Rhc2hib2FyZC5wcm90bxIfc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpbyJRCg5DYXJkU3RhdGlzdGljcxINCgV0b3RhbBgBIAEoBRIOCgZ2aWV3ZWQYAiABKAUSDgoGb3BlbmVkGAMgASgFEhAKCGFuc3dlcmVkGAQgASgFIqwGCh1EYXNoYm9hcmRPdmVydmlld1Jlc3BvbnNlRGF0YRIVCg10b3RhbF92aWV3ZXJzGAEgASgFEh8KF3RvdGFsX3JlZ2lzdHJlZF92aWV3ZXJzGAIgASgFEh0KFXRvdGFsX2VuZ2FnZWRfdmlld2VycxgDIAEoBRIaChJ0b3RhbF9pbnRlcmFjdGlvbnMYBCABKAUSFAoMbGl2ZV92aWV3ZXJzGAUgASgFEhwKFGxpdmVfZW5nYWdlZF92aWV3ZXJzGAYgASgFEiUKHWludGVyYWN0aW9uc19wZXJfZW5nYWdlZF91c2VyGAcgASgBEh4KFmxpdmVfcmVnaXN0cmVkX3ZpZXdlcnMYHiABKAUSGAoQdG90YWxfd3Bfc3RhcnRlZBgIIAEoBRIhChl0b3RhbF93cF9zZXNzaW9uc19zdGFydGVkGC0gASgFEh0KFXVzZXJzX2VuZ2FnZWRfd2l0aF93cBgJIAEoBRIkChx1c2Vyc19lbmdhZ2VkX3dpdGhfYWN0aXZlX3dwGAogASgFEhIKCmFjdGl2ZV93cHMYCyABKAUSGwoTYXZnX3VzZXJzX2FjdGl2ZV93cBgMIAEoARIeChZhdmdfYWN0aXZlX3dwX2R1cmF0aW9uGA0gASgBEikKIWxpdmVfdXNlcnNfZW5nYWdlZF93aXRoX2FjdGl2ZV93cBgOIAEoBRIXCg9saXZlX2FjdGl2ZV93cHMYDyABKAUSGwoTdG90YWxfbWluX3dwMl91c2VycxgQIAEoARIbChN0b3RhbF9taW5fd3AzX3VzZXJzGBEgASgBEhsKE3RvdGFsX21pbl93cDRfdXNlcnMYEiABKAESGwoTdG90YWxfbWluX3dwNV91c2VycxgTIAEoARIbChN0b3RhbF9taW5fd3A2X3VzZXJzGBQgASgBEhsKE3RvdGFsX21pbl93cDdfdXNlcnMYFSABKAESGwoTdG90YWxfbWluX3dwOF91c2VycxgWIAEoARIbChN0b3RhbF9taW5fd3A5X3VzZXJzGBcgASgBEh4KFnRvdGFsX3VzZXJzX3N0YXJ0ZWRfd3AYGCABKAUi/gIKHkRhc2hib2FyZE92ZXJ2aWV3UmVxdWVzdEZpbHRlchIcCg9vcmdhbml6YXRpb25faWQYASABKAlIAIgBARIRCglldmVudF9pZHMYAiADKAQSNwoGcGVyaW9kGAMgASgLMicuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYxLmNvbW1vbi5QZXJpb2QSFQoEZGF0ZRgEIAEoCUICGAFIAYgBARIRCgljb3VudHJpZXMYBSADKAkSGQoMbGl2ZV9tZXRyaWNzGAYgASgISAKIAQESFAoDZndwGAcgASgIQgIYAUgDiAEBEj0KB3dwX3R5cGUYCCABKA4yJy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLldwVHlwZUgEiAEBEg8KAnR6GAkgASgJSAWIAQFCEgoQX29yZ2FuaXphdGlvbl9pZEIHCgVfZGF0ZUIPCg1fbGl2ZV9tZXRyaWNzQgYKBF9md3BCCgoIX3dwX3R5cGVCBQoDX3R6ImsKGERhc2hib2FyZE92ZXJ2aWV3UmVxdWVzdBJPCgZmaWx0ZXIYASABKAsyPy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkRhc2hib2FyZE92ZXJ2aWV3UmVxdWVzdEZpbHRlciLyAQoZRGFzaGJvYXJkT3ZlcnZpZXdSZXNwb25zZRJMCgRkYXRhGAEgASgLMj4uc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5EYXNoYm9hcmRPdmVydmlld1Jlc3BvbnNlRGF0YRJmCgRtZXRhGAIgASgLMlguc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5EYXNoYm9hcmRPdmVydmlld1Jlc3BvbnNlLkRhc2hib2FyZE92ZXJ2aWV3UmVzcG9uc2VNZXRhGh8KHURhc2hib2FyZE92ZXJ2aWV3UmVzcG9uc2VNZXRhIuYBChtGZWF0dXJlZEdyb3Vwc1JlcXVlc3RGaWx0ZXISHAoPb3JnYW5pemF0aW9uX2lkGAEgASgJSACIAQESEQoJZXZlbnRfaWRzGAIgAygEEjcKBnBlcmlvZBgDIAEoCzInLnN0cmVhbWxheWVyLmFuYWx5dGljcy52MS5jb21tb24uUGVyaW9kEhUKBGRhdGUYBCABKAlCAhgBSAGIAQESEQoJY291bnRyaWVzGAUgAygJEg8KAnR6GAYgASgJSAKIAQFCEgoQX29yZ2FuaXphdGlvbl9pZEIHCgVfZGF0ZUIFCgNfdHoiZQoVRmVhdHVyZWRHcm91cHNSZXF1ZXN0EkwKBmZpbHRlchgBIAEoCzI8LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uRmVhdHVyZWRHcm91cHNSZXF1ZXN0RmlsdGVyIpUFChpGZWF0dXJlZEdyb3Vwc1Jlc3BvbnNlRGF0YRIVCg10b3RhbF92aWV3ZXJzGAEgASgFEh0KFXRvdGFsX2VuZ2FnZWRfdmlld2VycxgCIAEoBRIaChJ0b3RhbF9wcm9tcHRzX3NlbnQYAyABKAUSKAogdG90YWxfdW5pcXVlX3ZpZXdlcnNfb3Blbl9wcm9tcHQYBCABKAUSLAokdG90YWxfdW5pcXVlX3ZpZXdlcnNfYW5zd2VyZWRfcHJvbXB0GAUgASgFEjEKKWF2ZXJhZ2VfcHJvbXB0c19vcGVuZWRfcGVyX2VuZ2FnZWRfdmlld2VyGAYgASgBEhwKFHRvdGFsX3Byb21wdHNfb3BlbmVkGAcgASgFEhoKEnRvdGFsX2ludGVyYWN0aW9ucxgIIAEoBRJCCglwb2xsX2NhcmQYCSABKAsyLy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkNhcmRTdGF0aXN0aWNzEkQKC3RyaXZpYV9jYXJkGAogASgLMi8uc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5DYXJkU3RhdGlzdGljcxJICg9wcmVkaWN0aW9uX2NhcmQYCyABKAsyLy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkNhcmRTdGF0aXN0aWNzEkUKDGZhY3RvaWRfY2FyZBgMIAEoCzIvLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uQ2FyZFN0YXRpc3RpY3MSRQoMdHdpdHRlcl9jYXJkGA0gASgLMi8uc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5DYXJkU3RhdGlzdGljcyLjAQoWRmVhdHVyZWRHcm91cHNSZXNwb25zZRJJCgRkYXRhGAEgASgLMjsuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5GZWF0dXJlZEdyb3Vwc1Jlc3BvbnNlRGF0YRJgCgRtZXRhGAIgASgLMlIuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5GZWF0dXJlZEdyb3Vwc1Jlc3BvbnNlLkZlYXR1cmVkR3JvdXBzUmVzcG9uc2VNZXRhGhwKGkZlYXR1cmVkR3JvdXBzUmVzcG9uc2VNZXRhIoQDCh5NZXRyaWNzQnlUaW1lTGluZVJlcXVlc3RGaWx0ZXISHAoPb3JnYW5pemF0aW9uX2lkGAEgASgJSACIAQESEQoJZXZlbnRfaWRzGAIgAygEEhEKCWNvdW50cmllcxgDIAMoCRI8CgZwZXJpb2QYBCABKAsyJy5zdHJlYW1sYXllci5hbmFseXRpY3MudjEuY29tbW9uLlBlcmlvZEgBiAEBEhUKBGRhdGUYBSABKAlCAhgBSAKIAQESPgoKYWdnX3BlcmlvZBgGIAEoDjIqLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uQWdnUGVyaW9kEj0KB3dwX3R5cGUYByABKA4yJy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLldwVHlwZUgDiAEBEg8KAnR6GAggASgJSASIAQFCEgoQX29yZ2FuaXphdGlvbl9pZEIJCgdfcGVyaW9kQgcKBV9kYXRlQgoKCF93cF90eXBlQgUKA190eiJtChpXcE1ldHJpY3NCeVRpbWVMaW5lUmVxdWVzdBJPCgZmaWx0ZXIYASABKAsyPy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLk1ldHJpY3NCeVRpbWVMaW5lUmVxdWVzdEZpbHRlciKeAgofV3BNZXRyaWNzQnlUaW1lTGluZVJlc3BvbnNlRGF0YRISCgp0aW1lX2ZyYW1lGAEgASgDEhUKDXRvdGFsX3dwX3NlZW4YAiABKAUSJAocdXNlcnNfZW5nYWdlZF93aXRoX2FjdGl2ZV93cBgDIAEoBRIdChV1c2Vyc19lbmdhZ2VkX3dpdGhfd3AYBCABKAUSEgoKYWN0aXZlX3dwcxgFIAEoBRIbChNhdmdfdXNlcnNfYWN0aXZlX3dwGAYgASgBEh4KFmF2Z19hY3RpdmVfd3BfZHVyYXRpb24YByABKAESHAoUdG90YWxfbWluX3dwXzJfdXNlcnMYCCABKAESHAoUdG90YWxfbWluX3dwXzNfdXNlcnMYCSABKAEi/AEKG1dwTWV0cmljc0J5VGltZUxpbmVSZXNwb25zZRJOCgRkYXRhGAEgAygLMkAuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5XcE1ldHJpY3NCeVRpbWVMaW5lUmVzcG9uc2VEYXRhEmoKBG1ldGEYAiABKAsyXC5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLldwTWV0cmljc0J5VGltZUxpbmVSZXNwb25zZS5XcE1ldHJpY3NCeVRpbWVMaW5lUmVzcG9uc2VNZXRhGiEKH1dwTWV0cmljc0J5VGltZUxpbmVSZXNwb25zZU1ldGEiaQoWVXNlcnNCeVRpbWVMaW5lUmVxdWVzdBJPCgZmaWx0ZXIYASABKAsyPy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLk1ldHJpY3NCeVRpbWVMaW5lUmVxdWVzdEZpbHRlciLvAgohUG9sbHNTdGF0c0J5VGltZUxpbmVSZXF1ZXN0RmlsdGVyEhwKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUgAiAEBEhAKCGV2ZW50X2lkGAIgASgEEhEKCWNvdW50cmllcxgDIAMoCRI8CgZwZXJpb2QYBCABKAsyJy5zdHJlYW1sYXllci5hbmFseXRpY3MudjEuY29tbW9uLlBlcmlvZEgBiAEBEj4KCmFnZ19wZXJpb2QYBSABKA4yKi5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkFnZ1BlcmlvZBJDCgp0b3BpY190eXBlGAYgASgOMiouc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYxLmNvbW1vbi5Ub3BpY1R5cGVIAogBARIPCgJ0ehgHIAEoCUgDiAEBQhIKEF9vcmdhbml6YXRpb25faWRCCQoHX3BlcmlvZEINCgtfdG9waWNfdHlwZUIFCgNfdHoicQobUG9sbHNTdGF0c0J5VGltZUxpbmVSZXF1ZXN0ElIKBmZpbHRlchgBIAEoCzJCLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uUG9sbHNTdGF0c0J5VGltZUxpbmVSZXF1ZXN0RmlsdGVyIskBChFQb2xsc1RvdGFsUmVxdWVzdBJaCgZmaWx0ZXIYASABKAsySi5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLlBvbGxzVG90YWxSZXF1ZXN0LlBvbGxzVG90YWxSZXF1ZXN0RmlsdGVyGlgKF1BvbGxzVG90YWxSZXF1ZXN0RmlsdGVyEhcKD29yZ2FuaXphdGlvbl9pZBgBIAEoCRIRCglldmVudF9pZHMYAiADKAQSEQoJdG9waWNfaWRzGAMgAygJImAKC01ldHJpY3NEYXRhEg0KBXRvdGFsGAEgASgFEg4KBm9wZW5lZBgCIAEoBRIRCgluYXZpZ2F0ZWQYAyABKAUSEAoIcmVjZWl2ZWQYBCABKAUSDQoFdm90ZWQYBSABKAUisQIKIFBvbGxzU3RhdHNCeVRpbWVMaW5lUmVzcG9uc2VEYXRhEhIKCnRpbWVfZnJhbWUYASABKAkSPAoGY29tbW9uGAIgASgLMiwuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5NZXRyaWNzRGF0YRJeCgdieV90eXBlGAMgAygLMk0uc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5Qb2xsc1N0YXRzQnlUaW1lTGluZVJlc3BvbnNlRGF0YS5CeVR5cGVFbnRyeRpbCgtCeVR5cGVFbnRyeRILCgNrZXkYASABKAkSOwoFdmFsdWUYAiABKAsyLC5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLk1ldHJpY3NEYXRhOgI4ASKBAgocUG9sbHNTdGF0c0J5VGltZUxpbmVSZXNwb25zZRJPCgRkYXRhGAEgAygLMkEuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5Qb2xsc1N0YXRzQnlUaW1lTGluZVJlc3BvbnNlRGF0YRJsCgRtZXRhGAIgASgLMl4uc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5Qb2xsc1N0YXRzQnlUaW1lTGluZVJlc3BvbnNlLlBvbGxzU3RhdHNCeVRpbWVMaW5lUmVzcG9uc2VNZXRhGiIKIFBvbGxzU3RhdHNCeVRpbWVMaW5lUmVzcG9uc2VNZXRhInkKG1VzZXJzQnlUaW1lTGluZVJlc3BvbnNlRGF0YRISCgp0aW1lX2ZyYW1lGAEgASgDEhgKEHJlZ2lzdGVyZWRfdXNlcnMYAiABKAUSFQoNdG90YWxfZGV2aWNlcxgDIAEoBRIVCg1lbmdhZ2VkX3VzZXJzGAQgASgFIugBChdVc2Vyc0J5VGltZUxpbmVSZXNwb25zZRJKCgRkYXRhGAEgAygLMjwuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5Vc2Vyc0J5VGltZUxpbmVSZXNwb25zZURhdGESYgoEbWV0YRgCIAEoCzJULnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uVXNlcnNCeVRpbWVMaW5lUmVzcG9uc2UuVXNlcnNCeVRpbWVMaW5lUmVzcG9uc2VNZXRhGh0KG1VzZXJzQnlUaW1lTGluZVJlc3BvbnNlTWV0YSJ2CiNEZXZpY2VJbnRlcmFjdGlvbnNCeVRpbWVMaW5lUmVxdWVzdBJPCgZmaWx0ZXIYASABKAsyPy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLk1ldHJpY3NCeVRpbWVMaW5lUmVxdWVzdEZpbHRlciLGAQooRGV2aWNlSW50ZXJhY3Rpb25zQnlUaW1lTGluZVJlc3BvbnNlRGF0YRISCgp0aW1lX2ZyYW1lGAEgASgDEgwKBGlfb3MYAiABKAUSEAoIaV9wYWRfb3MYAyABKAUSDwoHYW5kcm9pZBgEIAEoBRIYChBhbGxfaW50ZXJhY3Rpb25zGAUgASgFEgsKA3dlYhgGIAEoBRIOCgZtYWNfb3MYByABKAUSDwoHd2luZG93cxgIIAEoBRINCgVsaW51eBgJIAEoBSKpAgokRGV2aWNlSW50ZXJhY3Rpb25zQnlUaW1lTGluZVJlc3BvbnNlElcKBGRhdGEYASADKAsySS5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkRldmljZUludGVyYWN0aW9uc0J5VGltZUxpbmVSZXNwb25zZURhdGESfAoEbWV0YRgCIAEoCzJuLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uRGV2aWNlSW50ZXJhY3Rpb25zQnlUaW1lTGluZVJlc3BvbnNlLkRldmljZUludGVyYWN0aW9uc0J5VGltZUxpbmVSZXNwb25zZU1ldGEaKgooRGV2aWNlSW50ZXJhY3Rpb25zQnlUaW1lTGluZVJlc3BvbnNlTWV0YSKXAQoaTGlzdENvdW50cmllc1JlcXVlc3RGaWx0ZXISHAoPb3JnYW5pemF0aW9uX2lkGAEgASgJSACIAQESPAoGcGVyaW9kGAIgASgLMicuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYxLmNvbW1vbi5QZXJpb2RIAYgBAUISChBfb3JnYW5pemF0aW9uX2lkQgkKB19wZXJpb2QiYwoUTGlzdENvdW50cmllc1JlcXVlc3QSSwoGZmlsdGVyGAEgASgLMjsuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5MaXN0Q291bnRyaWVzUmVxdWVzdEZpbHRlciJJChlMaXN0Q291bnRyaWVzUmVzcG9uc2VEYXRhEg8KB2NvdW50cnkYASABKAkSDgoGYWxwaGEyGAIgASgJEgsKA2NudBgDIAEoBSLeAQoVTGlzdENvdW50cmllc1Jlc3BvbnNlEkgKBGRhdGEYASADKAsyOi5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkxpc3RDb3VudHJpZXNSZXNwb25zZURhdGESXgoEbWV0YRgCIAEoCzJQLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uTGlzdENvdW50cmllc1Jlc3BvbnNlLkxpc3RDb3VudHJpZXNSZXNwb25zZU1ldGEaGwoZTGlzdENvdW50cmllc1Jlc3BvbnNlTWV0YSLDAQoaRXhwb3J0TWV0cmljc1JlcXVlc3RGaWx0ZXISHAoPb3JnYW5pemF0aW9uX2lkGAEgASgJSACIAQESEQoJZXZlbnRfaWRzGAIgAygEEjcKBnBlcmlvZBgDIAEoCzInLnN0cmVhbWxheWVyLmFuYWx5dGljcy52MS5jb21tb24uUGVyaW9kEg8KB21ldHJpY3MYBCADKAkSDwoCdHoYBSABKAlIAYgBAUISChBfb3JnYW5pemF0aW9uX2lkQgUKA190eiJjChRFeHBvcnRNZXRyaWNzUmVxdWVzdBJLCgZmaWx0ZXIYASABKAsyOy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkV4cG9ydE1ldHJpY3NSZXF1ZXN0RmlsdGVyIp4CChVFeHBvcnRNZXRyaWNzUmVzcG9uc2USXgoEZGF0YRgBIAEoCzJQLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uRXhwb3J0TWV0cmljc1Jlc3BvbnNlLkV4cG9ydE1ldHJpY3NSZXNwb25zZURhdGESXgoEbWV0YRgCIAEoCzJQLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uRXhwb3J0TWV0cmljc1Jlc3BvbnNlLkV4cG9ydE1ldHJpY3NSZXNwb25zZU1ldGEaGwoZRXhwb3J0TWV0cmljc1Jlc3BvbnNlTWV0YRooChlFeHBvcnRNZXRyaWNzUmVzcG9uc2VEYXRhEgsKA3VybBgBIAEoCSJnChhFeHBvcnRFeHRlcm5hbEFkc1JlcXVlc3QSSwoGZmlsdGVyGAEgASgLMjsuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5FeHBvcnRNZXRyaWNzUmVxdWVzdEZpbHRlciKxAQoZRXhwb3J0RXh0ZXJuYWxBZHNSZXNwb25zZRJmCgRkYXRhGAEgASgLMlguc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5FeHBvcnRFeHRlcm5hbEFkc1Jlc3BvbnNlLkV4cG9ydEV4dGVybmFsQWRzUmVzcG9uc2VEYXRhGiwKHUV4cG9ydEV4dGVybmFsQWRzUmVzcG9uc2VEYXRhEgsKA3VybBgBIAEoCSKlAgoQTWV0cmljRGVzY3JpcHRvchITCgttZXRyaWNfbmFtZRgBIAEoCRJPCgp2YWx1ZV90eXBlGAIgASgOMjsuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5NZXRyaWNEZXNjcmlwdG9yLlZhbHVlVHlwZRINCgVsYWJlbBgDIAEoCRITCgtkZXNjcmlwdGlvbhgEIAEoCSKGAQoJVmFsdWVUeXBlEhQKEFZBTFVFX1RZUEVfVU5TRVQQABITCg9WQUxVRV9UWVBFX1VJTlQQARIVChFWQUxVRV9UWVBFX0RPVUJMRRACEhYKElZBTFVFX1RZUEVfUEVSQ0VOVBADEh8KG1ZBTFVFX1RZUEVfRFVSQVRJT05fU0VDT05EUxAEIhQKEkxpc3RNZXRyaWNzUmVxdWVzdCLNAQoTTGlzdE1ldHJpY3NSZXNwb25zZRI/CgRkYXRhGAEgAygLMjEuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5NZXRyaWNEZXNjcmlwdG9yEloKBG1ldGEYAiABKAsyTC5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkxpc3RNZXRyaWNzUmVzcG9uc2UuTGlzdE1ldHJpY3NSZXNwb25zZU1ldGEaGQoXTGlzdE1ldHJpY3NSZXNwb25zZU1ldGEiiAMKFUFkVG90YWxzUmVxdWVzdEZpbHRlchIcCg9vcmdhbml6YXRpb25faWQYASABKAlIAIgBARIRCglldmVudF9pZHMYAiADKAQSEQoJdG9waWNfaWRzGAMgAygJEkMKCWJyZWFrZG93bhgEIAEoDjIwLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uTWV0cmljQnJlYWtkb3duEjwKBnBlcmlvZBgFIAEoCzInLnN0cmVhbWxheWVyLmFuYWx5dGljcy52MS5jb21tb24uUGVyaW9kSAGIAQESDwoCdHoYBiABKAlIAogBARIRCgljb3VudHJpZXMYByADKAkSHgoRcGxhdGZvcm1fY2F0ZWdvcnkYCCABKAlIA4gBARITCgtwbGF0Zm9ybV9vcxgJIAMoCRITCgt0b3BpY190eXBlcxgKIAMoDUISChBfb3JnYW5pemF0aW9uX2lkQgkKB19wZXJpb2RCBQoDX3R6QhQKEl9wbGF0Zm9ybV9jYXRlZ29yeSJZCg9BZFRvdGFsc1JlcXVlc3QSRgoGZmlsdGVyGAEgASgLMjYuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5BZFRvdGFsc1JlcXVlc3RGaWx0ZXIi4hUKFEFkVG90YWxzUmVzcG9uc2VEYXRhEhUKCGV2ZW50X2lkGAEgASgESACIAQESGAoLcXVlc3Rpb25faWQYAiABKAlIAYgBARIVCghwbGF0Zm9ybRgDIAEoCUgCiAEBEhkKDGFkX3VuaXRfdHlwZRgEIAEoCUgDiAEBEhQKB2FkX3R5cGUYBSABKAlIBIgBARIWCglhZF9mb3JtYXQYBiABKAlIBYgBARIVCghjdGFfdHlwZRgHIAEoCUgGiAEBEhwKFHRvdGFsX2FkX2ltcHJlc3Npb25zGAogASgNEiEKGXRvdGFsX2Rpc3BsYXlfaW1wcmVzc2lvbnMYCyABKA0SIgoadG90YWxfYWRfdmlkZW9faW1wcmVzc2lvbnMYDCABKA0SHQoVdG90YWxfYWRfdmlkZW9fcGxheWVkGA0gASgNEhsKE2FkX2NhcmRfaW1wcmVzc2lvbnMYDiABKA0SHwoXYWRfY3JlYXRpdmVfaW1wcmVzc2lvbnMYDyABKA0SHgoWYWRfbm90aWZpY2F0aW9uX2NsaWNrcxgQIAEoDRIYChBhZF9tdXRlc191bm11dGVzGBEgASgNEhYKDmFkX3VuaXRzX2NvdW50GBIgASgNEhcKD3RvdGFsX2FkX2NsaWNrcxgUIAEoDRIdChV0b3RhbF9hZF9pbnRlcmFjdGlvbnMYFSABKA0SFAoMYWRfdmlkZW9fcTI1GBYgASgNEhQKDGFkX3ZpZGVvX3E1MBgXIAEoDRIUCgxhZF92aWRlb19xNzUYGCABKA0SGQoRYWRfdmlkZW9fY29tcGxldGUYGSABKA0SEgoKYWRfcmVwbGF5cxgaIAEoDRISCgphZF91bm11dGVzGBsgASgNEiEKGXRvdGFsX2FkX2Jhbm5lcl9uYXZpZ2F0ZWQYHCABKA0SIQoZdG90YWxfYWRfYnV0dG9uX25hdmlnYXRlZBgdIAEoDRIWCg5hZF90b3RhbF9yZWFjaBgeIAEoDRIbChN0b3RhbF9ldmVudF92aWV3ZXJzGB8gASgNEiAKGHVuaXFfYWRfYmFubmVyX25hdmlnYXRlZBggIAEoDRIgChh1bmlxX2FkX2J1dHRvbl9uYXZpZ2F0ZWQYISABKA0SHAoUdW5pcV9hZF92aWRlb19wbGF5ZWQYIiABKA0SEwoLYXZlcmFnZV9jdHIYKCABKAESGwoTYWRfaW50ZXJhY3Rpb25fcmF0ZRgpIAEoARIdChV2aWRlb19jb21wbGV0aW9uX3JhdGUYKiABKAESFAoMYWRfcmVhY2hfcGN0GCsgASgBEhYKDmFkX3JlcGxheV9yYXRlGCwgASgBEhQKDGFkX3ZpZXdfcmF0ZRgtIAEoARIUCgxhZF9mcmVxdWVuY3kYLiABKAESFgoOYWRfdW5tdXRlX3JhdGUYLyABKAESGgoSYWRfY29udmVyc2lvbl9yYXRlGDAgASgBEhYKDmFkX2NvbnZlcnNpb25zGDIgASgNEhgKEGFkX2VuZ2FnZWRfdmlld3MYMyABKA0SGgoNYWRfZW5nYWdlbWVudBg0IAEoAUgHiAEBEhMKC2FkX2F1dG9wbGF5GDwgASgIEhkKEWFkX2F1ZGlvX3ByaW9yaXR5GD0gASgIEhQKB2FkX25hbWUYRiABKAlICIgBARIaCg1jYW1wYWlnbl9uYW1lGEcgASgJSAmIAQESFQoIYWRfZ3JvdXAYSCABKAlICogBARIUCgdhZF91bml0GEkgASgJSAuIAQESPAoTbW9kZXJhdGlvbl9zdGFydF9hdBhKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIDIgBARI6ChFtb2RlcmF0aW9uX2VuZF9hdBhLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIDYgBARIkChdtb2RlcmF0aW9uX2R1cmF0aW9uX3NlYxhMIAEoDUgOiAEBEhcKCmV2ZW50X25hbWUYUCABKAlID4gBARITCgZzZXJpZXMYUSABKAlIEIgBARITCgZsZWFndWUYUiABKAlIEYgBARI5ChBldmVudF9zdGFydF90aW1lGFMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgSiAEBEjcKDmV2ZW50X2VuZF90aW1lGFQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgTiAEBEh4KEWFjdGl2YXRpb25fbWV0aG9kGFogASgJSBSIAQESIAoTYWN0aXZhdGlvbl9pbnN0YW5jZRhbIAEoCUgViAEBEjgKD2FjdGl2YXRpb25fdGltZRhcIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIFogBARIYChBhZF92aWRlb19xMjVfcGN0GGQgASgBEhgKEGFkX3ZpZGVvX3E1MF9wY3QYZSABKAESGAoQYWRfdmlkZW9fcTc1X3BjdBhmIAEoARIdChVhZF92aWRlb19jb21wbGV0ZV9wY3QYZyABKAESIAoTYWRfZnJlcXVlbmN5XzF4X3BjdBhoIAEoAUgXiAEBEiAKE2FkX2ZyZXF1ZW5jeV8yeF9wY3QYaSABKAFIGIgBARIjChZhZF9mcmVxdWVuY3lfM3BsdXNfcGN0GGogASgBSBmIAQESGgoSY3RhX3R5cGVfYmFzaWNfcGN0GGsgASgBEiIKGmN0YV90eXBlX2FkZF90b193YWxsZXRfcGN0GGwgASgBEiEKGWN0YV90eXBlX3NlbmRfdG9fdXNlcl9wY3QYbSABKAESGwoTYWRfZW5nYWdlbWVudF9kZXB0aBhuIAEoARIbChNhZF9lbmdhZ2VkX3Nlc3Npb25zGG8gASgNEhYKDmFkX3N1bV9lbmdfc2VjGHAgASgEEhkKEWFkX2Zvcm1hdHNfc2VydmVkGHEgAygJEhgKEGRldmljZV90YXJnZXRpbmcYciADKAUSFwoKZXZlbnRfZGF0ZRhzIAEoCUgaiAEBEhsKDmV2ZW50X2R1cmF0aW9uGHQgASgNSBuIAQFCCwoJX2V2ZW50X2lkQg4KDF9xdWVzdGlvbl9pZEILCglfcGxhdGZvcm1CDwoNX2FkX3VuaXRfdHlwZUIKCghfYWRfdHlwZUIMCgpfYWRfZm9ybWF0QgsKCV9jdGFfdHlwZUIQCg5fYWRfZW5nYWdlbWVudEIKCghfYWRfbmFtZUIQCg5fY2FtcGFpZ25fbmFtZUILCglfYWRfZ3JvdXBCCgoIX2FkX3VuaXRCFgoUX21vZGVyYXRpb25fc3RhcnRfYXRCFAoSX21vZGVyYXRpb25fZW5kX2F0QhoKGF9tb2RlcmF0aW9uX2R1cmF0aW9uX3NlY0INCgtfZXZlbnRfbmFtZUIJCgdfc2VyaWVzQgkKB19sZWFndWVCEwoRX2V2ZW50X3N0YXJ0X3RpbWVCEQoPX2V2ZW50X2VuZF90aW1lQhQKEl9hY3RpdmF0aW9uX21ldGhvZEIWChRfYWN0aXZhdGlvbl9pbnN0YW5jZUISChBfYWN0aXZhdGlvbl90aW1lQhYKFF9hZF9mcmVxdWVuY3lfMXhfcGN0QhYKFF9hZF9mcmVxdWVuY3lfMnhfcGN0QhkKF19hZF9mcmVxdWVuY3lfM3BsdXNfcGN0Qg0KC19ldmVudF9kYXRlQhEKD19ldmVudF9kdXJhdGlvbiKMAwoWQWRUb3RhbHNSZXNwb25zZUxldmVscxJGCgdzdW1tYXJ5GAEgASgLMjUuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5BZFRvdGFsc1Jlc3BvbnNlRGF0YRJHCghieV9ldmVudBgCIAMoCzI1LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uQWRUb3RhbHNSZXNwb25zZURhdGESSgoLYnlfcXVlc3Rpb24YAyADKAsyNS5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkFkVG90YWxzUmVzcG9uc2VEYXRhEkoKC2J5X3BsYXRmb3JtGAQgAygLMjUuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5BZFRvdGFsc1Jlc3BvbnNlRGF0YRJJCgpieV9hZF91bml0GAUgAygLMjUuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5BZFRvdGFsc1Jlc3BvbnNlRGF0YSLHAQoQQWRUb3RhbHNSZXNwb25zZRJFCgRkYXRhGAEgASgLMjcuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5BZFRvdGFsc1Jlc3BvbnNlTGV2ZWxzElQKBG1ldGEYAiABKAsyRi5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkFkVG90YWxzUmVzcG9uc2UuQWRUb3RhbHNSZXNwb25zZU1ldGEaFgoUQWRUb3RhbHNSZXNwb25zZU1ldGEirwIKFkFkRGV0YWlsc1JlcXVlc3RGaWx0ZXISHAoPb3JnYW5pemF0aW9uX2lkGAEgASgJSACIAQESEQoJZXZlbnRfaWRzGAIgAygEEhEKCXRvcGljX2lkcxgDIAMoCRI8CgZwZXJpb2QYBCABKAsyJy5zdHJlYW1sYXllci5hbmFseXRpY3MudjEuY29tbW9uLlBlcmlvZEgBiAEBEh4KEXBsYXRmb3JtX2NhdGVnb3J5GAUgASgJSAKIAQESEwoLcGxhdGZvcm1fb3MYBiADKAkSEQoJY291bnRyaWVzGAcgAygJEg8KAnR6GAggASgJSAOIAQFCEgoQX29yZ2FuaXphdGlvbl9pZEIJCgdfcGVyaW9kQhQKEl9wbGF0Zm9ybV9jYXRlZ29yeUIFCgNfdHoiWwoQQWREZXRhaWxzUmVxdWVzdBJHCgZmaWx0ZXIYASABKAsyNy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkFkRGV0YWlsc1JlcXVlc3RGaWx0ZXIivg0KFEFkRGV0YWlsc1Jlc3BvbnNlUm93EhAKCGV2ZW50X2lkGAEgASgEEhMKC3F1ZXN0aW9uX2lkGAIgASgJEhAKCHBsYXRmb3JtGAogASgJEhwKFHRvdGFsX2FkX2ltcHJlc3Npb25zGBQgASgNEiEKGXRvdGFsX2Rpc3BsYXlfaW1wcmVzc2lvbnMYFSABKA0SIgoadG90YWxfYWRfdmlkZW9faW1wcmVzc2lvbnMYFiABKA0SHQoVdG90YWxfYWRfdmlkZW9fcGxheWVkGBcgASgNEhcKD3RvdGFsX2FkX2NsaWNrcxgYIAEoDRIdChV0b3RhbF9hZF9pbnRlcmFjdGlvbnMYGSABKA0SFAoMYWRfdmlkZW9fcTI1GBogASgNEhQKDGFkX3ZpZGVvX3E1MBgbIAEoDRIUCgxhZF92aWRlb19xNzUYHCABKA0SGQoRYWRfdmlkZW9fY29tcGxldGUYHSABKA0SEgoKYWRfcmVwbGF5cxgeIAEoDRISCgphZF91bm11dGVzGB8gASgNEiAKGHVuaXFfYWRfYmFubmVyX25hdmlnYXRlZBggIAEoDRIgChh1bmlxX2FkX2J1dHRvbl9uYXZpZ2F0ZWQYISABKA0SHAoUdW5pcV9hZF92aWRlb19wbGF5ZWQYIiABKA0SFgoOYWRfdG90YWxfcmVhY2gYKCABKA0SGAoQYWRfZW5nYWdlZF92aWV3cxgpIAEoDRIWCg5hZF9jb252ZXJzaW9ucxgqIAEoDRIbChN0b3RhbF9ldmVudF92aWV3ZXJzGCsgASgNEhMKC2F2ZXJhZ2VfY3RyGDIgASgBEhsKE2FkX2ludGVyYWN0aW9uX3JhdGUYMyABKAESHQoVdmlkZW9fY29tcGxldGlvbl9yYXRlGDQgASgBEhYKDmFkX3JlcGxheV9yYXRlGDUgASgBEhQKDGFkX3ZpZXdfcmF0ZRg2IAEoARIUCgxhZF9mcmVxdWVuY3kYNyABKAESFgoOYWRfdW5tdXRlX3JhdGUYOCABKAESFAoMYWRfcmVhY2hfcGN0GDkgASgBEhoKEmFkX2NvbnZlcnNpb25fcmF0ZRg6IAEoARIaCg1hZF9lbmdhZ2VtZW50GDsgASgBSACIAQESEwoLYWRfYXV0b3BsYXkYPCABKAgSGQoRYWRfYXVkaW9fcHJpb3JpdHkYPSABKAgSFAoHYWRfbmFtZRhGIAEoCUgBiAEBEhoKDWNhbXBhaWduX25hbWUYRyABKAlIAogBARIVCghhZF9ncm91cBhIIAEoCUgDiAEBEhQKB2FkX3VuaXQYSSABKA1IBIgBARI8ChNtb2RlcmF0aW9uX3N0YXJ0X2F0GEogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBEjoKEW1vZGVyYXRpb25fZW5kX2F0GEsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgGiAEBEiQKF21vZGVyYXRpb25fZHVyYXRpb25fc2VjGEwgASgNSAeIAQESFwoKZXZlbnRfbmFtZRhQIAEoCUgIiAEBEhMKBnNlcmllcxhRIAEoCUgJiAEBEhMKBmxlYWd1ZRhSIAEoCUgKiAEBEjkKEGV2ZW50X3N0YXJ0X3RpbWUYUyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAuIAQESNwoOZXZlbnRfZW5kX3RpbWUYVCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAyIAQESGQoMYWN0aXZhdGVkX2J5GFogASgNSA2IAQESIwoWYWN0aXZhdGlvbl9pbnN0YW5jZV9pZBhbIAEoCUgOiAEBEh8KEmFjdGl2YXRpb25fZGV0YWlscxhcIAEoCUgPiAEBQhAKDl9hZF9lbmdhZ2VtZW50QgoKCF9hZF9uYW1lQhAKDl9jYW1wYWlnbl9uYW1lQgsKCV9hZF9ncm91cEIKCghfYWRfdW5pdEIWChRfbW9kZXJhdGlvbl9zdGFydF9hdEIUChJfbW9kZXJhdGlvbl9lbmRfYXRCGgoYX21vZGVyYXRpb25fZHVyYXRpb25fc2VjQg0KC19ldmVudF9uYW1lQgkKB19zZXJpZXNCCQoHX2xlYWd1ZUITChFfZXZlbnRfc3RhcnRfdGltZUIRCg9fZXZlbnRfZW5kX3RpbWVCDwoNX2FjdGl2YXRlZF9ieUIZChdfYWN0aXZhdGlvbl9pbnN0YW5jZV9pZEIVChNfYWN0aXZhdGlvbl9kZXRhaWxzIskBChFBZERldGFpbHNSZXNwb25zZRJDCgRkYXRhGAEgAygLMjUuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5BZERldGFpbHNSZXNwb25zZVJvdxJWCgRtZXRhGAIgASgLMkguc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5BZERldGFpbHNSZXNwb25zZS5BZERldGFpbHNSZXNwb25zZU1ldGEaFwoVQWREZXRhaWxzUmVzcG9uc2VNZXRhIpQCChlBZFBhdXNlVG90YWxSZXF1ZXN0RmlsdGVyEhwKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUgAiAEBEhEKCWV2ZW50X2lkcxgCIAMoBBIRCgl0b3BpY19pZHMYAyADKAkSSAoJYnJlYWtkb3duGAQgASgOMjAuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5NZXRyaWNCcmVha2Rvd25IAYgBARI8CgZwZXJpb2QYBSABKAsyJy5zdHJlYW1sYXllci5hbmFseXRpY3MudjEuY29tbW9uLlBlcmlvZEgCiAEBQhIKEF9vcmdhbml6YXRpb25faWRCDAoKX2JyZWFrZG93bkIJCgdfcGVyaW9kImEKE0FkUGF1c2VUb3RhbFJlcXVlc3QSSgoGZmlsdGVyGAEgASgLMjouc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5BZFBhdXNlVG90YWxSZXF1ZXN0RmlsdGVyIqEGChpBZFBhdXNlRXh0VG90YWxSZXNwb25zZVJvdxIVCghldmVudF9pZBgBIAEoBEgAiAEBEhgKC3F1ZXN0aW9uX2lkGAIgASgJSAGIAQESFQoIcGxhdGZvcm0YAyABKAlIAogBARIjCht0b3RhbF9leHRlcm5hbF9hZF9yZXF1ZXN0ZWQYCiABKA0SIAoYdG90YWxfZXh0ZXJuYWxfYWRfbG9hZGVkGAsgASgNEiIKGnRvdGFsX2V4dGVybmFsX2FkX3JlbmRlcmVkGAwgASgNEiAKGHRvdGFsX2V4dGVybmFsX2FkX2Nsb3NlZBgNIAEoDRIdChV0b3RhbF9hZF9pbnRlcmFjdGlvbnMYDiABKA0SLAokdG90YWxfZXh0ZXJuYWxfYWRfZW5nYWdtZW50X3Nlc3Npb25zGA8gASgNEhYKDmFkX3RvdGFsX3JlYWNoGBQgASgNEh0KFWV4dGVybmFsX2FkX2ZpbGxfcmF0ZRgeIAEoARIOCgZhZF9jdHIYHyABKAESJAocZXh0ZXJuYWxfYWRfaW50ZXJhY3Rpb25fcmF0ZRggIAEoARIUCgxhZF9mcmVxdWVuY3kYISABKAESGwoTYWRfZnJlcXVlbmN5XzF4X3BjdBgiIAEoARIbChNhZF9mcmVxdWVuY3lfMnhfcGN0GCMgASgBEh4KFmFkX2ZyZXF1ZW5jeV8zcGx1c19wY3QYJCABKAESJAoccGF1c2VfYWRfdGltZV90b19pbnRlcmFjdGlvbhgoIAEoARIpCiFleHRlcm5hbF9hZF9lbmdhZ21lbnRfc2Vjb25kc19zdW0YKSABKAQSKQohZXh0ZXJuYWxfYWRfZW5nYWdtZW50X3NlY29uZHNfYXZnGCogASgBEjAKKGF2ZXJhZ2VfdGltZV9leHRlcm5hbF9hZF9vdmVybGF5X3Nlc3Npb24YKyABKAESLAokc3VtX3RpbWVfZXh0ZXJuYWxfYWRfb3ZlcmxheV9zZXNzaW9uGCwgASgEQgsKCV9ldmVudF9pZEIOCgxfcXVlc3Rpb25faWRCCwoJX3BsYXRmb3JtIuECChlBZFBhdXNlU0xUb3RhbFJlc3BvbnNlUm93EhUKCGV2ZW50X2lkGAEgASgESACIAQESGAoLcXVlc3Rpb25faWQYAiABKAlIAYgBARIVCghwbGF0Zm9ybRgDIAEoCUgCiAEBEhsKE2FkX2NhcmRfaW1wcmVzc2lvbnMYCiABKA0SHQoVdG90YWxfYWRfaW50ZXJhY3Rpb25zGAsgASgNEhYKDmFkX3RvdGFsX3JlYWNoGBQgASgNEg4KBmFkX2N0chgeIAEoARIUCgxhZF9mcmVxdWVuY3kYHyABKAESGwoTYWRfZnJlcXVlbmN5XzF4X3BjdBggIAEoARIbChNhZF9mcmVxdWVuY3lfMnhfcGN0GCEgASgBEh4KFmFkX2ZyZXF1ZW5jeV8zcGx1c19wY3QYIiABKAFCCwoJX2V2ZW50X2lkQg4KDF9xdWVzdGlvbl9pZEILCglfcGxhdGZvcm0irAIKFEFkUGF1c2VUb3RhbFJlc3BvbnNlElwKBG1ldGEYASABKAsyTi5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkFkUGF1c2VUb3RhbFJlc3BvbnNlLkFkUGF1c2VUb3RhbFJlc3BvbnNlTWV0YRJNCghleHRfZGF0YRgCIAMoCzI7LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uQWRQYXVzZUV4dFRvdGFsUmVzcG9uc2VSb3cSSwoHc2xfZGF0YRgDIAMoCzI6LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uQWRQYXVzZVNMVG90YWxSZXNwb25zZVJvdxoaChhBZFBhdXNlVG90YWxSZXNwb25zZU1ldGEi5AIKIEFkTWV0cmljc0J5VGltZUxpbmVSZXF1ZXN0RmlsdGVyEhwKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUgAiAEBEhEKCWV2ZW50X2lkcxgCIAMoBBIRCgl0b3BpY19pZHMYAyADKAkSPAoGcGVyaW9kGAQgASgLMicuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYxLmNvbW1vbi5QZXJpb2RIAYgBARI+CgphZ2dfcGVyaW9kGAUgASgOMiouc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5BZ2dQZXJpb2QSEQoJY291bnRyaWVzGAYgAygJEh4KEXBsYXRmb3JtX2NhdGVnb3J5GAcgASgJSAKIAQESDwoCdHoYCCABKAlIA4gBAUISChBfb3JnYW5pemF0aW9uX2lkQgkKB19wZXJpb2RCFAoSX3BsYXRmb3JtX2NhdGVnb3J5QgUKA190eiJvChpBZE1ldHJpY3NCeVRpbWVMaW5lUmVxdWVzdBJRCgZmaWx0ZXIYASABKAsyQS5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkFkTWV0cmljc0J5VGltZUxpbmVSZXF1ZXN0RmlsdGVyIocCCh9BZE1ldHJpY3NCeVRpbWVMaW5lUmVzcG9uc2VEYXRhEhIKCnRpbWVfZnJhbWUYASABKAMSGwoTYWRfY2FyZF9pbXByZXNzaW9ucxgCIAEoDRIcChR0b3RhbF9hZF9pbXByZXNzaW9ucxgDIAEoDRIhChl0b3RhbF9kaXNwbGF5X2ltcHJlc3Npb25zGAQgASgNEiIKGnRvdGFsX2FkX3ZpZGVvX2ltcHJlc3Npb25zGAUgASgNEhcKD3RvdGFsX2FkX2NsaWNrcxgGIAEoDRIdChV0b3RhbF9hZF9pbnRlcmFjdGlvbnMYByABKA0SFgoOYWRfdG90YWxfcmVhY2gYCCABKA0i/AEKG0FkTWV0cmljc0J5VGltZUxpbmVSZXNwb25zZRJOCgRkYXRhGAEgAygLMkAuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5BZE1ldHJpY3NCeVRpbWVMaW5lUmVzcG9uc2VEYXRhEmoKBG1ldGEYAiABKAsyXC5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkFkTWV0cmljc0J5VGltZUxpbmVSZXNwb25zZS5BZE1ldHJpY3NCeVRpbWVMaW5lUmVzcG9uc2VNZXRhGiEKH0FkTWV0cmljc0J5VGltZUxpbmVSZXNwb25zZU1ldGEigAIKHVBvbGxzQ2FyZE1ldHJpY3NSZXF1ZXN0RmlsdGVyEhwKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUgAiAEBEhEKCWV2ZW50X2lkcxgCIAMoBBIRCgl0b3BpY19pZHMYAyADKAkSEwoLdG9waWNfdHlwZXMYBCADKA0SPAoGcGVyaW9kGAUgASgLMicuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYxLmNvbW1vbi5QZXJpb2RIAYgBARIRCgljb3VudHJpZXMYBiADKAkSDwoCdHoYByABKAlIAogBAUISChBfb3JnYW5pemF0aW9uX2lkQgkKB19wZXJpb2RCBQoDX3R6ImkKF1BvbGxzQ2FyZE1ldHJpY3NSZXF1ZXN0Ek4KBmZpbHRlchgBIAEoCzI+LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uUG9sbHNDYXJkTWV0cmljc1JlcXVlc3RGaWx0ZXIipQMKHFBvbGxzQ2FyZE1ldHJpY3NSZXNwb25zZURhdGESEAoIZXZlbnRfaWQYASABKAQSEwoLcXVlc3Rpb25faWQYAiABKAkSEgoKdG9waWNfdHlwZRgDIAEoDRIQCghyZWNlaXZlZBgKIAEoDRIUCgxyZWNlaXZlZF9zdW0YCyABKA0SDgoGb3BlbmVkGAwgASgNEg0KBXZvdGVkGA0gASgNEhEKCW5hdmlnYXRlZBgOIAEoDRIYChBjYXJkX2ltcHJlc3Npb25zGA8gASgNEhYKDmNhcmRfZnJlcXVlbmN5GBQgASgBEiIKFWNhcmRfZnJlcXVlbmN5XzF4X3BjdBgVIAEoAUgAiAEBEiIKFWNhcmRfZnJlcXVlbmN5XzJ4X3BjdBgWIAEoAUgBiAEBEiUKGGNhcmRfZnJlcXVlbmN5XzNwbHVzX3BjdBgXIAEoAUgCiAEBQhgKFl9jYXJkX2ZyZXF1ZW5jeV8xeF9wY3RCGAoWX2NhcmRfZnJlcXVlbmN5XzJ4X3BjdEIbChlfY2FyZF9mcmVxdWVuY3lfM3BsdXNfcGN0Iu0BChhQb2xsc0NhcmRNZXRyaWNzUmVzcG9uc2USSwoEZGF0YRgBIAMoCzI9LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uUG9sbHNDYXJkTWV0cmljc1Jlc3BvbnNlRGF0YRJkCgRtZXRhGAIgASgLMlYuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5Qb2xsc0NhcmRNZXRyaWNzUmVzcG9uc2UuUG9sbHNDYXJkTWV0cmljc1Jlc3BvbnNlTWV0YRoeChxQb2xsc0NhcmRNZXRyaWNzUmVzcG9uc2VNZXRhKlQKBldwVHlwZRIRCg1XUF9UWVBFX1VOU0VUEAASDgoKV1BfVFlQRV9XUBABEg8KC1dQX1RZUEVfRldQEAISFgoSV1BfVFlQRV9XUF9BTkRfRldQEAMq9AEKD01ldHJpY0JyZWFrZG93bhIaChZNRVRSSUNfQlJFQUtET1dOX1VOU0VUEAASGgoWTUVUUklDX0JSRUFLRE9XTl9FVkVOVBABEh0KGU1FVFJJQ19CUkVBS0RPV05fUVVFU1RJT04QAhIdChlNRVRSSUNfQlJFQUtET1dOX1BMQVRGT1JNEAMSJgoiTUVUUklDX0JSRUFLRE9XTl9QTEFURk9STV9RVUVTVElPThAEEiEKHU1FVFJJQ19CUkVBS0RPV05fQURfVU5JVF9UWVBFEAUSIAocTUVUUklDX0JSRUFLRE9XTl9QTEFURk9STV9PUxAGKlAKCUFnZ1BlcmlvZBIMCghBUF9VTlNFVBAAEgsKB0FQXzFNSU4QARIMCghBUF8xSE9VUhAKEgsKB0FQXzFEQVkQFBINCglBUF8xTU9OVEgQHjKjFQoJRGFzaGJvYXJkEq0BChFEYXNoYm9hcmRPdmVydmlldxI5LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uRGFzaGJvYXJkT3ZlcnZpZXdSZXF1ZXN0Gjouc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5EYXNoYm9hcmRPdmVydmlld1Jlc3BvbnNlIiGKph0RZGFzaGJvYXJkT3ZlcnZpZXegph0CqKYdAbCmHQESoQEKDkZlYXR1cmVkR3JvdXBzEjYuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5GZWF0dXJlZEdyb3Vwc1JlcXVlc3QaNy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkZlYXR1cmVkR3JvdXBzUmVzcG9uc2UiHoqmHQ5mZWF0dXJlZEdyb3Vwc6CmHQKoph0BsKYdARK1AQoTV3BNZXRyaWNzQnlUaW1lTGluZRI7LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uV3BNZXRyaWNzQnlUaW1lTGluZVJlcXVlc3QaPC5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLldwTWV0cmljc0J5VGltZUxpbmVSZXNwb25zZSIjiqYdE3dwTWV0cmljc0J5VGltZUxpbmWgph0CqKYdAbCmHQESpQEKD1VzZXJzQnlUaW1lTGluZRI3LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uVXNlcnNCeVRpbWVMaW5lUmVxdWVzdBo4LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uVXNlcnNCeVRpbWVMaW5lUmVzcG9uc2UiH4qmHQ91c2Vyc0J5VGltZUxpbmWgph0CqKYdAbCmHQESkAEKClBvbGxzVG90YWwSMi5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLlBvbGxzVG90YWxSZXF1ZXN0GjIuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYxLnBvbGxzLlRvdGFsUG9sbHNSZXNwb25zZSIaiqYdCnBvbGxzVG90YWygph0CqKYdAbCmHQESuQEKFFBvbGxzU3RhdHNCeVRpbWVMaW5lEjwuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5Qb2xsc1N0YXRzQnlUaW1lTGluZVJlcXVlc3QaPS5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLlBvbGxzU3RhdHNCeVRpbWVMaW5lUmVzcG9uc2UiJIqmHRRwb2xsc1N0YXRzQnlUaW1lTGluZaCmHQKoph0BsKYdARLZAQocRGV2aWNlSW50ZXJhY3Rpb25zQnlUaW1lTGluZRJELnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uRGV2aWNlSW50ZXJhY3Rpb25zQnlUaW1lTGluZVJlcXVlc3QaRS5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkRldmljZUludGVyYWN0aW9uc0J5VGltZUxpbmVSZXNwb25zZSIsiqYdHGRldmljZUludGVyYWN0aW9uc0J5VGltZUxpbmWgph0CqKYdAbCmHQESnQEKDUxpc3RDb3VudHJpZXMSNS5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkxpc3RDb3VudHJpZXNSZXF1ZXN0GjYuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5MaXN0Q291bnRyaWVzUmVzcG9uc2UiHYqmHQ1saXN0Q291bnRyaWVzoKYdAqimHQGwph0BEpUBCgtMaXN0TWV0cmljcxIzLnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uTGlzdE1ldHJpY3NSZXF1ZXN0GjQuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5MaXN0TWV0cmljc1Jlc3BvbnNlIhuKph0LbGlzdE1ldHJpY3Ogph0CqKYdAbCmHQESnQEKDUV4cG9ydE1ldHJpY3MSNS5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkV4cG9ydE1ldHJpY3NSZXF1ZXN0GjYuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5FeHBvcnRNZXRyaWNzUmVzcG9uc2UiHYqmHQ1leHBvcnRNZXRyaWNzoKYdAqimHQGwph0BEq4BChFFeHBvcnRFeHRlcm5hbEFkcxI5LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uRXhwb3J0RXh0ZXJuYWxBZHNSZXF1ZXN0Gjouc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5FeHBvcnRFeHRlcm5hbEFkc1Jlc3BvbnNlIiKKph0SYWQuZXhwb3J0LmV4dGVybmFsoKYdAqimHQGwph0BEocBCgdBZFRvdGFsEjAuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5BZFRvdGFsc1JlcXVlc3QaMS5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkFkVG90YWxzUmVzcG9uc2UiF4qmHQdhZFRvdGFsoKYdAqimHQGwph0BEo0BCglBZERldGFpbHMSMS5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkFkRGV0YWlsc1JlcXVlc3QaMi5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkFkRGV0YWlsc1Jlc3BvbnNlIhmKph0JYWREZXRhaWxzoKYdAqimHQGwph0BEpsBCgxBZFBhdXNlVG90YWwSNC5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkFkUGF1c2VUb3RhbFJlcXVlc3QaNS5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkFkUGF1c2VUb3RhbFJlc3BvbnNlIh6Kph0OYWQucGF1c2UudG90YWygph0CqKYdAbCmHQEStgEKE0FkTWV0cmljc0J5VGltZUxpbmUSOy5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLkFkTWV0cmljc0J5VGltZUxpbmVSZXF1ZXN0Gjwuc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnYyLnN0dWRpby5BZE1ldHJpY3NCeVRpbWVMaW5lUmVzcG9uc2UiJIqmHRRhZC5tZXRyaWNzQnlUaW1lTGluZaCmHQKoph0BsKYdARKqAQoQUG9sbHNDYXJkTWV0cmljcxI4LnN0cmVhbWxheWVyLmFuYWx5dGljcy52Mi5zdHVkaW8uUG9sbHNDYXJkTWV0cmljc1JlcXVlc3QaOS5zdHJlYW1sYXllci5hbmFseXRpY3MudjIuc3R1ZGlvLlBvbGxzQ2FyZE1ldHJpY3NSZXNwb25zZSIhiqYdEXBvbGxzLmNhcmRNZXRyaWNzoKYdAqimHQGwph0BGhCKtRgMYW5hbHl0aWNzLnYyQqIBCiNjb20uc3RyZWFtbGF5ZXIuYW5hbHl0aWNzLnN0dWRpby52MkIWU3RyZWFtTGF5ZXJTdHVkaW9Qcm90b1ABWlhnaXRodWIuY29tL3N0cmVhbWxheWVyL3NsLXByb3RvZmlsZXMvLmJ1aWxkL2dvL3N0cmVhbWxheWVyL2FuYWx5dGljcy92Mi9zdHVkaW87c2xfc3R1ZGlvogIGU0xfQVBJYgZwcm90bzM", [file_google_protobuf_timestamp, file_streamlayer_common_streamlayer_common, file_streamlayer_analytics_v1_common_analytics_common, file_streamlayer_analytics_v1_polls_polls]);
16
16
 
17
17
  /**
18
18
  * Describes the message streamlayer.analytics.v2.studio.CardStatistics.
@@ -390,96 +390,173 @@ export const AdTotalsRequestSchema = /*@__PURE__*/
390
390
  export const AdTotalsResponseDataSchema = /*@__PURE__*/
391
391
  messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 39);
392
392
 
393
+ /**
394
+ * Describes the message streamlayer.analytics.v2.studio.AdTotalsResponseLevels.
395
+ * Use `create(AdTotalsResponseLevelsSchema)` to create a new message.
396
+ */
397
+ export const AdTotalsResponseLevelsSchema = /*@__PURE__*/
398
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 40);
399
+
393
400
  /**
394
401
  * Describes the message streamlayer.analytics.v2.studio.AdTotalsResponse.
395
402
  * Use `create(AdTotalsResponseSchema)` to create a new message.
396
403
  */
397
404
  export const AdTotalsResponseSchema = /*@__PURE__*/
398
- messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 40);
405
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 41);
399
406
 
400
407
  /**
401
408
  * Describes the message streamlayer.analytics.v2.studio.AdTotalsResponse.AdTotalsResponseMeta.
402
409
  * Use `create(AdTotalsResponse_AdTotalsResponseMetaSchema)` to create a new message.
403
410
  */
404
411
  export const AdTotalsResponse_AdTotalsResponseMetaSchema = /*@__PURE__*/
405
- messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 40, 0);
412
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 41, 0);
406
413
 
407
414
  /**
408
415
  * Describes the message streamlayer.analytics.v2.studio.AdDetailsRequestFilter.
409
416
  * Use `create(AdDetailsRequestFilterSchema)` to create a new message.
410
417
  */
411
418
  export const AdDetailsRequestFilterSchema = /*@__PURE__*/
412
- messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 41);
419
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 42);
413
420
 
414
421
  /**
415
422
  * Describes the message streamlayer.analytics.v2.studio.AdDetailsRequest.
416
423
  * Use `create(AdDetailsRequestSchema)` to create a new message.
417
424
  */
418
425
  export const AdDetailsRequestSchema = /*@__PURE__*/
419
- messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 42);
426
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 43);
420
427
 
421
428
  /**
422
429
  * Describes the message streamlayer.analytics.v2.studio.AdDetailsResponseRow.
423
430
  * Use `create(AdDetailsResponseRowSchema)` to create a new message.
424
431
  */
425
432
  export const AdDetailsResponseRowSchema = /*@__PURE__*/
426
- messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 43);
433
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 44);
427
434
 
428
435
  /**
429
436
  * Describes the message streamlayer.analytics.v2.studio.AdDetailsResponse.
430
437
  * Use `create(AdDetailsResponseSchema)` to create a new message.
431
438
  */
432
439
  export const AdDetailsResponseSchema = /*@__PURE__*/
433
- messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 44);
440
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 45);
434
441
 
435
442
  /**
436
443
  * Describes the message streamlayer.analytics.v2.studio.AdDetailsResponse.AdDetailsResponseMeta.
437
444
  * Use `create(AdDetailsResponse_AdDetailsResponseMetaSchema)` to create a new message.
438
445
  */
439
446
  export const AdDetailsResponse_AdDetailsResponseMetaSchema = /*@__PURE__*/
440
- messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 44, 0);
447
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 45, 0);
441
448
 
442
449
  /**
443
450
  * Describes the message streamlayer.analytics.v2.studio.AdPauseTotalRequestFilter.
444
451
  * Use `create(AdPauseTotalRequestFilterSchema)` to create a new message.
445
452
  */
446
453
  export const AdPauseTotalRequestFilterSchema = /*@__PURE__*/
447
- messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 45);
454
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 46);
448
455
 
449
456
  /**
450
457
  * Describes the message streamlayer.analytics.v2.studio.AdPauseTotalRequest.
451
458
  * Use `create(AdPauseTotalRequestSchema)` to create a new message.
452
459
  */
453
460
  export const AdPauseTotalRequestSchema = /*@__PURE__*/
454
- messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 46);
461
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 47);
455
462
 
456
463
  /**
457
464
  * Describes the message streamlayer.analytics.v2.studio.AdPauseExtTotalResponseRow.
458
465
  * Use `create(AdPauseExtTotalResponseRowSchema)` to create a new message.
459
466
  */
460
467
  export const AdPauseExtTotalResponseRowSchema = /*@__PURE__*/
461
- messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 47);
468
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 48);
462
469
 
463
470
  /**
464
471
  * Describes the message streamlayer.analytics.v2.studio.AdPauseSLTotalResponseRow.
465
472
  * Use `create(AdPauseSLTotalResponseRowSchema)` to create a new message.
466
473
  */
467
474
  export const AdPauseSLTotalResponseRowSchema = /*@__PURE__*/
468
- messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 48);
475
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 49);
469
476
 
470
477
  /**
471
478
  * Describes the message streamlayer.analytics.v2.studio.AdPauseTotalResponse.
472
479
  * Use `create(AdPauseTotalResponseSchema)` to create a new message.
473
480
  */
474
481
  export const AdPauseTotalResponseSchema = /*@__PURE__*/
475
- messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 49);
482
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 50);
476
483
 
477
484
  /**
478
485
  * Describes the message streamlayer.analytics.v2.studio.AdPauseTotalResponse.AdPauseTotalResponseMeta.
479
486
  * Use `create(AdPauseTotalResponse_AdPauseTotalResponseMetaSchema)` to create a new message.
480
487
  */
481
488
  export const AdPauseTotalResponse_AdPauseTotalResponseMetaSchema = /*@__PURE__*/
482
- messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 49, 0);
489
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 50, 0);
490
+
491
+ /**
492
+ * Describes the message streamlayer.analytics.v2.studio.AdMetricsByTimeLineRequestFilter.
493
+ * Use `create(AdMetricsByTimeLineRequestFilterSchema)` to create a new message.
494
+ */
495
+ export const AdMetricsByTimeLineRequestFilterSchema = /*@__PURE__*/
496
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 51);
497
+
498
+ /**
499
+ * Describes the message streamlayer.analytics.v2.studio.AdMetricsByTimeLineRequest.
500
+ * Use `create(AdMetricsByTimeLineRequestSchema)` to create a new message.
501
+ */
502
+ export const AdMetricsByTimeLineRequestSchema = /*@__PURE__*/
503
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 52);
504
+
505
+ /**
506
+ * Describes the message streamlayer.analytics.v2.studio.AdMetricsByTimeLineResponseData.
507
+ * Use `create(AdMetricsByTimeLineResponseDataSchema)` to create a new message.
508
+ */
509
+ export const AdMetricsByTimeLineResponseDataSchema = /*@__PURE__*/
510
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 53);
511
+
512
+ /**
513
+ * Describes the message streamlayer.analytics.v2.studio.AdMetricsByTimeLineResponse.
514
+ * Use `create(AdMetricsByTimeLineResponseSchema)` to create a new message.
515
+ */
516
+ export const AdMetricsByTimeLineResponseSchema = /*@__PURE__*/
517
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 54);
518
+
519
+ /**
520
+ * Describes the message streamlayer.analytics.v2.studio.AdMetricsByTimeLineResponse.AdMetricsByTimeLineResponseMeta.
521
+ * Use `create(AdMetricsByTimeLineResponse_AdMetricsByTimeLineResponseMetaSchema)` to create a new message.
522
+ */
523
+ export const AdMetricsByTimeLineResponse_AdMetricsByTimeLineResponseMetaSchema = /*@__PURE__*/
524
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 54, 0);
525
+
526
+ /**
527
+ * Describes the message streamlayer.analytics.v2.studio.PollsCardMetricsRequestFilter.
528
+ * Use `create(PollsCardMetricsRequestFilterSchema)` to create a new message.
529
+ */
530
+ export const PollsCardMetricsRequestFilterSchema = /*@__PURE__*/
531
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 55);
532
+
533
+ /**
534
+ * Describes the message streamlayer.analytics.v2.studio.PollsCardMetricsRequest.
535
+ * Use `create(PollsCardMetricsRequestSchema)` to create a new message.
536
+ */
537
+ export const PollsCardMetricsRequestSchema = /*@__PURE__*/
538
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 56);
539
+
540
+ /**
541
+ * Describes the message streamlayer.analytics.v2.studio.PollsCardMetricsResponseData.
542
+ * Use `create(PollsCardMetricsResponseDataSchema)` to create a new message.
543
+ */
544
+ export const PollsCardMetricsResponseDataSchema = /*@__PURE__*/
545
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 57);
546
+
547
+ /**
548
+ * Describes the message streamlayer.analytics.v2.studio.PollsCardMetricsResponse.
549
+ * Use `create(PollsCardMetricsResponseSchema)` to create a new message.
550
+ */
551
+ export const PollsCardMetricsResponseSchema = /*@__PURE__*/
552
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 58);
553
+
554
+ /**
555
+ * Describes the message streamlayer.analytics.v2.studio.PollsCardMetricsResponse.PollsCardMetricsResponseMeta.
556
+ * Use `create(PollsCardMetricsResponse_PollsCardMetricsResponseMetaSchema)` to create a new message.
557
+ */
558
+ export const PollsCardMetricsResponse_PollsCardMetricsResponseMetaSchema = /*@__PURE__*/
559
+ messageDesc(file_streamlayer_analytics_v2_studio_dashboard, 58, 0);
483
560
 
484
561
  /**
485
562
  * Describes the enum streamlayer.analytics.v2.studio.WpType.