@dynatrace/rum-javascript-sdk 1.333.15 → 1.337.1
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/dist/api/index.d.ts +16 -0
- package/dist/api/index.js +25 -1
- package/dist/api/interactions.d.ts +25 -0
- package/dist/api/interactions.js +51 -0
- package/dist/api/promises/index.d.ts +23 -0
- package/dist/api/promises/index.js +36 -7
- package/dist/api/promises/interactions.d.ts +18 -0
- package/dist/api/promises/interactions.js +22 -0
- package/dist/api/promises/wait-for-interactions.d.ts +9 -0
- package/dist/api/promises/wait-for-interactions.js +18 -0
- package/dist/api/user-actions.d.ts +5 -5
- package/dist/api/user-actions.js +6 -6
- package/dist/testing/index.d.ts +3 -1
- package/dist/testing/index.js +1 -1
- package/dist/testing/install.js +1 -1
- package/dist/testing/test.d.ts +1 -119
- package/dist/testing/test.js +12 -11
- package/dist/testing/types/dynatrace-config.d.ts +36 -0
- package/dist/testing/types/dynatrace-config.js +2 -0
- package/dist/testing/types/dynatrace-testing-fixtures.d.ts +24 -0
- package/dist/testing/types/dynatrace-testing-fixtures.js +2 -0
- package/dist/testing/types/dynatrace-testing.d.ts +66 -0
- package/dist/testing/types/dynatrace-testing.js +2 -0
- package/dist/types/api/dynatrace-api-types.d.ts +126 -24
- package/dist/types/api/dynatrace-api-types.js +1 -1
- package/dist/types/index-typedoc.d.ts +1 -0
- package/dist/types/index-typedoc.js +2 -1
- package/dist/types/rum-events/index.d.ts +1 -0
- package/dist/types/rum-events/index.js +2 -1
- package/dist/types/rum-events/json-event.d.ts +0 -6
- package/dist/types/rum-events/json-event.js +1 -1
- package/dist/types/rum-events/open-fields.d.ts +74 -0
- package/dist/types/rum-events/open-fields.js +84 -0
- package/dist/types/rum-events/rum-internal-selfmonitoring-event.d.ts +21 -1
- package/dist/types/rum-events/rum-internal-selfmonitoring-event.js +21 -1
- package/dist/types/rum-events/rum-user-interaction-event.d.ts +47 -0
- package/dist/types/rum-events/rum-user-interaction-event.js +43 -1
- package/dist/types/rum-events/shared-namespaces-and-fields/general-rum-event-fields.d.ts +3 -2
- package/dist/types/rum-events/shared-namespaces-and-fields/general-rum-event-fields.js +1 -1
- package/dist/types/user-actions/user-action-start-options.d.ts +13 -0
- package/dist/types/user-actions/user-action-start-options.js +1 -1
- package/dist/types/user-actions/user-action-tracker.d.ts +35 -3
- package/dist/types/user-actions/user-action-tracker.js +1 -1
- package/docs/1-overview.md +95 -0
- package/docs/2-testing.md +3 -3
- package/docs/3-types.md +1 -0
- package/docs/4-useractions.md +94 -76
- package/docs/5-interactions.md +85 -0
- package/package.json +24 -8
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ApiCreatedEventPropertiesEvent, ApiCreatedSessionPropertiesEvent, JSONEvent, JSONObject } from "../rum-events/json-event.js";
|
|
2
|
+
import type { RumEventKeys, RUMKeyPressActionEvent } from "../rum-events/index.js";
|
|
2
3
|
import type { EventContext } from "../rum-events/event-context/event-context.js";
|
|
3
4
|
import type { UserActionStartOptions } from "../user-actions/user-action-start-options.js";
|
|
4
5
|
import type { UserActionTracker } from "../user-actions/user-action-tracker.js";
|
|
@@ -22,6 +23,95 @@ export interface HealthCheckConfig {
|
|
|
22
23
|
returnDiagnosticData?: boolean;
|
|
23
24
|
runDetailedOverrideCheck?: boolean;
|
|
24
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* The fields allowed for {@link Interactions.sendKeyPressEvent}.
|
|
28
|
+
*
|
|
29
|
+
* Includes the required `keys` array and optional `ui_element.custom_name`.
|
|
30
|
+
* Additional user-defined fields are limited to `event_properties.*` entries.
|
|
31
|
+
* The fields object must be a JSON-serializable plain object.
|
|
32
|
+
*
|
|
33
|
+
* @category API
|
|
34
|
+
*/
|
|
35
|
+
export type SendUserInteractionFields = {
|
|
36
|
+
/**
|
|
37
|
+
* The key combination for the interaction. Must contain at least one key.
|
|
38
|
+
* Values can be {@link UserInteractionSpecialKey} members or raw
|
|
39
|
+
* {@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key | KeyboardEvent.key}
|
|
40
|
+
* strings — raw values are normalized internally.
|
|
41
|
+
* The enum is optional but improves readability when constructing key arrays manually.
|
|
42
|
+
*
|
|
43
|
+
* Import `UserInteractionSpecialKey` from `@dynatrace/rum-javascript-sdk/types/rum-events`.
|
|
44
|
+
*/
|
|
45
|
+
keys: RUMKeyPressActionEvent["keys"];
|
|
46
|
+
/**
|
|
47
|
+
* An optional custom name for the UI element, included as `ui_element.custom_name` in the emitted event.
|
|
48
|
+
* This field is independent of the auto-detected element name (`ui_element.detected_name`).
|
|
49
|
+
* It is included in the emitted event regardless of whether `elementOrEvent` is provided.
|
|
50
|
+
*/
|
|
51
|
+
[RumEventKeys.UI_ELEMENT$CUSTOM_NAME]?: string;
|
|
52
|
+
} & ApiCreatedEventPropertiesEvent;
|
|
53
|
+
/**
|
|
54
|
+
* @experimental
|
|
55
|
+
* @category API
|
|
56
|
+
*/
|
|
57
|
+
export interface Interactions {
|
|
58
|
+
/**
|
|
59
|
+
* Sends a user interaction event for reporting custom keyboard shortcuts or key combinations
|
|
60
|
+
* that are not automatically detected. Only available if the User Interaction module is enabled.
|
|
61
|
+
*
|
|
62
|
+
* Keys can be specified using {@link UserInteractionSpecialKey} members or raw
|
|
63
|
+
* {@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key | KeyboardEvent.key}
|
|
64
|
+
* strings — raw values are normalized internally (e.g. `" "` → `"space"`, `"Control"` → `"ctrl"`).
|
|
65
|
+
* The enum is optional but improves readability when constructing key arrays manually.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* import { UserInteractionSpecialKey } from "@dynatrace/rum-javascript-sdk/types/rum-events";
|
|
70
|
+
*
|
|
71
|
+
* // Basic key combination
|
|
72
|
+
* dynatrace.interactions?.sendKeyPressEvent({
|
|
73
|
+
* keys: [UserInteractionSpecialKey.CTRL, "S"]
|
|
74
|
+
* });
|
|
75
|
+
*
|
|
76
|
+
* // With an Element to capture UI element fields (tag_name, id, detected_name, components, etc.)
|
|
77
|
+
* const button = document.getElementById("saveBtn");
|
|
78
|
+
* dynatrace.interactions?.sendKeyPressEvent({
|
|
79
|
+
* keys: [UserInteractionSpecialKey.ENTER]
|
|
80
|
+
* }, button);
|
|
81
|
+
*
|
|
82
|
+
* // With a native KeyboardEvent to resolve the target element
|
|
83
|
+
* document.addEventListener("keydown", (event) => {
|
|
84
|
+
* dynatrace.interactions?.sendKeyPressEvent({
|
|
85
|
+
* keys: [UserInteractionSpecialKey.CTRL, "S"]
|
|
86
|
+
* }, event);
|
|
87
|
+
* });
|
|
88
|
+
*
|
|
89
|
+
* // With a custom_name for the UI element
|
|
90
|
+
* dynatrace.interactions?.sendKeyPressEvent({
|
|
91
|
+
* keys: [UserInteractionSpecialKey.ESC],
|
|
92
|
+
* "ui_element.custom_name": "CloseModal"
|
|
93
|
+
* });
|
|
94
|
+
*
|
|
95
|
+
* // With event properties for enrichment
|
|
96
|
+
* dynatrace.interactions?.sendKeyPressEvent({
|
|
97
|
+
* keys: [UserInteractionSpecialKey.CTRL, "S"],
|
|
98
|
+
* "event_properties.context": "editor"
|
|
99
|
+
* });
|
|
100
|
+
* ```
|
|
101
|
+
*
|
|
102
|
+
* @param fields The interaction fields. Must contain a `keys` array with at least one key.
|
|
103
|
+
* The fields object must be JSON-serializable. Optionally include `ui_element.custom_name`
|
|
104
|
+
* to provide a custom name for the UI element and `event_properties.*` entries.
|
|
105
|
+
* See {@link SendUserInteractionFields} for details.
|
|
106
|
+
* @param elementOrEvent An optional {@link Element} or {@link KeyboardEvent} used to auto-generate UI element fields
|
|
107
|
+
* such as `tag_name`, `id`, `detected_name`, `components`, `features`, and `properties`.
|
|
108
|
+
* When a {@link KeyboardEvent} is provided, the target element is resolved from the event.
|
|
109
|
+
* If omitted, no UI element fields are included in the emitted event.
|
|
110
|
+
* @see UserInteractionSpecialKey
|
|
111
|
+
* @see SendUserInteractionFields
|
|
112
|
+
*/
|
|
113
|
+
sendKeyPressEvent(this: void, fields: SendUserInteractionFields, elementOrEvent?: Element | Event): void;
|
|
114
|
+
}
|
|
25
115
|
/**
|
|
26
116
|
* @category API
|
|
27
117
|
*/
|
|
@@ -54,9 +144,7 @@ export declare namespace dynatrace {
|
|
|
54
144
|
* modified with additional properties, thus also empty objects are valid. Only properties
|
|
55
145
|
* prefixed with `event_properties.`, the `duration` property and the `start_time` property are
|
|
56
146
|
* allowed. String properties are limited to 5000 characters, exceeding characters are cut off.
|
|
57
|
-
* All event property
|
|
58
|
-
* underscores or dots. Each dot must be followed by an alphabetic character. Each underscore
|
|
59
|
-
* must be followed by an alphabetic character or number.
|
|
147
|
+
* All event property key names must match the naming rules defined by {@link VALID_KEY_REGEX}.
|
|
60
148
|
* @param eventContext An optional context (see {@link dynatrace.addEventModifier}) that can be used to manipulate the
|
|
61
149
|
* result event within the modification callback.
|
|
62
150
|
*/
|
|
@@ -108,7 +196,7 @@ export declare namespace dynatrace {
|
|
|
108
196
|
* and prevents future mutator functions to be executed.
|
|
109
197
|
*
|
|
110
198
|
* Certain reserved fields and namespaces can’t be modified in any way (added, removed or overridden), while others are open for modification.
|
|
111
|
-
* See
|
|
199
|
+
* See {@link AllowedModificationFields} for details.
|
|
112
200
|
*
|
|
113
201
|
* The context differs based on the processed event and availability of data.
|
|
114
202
|
* For events sent with {@link dynatrace.sendEvent}, the optionally provided context will be provided as custom context.
|
|
@@ -188,6 +276,18 @@ export declare namespace dynatrace {
|
|
|
188
276
|
* ```
|
|
189
277
|
*/
|
|
190
278
|
function identifyUser(value: string): void;
|
|
279
|
+
/**
|
|
280
|
+
* Grants consent for data collection.
|
|
281
|
+
*
|
|
282
|
+
* @internal
|
|
283
|
+
*/
|
|
284
|
+
function userOptIn(): void;
|
|
285
|
+
/**
|
|
286
|
+
* Revokes consent for data collection.
|
|
287
|
+
*
|
|
288
|
+
* @internal
|
|
289
|
+
*/
|
|
290
|
+
function userOptOut(): void;
|
|
191
291
|
/**
|
|
192
292
|
* Sends a sessionPropertyEvent.
|
|
193
293
|
*
|
|
@@ -205,10 +305,8 @@ export declare namespace dynatrace {
|
|
|
205
305
|
* using JSON.stringify. The resulting event will be populated with `fields` parameter, and
|
|
206
306
|
* is modified with additional properties, thus also empty objects are valid. Only properties
|
|
207
307
|
* prefixed with `session_properties.`, the `duration` property and the `start_time` property are
|
|
208
|
-
* allowed. String properties are limited to 5000 characters, exceeding characters are cut off.
|
|
209
|
-
* session property
|
|
210
|
-
* dots. Each dot must be followed by an alphabetic character. Each underscore must be followed by an
|
|
211
|
-
* alphabetic character or number.
|
|
308
|
+
* allowed. String properties are limited to 5000 characters, exceeding characters are cut off.
|
|
309
|
+
* All session property key names must match the naming rules defined by {@link VALID_KEY_REGEX}.
|
|
212
310
|
*/
|
|
213
311
|
function sendSessionPropertyEvent(fields: ApiCreatedSessionPropertiesEvent): void;
|
|
214
312
|
/**
|
|
@@ -221,11 +319,15 @@ export declare namespace dynatrace {
|
|
|
221
319
|
* modified with additional properties, thus also empty objects are valid. Only properties
|
|
222
320
|
* prefixed with `event_properties.`, the `duration` property and the `start_time` property are
|
|
223
321
|
* allowed. String properties are limited to 5000 characters, exceeding characters are cut off.
|
|
224
|
-
* All event property
|
|
225
|
-
* underscores or dots. Each dot must be followed by an alphabetic character. Each underscore
|
|
226
|
-
* must be followed by an alphabetic character or number.
|
|
322
|
+
* All event property key names must match the naming rules defined by {@link VALID_KEY_REGEX}.
|
|
227
323
|
*/
|
|
228
324
|
let sendExceptionEvent: ((error: Error, fields?: ApiCreatedEventPropertiesEvent) => void) | undefined;
|
|
325
|
+
/**
|
|
326
|
+
* This property is `undefined` if the User Interaction module is disabled.
|
|
327
|
+
*
|
|
328
|
+
* @experimental
|
|
329
|
+
*/
|
|
330
|
+
let interactions: Interactions | undefined;
|
|
229
331
|
/**
|
|
230
332
|
* This property is `undefined` if the User Actions module is disabled.
|
|
231
333
|
*
|
|
@@ -243,20 +345,20 @@ export interface UserActions {
|
|
|
243
345
|
*
|
|
244
346
|
* @example
|
|
245
347
|
* ```typescript
|
|
246
|
-
* const userAction = dynatrace.userActions.create({
|
|
348
|
+
* const userAction = dynatrace.userActions.create({ completeAutomatically: false });
|
|
247
349
|
* const unsubscribe = userAction.subscribe(currentUserAction => {
|
|
248
350
|
* console.log(`User action would have been completed due to ${currentUserAction.completeReason}`, event);
|
|
249
351
|
* });
|
|
250
352
|
* // execute user actions
|
|
251
|
-
* userAction.
|
|
353
|
+
* userAction.complete();
|
|
252
354
|
* unsubscribe();
|
|
253
355
|
* ```
|
|
254
356
|
*
|
|
255
357
|
* @experimental
|
|
256
|
-
* @param options
|
|
257
|
-
* @param options.
|
|
258
|
-
*
|
|
259
|
-
* @returns
|
|
358
|
+
* @param options An optional options object to configure the user action.
|
|
359
|
+
* @param options.completeAutomatically If true, automatically completes the user action using RUM JavaScript user action rules.
|
|
360
|
+
* If false, the user action remains active until the next call to `create(...)` or to `userAction.complete()`.
|
|
361
|
+
* @returns An `UserActionTracker` object that can be started and completed, or `undefined` if the user action module is not enabled.
|
|
260
362
|
*/
|
|
261
363
|
create(this: void, options?: UserActionStartOptions): UserActionTracker;
|
|
262
364
|
/**
|
|
@@ -266,9 +368,9 @@ export interface UserActions {
|
|
|
266
368
|
* ```typescript
|
|
267
369
|
* const unsubscribe = dynatrace.userActions?.subscribe(userAction => {
|
|
268
370
|
* // Disable automatic userAction completion
|
|
269
|
-
* userAction.
|
|
270
|
-
* // Execute some requests or mutations, then
|
|
271
|
-
* userAction.
|
|
371
|
+
* userAction.completeAutomatically = false;
|
|
372
|
+
* // Execute some requests or mutations, then complete the user action
|
|
373
|
+
* userAction.complete();
|
|
272
374
|
* });
|
|
273
375
|
* // Some time later if you don't want to listen to userActions anymore
|
|
274
376
|
* unsubscribe();
|
|
@@ -287,10 +389,10 @@ export interface UserActions {
|
|
|
287
389
|
* dynatrace.userActions?.setAutomaticDetection(false);
|
|
288
390
|
*
|
|
289
391
|
* async function handleClick(router) {
|
|
290
|
-
* const userAction = dynatrace.userActions?.create({
|
|
392
|
+
* const userAction = dynatrace.userActions?.create({ completeAutomatically: false });
|
|
291
393
|
* // this would normally create an user action that would finish this manual user action
|
|
292
394
|
* await router.redirect("home");
|
|
293
|
-
* userAction.
|
|
395
|
+
* userAction.complete();
|
|
294
396
|
* }
|
|
295
397
|
* ```
|
|
296
398
|
*
|
|
@@ -307,10 +409,10 @@ export interface UserActions {
|
|
|
307
409
|
* async function postMessageChannel(message, channel) {
|
|
308
410
|
* const currentUserAction = dynatrace.userActions?.current;
|
|
309
411
|
* if (currentUserAction) {
|
|
310
|
-
* currentUserAction.
|
|
412
|
+
* currentUserAction.completeAutomatically = false;
|
|
311
413
|
* }
|
|
312
414
|
* const response = await channel.send(message);
|
|
313
|
-
* currentUserAction?.
|
|
415
|
+
* currentUserAction?.complete();
|
|
314
416
|
* return response;
|
|
315
417
|
* }
|
|
316
418
|
* ```
|
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
export var dynatrace;
|
|
5
5
|
(function (dynatrace) {
|
|
6
6
|
})(dynatrace || (dynatrace = {}));
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYXRyYWNlLWFwaS10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS90eXBlcy9hcGkvZHluYXRyYWNlLWFwaS10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQ0E7O0dBRUc7QUFDSCxNQUFNLEtBQVcsU0FBUyxDQXdOekI7QUF4TkQsV0FBaUIsU0FBUztBQXdOMUIsQ0FBQyxFQXhOZ0IsU0FBUyxLQUFULFNBQVMsUUF3TnpCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICAgIEFwaUNyZWF0ZWRFdmVudFByb3BlcnRpZXNFdmVudCxcbiAgICBBcGlDcmVhdGVkU2Vzc2lvblByb3BlcnRpZXNFdmVudCxcbiAgICBKU09ORXZlbnQsXG4gICAgSlNPTk9iamVjdFxufSBmcm9tIFwiLi4vcnVtLWV2ZW50cy9qc29uLWV2ZW50LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEV2ZW50Q29udGV4dCB9IGZyb20gXCIuLi9ydW0tZXZlbnRzL2V2ZW50LWNvbnRleHQvZXZlbnQtY29udGV4dC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBVc2VyQWN0aW9uU3RhcnRPcHRpb25zIH0gZnJvbSBcIi4uL3VzZXItYWN0aW9ucy91c2VyLWFjdGlvbi1zdGFydC1vcHRpb25zLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFVzZXJBY3Rpb25UcmFja2VyIH0gZnJvbSBcIi4uL3VzZXItYWN0aW9ucy91c2VyLWFjdGlvbi10cmFja2VyLmpzXCI7XG5cbi8qKlxuICogQSBtZXRob2Qgd2hpY2ggZGVhY3RpdmF0ZXMgYmVoYXZpb3Igd2hlbiBpbnZva2VkLlxuICogU2VlIHRoZSByZXR1cm5pbmcgbWV0aG9kJ3MgQVBJIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQGlubGluZVxuICogQGlnbm9yZVxuICovXG5leHBvcnQgdHlwZSBVbnN1YnNjcmliZXIgPSAoKSA9PiB2b2lkO1xuXG4vKipcbiAqIFRoZSBjb25maWd1cmF0aW9uIG9iamVjdCBwcm92aWRlZCB0byB0aGUgcnVuSGVhbHRoQ2hlY2sgQVBJLlxuICpcbiAqIEBzZWUgcnVuSGVhbHRoQ2hlY2tcbiAqIEBpbmxpbmVcbiAqIEBpZ25vcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIZWFsdGhDaGVja0NvbmZpZyB7XG4gICAgbG9nVmVyYm9zZT86IGJvb2xlYW47XG4gICAgcmV0dXJuRGlhZ25vc3RpY0RhdGE/OiBib29sZWFuO1xuICAgIHJ1bkRldGFpbGVkT3ZlcnJpZGVDaGVjaz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQGNhdGVnb3J5IEFQSVxuICovXG5leHBvcnQgbmFtZXNwYWNlIGR5bmF0cmFjZSB7XG4gICAgLyoqXG4gICAgICogU2VuZHMgYW4gZXZlbnQgd2l0aCB0aGUgcHJvdmlkZWQgZmllbGRzLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogZHluYXRyYWNlLnNlbmRFdmVudCh7XG4gICAgICogICAgIFwiZXZlbnRfcHJvcGVydGllcy5wcm9wXCI6IFwidmFsdWVcIixcbiAgICAgKiAgICAgXCJkdXJhdGlvblwiOiAxMjMsXG4gICAgICogICAgIFwiZXZlbnRfcHJvcGVydGllcy51cmxcIjogXCJ3d3cuZHluYXRyYWNlLmNvbVwiLFxuICAgICAqICAgICBcImV2ZW50X3Byb3BlcnRpZXMuaWRcIjogXCIxMjM0NTY3ODlcIixcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIFVzaW5nIGNvbnRleHQ6XG4gICAgICogZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwgKGV2ZW50KSA9PiB7XG4gICAgICogICAgIGR5bmF0cmFjZS5zZW5kRXZlbnQoe1xuICAgICAqICAgICAgICAgIFwiZXZlbnRfcHJvcGVydGllcy5wcm9wXCI6IFwidmFsdWVcIixcbiAgICAgKiAgICAgICAgICBcImR1cmF0aW9uXCI6IDEyMyxcbiAgICAgKiAgICAgICAgICBcImV2ZW50X3Byb3BlcnRpZXMudXJsXCI6IFwid3d3LmR5bmF0cmFjZS5jb21cIixcbiAgICAgKiAgICAgICAgICBcImV2ZW50X3Byb3BlcnRpZXMuaWRcIjogXCIxMjM0NTY3ODlcIixcbiAgICAgKiAgICAgfSwgZXZlbnQpOyAvLyBhZGQgdGhlIGV2ZW50IGNvbnRleHQgaGVyZVxuICAgICAqIH0pO1xuICAgICAqYGBgXG4gICAgICogQHBhcmFtIGZpZWxkcyAgICAgICBNdXN0IGJlIGEgdmFsaWQgSlNPTiBvYmplY3QgYW5kIGNhbm5vdCBjb250YWluIGZ1bmN0aW9ucywgdW5kZWZpbmVkLCBJbmZpbml0eSBhbmQgTmFOIGFzXG4gICAgICogICAgICAgICAgICAgICAgICAgICB2YWx1ZXMsIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBudWxsLiBUaGUgYGZpZWxkc2AgbmVlZCB0byBiZSBzZXJpYWxpemFibGVcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgIHVzaW5nIEpTT04uc3RyaW5naWZ5LiBUaGUgcmVzdWx0aW5nIGV2ZW50IHdpbGwgY29udGFpbiB0aGUgcHJvdmlkZWQgYGZpZWxkc2AsIGFuZCBpc1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgd2l0aCBhZGRpdGlvbmFsIHByb3BlcnRpZXMsIHRodXMgYWxzbyBlbXB0eSBvYmplY3RzIGFyZSB2YWxpZC4gT25seSBwcm9wZXJ0aWVzXG4gICAgICogICAgICAgICAgICAgICAgICAgICBwcmVmaXhlZCB3aXRoIGBldmVudF9wcm9wZXJ0aWVzLmAsIHRoZSBgZHVyYXRpb25gIHByb3BlcnR5IGFuZCB0aGUgYHN0YXJ0X3RpbWVgIHByb3BlcnR5IGFyZVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZC4gU3RyaW5nIHByb3BlcnRpZXMgYXJlIGxpbWl0ZWQgdG8gNTAwMCBjaGFyYWN0ZXJzLCBleGNlZWRpbmcgY2hhcmFjdGVycyBhcmUgY3V0IG9mZi5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgIEFsbCBldmVudCBwcm9wZXJ0eSBrZXlzIG11c3QgY29udGFpbiBvbmx5IGFscGhhYmV0aWMgY2hhcmFjdGVycywgbnVtYmVycyxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgIHVuZGVyc2NvcmVzIG9yIGRvdHMuIEVhY2ggZG90IG11c3QgYmUgZm9sbG93ZWQgYnkgYW4gYWxwaGFiZXRpYyBjaGFyYWN0ZXIuIEVhY2ggdW5kZXJzY29yZVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgbXVzdCBiZSBmb2xsb3dlZCBieSBhbiBhbHBoYWJldGljIGNoYXJhY3RlciBvciBudW1iZXIuXG4gICAgICogQHBhcmFtIGV2ZW50Q29udGV4dCBBbiBvcHRpb25hbCBjb250ZXh0IChzZWUge0BsaW5rIGR5bmF0cmFjZS5hZGRFdmVudE1vZGlmaWVyfSkgdGhhdCBjYW4gYmUgdXNlZCB0byBtYW5pcHVsYXRlIHRoZVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgcmVzdWx0IGV2ZW50IHdpdGhpbiB0aGUgbW9kaWZpY2F0aW9uIGNhbGxiYWNrLlxuICAgICAqL1xuICAgIGV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHNlbmRFdmVudChmaWVsZHM6IEFwaUNyZWF0ZWRFdmVudFByb3BlcnRpZXNFdmVudCwgZXZlbnRDb250ZXh0PzogdW5rbm93bik6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBTZW5kIGEgQnVzaW5lc3MgRXZlbnQuXG4gICAgICpcbiAgICAgKiBXaXRoIHNlbmRCaXpFdmVudCwgeW91IGNhbiByZXBvcnQgYSBidXNpbmVzcyBldmVudC4gVGhlc2Ugc3RhbmRhbG9uZSBldmVudHMgYXJlIGJlaW5nIHNlbnQgZGV0YWNoZWQgZnJvbSB1c2VyXG4gICAgICogYWN0aW9ucyBvciBzZXNzaW9ucy5cbiAgICAgKlxuICAgICAqIE5vdGU6IEJ1c2luZXNzIGV2ZW50cyBhcmUgY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkIG9uIER5bmF0cmFjZSBTYWFTIGRlcGxveW1lbnRzLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogZHluYXRyYWNlLnNlbmRCaXpFdmVudChcInR5cGVcIiwge1xuICAgICAqICAgICBwcm9wOiBcInZhbHVlXCIsXG4gICAgICogICAgIG5hbWU6IFwiYml6IGV2ZW50IG5hbWVcIixcbiAgICAgKiAgICAgdGltZXN0YW1wOiAxMjMsXG4gICAgICogICAgIHVybDogXCJ3d3cuZHluYXRyYWNlLmNvbVwiLFxuICAgICAqICAgICBwYWdlX2lkOiBcIjEyMzQ1Njc4OVwiLFxuICAgICAqICAgICBcIndpbmRvdy5vcmllbnRhdGlvblwiOiBcImRpYWdvbmFsXCJcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIFVzaW5nIGNvbnRleHQ6XG4gICAgICogZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwgKGV2ZW50KSA9PiB7XG4gICAgICogICAgIGR5bmF0cmFjZS5zZW5kQml6RXZlbnQoXCJ0eXBlXCIsIHtcbiAgICAgKiAgICAgICAgIHByb3A6IFwidmFsdWVcIixcbiAgICAgKiAgICAgICAgIG5hbWU6IFwiYml6IGV2ZW50IG5hbWVcIixcbiAgICAgKiAgICAgICAgIHRpbWVzdGFtcDogMTIzLFxuICAgICAqICAgICAgICAgdXJsOiBcInd3dy5keW5hdHJhY2UuY29tXCIsXG4gICAgICogICAgICAgICBwYWdlX2lkOiBcIjEyMzQ1Njc4OVwiLFxuICAgICAqICAgICAgICAgXCJ3aW5kb3cub3JpZW50YXRpb25cIjogXCJkaWFnb25hbFwiXG4gICAgICogICAgIH0sIGV2ZW50KTsgLy8gYWRkIHRoZSBldmVudCBjb250ZXh0IGhlcmVcbiAgICAgKiB9KTtcbiAgICAgKmBgYFxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICogQHBhcmFtIHR5cGUgICAgICAgICBNYW5kYXRvcnkgZXZlbnQgdHlwZVxuICAgICAqIEBwYXJhbSBmaWVsZHMgICAgICAgTXVzdCBiZSBhIHZhbGlkIEpTT04gb2JqZWN0IGFuZCBjYW5ub3QgY29udGFpbiBmdW5jdGlvbnMsIHVuZGVmaW5lZCwgSW5maW5pdHkgYW5kIE5hTiBhc1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLCBvdGhlcndpc2UgdGhleSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggbnVsbC4gVGhlIGBmaWVsZHNgIG5lZWQgdG8gYmUgc2VyaWFsaXphYmxlXG4gICAgICogICAgICAgICAgICAgICAgICAgICB1c2luZyBKU09OLnN0cmluZ2lmeS4gVGhlIHJlc3VsdGluZyBldmVudCB3aWxsIGJlIHBvcHVsYXRlZCB3aXRoIGBmaWVsZHNgIHBhcmFtZXRlciwgYW5kXG4gICAgICogICAgICAgICAgICAgICAgICAgICBtb2RpZmllZCB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllcywgdGh1cyBhbHNvIGVtcHR5IG9iamVjdHMgYXJlIHZhbGlkLlxuICAgICAqIEBwYXJhbSBldmVudENvbnRleHQgQW4gb3B0aW9uYWwgY29udGV4dCAoc2VlIHtAbGluayBkeW5hdHJhY2UuYWRkRXZlbnRNb2RpZmllcn0pIHRoYXQgY2FuIGJlIHVzZWQgdG8gbWFuaXB1bGF0ZSB0aGVcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCBldmVudCB3aXRoaW4gdGhlIG1vZGlmaWNhdGlvbiBjYWxsYmFjay4gV2lsbCBiZSBwcm92aWRlZCBhcyBDdXN0b21FdmVudENvbnRleHQgVE9ET1xuICAgICAqL1xuICAgIGV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHNlbmRCaXpFdmVudCh0eXBlOiBzdHJpbmcsIGZpZWxkczogSlNPTk9iamVjdCwgZXZlbnRDb250ZXh0PzogdW5rbm93bik6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBNb2RpZmllcyBmdXR1cmUgZXZlbnRzIHdpdGggdGhlIHByb3ZpZGVkIG1vZGlmaWVyIGZ1bmN0aW9uLiBSZXR1cm5pbmcgYSBub24tb2JqZWN0IG9yIGBudWxsYCBkaXNjYXJkcyB0aGlzIGV2ZW50XG4gICAgICogYW5kIHByZXZlbnRzIGZ1dHVyZSBtdXRhdG9yIGZ1bmN0aW9ucyB0byBiZSBleGVjdXRlZC5cbiAgICAgKlxuICAgICAqIENlcnRhaW4gcmVzZXJ2ZWQgZmllbGRzIGFuZCBuYW1lc3BhY2VzIGNhbuKAmXQgYmUgbW9kaWZpZWQgaW4gYW55IHdheSAoYWRkZWQsIHJlbW92ZWQgb3Igb3ZlcnJpZGRlbiksIHdoaWxlIG90aGVycyBhcmUgb3BlbiBmb3IgbW9kaWZpY2F0aW9uLlxuICAgICAqIFNlZSB0aGUgcHVibGljIGRvY3VtZW50YXRpb24gZm9yIGEgZGV0YWlsZWQgbGlzdCBvZiByZXNlcnZlZC9vcGVuIGZpZWxkcyAobGluayB3aWxsIGJlIGFkZGVkIGluIHRoZSBmdXR1cmUpLlxuICAgICAqXG4gICAgICogVGhlIGNvbnRleHQgZGlmZmVycyBiYXNlZCBvbiB0aGUgcHJvY2Vzc2VkIGV2ZW50IGFuZCBhdmFpbGFiaWxpdHkgb2YgZGF0YS5cbiAgICAgKiBGb3IgZXZlbnRzIHNlbnQgd2l0aCB7QGxpbmsgZHluYXRyYWNlLnNlbmRFdmVudH0sIHRoZSBvcHRpb25hbGx5IHByb3ZpZGVkIGNvbnRleHQgd2lsbCBiZSBwcm92aWRlZCBhcyBjdXN0b20gY29udGV4dC5cbiAgICAgKiBUaGUgY29udGV4dCBvYmplY3QgY29udGFpbnMgYSBcInR5cGVcIiBhbmQgb3B0aW9uYWxseSBhIFwic3ViX3R5cGVcIiBwYXJhbWV0ZXIsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGRpc3Rpbmd1aXNoIHRoZW0uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBkeW5hdHJhY2UuYWRkRXZlbnRNb2RpZmllcihmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgKiAgICAgaWYgKGV2ZW50W1wiZXZlbnQudHlwZVwiXSAhPT0gXCJjbGlja1wiKSB7XG4gICAgICogICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICogICAgIH1cbiAgICAgKiAgICAgcmV0dXJuIHtcbiAgICAgKiAgICAgICAgIC4uLmV2ZW50LFxuICAgICAqICAgICAgICAgXCJldmVudF9wcm9wZXJ0aWVzLnByb3BcIjogXCJ2YWx1ZVwiLFxuICAgICAqICAgICAgICAgXCJ1cmwuZnVsbFwiOiBcInd3dy5keW5hdHJhY2UuY29tXCIsXG4gICAgICogICAgICAgICBcInZpZXcuZGV0ZWN0ZWRfbmFtZVwiOiBcIjEyMzQ1Njc4OVwiLFxuICAgICAqICAgICB9XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyBVc2luZyBjb250ZXh0OlxuICAgICAqIGR5bmF0cmFjZS5hZGRFdmVudE1vZGlmaWVyKGZ1bmN0aW9uIChldmVudCwgY29udGV4dCkge1xuICAgICAqICAgICBpZiAoZXZlbnRbXCJldmVudC50eXBlXCJdICE9PSBcImNsaWNrXCIpIHtcbiAgICAgKiAgICAgICAgIHJldHVybiBldmVudDtcbiAgICAgKiAgICAgfVxuICAgICAqICAgICBpZiAoY29udGV4dD8uYWRkaXRpb25hbERhdGEpIHtcbiAgICAgKiAgICAgICAgIHJldHVybiB7XG4gICAgICogICAgICAgICAgIC4uLmV2ZW50LFxuICAgICAqICAgICAgICAgICBcImV2ZW50X3Byb3BlcnRpZXMuZXh0cmFfZGF0YVwiOiBgcmVjZWl2ZWQgZXh0cmEgZGF0YTogJHtjb250ZXh0LmFkZGl0aW9uYWxEYXRhfWBcbiAgICAgKiAgICAgICAgIH07XG4gICAgICogICAgIH1cbiAgICAgKiAgICAgcmV0dXJuIGV2ZW50O1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gRGlzY2FyZGluZyBhbiBldmVudDpcbiAgICAgKiBkeW5hdHJhY2UuYWRkRXZlbnRNb2RpZmllcihmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgKiAgIGlmIChldmVudFtcImV2ZW50LnR5cGVcIl0gPT09IFwiY2xpY2tcIikge1xuICAgICAqICAgICByZXR1cm4gbnVsbDtcbiAgICAgKiAgIH1cbiAgICAgKiAgIHJldHVybiBldmVudDtcbiAgICAgKiB9KTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudE1vZGlmaWVyIFRoZSBtb2RpZmllciBmdW5jdGlvbiB0byBtb2RpZnkgYSBnaXZlbiAocmVhZG9ubHkpIEpTT05FdmVudC4gSXQgcmVjZWl2ZXMgYW4gb3B0aW9uYWwgY29udGV4dFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBldmVudCwgaWYgYXZhaWxhYmxlLiBUaGUgcmV0dXJuZWQgZXZlbnQgbXVzdCBiZSBhIG5ldyBvYmplY3QsIG90aGVyd2lzZVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWNhdGlvbiB3aWxsIGJlIGlnbm9yZWQuIE1vZGlmaWNhdGlvbiBpcyBvbmx5IGFsbG93ZWQgZm9yIGZpZWxkcyBkZWNsYXJlZCBpblxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIHtAbGluayBBbGxvd2VkTW9kaWZpY2F0aW9uRmllbGRzfS5cbiAgICAgKiBAcmV0dXJucyAgICAgICAgICAgICBUaGUgdW5zdWJzY3JpYmVyIGZ1bmN0aW9uIHRvIHR1cm4gb2ZmIGV2ZW50IG1vZGlmaWNhdGlvbi5cbiAgICAgKi9cbiAgICBleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBhZGRFdmVudE1vZGlmaWVyKGV2ZW50TW9kaWZpZXI6IChqc29uRXZlbnQ6IFJlYWRvbmx5PEpTT05FdmVudD4sIGV2ZW50Q29udGV4dD86IEV2ZW50Q29udGV4dCkgPT4gSlNPTkV2ZW50IHwgbnVsbCk6IFVuc3Vic2NyaWJlcjtcblxuICAgIC8qKlxuICAgICAqIElmIG5vdCBhbHJlYWR5IGVuYWJsZWQsIGR5bmFtaWNhbGx5IGxvYWRzIHRoZSBIZWFsdGggQ2hlY2sgbW9kdWxlIHdoaWNoIHdpbGwgcmVhZCBhY2N1bXVsYXRlZCBoZWFsdGggY2hlY2sgZGF0YVxuICAgICAqIGFuZCBwcmVzZW50IGl0IGluIHRoZSBicm93c2VyIGRldmVsb3BlciB0b29scyBjb25zb2xlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciB0aGUgaGVhbHRoIGNoZWNrLlxuICAgICAqIEBwYXJhbSBjb25maWcubG9nVmVyYm9zZSAgICAgICAgICAgICAgIElmIHRydWUsIHZlcmJvc2UgaW5mb3JtYXRpb24gaXMgaW5jbHVkZWQgaW4gdGhlIGhlYWx0aCBjaGVjay5cbiAgICAgKiBAcGFyYW0gY29uZmlnLnJldHVybkRpYWdub3N0aWNEYXRhICAgICBJZiB0cnVlLCB0aGUgZGlhZ25vc3RpYyBkYXRhIGlzIHJldHVybmVkIGFzIGFycmF5IGluc3RlYWQgb2YganVzdCBiZWluZyBsb2dnZWQuXG4gICAgICogQHBhcmFtIGNvbmZpZy5ydW5EZXRhaWxlZE92ZXJyaWRlQ2hlY2sgaWYgdHJ1ZSwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB3aWxsIGJlIGxvZ2dlZCB0byB0aGUgY29uc29sZSBmb3Igb3ZlcnJpZGRlbiBuYXRpdmUgQVBJcy5cbiAgICAgKiBAcmV0dXJucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIHByb21pc2UgdGhhdCBzZXR0bGVzIGFzIHNvb24gYXMgdGhlIGhlYWx0aCBjaGVjayBoYXMgYmVlbiBwZXJmb3JtZWQuXG4gICAgICovXG4gICAgZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gcnVuSGVhbHRoQ2hlY2soY29uZmlnPzogSGVhbHRoQ2hlY2tDb25maWcpOiBQcm9taXNlPHVua25vd25bXSB8IHVuZGVmaW5lZD47XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGVzIGRlYnVnIGxvZ2dpbmcuXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWwgbm90IHB1YmxpYyB5ZXRcbiAgICAgKiBAcGFyYW0gICAgbG9nZ2luZ0luZm9ybWF0aW9uIEFuIG9iamVjdCB0aGF0IHNwZWNpZmllcyB3aGF0IHNob3VsZCBiZSBsb2dnZWRcbiAgICAgKiBAcmV0dXJucyAgICAgICAgICAgICAgICAgICAgIEEgcHJvbWlzZSB0aGF0IHNldHRsZXMgYXMgc29vbiBhcyBkZWJ1ZyBsb2dnaW5nIGhhcyBiZWVuIGVuYWJsZWRcbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGR5bmF0cmFjZS9kZW0tZXNsaW50LXJ1bGVzL2NvcnJlY3QtbnVsbC12b2lkLXVuZGVmaW5lZCAtLSBuZWNlc3NhcnksIGJlY2F1c2Ugd2Ugb3ZlcnJpZGUgdGhlIGZ1bmN0aW9uIGFmdGVyIGxvYWRpbmcgdGhlIGhlYWx0aGNoZWNrIG1vZHVsZVxuICAgIGV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGVuYWJsZURlYnVnTG9nZ2luZyhsb2dnaW5nSW5mb3JtYXRpb246IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+KTogUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBVc2UgdG8gaWRlbnRpZnkgaW5kaXZpZHVhbCB1c2VycyBhY3Jvc3MgZGlmZmVyZW50IGJyb3dzZXJzLCBkZXZpY2VzLCBhbmQgdXNlciBzZXNzaW9ucy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgbmFtZSBvZiB0aGUgdXNlci4gRm9yIGV4YW1wbGUsIHVzZSBhIG5hbWUsIHVzZXJpZCwgb3IgeW91ciB1c2VyJ3MgZW1haWwgYWRkcmVzcy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGR5bmF0cmFjZS5pZGVudGlmeVVzZXIoXCJqb2huLmRvZUBleGFtcGxlLmNvbVwiKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBpZGVudGlmeVVzZXIodmFsdWU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBTZW5kcyBhIHNlc3Npb25Qcm9wZXJ0eUV2ZW50LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogZHluYXRyYWNlLnNlbmRTZXNzaW9uUHJvcGVydHlFdmVudCh7XG4gICAgICogICAgIFwic2Vzc2lvbl9wcm9wZXJ0aWVzLnNvbWVfY3VzdG9tXCI6IHRydWUsXG4gICAgICogICAgIFwic2Vzc2lvbl9wcm9wZXJ0aWVzLm15X2lkXCI6IFwibTEyMzQ1NlwiLFxuICAgICAqICAgICBcInNlc3Npb25fcHJvcGVydGllcy5teV9vdGhlcl9pZF8yXCI6IFwieDEyM1wiLFxuICAgICAqICAgICBcInNlc3Npb25fcHJvcGVydGllcy5teV9mdWxseV9vdGhlci5pZDNcIjogXCJpZDAwN1wiLFxuICAgICAqIH0pO1xuICAgICAqYGBgXG4gICAgICogQHBhcmFtIGZpZWxkcyBNdXN0IGJlIGEgdmFsaWQgSlNPTiBvYmplY3QgYW5kIGNhbm5vdCBjb250YWluIGZ1bmN0aW9ucywgdW5kZWZpbmVkLCBJbmZpbml0eSBhbmQgTmFOIGFzXG4gICAgICogICAgICAgICAgICAgICB2YWx1ZXMsIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBudWxsLiBUaGUgYGZpZWxkc2AgbmVlZCB0byBiZSBzZXJpYWxpemFibGVcbiAgICAgKiAgICAgICAgICAgICAgIHVzaW5nIEpTT04uc3RyaW5naWZ5LiBUaGUgcmVzdWx0aW5nIGV2ZW50IHdpbGwgYmUgcG9wdWxhdGVkIHdpdGggYGZpZWxkc2AgcGFyYW1ldGVyLCBhbmRcbiAgICAgKiAgICAgICAgICAgICAgIGlzIG1vZGlmaWVkIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzLCB0aHVzIGFsc28gZW1wdHkgb2JqZWN0cyBhcmUgdmFsaWQuIE9ubHkgcHJvcGVydGllc1xuICAgICAqICAgICAgICAgICAgICAgcHJlZml4ZWQgd2l0aCBgc2Vzc2lvbl9wcm9wZXJ0aWVzLmAsIHRoZSBgZHVyYXRpb25gIHByb3BlcnR5IGFuZCB0aGUgYHN0YXJ0X3RpbWVgIHByb3BlcnR5IGFyZVxuICAgICAqICAgICAgICAgICAgICAgYWxsb3dlZC4gU3RyaW5nIHByb3BlcnRpZXMgYXJlIGxpbWl0ZWQgdG8gNTAwMCBjaGFyYWN0ZXJzLCBleGNlZWRpbmcgY2hhcmFjdGVycyBhcmUgY3V0IG9mZi4gQWxsXG4gICAgICogICAgICAgICAgICAgICBzZXNzaW9uIHByb3BlcnR5IGtleXMgbXVzdCBjb250YWluIG9ubHkgYWxwaGFiZXRpYyBjaGFyYWN0ZXJzLCBudW1iZXJzLCB1bmRlcnNjb3JlcyBvclxuICAgICAqICAgICAgICAgICAgICAgZG90cy4gRWFjaCBkb3QgbXVzdCBiZSBmb2xsb3dlZCBieSBhbiBhbHBoYWJldGljIGNoYXJhY3Rlci4gRWFjaCB1bmRlcnNjb3JlIG11c3QgYmUgZm9sbG93ZWQgYnkgYW5cbiAgICAgKiAgICAgICAgICAgICAgIGFscGhhYmV0aWMgY2hhcmFjdGVyIG9yIG51bWJlci5cbiAgICAgKi9cbiAgICBleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBzZW5kU2Vzc2lvblByb3BlcnR5RXZlbnQoZmllbGRzOiBBcGlDcmVhdGVkU2Vzc2lvblByb3BlcnRpZXNFdmVudCk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIGlmIHRoZSBFcnJvciBtb2R1bGUgaXMgZW5hYmxlZFxuICAgICAqXG4gICAgICogQHBhcmFtIGVycm9yICBNdXN0IGJlIGEgdmFsaWQgaW5zdGFuY2Ugb2YgdGhlIEVycm9yIGNsYXNzLiBJZiBhbiBpbnZhbGlkIHZhbHVlIGlzIHByb3ZpZGVkLCB0aGUgZXJyb3Igd2lsbCBub3QgYmUgcHJvY2Vzc2VkIG9yIHNlbnQuXG4gICAgICogQHBhcmFtIGZpZWxkcyBPcHRpb25hbDogTXVzdCBiZSBhIHZhbGlkIEpTT04gb2JqZWN0IGFuZCBjYW5ub3QgY29udGFpbiBmdW5jdGlvbnMsIHVuZGVmaW5lZCwgSW5maW5pdHkgYW5kIE5hTiBhc1xuICAgICAqICAgICAgICAgICAgICAgdmFsdWVzLCBvdGhlcndpc2UgdGhleSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggbnVsbC4gVGhlIGBmaWVsZHNgIG5lZWQgdG8gYmUgc2VyaWFsaXphYmxlXG4gICAgICogICAgICAgICAgICAgICB1c2luZyBKU09OLnN0cmluZ2lmeS4gVGhlIHJlc3VsdGluZyBldmVudCB3aWxsIGNvbnRhaW4gdGhlIHByb3ZpZGVkIGBmaWVsZHNgLCBhbmQgaXNcbiAgICAgKiAgICAgICAgICAgICAgIG1vZGlmaWVkIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzLCB0aHVzIGFsc28gZW1wdHkgb2JqZWN0cyBhcmUgdmFsaWQuIE9ubHkgcHJvcGVydGllc1xuICAgICAqICAgICAgICAgICAgICAgcHJlZml4ZWQgd2l0aCBgZXZlbnRfcHJvcGVydGllcy5gLCB0aGUgYGR1cmF0aW9uYCBwcm9wZXJ0eSBhbmQgdGhlIGBzdGFydF90aW1lYCBwcm9wZXJ0eSBhcmVcbiAgICAgKiAgICAgICAgICAgICAgIGFsbG93ZWQuIFN0cmluZyBwcm9wZXJ0aWVzIGFyZSBsaW1pdGVkIHRvIDUwMDAgY2hhcmFjdGVycywgZXhjZWVkaW5nIGNoYXJhY3RlcnMgYXJlIGN1dCBvZmYuXG4gICAgICogICAgICAgICAgICAgICBBbGwgZXZlbnQgcHJvcGVydHkga2V5cyBtdXN0IGNvbnRhaW4gb25seSBhbHBoYWJldGljIGNoYXJhY3RlcnMsIG51bWJlcnMsXG4gICAgICogICAgICAgICAgICAgICB1bmRlcnNjb3JlcyBvciBkb3RzLiBFYWNoIGRvdCBtdXN0IGJlIGZvbGxvd2VkIGJ5IGFuIGFscGhhYmV0aWMgY2hhcmFjdGVyLiBFYWNoIHVuZGVyc2NvcmVcbiAgICAgKiAgICAgICAgICAgICAgIG11c3QgYmUgZm9sbG93ZWQgYnkgYW4gYWxwaGFiZXRpYyBjaGFyYWN0ZXIgb3IgbnVtYmVyLlxuICAgICAqL1xuICAgIGV4cG9ydCBkZWNsYXJlIGxldCBzZW5kRXhjZXB0aW9uRXZlbnQ6ICgoZXJyb3I6IEVycm9yLCBmaWVsZHM/OiBBcGlDcmVhdGVkRXZlbnRQcm9wZXJ0aWVzRXZlbnQpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBwcm9wZXJ0eSBpcyBgdW5kZWZpbmVkYCBpZiB0aGUgVXNlciBBY3Rpb25zIG1vZHVsZSBpcyBkaXNhYmxlZC5cbiAgICAgKlxuICAgICAqIEBleHBlcmltZW50YWxcbiAgICAgKi9cbiAgICBleHBvcnQgZGVjbGFyZSBsZXQgdXNlckFjdGlvbnM6IFVzZXJBY3Rpb25zIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEBleHBlcmltZW50YWxcbiAqIEBjYXRlZ29yeSBVc2VyIEFjdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyQWN0aW9ucyB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBjb250cm9sbGFibGUgdXNlciBhY3Rpb24uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCB1c2VyQWN0aW9uID0gZHluYXRyYWNlLnVzZXJBY3Rpb25zLmNyZWF0ZSh7IGF1dG9DbG9zZTogZmFsc2UgfSk7XG4gICAgICogY29uc3QgdW5zdWJzY3JpYmUgPSB1c2VyQWN0aW9uLnN1YnNjcmliZShjdXJyZW50VXNlckFjdGlvbiA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKGBVc2VyIGFjdGlvbiB3b3VsZCBoYXZlIGJlZW4gY29tcGxldGVkIGR1ZSB0byAke2N1cnJlbnRVc2VyQWN0aW9uLmNvbXBsZXRlUmVhc29ufWAsIGV2ZW50KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyBleGVjdXRlIHVzZXIgYWN0aW9uc1xuICAgICAqIHVzZXJBY3Rpb24uZmluaXNoKCk7XG4gICAgICogdW5zdWJzY3JpYmUoKTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBleHBlcmltZW50YWxcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAgICAgICAgICAgQW4gb3B0aW9uYWwgb3B0aW9ucyBvYmplY3QgdG8gY29uZmlndXJlIHRoZSB1c2VyIGFjdGlvbi5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucy5hdXRvQ2xvc2UgSWYgdHJ1ZSwgYXV0b21hdGljYWxseSBzdG9wcyB0aGUgdXNlciBhY3Rpb24gdXNpbmcgUlVNIEphdmFTY3JpcHQgdXNlciBhY3Rpb24gcnVsZXMuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIElmIGZhbHNlLCB0aGUgdXNlciBhY3Rpb24gcmVtYWlucyBhY3RpdmUgdW50aWwgdGhlIG5leHQgY2FsbCB0byBgY3JlYXRlKC4uLilgIG9yIHRvIGB1c2VyQWN0aW9uLmZpbmlzaCgpYC5cbiAgICAgKiBAcmV0dXJucyAgICAgICAgICAgICAgICAgQW4gYFVzZXJBY3Rpb25UcmFja2VyYCBvYmplY3QgdGhhdCBjYW4gYmUgc3RhcnRlZCBhbmQgZmluaXNoZWQsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSB1c2VyIGFjdGlvbiBtb2R1bGUgaXMgbm90IGVuYWJsZWQuXG4gICAgICovXG4gICAgY3JlYXRlKHRoaXM6IHZvaWQsIG9wdGlvbnM/OiBVc2VyQWN0aW9uU3RhcnRPcHRpb25zKTogVXNlckFjdGlvblRyYWNrZXI7XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmVzIHRvIHVzZXIgYWN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IHVuc3Vic2NyaWJlID0gZHluYXRyYWNlLnVzZXJBY3Rpb25zPy5zdWJzY3JpYmUodXNlckFjdGlvbiA9PiB7XG4gICAgICogICAgIC8vIERpc2FibGUgYXV0b21hdGljIHVzZXJBY3Rpb24gY29tcGxldGlvblxuICAgICAqICAgICB1c2VyQWN0aW9uLmF1dG9DbG9zZSA9IGZhbHNlO1xuICAgICAqICAgICAvLyBFeGVjdXRlIHNvbWUgcmVxdWVzdHMgb3IgbXV0YXRpb25zLCB0aGVuIGZpbmlzaCB0aGUgdXNlciBhY3Rpb25cbiAgICAgKiAgICAgdXNlckFjdGlvbi5maW5pc2goKTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyBTb21lIHRpbWUgbGF0ZXIgaWYgeW91IGRvbid0IHdhbnQgdG8gbGlzdGVuIHRvIHVzZXJBY3Rpb25zIGFueW1vcmVcbiAgICAgKiB1bnN1YnNjcmliZSgpO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQGV4cGVyaW1lbnRhbFxuICAgICAqIEBwYXJhbSBzdWJzY3JpYmVyIEEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbmV2ZXIgRHluYXRyYWNlIGNyZWF0ZXMgYSBuZXcgdXNlciBhY3Rpb24uXG4gICAgICogQHJldHVybnMgICAgICAgICAgQW4gdW5zdWJzY3JpYmVyIGZ1bmN0aW9uIHRvIHJlbW92ZSB0aGUgc3Vic2NyaXB0aW9uLlxuICAgICAqL1xuICAgIHN1YnNjcmliZSh0aGlzOiB2b2lkLCBzdWJzY3JpYmVyOiAodXNlckFjdGlvbjogVXNlckFjdGlvblRyYWNrZXIpID0+IHZvaWQpOiBVbnN1YnNjcmliZXI7XG5cbiAgICAvKipcbiAgICAgKiBEaXNhYmxlcyBhdXRvbWF0aWMgdXNlciBhY3Rpb24gZGV0ZWN0aW9uLiBVc2VmdWwgaW4gY2FzZSBpdCBpbnRlcmZlcmVzIHdpdGggbWFudWFsIHVzZXIgYWN0aW9uIGhhbmRsaW5nLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogZHluYXRyYWNlLnVzZXJBY3Rpb25zPy5zZXRBdXRvbWF0aWNEZXRlY3Rpb24oZmFsc2UpO1xuICAgICAqXG4gICAgICogYXN5bmMgZnVuY3Rpb24gaGFuZGxlQ2xpY2socm91dGVyKSB7XG4gICAgICogICAgIGNvbnN0IHVzZXJBY3Rpb24gPSBkeW5hdHJhY2UudXNlckFjdGlvbnM/LmNyZWF0ZSh7IGF1dG9DbG9zZTogZmFsc2UgfSk7XG4gICAgICogICAgIC8vIHRoaXMgd291bGQgbm9ybWFsbHkgY3JlYXRlIGFuIHVzZXIgYWN0aW9uIHRoYXQgd291bGQgZmluaXNoIHRoaXMgbWFudWFsIHVzZXIgYWN0aW9uXG4gICAgICogICAgIGF3YWl0IHJvdXRlci5yZWRpcmVjdChcImhvbWVcIik7XG4gICAgICogICAgIHVzZXJBY3Rpb24uZmluaXNoKCk7XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQGV4cGVyaW1lbnRhbFxuICAgICAqIEBwYXJhbSBhdXRvbWF0aWNEZXRlY3Rpb24gSWYgZmFsc2UsIGRpc2FibGVzIGF1dG9tYXRpYyB1c2VyIGFjdGlvbiBkZXRlY3Rpb24sIG90aGVyd2lzZSBlbmFibGVzIGl0LlxuICAgICAqL1xuICAgIHNldEF1dG9tYXRpY0RldGVjdGlvbih0aGlzOiB2b2lkLCBhdXRvbWF0aWNEZXRlY3Rpb246IGJvb2xlYW4pOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGN1cnJlbnQgdXNlciBhY3Rpb24sIG9yIGB1bmRlZmluZWRgIGlmIG5vIHVzZXIgYWN0aW9uIGlzIGluIHByb2dyZXNzLlxuICAgICAqXG4gICAgICogQGV4cGVyaW1lbnRhbFxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGFzeW5jIGZ1bmN0aW9uIHBvc3RNZXNzYWdlQ2hhbm5lbChtZXNzYWdlLCBjaGFubmVsKSB7XG4gICAgICogICBjb25zdCBjdXJyZW50VXNlckFjdGlvbiA9IGR5bmF0cmFjZS51c2VyQWN0aW9ucz8uY3VycmVudDtcbiAgICAgKiAgIGlmIChjdXJyZW50VXNlckFjdGlvbikge1xuICAgICAqICAgICAgY3VycmVudFVzZXJBY3Rpb24uYXV0b0Nsb3NlID0gZmFsc2U7XG4gICAgICogICB9XG4gICAgICogICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNoYW5uZWwuc2VuZChtZXNzYWdlKTtcbiAgICAgKiAgIGN1cnJlbnRVc2VyQWN0aW9uPy5maW5pc2goKTtcbiAgICAgKiAgIHJldHVybiByZXNwb25zZTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgY3VycmVudDogVXNlckFjdGlvblRyYWNrZXIgfCB1bmRlZmluZWQ7XG59XG4iXX0=
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYXRyYWNlLWFwaS10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS90eXBlcy9hcGkvZHluYXRyYWNlLWFwaS10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErSEE7O0dBRUc7QUFDSCxNQUFNLEtBQVcsU0FBUyxDQXVPekI7QUF2T0QsV0FBaUIsU0FBUztBQXVPMUIsQ0FBQyxFQXZPZ0IsU0FBUyxLQUFULFNBQVMsUUF1T3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICAgIEFwaUNyZWF0ZWRFdmVudFByb3BlcnRpZXNFdmVudCxcbiAgICBBcGlDcmVhdGVkU2Vzc2lvblByb3BlcnRpZXNFdmVudCxcbiAgICBKU09ORXZlbnQsXG4gICAgSlNPTk9iamVjdFxufSBmcm9tIFwiLi4vcnVtLWV2ZW50cy9qc29uLWV2ZW50LmpzXCI7XG5pbXBvcnQgdHlwZSB7XG4gICAgUnVtRXZlbnRLZXlzLFxuICAgIFJVTUtleVByZXNzQWN0aW9uRXZlbnRcbn0gZnJvbSBcIi4uL3J1bS1ldmVudHMvaW5kZXguanNcIjtcbmltcG9ydCB0eXBlIHsgRXZlbnRDb250ZXh0IH0gZnJvbSBcIi4uL3J1bS1ldmVudHMvZXZlbnQtY29udGV4dC9ldmVudC1jb250ZXh0LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFVzZXJBY3Rpb25TdGFydE9wdGlvbnMgfSBmcm9tIFwiLi4vdXNlci1hY3Rpb25zL3VzZXItYWN0aW9uLXN0YXJ0LW9wdGlvbnMuanNcIjtcbmltcG9ydCB0eXBlIHsgVXNlckFjdGlvblRyYWNrZXIgfSBmcm9tIFwiLi4vdXNlci1hY3Rpb25zL3VzZXItYWN0aW9uLXRyYWNrZXIuanNcIjtcblxuLyoqXG4gKiBBIG1ldGhvZCB3aGljaCBkZWFjdGl2YXRlcyBiZWhhdmlvciB3aGVuIGludm9rZWQuXG4gKiBTZWUgdGhlIHJldHVybmluZyBtZXRob2QncyBBUEkgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBAaW5saW5lXG4gKiBAaWdub3JlXG4gKi9cbmV4cG9ydCB0eXBlIFVuc3Vic2NyaWJlciA9ICgpID0+IHZvaWQ7XG5cbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHByb3ZpZGVkIHRvIHRoZSBydW5IZWFsdGhDaGVjayBBUEkuXG4gKlxuICogQHNlZSBydW5IZWFsdGhDaGVja1xuICogQGlubGluZVxuICogQGlnbm9yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhlYWx0aENoZWNrQ29uZmlnIHtcbiAgICBsb2dWZXJib3NlPzogYm9vbGVhbjtcbiAgICByZXR1cm5EaWFnbm9zdGljRGF0YT86IGJvb2xlYW47XG4gICAgcnVuRGV0YWlsZWRPdmVycmlkZUNoZWNrPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgZmllbGRzIGFsbG93ZWQgZm9yIHtAbGluayBJbnRlcmFjdGlvbnMuc2VuZEtleVByZXNzRXZlbnR9LlxuICpcbiAqIEluY2x1ZGVzIHRoZSByZXF1aXJlZCBga2V5c2AgYXJyYXkgYW5kIG9wdGlvbmFsIGB1aV9lbGVtZW50LmN1c3RvbV9uYW1lYC5cbiAqIEFkZGl0aW9uYWwgdXNlci1kZWZpbmVkIGZpZWxkcyBhcmUgbGltaXRlZCB0byBgZXZlbnRfcHJvcGVydGllcy4qYCBlbnRyaWVzLlxuICogVGhlIGZpZWxkcyBvYmplY3QgbXVzdCBiZSBhIEpTT04tc2VyaWFsaXphYmxlIHBsYWluIG9iamVjdC5cbiAqXG4gKiBAY2F0ZWdvcnkgQVBJXG4gKi9cbmV4cG9ydCB0eXBlIFNlbmRVc2VySW50ZXJhY3Rpb25GaWVsZHMgPSB7XG4gICAgLyoqXG4gICAgICogVGhlIGtleSBjb21iaW5hdGlvbiBmb3IgdGhlIGludGVyYWN0aW9uLiBNdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGtleS5cbiAgICAgKiBWYWx1ZXMgY2FuIGJlIHtAbGluayBVc2VySW50ZXJhY3Rpb25TcGVjaWFsS2V5fSBtZW1iZXJzIG9yIHJhd1xuICAgICAqIHtAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudC9rZXkgfCBLZXlib2FyZEV2ZW50LmtleX1cbiAgICAgKiBzdHJpbmdzIOKAlCByYXcgdmFsdWVzIGFyZSBub3JtYWxpemVkIGludGVybmFsbHkuXG4gICAgICogVGhlIGVudW0gaXMgb3B0aW9uYWwgYnV0IGltcHJvdmVzIHJlYWRhYmlsaXR5IHdoZW4gY29uc3RydWN0aW5nIGtleSBhcnJheXMgbWFudWFsbHkuXG4gICAgICpcbiAgICAgKiBJbXBvcnQgYFVzZXJJbnRlcmFjdGlvblNwZWNpYWxLZXlgIGZyb20gYEBkeW5hdHJhY2UvcnVtLWphdmFzY3JpcHQtc2RrL3R5cGVzL3J1bS1ldmVudHNgLlxuICAgICAqL1xuICAgIGtleXM6IFJVTUtleVByZXNzQWN0aW9uRXZlbnRbXCJrZXlzXCJdO1xuICAgIC8qKlxuICAgICAqIEFuIG9wdGlvbmFsIGN1c3RvbSBuYW1lIGZvciB0aGUgVUkgZWxlbWVudCwgaW5jbHVkZWQgYXMgYHVpX2VsZW1lbnQuY3VzdG9tX25hbWVgIGluIHRoZSBlbWl0dGVkIGV2ZW50LlxuICAgICAqIFRoaXMgZmllbGQgaXMgaW5kZXBlbmRlbnQgb2YgdGhlIGF1dG8tZGV0ZWN0ZWQgZWxlbWVudCBuYW1lIChgdWlfZWxlbWVudC5kZXRlY3RlZF9uYW1lYCkuXG4gICAgICogSXQgaXMgaW5jbHVkZWQgaW4gdGhlIGVtaXR0ZWQgZXZlbnQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGBlbGVtZW50T3JFdmVudGAgaXMgcHJvdmlkZWQuXG4gICAgICovXG4gICAgW1J1bUV2ZW50S2V5cy5VSV9FTEVNRU5UJENVU1RPTV9OQU1FXT86IHN0cmluZztcbn0gJiBBcGlDcmVhdGVkRXZlbnRQcm9wZXJ0aWVzRXZlbnQ7XG5cbi8qKlxuICogQGV4cGVyaW1lbnRhbFxuICogQGNhdGVnb3J5IEFQSVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVyYWN0aW9ucyB7XG4gICAgLyoqXG4gICAgICogU2VuZHMgYSB1c2VyIGludGVyYWN0aW9uIGV2ZW50IGZvciByZXBvcnRpbmcgY3VzdG9tIGtleWJvYXJkIHNob3J0Y3V0cyBvciBrZXkgY29tYmluYXRpb25zXG4gICAgICogdGhhdCBhcmUgbm90IGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQuIE9ubHkgYXZhaWxhYmxlIGlmIHRoZSBVc2VyIEludGVyYWN0aW9uIG1vZHVsZSBpcyBlbmFibGVkLlxuICAgICAqXG4gICAgICogS2V5cyBjYW4gYmUgc3BlY2lmaWVkIHVzaW5nIHtAbGluayBVc2VySW50ZXJhY3Rpb25TcGVjaWFsS2V5fSBtZW1iZXJzIG9yIHJhd1xuICAgICAqIHtAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudC9rZXkgfCBLZXlib2FyZEV2ZW50LmtleX1cbiAgICAgKiBzdHJpbmdzIOKAlCByYXcgdmFsdWVzIGFyZSBub3JtYWxpemVkIGludGVybmFsbHkgKGUuZy4gYFwiIFwiYCDihpIgYFwic3BhY2VcImAsIGBcIkNvbnRyb2xcImAg4oaSIGBcImN0cmxcImApLlxuICAgICAqIFRoZSBlbnVtIGlzIG9wdGlvbmFsIGJ1dCBpbXByb3ZlcyByZWFkYWJpbGl0eSB3aGVuIGNvbnN0cnVjdGluZyBrZXkgYXJyYXlzIG1hbnVhbGx5LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogaW1wb3J0IHsgVXNlckludGVyYWN0aW9uU3BlY2lhbEtleSB9IGZyb20gXCJAZHluYXRyYWNlL3J1bS1qYXZhc2NyaXB0LXNkay90eXBlcy9ydW0tZXZlbnRzXCI7XG4gICAgICpcbiAgICAgKiAvLyBCYXNpYyBrZXkgY29tYmluYXRpb25cbiAgICAgKiBkeW5hdHJhY2UuaW50ZXJhY3Rpb25zPy5zZW5kS2V5UHJlc3NFdmVudCh7XG4gICAgICogICAgIGtleXM6IFtVc2VySW50ZXJhY3Rpb25TcGVjaWFsS2V5LkNUUkwsIFwiU1wiXVxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gV2l0aCBhbiBFbGVtZW50IHRvIGNhcHR1cmUgVUkgZWxlbWVudCBmaWVsZHMgKHRhZ19uYW1lLCBpZCwgZGV0ZWN0ZWRfbmFtZSwgY29tcG9uZW50cywgZXRjLilcbiAgICAgKiBjb25zdCBidXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNhdmVCdG5cIik7XG4gICAgICogZHluYXRyYWNlLmludGVyYWN0aW9ucz8uc2VuZEtleVByZXNzRXZlbnQoe1xuICAgICAqICAgICBrZXlzOiBbVXNlckludGVyYWN0aW9uU3BlY2lhbEtleS5FTlRFUl1cbiAgICAgKiB9LCBidXR0b24pO1xuICAgICAqXG4gICAgICogLy8gV2l0aCBhIG5hdGl2ZSBLZXlib2FyZEV2ZW50IHRvIHJlc29sdmUgdGhlIHRhcmdldCBlbGVtZW50XG4gICAgICogZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgKGV2ZW50KSA9PiB7XG4gICAgICogICAgIGR5bmF0cmFjZS5pbnRlcmFjdGlvbnM/LnNlbmRLZXlQcmVzc0V2ZW50KHtcbiAgICAgKiAgICAgICAgIGtleXM6IFtVc2VySW50ZXJhY3Rpb25TcGVjaWFsS2V5LkNUUkwsIFwiU1wiXVxuICAgICAqICAgICB9LCBldmVudCk7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiAvLyBXaXRoIGEgY3VzdG9tX25hbWUgZm9yIHRoZSBVSSBlbGVtZW50XG4gICAgICogZHluYXRyYWNlLmludGVyYWN0aW9ucz8uc2VuZEtleVByZXNzRXZlbnQoe1xuICAgICAqICAgICBrZXlzOiBbVXNlckludGVyYWN0aW9uU3BlY2lhbEtleS5FU0NdLFxuICAgICAqICAgICBcInVpX2VsZW1lbnQuY3VzdG9tX25hbWVcIjogXCJDbG9zZU1vZGFsXCJcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIFdpdGggZXZlbnQgcHJvcGVydGllcyBmb3IgZW5yaWNobWVudFxuICAgICAqIGR5bmF0cmFjZS5pbnRlcmFjdGlvbnM/LnNlbmRLZXlQcmVzc0V2ZW50KHtcbiAgICAgKiAgICAga2V5czogW1VzZXJJbnRlcmFjdGlvblNwZWNpYWxLZXkuQ1RSTCwgXCJTXCJdLFxuICAgICAqICAgICBcImV2ZW50X3Byb3BlcnRpZXMuY29udGV4dFwiOiBcImVkaXRvclwiXG4gICAgICogfSk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmllbGRzICAgICAgICAgVGhlIGludGVyYWN0aW9uIGZpZWxkcy4gTXVzdCBjb250YWluIGEgYGtleXNgIGFycmF5IHdpdGggYXQgbGVhc3Qgb25lIGtleS5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpZWxkcyBvYmplY3QgbXVzdCBiZSBKU09OLXNlcmlhbGl6YWJsZS4gT3B0aW9uYWxseSBpbmNsdWRlIGB1aV9lbGVtZW50LmN1c3RvbV9uYW1lYFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICB0byBwcm92aWRlIGEgY3VzdG9tIG5hbWUgZm9yIHRoZSBVSSBlbGVtZW50IGFuZCBgZXZlbnRfcHJvcGVydGllcy4qYCBlbnRyaWVzLlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICBTZWUge0BsaW5rIFNlbmRVc2VySW50ZXJhY3Rpb25GaWVsZHN9IGZvciBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSBlbGVtZW50T3JFdmVudCBBbiBvcHRpb25hbCB7QGxpbmsgRWxlbWVudH0gb3Ige0BsaW5rIEtleWJvYXJkRXZlbnR9IHVzZWQgdG8gYXV0by1nZW5lcmF0ZSBVSSBlbGVtZW50IGZpZWxkc1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIGB0YWdfbmFtZWAsIGBpZGAsIGBkZXRlY3RlZF9uYW1lYCwgYGNvbXBvbmVudHNgLCBgZmVhdHVyZXNgLCBhbmQgYHByb3BlcnRpZXNgLlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICBXaGVuIGEge0BsaW5rIEtleWJvYXJkRXZlbnR9IGlzIHByb3ZpZGVkLCB0aGUgdGFyZ2V0IGVsZW1lbnQgaXMgcmVzb2x2ZWQgZnJvbSB0aGUgZXZlbnQuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgIElmIG9taXR0ZWQsIG5vIFVJIGVsZW1lbnQgZmllbGRzIGFyZSBpbmNsdWRlZCBpbiB0aGUgZW1pdHRlZCBldmVudC5cbiAgICAgKiBAc2VlIFVzZXJJbnRlcmFjdGlvblNwZWNpYWxLZXlcbiAgICAgKiBAc2VlIFNlbmRVc2VySW50ZXJhY3Rpb25GaWVsZHNcbiAgICAgKi9cbiAgICBzZW5kS2V5UHJlc3NFdmVudCh0aGlzOiB2b2lkLCBmaWVsZHM6IFNlbmRVc2VySW50ZXJhY3Rpb25GaWVsZHMsIGVsZW1lbnRPckV2ZW50PzogRWxlbWVudCB8IEV2ZW50KTogdm9pZDtcbn1cblxuLyoqXG4gKiBAY2F0ZWdvcnkgQVBJXG4gKi9cbmV4cG9ydCBuYW1lc3BhY2UgZHluYXRyYWNlIHtcbiAgICAvKipcbiAgICAgKiBTZW5kcyBhbiBldmVudCB3aXRoIHRoZSBwcm92aWRlZCBmaWVsZHMuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBkeW5hdHJhY2Uuc2VuZEV2ZW50KHtcbiAgICAgKiAgICAgXCJldmVudF9wcm9wZXJ0aWVzLnByb3BcIjogXCJ2YWx1ZVwiLFxuICAgICAqICAgICBcImR1cmF0aW9uXCI6IDEyMyxcbiAgICAgKiAgICAgXCJldmVudF9wcm9wZXJ0aWVzLnVybFwiOiBcInd3dy5keW5hdHJhY2UuY29tXCIsXG4gICAgICogICAgIFwiZXZlbnRfcHJvcGVydGllcy5pZFwiOiBcIjEyMzQ1Njc4OVwiLFxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gVXNpbmcgY29udGV4dDpcbiAgICAgKiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLCAoZXZlbnQpID0+IHtcbiAgICAgKiAgICAgZHluYXRyYWNlLnNlbmRFdmVudCh7XG4gICAgICogICAgICAgICAgXCJldmVudF9wcm9wZXJ0aWVzLnByb3BcIjogXCJ2YWx1ZVwiLFxuICAgICAqICAgICAgICAgIFwiZHVyYXRpb25cIjogMTIzLFxuICAgICAqICAgICAgICAgIFwiZXZlbnRfcHJvcGVydGllcy51cmxcIjogXCJ3d3cuZHluYXRyYWNlLmNvbVwiLFxuICAgICAqICAgICAgICAgIFwiZXZlbnRfcHJvcGVydGllcy5pZFwiOiBcIjEyMzQ1Njc4OVwiLFxuICAgICAqICAgICB9LCBldmVudCk7IC8vIGFkZCB0aGUgZXZlbnQgY29udGV4dCBoZXJlXG4gICAgICogfSk7XG4gICAgICpgYGBcbiAgICAgKiBAcGFyYW0gZmllbGRzICAgICAgIE11c3QgYmUgYSB2YWxpZCBKU09OIG9iamVjdCBhbmQgY2Fubm90IGNvbnRhaW4gZnVuY3Rpb25zLCB1bmRlZmluZWQsIEluZmluaXR5IGFuZCBOYU4gYXNcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgIHZhbHVlcywgb3RoZXJ3aXNlIHRoZXkgd2lsbCBiZSByZXBsYWNlZCB3aXRoIG51bGwuIFRoZSBgZmllbGRzYCBuZWVkIHRvIGJlIHNlcmlhbGl6YWJsZVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgdXNpbmcgSlNPTi5zdHJpbmdpZnkuIFRoZSByZXN1bHRpbmcgZXZlbnQgd2lsbCBjb250YWluIHRoZSBwcm92aWRlZCBgZmllbGRzYCwgYW5kIGlzXG4gICAgICogICAgICAgICAgICAgICAgICAgICBtb2RpZmllZCB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllcywgdGh1cyBhbHNvIGVtcHR5IG9iamVjdHMgYXJlIHZhbGlkLiBPbmx5IHByb3BlcnRpZXNcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgIHByZWZpeGVkIHdpdGggYGV2ZW50X3Byb3BlcnRpZXMuYCwgdGhlIGBkdXJhdGlvbmAgcHJvcGVydHkgYW5kIHRoZSBgc3RhcnRfdGltZWAgcHJvcGVydHkgYXJlXG4gICAgICogICAgICAgICAgICAgICAgICAgICBhbGxvd2VkLiBTdHJpbmcgcHJvcGVydGllcyBhcmUgbGltaXRlZCB0byA1MDAwIGNoYXJhY3RlcnMsIGV4Y2VlZGluZyBjaGFyYWN0ZXJzIGFyZSBjdXQgb2ZmLlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgQWxsIGV2ZW50IHByb3BlcnR5IGtleSBuYW1lcyBtdXN0IG1hdGNoIHRoZSBuYW1pbmcgcnVsZXMgZGVmaW5lZCBieSB7QGxpbmsgVkFMSURfS0VZX1JFR0VYfS5cbiAgICAgKiBAcGFyYW0gZXZlbnRDb250ZXh0IEFuIG9wdGlvbmFsIGNvbnRleHQgKHNlZSB7QGxpbmsgZHluYXRyYWNlLmFkZEV2ZW50TW9kaWZpZXJ9KSB0aGF0IGNhbiBiZSB1c2VkIHRvIG1hbmlwdWxhdGUgdGhlXG4gICAgICogICAgICAgICAgICAgICAgICAgICByZXN1bHQgZXZlbnQgd2l0aGluIHRoZSBtb2RpZmljYXRpb24gY2FsbGJhY2suXG4gICAgICovXG4gICAgZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gc2VuZEV2ZW50KGZpZWxkczogQXBpQ3JlYXRlZEV2ZW50UHJvcGVydGllc0V2ZW50LCBldmVudENvbnRleHQ/OiB1bmtub3duKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIFNlbmQgYSBCdXNpbmVzcyBFdmVudC5cbiAgICAgKlxuICAgICAqIFdpdGggc2VuZEJpekV2ZW50LCB5b3UgY2FuIHJlcG9ydCBhIGJ1c2luZXNzIGV2ZW50LiBUaGVzZSBzdGFuZGFsb25lIGV2ZW50cyBhcmUgYmVpbmcgc2VudCBkZXRhY2hlZCBmcm9tIHVzZXJcbiAgICAgKiBhY3Rpb25zIG9yIHNlc3Npb25zLlxuICAgICAqXG4gICAgICogTm90ZTogQnVzaW5lc3MgZXZlbnRzIGFyZSBjdXJyZW50bHkgb25seSBzdXBwb3J0ZWQgb24gRHluYXRyYWNlIFNhYVMgZGVwbG95bWVudHMuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBkeW5hdHJhY2Uuc2VuZEJpekV2ZW50KFwidHlwZVwiLCB7XG4gICAgICogICAgIHByb3A6IFwidmFsdWVcIixcbiAgICAgKiAgICAgbmFtZTogXCJiaXogZXZlbnQgbmFtZVwiLFxuICAgICAqICAgICB0aW1lc3RhbXA6IDEyMyxcbiAgICAgKiAgICAgdXJsOiBcInd3dy5keW5hdHJhY2UuY29tXCIsXG4gICAgICogICAgIHBhZ2VfaWQ6IFwiMTIzNDU2Nzg5XCIsXG4gICAgICogICAgIFwid2luZG93Lm9yaWVudGF0aW9uXCI6IFwiZGlhZ29uYWxcIlxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gVXNpbmcgY29udGV4dDpcbiAgICAgKiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLCAoZXZlbnQpID0+IHtcbiAgICAgKiAgICAgZHluYXRyYWNlLnNlbmRCaXpFdmVudChcInR5cGVcIiwge1xuICAgICAqICAgICAgICAgcHJvcDogXCJ2YWx1ZVwiLFxuICAgICAqICAgICAgICAgbmFtZTogXCJiaXogZXZlbnQgbmFtZVwiLFxuICAgICAqICAgICAgICAgdGltZXN0YW1wOiAxMjMsXG4gICAgICogICAgICAgICB1cmw6IFwid3d3LmR5bmF0cmFjZS5jb21cIixcbiAgICAgKiAgICAgICAgIHBhZ2VfaWQ6IFwiMTIzNDU2Nzg5XCIsXG4gICAgICogICAgICAgICBcIndpbmRvdy5vcmllbnRhdGlvblwiOiBcImRpYWdvbmFsXCJcbiAgICAgKiAgICAgfSwgZXZlbnQpOyAvLyBhZGQgdGhlIGV2ZW50IGNvbnRleHQgaGVyZVxuICAgICAqIH0pO1xuICAgICAqYGBgXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKiBAcGFyYW0gdHlwZSAgICAgICAgIE1hbmRhdG9yeSBldmVudCB0eXBlXG4gICAgICogQHBhcmFtIGZpZWxkcyAgICAgICBNdXN0IGJlIGEgdmFsaWQgSlNPTiBvYmplY3QgYW5kIGNhbm5vdCBjb250YWluIGZ1bmN0aW9ucywgdW5kZWZpbmVkLCBJbmZpbml0eSBhbmQgTmFOIGFzXG4gICAgICogICAgICAgICAgICAgICAgICAgICB2YWx1ZXMsIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBudWxsLiBUaGUgYGZpZWxkc2AgbmVlZCB0byBiZSBzZXJpYWxpemFibGVcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgIHVzaW5nIEpTT04uc3RyaW5naWZ5LiBUaGUgcmVzdWx0aW5nIGV2ZW50IHdpbGwgYmUgcG9wdWxhdGVkIHdpdGggYGZpZWxkc2AgcGFyYW1ldGVyLCBhbmRcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzLCB0aHVzIGFsc28gZW1wdHkgb2JqZWN0cyBhcmUgdmFsaWQuXG4gICAgICogQHBhcmFtIGV2ZW50Q29udGV4dCBBbiBvcHRpb25hbCBjb250ZXh0IChzZWUge0BsaW5rIGR5bmF0cmFjZS5hZGRFdmVudE1vZGlmaWVyfSkgdGhhdCBjYW4gYmUgdXNlZCB0byBtYW5pcHVsYXRlIHRoZVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgcmVzdWx0IGV2ZW50IHdpdGhpbiB0aGUgbW9kaWZpY2F0aW9uIGNhbGxiYWNrLiBXaWxsIGJlIHByb3ZpZGVkIGFzIEN1c3RvbUV2ZW50Q29udGV4dCBUT0RPXG4gICAgICovXG4gICAgZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gc2VuZEJpekV2ZW50KHR5cGU6IHN0cmluZywgZmllbGRzOiBKU09OT2JqZWN0LCBldmVudENvbnRleHQ/OiB1bmtub3duKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIE1vZGlmaWVzIGZ1dHVyZSBldmVudHMgd2l0aCB0aGUgcHJvdmlkZWQgbW9kaWZpZXIgZnVuY3Rpb24uIFJldHVybmluZyBhIG5vbi1vYmplY3Qgb3IgYG51bGxgIGRpc2NhcmRzIHRoaXMgZXZlbnRcbiAgICAgKiBhbmQgcHJldmVudHMgZnV0dXJlIG11dGF0b3IgZnVuY3Rpb25zIHRvIGJlIGV4ZWN1dGVkLlxuICAgICAqXG4gICAgICogQ2VydGFpbiByZXNlcnZlZCBmaWVsZHMgYW5kIG5hbWVzcGFjZXMgY2Fu4oCZdCBiZSBtb2RpZmllZCBpbiBhbnkgd2F5IChhZGRlZCwgcmVtb3ZlZCBvciBvdmVycmlkZGVuKSwgd2hpbGUgb3RoZXJzIGFyZSBvcGVuIGZvciBtb2RpZmljYXRpb24uXG4gICAgICogU2VlIHtAbGluayBBbGxvd2VkTW9kaWZpY2F0aW9uRmllbGRzfSBmb3IgZGV0YWlscy5cbiAgICAgKlxuICAgICAqIFRoZSBjb250ZXh0IGRpZmZlcnMgYmFzZWQgb24gdGhlIHByb2Nlc3NlZCBldmVudCBhbmQgYXZhaWxhYmlsaXR5IG9mIGRhdGEuXG4gICAgICogRm9yIGV2ZW50cyBzZW50IHdpdGgge0BsaW5rIGR5bmF0cmFjZS5zZW5kRXZlbnR9LCB0aGUgb3B0aW9uYWxseSBwcm92aWRlZCBjb250ZXh0IHdpbGwgYmUgcHJvdmlkZWQgYXMgY3VzdG9tIGNvbnRleHQuXG4gICAgICogVGhlIGNvbnRleHQgb2JqZWN0IGNvbnRhaW5zIGEgXCJ0eXBlXCIgYW5kIG9wdGlvbmFsbHkgYSBcInN1Yl90eXBlXCIgcGFyYW1ldGVyLCB3aGljaCBjYW4gYmUgdXNlZCB0byBkaXN0aW5ndWlzaCB0aGVtLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogZHluYXRyYWNlLmFkZEV2ZW50TW9kaWZpZXIoZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICogICAgIGlmIChldmVudFtcImV2ZW50LnR5cGVcIl0gIT09IFwiY2xpY2tcIikge1xuICAgICAqICAgICAgICAgcmV0dXJuIGV2ZW50O1xuICAgICAqICAgICB9XG4gICAgICogICAgIHJldHVybiB7XG4gICAgICogICAgICAgICAuLi5ldmVudCxcbiAgICAgKiAgICAgICAgIFwiZXZlbnRfcHJvcGVydGllcy5wcm9wXCI6IFwidmFsdWVcIixcbiAgICAgKiAgICAgICAgIFwidXJsLmZ1bGxcIjogXCJ3d3cuZHluYXRyYWNlLmNvbVwiLFxuICAgICAqICAgICAgICAgXCJ2aWV3LmRldGVjdGVkX25hbWVcIjogXCIxMjM0NTY3ODlcIixcbiAgICAgKiAgICAgfVxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gVXNpbmcgY29udGV4dDpcbiAgICAgKiBkeW5hdHJhY2UuYWRkRXZlbnRNb2RpZmllcihmdW5jdGlvbiAoZXZlbnQsIGNvbnRleHQpIHtcbiAgICAgKiAgICAgaWYgKGV2ZW50W1wiZXZlbnQudHlwZVwiXSAhPT0gXCJjbGlja1wiKSB7XG4gICAgICogICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICogICAgIH1cbiAgICAgKiAgICAgaWYgKGNvbnRleHQ/LmFkZGl0aW9uYWxEYXRhKSB7XG4gICAgICogICAgICAgICByZXR1cm4ge1xuICAgICAqICAgICAgICAgICAuLi5ldmVudCxcbiAgICAgKiAgICAgICAgICAgXCJldmVudF9wcm9wZXJ0aWVzLmV4dHJhX2RhdGFcIjogYHJlY2VpdmVkIGV4dHJhIGRhdGE6ICR7Y29udGV4dC5hZGRpdGlvbmFsRGF0YX1gXG4gICAgICogICAgICAgICB9O1xuICAgICAqICAgICB9XG4gICAgICogICAgIHJldHVybiBldmVudDtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIERpc2NhcmRpbmcgYW4gZXZlbnQ6XG4gICAgICogZHluYXRyYWNlLmFkZEV2ZW50TW9kaWZpZXIoZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICogICBpZiAoZXZlbnRbXCJldmVudC50eXBlXCJdID09PSBcImNsaWNrXCIpIHtcbiAgICAgKiAgICAgcmV0dXJuIG51bGw7XG4gICAgICogICB9XG4gICAgICogICByZXR1cm4gZXZlbnQ7XG4gICAgICogfSk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXZlbnRNb2RpZmllciBUaGUgbW9kaWZpZXIgZnVuY3Rpb24gdG8gbW9kaWZ5IGEgZ2l2ZW4gKHJlYWRvbmx5KSBKU09ORXZlbnQuIEl0IHJlY2VpdmVzIGFuIG9wdGlvbmFsIGNvbnRleHRcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgZXZlbnQsIGlmIGF2YWlsYWJsZS4gVGhlIHJldHVybmVkIGV2ZW50IG11c3QgYmUgYSBuZXcgb2JqZWN0LCBvdGhlcndpc2VcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBtb2RpZmljYXRpb24gd2lsbCBiZSBpZ25vcmVkLiBNb2RpZmljYXRpb24gaXMgb25seSBhbGxvd2VkIGZvciBmaWVsZHMgZGVjbGFyZWQgaW5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICB7QGxpbmsgQWxsb3dlZE1vZGlmaWNhdGlvbkZpZWxkc30uXG4gICAgICogQHJldHVybnMgICAgICAgICAgICAgVGhlIHVuc3Vic2NyaWJlciBmdW5jdGlvbiB0byB0dXJuIG9mZiBldmVudCBtb2RpZmljYXRpb24uXG4gICAgICovXG4gICAgZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gYWRkRXZlbnRNb2RpZmllcihldmVudE1vZGlmaWVyOiAoanNvbkV2ZW50OiBSZWFkb25seTxKU09ORXZlbnQ+LCBldmVudENvbnRleHQ/OiBFdmVudENvbnRleHQpID0+IEpTT05FdmVudCB8IG51bGwpOiBVbnN1YnNjcmliZXI7XG5cbiAgICAvKipcbiAgICAgKiBJZiBub3QgYWxyZWFkeSBlbmFibGVkLCBkeW5hbWljYWxseSBsb2FkcyB0aGUgSGVhbHRoIENoZWNrIG1vZHVsZSB3aGljaCB3aWxsIHJlYWQgYWNjdW11bGF0ZWQgaGVhbHRoIGNoZWNrIGRhdGFcbiAgICAgKiBhbmQgcHJlc2VudCBpdCBpbiB0aGUgYnJvd3NlciBkZXZlbG9wZXIgdG9vbHMgY29uc29sZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBvcHRpb25hbCBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgdGhlIGhlYWx0aCBjaGVjay5cbiAgICAgKiBAcGFyYW0gY29uZmlnLmxvZ1ZlcmJvc2UgICAgICAgICAgICAgICBJZiB0cnVlLCB2ZXJib3NlIGluZm9ybWF0aW9uIGlzIGluY2x1ZGVkIGluIHRoZSBoZWFsdGggY2hlY2suXG4gICAgICogQHBhcmFtIGNvbmZpZy5yZXR1cm5EaWFnbm9zdGljRGF0YSAgICAgSWYgdHJ1ZSwgdGhlIGRpYWdub3N0aWMgZGF0YSBpcyByZXR1cm5lZCBhcyBhcnJheSBpbnN0ZWFkIG9mIGp1c3QgYmVpbmcgbG9nZ2VkLlxuICAgICAqIEBwYXJhbSBjb25maWcucnVuRGV0YWlsZWRPdmVycmlkZUNoZWNrIGlmIHRydWUsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gd2lsbCBiZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUgZm9yIG92ZXJyaWRkZW4gbmF0aXZlIEFQSXMuXG4gICAgICogQHJldHVybnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBwcm9taXNlIHRoYXQgc2V0dGxlcyBhcyBzb29uIGFzIHRoZSBoZWFsdGggY2hlY2sgaGFzIGJlZW4gcGVyZm9ybWVkLlxuICAgICAqL1xuICAgIGV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHJ1bkhlYWx0aENoZWNrKGNvbmZpZz86IEhlYWx0aENoZWNrQ29uZmlnKTogUHJvbWlzZTx1bmtub3duW10gfCB1bmRlZmluZWQ+O1xuXG4gICAgLyoqXG4gICAgICogRW5hYmxlcyBkZWJ1ZyBsb2dnaW5nLlxuICAgICAqXG4gICAgICogQGludGVybmFsIG5vdCBwdWJsaWMgeWV0XG4gICAgICogQHBhcmFtICAgIGxvZ2dpbmdJbmZvcm1hdGlvbiBBbiBvYmplY3QgdGhhdCBzcGVjaWZpZXMgd2hhdCBzaG91bGQgYmUgbG9nZ2VkXG4gICAgICogQHJldHVybnMgICAgICAgICAgICAgICAgICAgICBBIHByb21pc2UgdGhhdCBzZXR0bGVzIGFzIHNvb24gYXMgZGVidWcgbG9nZ2luZyBoYXMgYmVlbiBlbmFibGVkXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBkeW5hdHJhY2UvZGVtLWVzbGludC1ydWxlcy9jb3JyZWN0LW51bGwtdm9pZC11bmRlZmluZWQgLS0gbmVjZXNzYXJ5LCBiZWNhdXNlIHdlIG92ZXJyaWRlIHRoZSBmdW5jdGlvbiBhZnRlciBsb2FkaW5nIHRoZSBoZWFsdGhjaGVjayBtb2R1bGVcbiAgICBleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBlbmFibGVEZWJ1Z0xvZ2dpbmcobG9nZ2luZ0luZm9ybWF0aW9uOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPik6IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogVXNlIHRvIGlkZW50aWZ5IGluZGl2aWR1YWwgdXNlcnMgYWNyb3NzIGRpZmZlcmVudCBicm93c2VycywgZGV2aWNlcywgYW5kIHVzZXIgc2Vzc2lvbnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIG5hbWUgb2YgdGhlIHVzZXIuIEZvciBleGFtcGxlLCB1c2UgYSBuYW1lLCB1c2VyaWQsIG9yIHlvdXIgdXNlcidzIGVtYWlsIGFkZHJlc3MuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBkeW5hdHJhY2UuaWRlbnRpZnlVc2VyKFwiam9obi5kb2VAZXhhbXBsZS5jb21cIik7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gaWRlbnRpZnlVc2VyKHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogR3JhbnRzIGNvbnNlbnQgZm9yIGRhdGEgY29sbGVjdGlvbi5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIGV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHVzZXJPcHRJbigpOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogUmV2b2tlcyBjb25zZW50IGZvciBkYXRhIGNvbGxlY3Rpb24uXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB1c2VyT3B0T3V0KCk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBTZW5kcyBhIHNlc3Npb25Qcm9wZXJ0eUV2ZW50LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogZHluYXRyYWNlLnNlbmRTZXNzaW9uUHJvcGVydHlFdmVudCh7XG4gICAgICogICAgIFwic2Vzc2lvbl9wcm9wZXJ0aWVzLnNvbWVfY3VzdG9tXCI6IHRydWUsXG4gICAgICogICAgIFwic2Vzc2lvbl9wcm9wZXJ0aWVzLm15X2lkXCI6IFwibTEyMzQ1NlwiLFxuICAgICAqICAgICBcInNlc3Npb25fcHJvcGVydGllcy5teV9vdGhlcl9pZF8yXCI6IFwieDEyM1wiLFxuICAgICAqICAgICBcInNlc3Npb25fcHJvcGVydGllcy5teV9mdWxseV9vdGhlci5pZDNcIjogXCJpZDAwN1wiLFxuICAgICAqIH0pO1xuICAgICAqYGBgXG4gICAgICogQHBhcmFtIGZpZWxkcyBNdXN0IGJlIGEgdmFsaWQgSlNPTiBvYmplY3QgYW5kIGNhbm5vdCBjb250YWluIGZ1bmN0aW9ucywgdW5kZWZpbmVkLCBJbmZpbml0eSBhbmQgTmFOIGFzXG4gICAgICogICAgICAgICAgICAgICB2YWx1ZXMsIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBudWxsLiBUaGUgYGZpZWxkc2AgbmVlZCB0byBiZSBzZXJpYWxpemFibGVcbiAgICAgKiAgICAgICAgICAgICAgIHVzaW5nIEpTT04uc3RyaW5naWZ5LiBUaGUgcmVzdWx0aW5nIGV2ZW50IHdpbGwgYmUgcG9wdWxhdGVkIHdpdGggYGZpZWxkc2AgcGFyYW1ldGVyLCBhbmRcbiAgICAgKiAgICAgICAgICAgICAgIGlzIG1vZGlmaWVkIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzLCB0aHVzIGFsc28gZW1wdHkgb2JqZWN0cyBhcmUgdmFsaWQuIE9ubHkgcHJvcGVydGllc1xuICAgICAqICAgICAgICAgICAgICAgcHJlZml4ZWQgd2l0aCBgc2Vzc2lvbl9wcm9wZXJ0aWVzLmAsIHRoZSBgZHVyYXRpb25gIHByb3BlcnR5IGFuZCB0aGUgYHN0YXJ0X3RpbWVgIHByb3BlcnR5IGFyZVxuICAgICAqICAgICAgICAgICAgICAgYWxsb3dlZC4gU3RyaW5nIHByb3BlcnRpZXMgYXJlIGxpbWl0ZWQgdG8gNTAwMCBjaGFyYWN0ZXJzLCBleGNlZWRpbmcgY2hhcmFjdGVycyBhcmUgY3V0IG9mZi5cbiAgICAgKiAgICAgICAgICAgICAgIEFsbCBzZXNzaW9uIHByb3BlcnR5IGtleSBuYW1lcyBtdXN0IG1hdGNoIHRoZSBuYW1pbmcgcnVsZXMgZGVmaW5lZCBieSB7QGxpbmsgVkFMSURfS0VZX1JFR0VYfS5cbiAgICAgKi9cbiAgICBleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBzZW5kU2Vzc2lvblByb3BlcnR5RXZlbnQoZmllbGRzOiBBcGlDcmVhdGVkU2Vzc2lvblByb3BlcnRpZXNFdmVudCk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIGlmIHRoZSBFcnJvciBtb2R1bGUgaXMgZW5hYmxlZFxuICAgICAqXG4gICAgICogQHBhcmFtIGVycm9yICBNdXN0IGJlIGEgdmFsaWQgaW5zdGFuY2Ugb2YgdGhlIEVycm9yIGNsYXNzLiBJZiBhbiBpbnZhbGlkIHZhbHVlIGlzIHByb3ZpZGVkLCB0aGUgZXJyb3Igd2lsbCBub3QgYmUgcHJvY2Vzc2VkIG9yIHNlbnQuXG4gICAgICogQHBhcmFtIGZpZWxkcyBPcHRpb25hbDogTXVzdCBiZSBhIHZhbGlkIEpTT04gb2JqZWN0IGFuZCBjYW5ub3QgY29udGFpbiBmdW5jdGlvbnMsIHVuZGVmaW5lZCwgSW5maW5pdHkgYW5kIE5hTiBhc1xuICAgICAqICAgICAgICAgICAgICAgdmFsdWVzLCBvdGhlcndpc2UgdGhleSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggbnVsbC4gVGhlIGBmaWVsZHNgIG5lZWQgdG8gYmUgc2VyaWFsaXphYmxlXG4gICAgICogICAgICAgICAgICAgICB1c2luZyBKU09OLnN0cmluZ2lmeS4gVGhlIHJlc3VsdGluZyBldmVudCB3aWxsIGNvbnRhaW4gdGhlIHByb3ZpZGVkIGBmaWVsZHNgLCBhbmQgaXNcbiAgICAgKiAgICAgICAgICAgICAgIG1vZGlmaWVkIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzLCB0aHVzIGFsc28gZW1wdHkgb2JqZWN0cyBhcmUgdmFsaWQuIE9ubHkgcHJvcGVydGllc1xuICAgICAqICAgICAgICAgICAgICAgcHJlZml4ZWQgd2l0aCBgZXZlbnRfcHJvcGVydGllcy5gLCB0aGUgYGR1cmF0aW9uYCBwcm9wZXJ0eSBhbmQgdGhlIGBzdGFydF90aW1lYCBwcm9wZXJ0eSBhcmVcbiAgICAgKiAgICAgICAgICAgICAgIGFsbG93ZWQuIFN0cmluZyBwcm9wZXJ0aWVzIGFyZSBsaW1pdGVkIHRvIDUwMDAgY2hhcmFjdGVycywgZXhjZWVkaW5nIGNoYXJhY3RlcnMgYXJlIGN1dCBvZmYuXG4gICAgICogICAgICAgICAgICAgICBBbGwgZXZlbnQgcHJvcGVydHkga2V5IG5hbWVzIG11c3QgbWF0Y2ggdGhlIG5hbWluZyBydWxlcyBkZWZpbmVkIGJ5IHtAbGluayBWQUxJRF9LRVlfUkVHRVh9LlxuICAgICAqL1xuICAgIGV4cG9ydCBkZWNsYXJlIGxldCBzZW5kRXhjZXB0aW9uRXZlbnQ6ICgoZXJyb3I6IEVycm9yLCBmaWVsZHM/OiBBcGlDcmVhdGVkRXZlbnRQcm9wZXJ0aWVzRXZlbnQpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBwcm9wZXJ0eSBpcyBgdW5kZWZpbmVkYCBpZiB0aGUgVXNlciBJbnRlcmFjdGlvbiBtb2R1bGUgaXMgZGlzYWJsZWQuXG4gICAgICpcbiAgICAgKiBAZXhwZXJpbWVudGFsXG4gICAgICovXG4gICAgZXhwb3J0IGRlY2xhcmUgbGV0IGludGVyYWN0aW9uczogSW50ZXJhY3Rpb25zIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBwcm9wZXJ0eSBpcyBgdW5kZWZpbmVkYCBpZiB0aGUgVXNlciBBY3Rpb25zIG1vZHVsZSBpcyBkaXNhYmxlZC5cbiAgICAgKlxuICAgICAqIEBleHBlcmltZW50YWxcbiAgICAgKi9cbiAgICBleHBvcnQgZGVjbGFyZSBsZXQgdXNlckFjdGlvbnM6IFVzZXJBY3Rpb25zIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEBleHBlcmltZW50YWxcbiAqIEBjYXRlZ29yeSBVc2VyIEFjdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyQWN0aW9ucyB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBjb250cm9sbGFibGUgdXNlciBhY3Rpb24uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCB1c2VyQWN0aW9uID0gZHluYXRyYWNlLnVzZXJBY3Rpb25zLmNyZWF0ZSh7IGNvbXBsZXRlQXV0b21hdGljYWxseTogZmFsc2UgfSk7XG4gICAgICogY29uc3QgdW5zdWJzY3JpYmUgPSB1c2VyQWN0aW9uLnN1YnNjcmliZShjdXJyZW50VXNlckFjdGlvbiA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKGBVc2VyIGFjdGlvbiB3b3VsZCBoYXZlIGJlZW4gY29tcGxldGVkIGR1ZSB0byAke2N1cnJlbnRVc2VyQWN0aW9uLmNvbXBsZXRlUmVhc29ufWAsIGV2ZW50KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyBleGVjdXRlIHVzZXIgYWN0aW9uc1xuICAgICAqIHVzZXJBY3Rpb24uY29tcGxldGUoKTtcbiAgICAgKiB1bnN1YnNjcmliZSgpO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQGV4cGVyaW1lbnRhbFxuICAgICAqIEBwYXJhbSBvcHRpb25zICAgICAgICAgICAgICAgICAgICAgICBBbiBvcHRpb25hbCBvcHRpb25zIG9iamVjdCB0byBjb25maWd1cmUgdGhlIHVzZXIgYWN0aW9uLlxuICAgICAqIEBwYXJhbSBvcHRpb25zLmNvbXBsZXRlQXV0b21hdGljYWxseSBJZiB0cnVlLCBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlcyB0aGUgdXNlciBhY3Rpb24gdXNpbmcgUlVNIEphdmFTY3JpcHQgdXNlciBhY3Rpb24gcnVsZXMuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIGZhbHNlLCB0aGUgdXNlciBhY3Rpb24gcmVtYWlucyBhY3RpdmUgdW50aWwgdGhlIG5leHQgY2FsbCB0byBgY3JlYXRlKC4uLilgIG9yIHRvIGB1c2VyQWN0aW9uLmNvbXBsZXRlKClgLlxuICAgICAqIEByZXR1cm5zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbiBgVXNlckFjdGlvblRyYWNrZXJgIG9iamVjdCB0aGF0IGNhbiBiZSBzdGFydGVkIGFuZCBjb21wbGV0ZWQsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSB1c2VyIGFjdGlvbiBtb2R1bGUgaXMgbm90IGVuYWJsZWQuXG4gICAgICovXG4gICAgY3JlYXRlKHRoaXM6IHZvaWQsIG9wdGlvbnM/OiBVc2VyQWN0aW9uU3RhcnRPcHRpb25zKTogVXNlckFjdGlvblRyYWNrZXI7XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmVzIHRvIHVzZXIgYWN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IHVuc3Vic2NyaWJlID0gZHluYXRyYWNlLnVzZXJBY3Rpb25zPy5zdWJzY3JpYmUodXNlckFjdGlvbiA9PiB7XG4gICAgICogICAgIC8vIERpc2FibGUgYXV0b21hdGljIHVzZXJBY3Rpb24gY29tcGxldGlvblxuICAgICAqICAgICB1c2VyQWN0aW9uLmNvbXBsZXRlQXV0b21hdGljYWxseSA9IGZhbHNlO1xuICAgICAqICAgICAvLyBFeGVjdXRlIHNvbWUgcmVxdWVzdHMgb3IgbXV0YXRpb25zLCB0aGVuIGNvbXBsZXRlIHRoZSB1c2VyIGFjdGlvblxuICAgICAqICAgICB1c2VyQWN0aW9uLmNvbXBsZXRlKCk7XG4gICAgICogfSk7XG4gICAgICogLy8gU29tZSB0aW1lIGxhdGVyIGlmIHlvdSBkb24ndCB3YW50IHRvIGxpc3RlbiB0byB1c2VyQWN0aW9ucyBhbnltb3JlXG4gICAgICogdW5zdWJzY3JpYmUoKTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBleHBlcmltZW50YWxcbiAgICAgKiBAcGFyYW0gc3Vic2NyaWJlciBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW5ldmVyIER5bmF0cmFjZSBjcmVhdGVzIGEgbmV3IHVzZXIgYWN0aW9uLlxuICAgICAqIEByZXR1cm5zICAgICAgICAgIEFuIHVuc3Vic2NyaWJlciBmdW5jdGlvbiB0byByZW1vdmUgdGhlIHN1YnNjcmlwdGlvbi5cbiAgICAgKi9cbiAgICBzdWJzY3JpYmUodGhpczogdm9pZCwgc3Vic2NyaWJlcjogKHVzZXJBY3Rpb246IFVzZXJBY3Rpb25UcmFja2VyKSA9PiB2b2lkKTogVW5zdWJzY3JpYmVyO1xuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZXMgYXV0b21hdGljIHVzZXIgYWN0aW9uIGRldGVjdGlvbi4gVXNlZnVsIGluIGNhc2UgaXQgaW50ZXJmZXJlcyB3aXRoIG1hbnVhbCB1c2VyIGFjdGlvbiBoYW5kbGluZy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGR5bmF0cmFjZS51c2VyQWN0aW9ucz8uc2V0QXV0b21hdGljRGV0ZWN0aW9uKGZhbHNlKTtcbiAgICAgKlxuICAgICAqIGFzeW5jIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKHJvdXRlcikge1xuICAgICAqICAgICBjb25zdCB1c2VyQWN0aW9uID0gZHluYXRyYWNlLnVzZXJBY3Rpb25zPy5jcmVhdGUoeyBjb21wbGV0ZUF1dG9tYXRpY2FsbHk6IGZhbHNlIH0pO1xuICAgICAqICAgICAvLyB0aGlzIHdvdWxkIG5vcm1hbGx5IGNyZWF0ZSBhbiB1c2VyIGFjdGlvbiB0aGF0IHdvdWxkIGZpbmlzaCB0aGlzIG1hbnVhbCB1c2VyIGFjdGlvblxuICAgICAqICAgICBhd2FpdCByb3V0ZXIucmVkaXJlY3QoXCJob21lXCIpO1xuICAgICAqICAgICB1c2VyQWN0aW9uLmNvbXBsZXRlKCk7XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQGV4cGVyaW1lbnRhbFxuICAgICAqIEBwYXJhbSBhdXRvbWF0aWNEZXRlY3Rpb24gSWYgZmFsc2UsIGRpc2FibGVzIGF1dG9tYXRpYyB1c2VyIGFjdGlvbiBkZXRlY3Rpb24sIG90aGVyd2lzZSBlbmFibGVzIGl0LlxuICAgICAqL1xuICAgIHNldEF1dG9tYXRpY0RldGVjdGlvbih0aGlzOiB2b2lkLCBhdXRvbWF0aWNEZXRlY3Rpb246IGJvb2xlYW4pOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGN1cnJlbnQgdXNlciBhY3Rpb24sIG9yIGB1bmRlZmluZWRgIGlmIG5vIHVzZXIgYWN0aW9uIGlzIGluIHByb2dyZXNzLlxuICAgICAqXG4gICAgICogQGV4cGVyaW1lbnRhbFxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGFzeW5jIGZ1bmN0aW9uIHBvc3RNZXNzYWdlQ2hhbm5lbChtZXNzYWdlLCBjaGFubmVsKSB7XG4gICAgICogICBjb25zdCBjdXJyZW50VXNlckFjdGlvbiA9IGR5bmF0cmFjZS51c2VyQWN0aW9ucz8uY3VycmVudDtcbiAgICAgKiAgIGlmIChjdXJyZW50VXNlckFjdGlvbikge1xuICAgICAqICAgICAgY3VycmVudFVzZXJBY3Rpb24uY29tcGxldGVBdXRvbWF0aWNhbGx5ID0gZmFsc2U7XG4gICAgICogICB9XG4gICAgICogICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNoYW5uZWwuc2VuZChtZXNzYWdlKTtcbiAgICAgKiAgIGN1cnJlbnRVc2VyQWN0aW9uPy5jb21wbGV0ZSgpO1xuICAgICAqICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBjdXJyZW50OiBVc2VyQWN0aW9uVHJhY2tlciB8IHVuZGVmaW5lZDtcbn1cbiJdfQ==
|
|
@@ -9,6 +9,7 @@ export * from "./rum-events/event-context/event-context.js";
|
|
|
9
9
|
export * from "./rum-events/rum-event.js";
|
|
10
10
|
export * from "./rum-events/event-updates.js";
|
|
11
11
|
export * from "./rum-events/json-event.js";
|
|
12
|
+
export * from "./rum-events/open-fields.js";
|
|
12
13
|
export * from "./rum-events/rum-biz-event.js";
|
|
13
14
|
export * from "./rum-events/rum-event-keys.js";
|
|
14
15
|
export * from "./rum-events/schema-versions.js";
|
|
@@ -9,6 +9,7 @@ export * from "./rum-events/event-context/event-context.js";
|
|
|
9
9
|
export * from "./rum-events/rum-event.js";
|
|
10
10
|
export * from "./rum-events/event-updates.js";
|
|
11
11
|
export * from "./rum-events/json-event.js";
|
|
12
|
+
export * from "./rum-events/open-fields.js";
|
|
12
13
|
export * from "./rum-events/rum-biz-event.js";
|
|
13
14
|
export * from "./rum-events/rum-event-keys.js";
|
|
14
15
|
export * from "./rum-events/schema-versions.js";
|
|
@@ -33,4 +34,4 @@ export * from "./rum-events/shared-namespaces-and-fields/page-source-fields.js";
|
|
|
33
34
|
export * from "./rum-events/shared-namespaces-and-fields/view-source-fields.js";
|
|
34
35
|
export * from "./rum-events/shared-namespaces-and-fields/general-rum-error-fields.js";
|
|
35
36
|
export * from "./rum-events/shared-namespaces-and-fields/general-rum-event-fields.js";
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtdHlwZWRvYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS90eXBlcy9pbmRleC10eXBlZG9jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLDZEQUE2RCxDQUFDO0FBQzVFLGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLGdFQUFnRSxDQUFDO0FBQy9FLGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLHVFQUF1RSxDQUFDO0FBQ3RGLGNBQWMsdUVBQXVFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgVHlwZXNcbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vYXBpL2R5bmF0cmFjZS1hcGktdHlwZXMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZXItYWN0aW9ucy91c2VyLWFjdGlvbi10cmFja2VyLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VyLWFjdGlvbnMvdXNlci1hY3Rpb24tZW5kLWV2ZW50LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VyLWFjdGlvbnMvdXNlci1hY3Rpb24tc3RhcnQtb3B0aW9ucy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcnVtLWV2ZW50cy9ldmVudC1jb250ZXh0L2V2ZW50LWNvbnRleHQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3J1bS1ldmVudHMvcnVtLWV2ZW50LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydW0tZXZlbnRzL2V2ZW50LXVwZGF0ZXMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3J1bS1ldmVudHMvanNvbi1ldmVudC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcnVtLWV2ZW50cy9vcGVuLWZpZWxkcy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcnVtLWV2ZW50cy9ydW0tYml6LWV2ZW50LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydW0tZXZlbnRzL3J1bS1ldmVudC1rZXlzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydW0tZXZlbnRzL3NjaGVtYS12ZXJzaW9ucy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcnVtLWV2ZW50cy9ydW0tdXNlci1hY3Rpb24tZXZlbnQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3J1bS1ldmVudHMvcnVtLWxvbmctdGFzay1ldmVudC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcnVtLWV2ZW50cy9ydW0td2ViLXJlcXVlc3QtZXZlbnQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3J1bS1ldmVudHMvcnVtLXBhZ2Utc3VtbWFyeS1ldmVudC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcnVtLWV2ZW50cy9ydW0tc2VsZm1vbml0b3JpbmctZXZlbnQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3J1bS1ldmVudHMvcnVtLXVzZXItaW50ZXJhY3Rpb24tZXZlbnQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3J1bS1ldmVudHMvcnVtLXZpc2liaWxpdHktY2hhbmdlLWV2ZW50LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydW0tZXZlbnRzL3J1bS1zZXNzaW9uLXByb3BlcnRpZXMtZXZlbnQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3J1bS1ldmVudHMvcnVtLXN0YW5kYWxvbmUtZXhjZXB0aW9uLWV2ZW50LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydW0tZXZlbnRzL3J1bS1zdGFuZGFsb25lLW5hdmlnYXRpb24tZXZlbnQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3J1bS1ldmVudHMvcnVtLWludGVybmFsLXNlbGZtb25pdG9yaW5nLWV2ZW50LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydW0tZXZlbnRzL3J1bS1zdGFuZGFsb25lLWNzcC1ydWxlLXZpb2xhdGlvbi1ldmVudC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcnVtLWV2ZW50cy9zaGFyZWQtbmFtZXNwYWNlcy1hbmQtZmllbGRzL2NzcC1maWVsZHMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3J1bS1ldmVudHMvc2hhcmVkLW5hbWVzcGFjZXMtYW5kLWZpZWxkcy9odHRwLW5hbWVzcGFjZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcnVtLWV2ZW50cy9zaGFyZWQtbmFtZXNwYWNlcy1hbmQtZmllbGRzL3JlcXVlc3QtZmllbGRzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydW0tZXZlbnRzL3NoYXJlZC1uYW1lc3BhY2VzLWFuZC1maWVsZHMvZXhjZXB0aW9uLWZpZWxkcy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcnVtLWV2ZW50cy9zaGFyZWQtbmFtZXNwYWNlcy1hbmQtZmllbGRzL25hdmlnYXRpb24tZmllbGRzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydW0tZXZlbnRzL3NoYXJlZC1uYW1lc3BhY2VzLWFuZC1maWVsZHMvcGFnZS1zb3VyY2UtZmllbGRzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydW0tZXZlbnRzL3NoYXJlZC1uYW1lc3BhY2VzLWFuZC1maWVsZHMvdmlldy1zb3VyY2UtZmllbGRzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydW0tZXZlbnRzL3NoYXJlZC1uYW1lc3BhY2VzLWFuZC1maWVsZHMvZ2VuZXJhbC1ydW0tZXJyb3ItZmllbGRzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydW0tZXZlbnRzL3NoYXJlZC1uYW1lc3BhY2VzLWFuZC1maWVsZHMvZ2VuZXJhbC1ydW0tZXZlbnQtZmllbGRzLmpzXCI7XG4iXX0=
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export * from "./open-fields.js";
|
|
1
2
|
export * from "./rum-event-keys.js";
|
|
2
3
|
export * from "./json-event.js";
|
|
3
4
|
export * from "./rum-user-action-event.js";
|
|
@@ -18,4 +19,4 @@ export * from "./schema-versions.js";
|
|
|
18
19
|
export * from "./event-updates.js";
|
|
19
20
|
export * from "./event-context/index.js";
|
|
20
21
|
export * from "./shared-namespaces-and-fields/index.js";
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zb3VyY2UvdHlwZXMvcnVtLWV2ZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMscUJBQXFCLENBQUM7QUFFcEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG9CQUFvQixDQUFDO0FBRW5DLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx5Q0FBeUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL29wZW4tZmllbGRzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydW0tZXZlbnQta2V5cy5qc1wiO1xuXG5leHBvcnQgKiBmcm9tIFwiLi9qc29uLWV2ZW50LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydW0tdXNlci1hY3Rpb24tZXZlbnQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3J1bS1iaXotZXZlbnQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3J1bS1ldmVudC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcnVtLWludGVybmFsLXNlbGZtb25pdG9yaW5nLWV2ZW50LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydW0tbG9uZy10YXNrLWV2ZW50LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydW0tcGFnZS1zdW1tYXJ5LWV2ZW50LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydW0tc2VsZm1vbml0b3JpbmctZXZlbnQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3J1bS1zZXNzaW9uLXByb3BlcnRpZXMtZXZlbnQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3J1bS1zdGFuZGFsb25lLWNzcC1ydWxlLXZpb2xhdGlvbi1ldmVudC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcnVtLXN0YW5kYWxvbmUtZXhjZXB0aW9uLWV2ZW50LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydW0tc3RhbmRhbG9uZS1uYXZpZ2F0aW9uLWV2ZW50LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydW0tdXNlci1pbnRlcmFjdGlvbi1ldmVudC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcnVtLXZpc2liaWxpdHktY2hhbmdlLWV2ZW50LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ydW0td2ViLXJlcXVlc3QtZXZlbnQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NjaGVtYS12ZXJzaW9ucy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXZlbnQtdXBkYXRlcy5qc1wiO1xuXG5leHBvcnQgKiBmcm9tIFwiLi9ldmVudC1jb250ZXh0L2luZGV4LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zaGFyZWQtbmFtZXNwYWNlcy1hbmQtZmllbGRzL2luZGV4LmpzXCI7XG4iXX0=
|
|
@@ -48,12 +48,6 @@ type WritableFields = Pick<GeneralRumEventFields, RumEventKeys.DURATION | RumEve
|
|
|
48
48
|
* @ignore
|
|
49
49
|
*/
|
|
50
50
|
export type ApiCreatedAllowedGenerationFields = Partial<WritableFields>;
|
|
51
|
-
/**
|
|
52
|
-
* Event fields that area allowed to be modified using {@link dynatrace.addEventModifier}.
|
|
53
|
-
*
|
|
54
|
-
* @category API
|
|
55
|
-
*/
|
|
56
|
-
export type AllowedModificationFields = `event_properties.${string | number}` | `md.${string | number}` | `session_properties.${string | number}` | RumEventKeys.CSP$STACK_TRACE | RumEventKeys.EXCEPTION$STACK_TRACE | RumEventKeys.PAGE$DETECTED_NAME | RumEventKeys.PAGE$URL$FULL | RumEventKeys.VIEW$DETECTED_NAME | RumEventKeys.VIEW$URL$FULL | RumEventKeys.URL$FULL | RumEventKeys.DRAG_ELEMENT$DETECTED_NAME | RumEventKeys.FORM_ELEMENT$DETECTED_NAME | RumEventKeys.LABEL_ELEMENT$DETECTED_NAME | RumEventKeys.UI_ELEMENT$DETECTED_NAME | RumEventKeys.VIEW$SOURCE$DETECTED_NAME;
|
|
57
51
|
/**
|
|
58
52
|
* @inline
|
|
59
53
|
* @ignore
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS90eXBlcy9ydW0tZXZlbnRzL2pzb24tZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBkeW5hdHJhY2UvZGVtLWVzbGludC1ydWxlcy91bmlvbi10eXBlIC0tIGtlZXAgc3BlYyBvcmRlciAqL1xuaW1wb3J0IHR5cGUgeyBHZW5lcmFsUnVtRXZlbnRGaWVsZHMgfSBmcm9tIFwiLi9zaGFyZWQtbmFtZXNwYWNlcy1hbmQtZmllbGRzL2dlbmVyYWwtcnVtLWV2ZW50LWZpZWxkcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSVU1FdmVudCB9IGZyb20gXCIuL3J1bS1ldmVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSdW1FdmVudEtleXMgfSBmcm9tIFwiLi9ydW0tZXZlbnQta2V5cy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSVU1JbnRlcm5hbFNlbGZtb25pdG9yaW5nRXZlbnQgfSBmcm9tIFwiLi9ydW0taW50ZXJuYWwtc2VsZm1vbml0b3JpbmctZXZlbnQuanNcIjtcbmltcG9ydCB0eXBlIHsgUlVNTG9uZ1Rhc2tFdmVudCB9IGZyb20gXCIuL3J1bS1sb25nLXRhc2stZXZlbnQuanNcIjtcbmltcG9ydCB0eXBlIHsgUlVNU2VsZm1vbml0b3JpbmdFdmVudCB9IGZyb20gXCIuL3J1bS1zZWxmbW9uaXRvcmluZy1ldmVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSVU1TZXNzaW9uUHJvcGVydGllc0V2ZW50IH0gZnJvbSBcIi4vcnVtLXNlc3Npb24tcHJvcGVydGllcy1ldmVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSVU1TdGFuZGFsb25lQ3NwUnVsZVZpb2xhdGlvbkV2ZW50IH0gZnJvbSBcIi4vcnVtLXN0YW5kYWxvbmUtY3NwLXJ1bGUtdmlvbGF0aW9uLWV2ZW50LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFJVTVN0YW5kYWxvbmVFeGNlcHRpb25FdmVudCB9IGZyb20gXCIuL3J1bS1zdGFuZGFsb25lLWV4Y2VwdGlvbi1ldmVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSVU1TdGFuZGFsb25lTmF2aWdhdGlvbkV2ZW50IH0gZnJvbSBcIi4vcnVtLXN0YW5kYWxvbmUtbmF2aWdhdGlvbi1ldmVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSVU1TdW1tYXJ5RXZlbnQgfSBmcm9tIFwiLi9ydW0tcGFnZS1zdW1tYXJ5LWV2ZW50LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFJVTVVzZXJBY3Rpb25FdmVudCB9IGZyb20gXCIuL3J1bS11c2VyLWFjdGlvbi1ldmVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSVU1Vc2VySW50ZXJhY3Rpb25FdmVudCB9IGZyb20gXCIuL3J1bS11c2VyLWludGVyYWN0aW9uLWV2ZW50LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFJVTVZpc2liaWxpdHlDaGFuZ2VFdmVudCB9IGZyb20gXCIuL3J1bS12aXNpYmlsaXR5LWNoYW5nZS1ldmVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSVU1XZWJSZXF1ZXN0RXZlbnQgfSBmcm9tIFwiLi9ydW0td2ViLXJlcXVlc3QtZXZlbnQuanNcIjtcblxuLyoqXG4gKiBBbGwgdHlwZXMgb2YgZXZlbnRzIHRoZSBSVU0gSmF2YVNjcmlwdCBnZW5lcmF0ZXMuXG4gKlxuICogQGNhdGVnb3J5IEV2ZW50c1xuICovXG5leHBvcnQgdHlwZSBKU09ORXZlbnQgPVxuICAgIHwgUlVNRXZlbnRcbiAgICB8IFJVTUludGVybmFsU2VsZm1vbml0b3JpbmdFdmVudFxuICAgIHwgUlVNTG9uZ1Rhc2tFdmVudFxuICAgIHwgUlVNU2VsZm1vbml0b3JpbmdFdmVudFxuICAgIHwgUlVNU2Vzc2lvblByb3BlcnRpZXNFdmVudFxuICAgIHwgUlVNU3RhbmRhbG9uZUNzcFJ1bGVWaW9sYXRpb25FdmVudFxuICAgIHwgUlVNU3RhbmRhbG9uZUV4Y2VwdGlvbkV2ZW50XG4gICAgfCBSVU1TdGFuZGFsb25lTmF2aWdhdGlvbkV2ZW50XG4gICAgfCBSVU1TdW1tYXJ5RXZlbnRcbiAgICB8IFJVTVVzZXJBY3Rpb25FdmVudFxuICAgIHwgUlVNVXNlckludGVyYWN0aW9uRXZlbnRcbiAgICB8IFJVTVZpc2liaWxpdHlDaGFuZ2VFdmVudFxuICAgIHwgUlVNV2ViUmVxdWVzdEV2ZW50O1xuXG4vKipcbiAqIFRoZSBldmVudCBwYXJhbWV0ZXIgdGhlIHtAbGluayBkeW5hdHJhY2Uuc2VuZEV2ZW50fSBmdW5jdGlvbiBhY2NlcHRzLiBTZWUgdGhlIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGZvciBkZXRhaWxzLlxuICpcbiAqIEBjYXRlZ29yeSBUeXBlIEFsaWFzZXNcbiAqIEBzZWUge0BsaW5rIGR5bmF0cmFjZS5zZW5kRXZlbnR9XG4gKi9cbmV4cG9ydCB0eXBlIEFwaUNyZWF0ZWRFdmVudFByb3BlcnRpZXNFdmVudCA9IHtcbiAgICBba2V5IGluIGBldmVudF9wcm9wZXJ0aWVzLiR7c3RyaW5nfWBdPzogUHJpbWl0aXZlO1xufSAmIEFwaUNyZWF0ZWRBbGxvd2VkR2VuZXJhdGlvbkZpZWxkcztcblxuLyoqXG4gKiBUaGUgZXZlbnQgcGFyYW1ldGVyIHRoZSB7QGxpbmsgZHluYXRyYWNlLnNlbmRTZXNzaW9uUHJvcGVydHlFdmVudH0gZnVuY3Rpb24gYWNjZXB0cy4gU2VlIHRoZSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBmb3JcbiAqIGRldGFpbHMuXG4gKlxuICogQGNhdGVnb3J5IFR5cGUgQWxpYXNlc1xuICogQHNlZSB7QGxpbmsgZHluYXRyYWNlLnNlbmRTZXNzaW9uUHJvcGVydHlFdmVudH1cbiAqL1xuZXhwb3J0IHR5cGUgQXBpQ3JlYXRlZFNlc3Npb25Qcm9wZXJ0aWVzRXZlbnQgPSB7XG4gICAgW2tleSBpbiBgc2Vzc2lvbl9wcm9wZXJ0aWVzLiR7c3RyaW5nfWBdPzogUHJpbWl0aXZlO1xufSAmIEFwaUNyZWF0ZWRBbGxvd2VkR2VuZXJhdGlvbkZpZWxkcztcblxuLyoqXG4gKiBAaW5saW5lXG4gKiBAaWdub3JlXG4gKi9cbnR5cGUgV3JpdGFibGVGaWVsZHMgPSBQaWNrPEdlbmVyYWxSdW1FdmVudEZpZWxkcywgUnVtRXZlbnRLZXlzLkRVUkFUSU9OIHwgUnVtRXZlbnRLZXlzLlNUQVJUX1RJTUU+
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS90eXBlcy9ydW0tZXZlbnRzL2pzb24tZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBkeW5hdHJhY2UvZGVtLWVzbGludC1ydWxlcy91bmlvbi10eXBlIC0tIGtlZXAgc3BlYyBvcmRlciAqL1xuaW1wb3J0IHR5cGUgeyBHZW5lcmFsUnVtRXZlbnRGaWVsZHMgfSBmcm9tIFwiLi9zaGFyZWQtbmFtZXNwYWNlcy1hbmQtZmllbGRzL2dlbmVyYWwtcnVtLWV2ZW50LWZpZWxkcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSVU1FdmVudCB9IGZyb20gXCIuL3J1bS1ldmVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSdW1FdmVudEtleXMgfSBmcm9tIFwiLi9ydW0tZXZlbnQta2V5cy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSVU1JbnRlcm5hbFNlbGZtb25pdG9yaW5nRXZlbnQgfSBmcm9tIFwiLi9ydW0taW50ZXJuYWwtc2VsZm1vbml0b3JpbmctZXZlbnQuanNcIjtcbmltcG9ydCB0eXBlIHsgUlVNTG9uZ1Rhc2tFdmVudCB9IGZyb20gXCIuL3J1bS1sb25nLXRhc2stZXZlbnQuanNcIjtcbmltcG9ydCB0eXBlIHsgUlVNU2VsZm1vbml0b3JpbmdFdmVudCB9IGZyb20gXCIuL3J1bS1zZWxmbW9uaXRvcmluZy1ldmVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSVU1TZXNzaW9uUHJvcGVydGllc0V2ZW50IH0gZnJvbSBcIi4vcnVtLXNlc3Npb24tcHJvcGVydGllcy1ldmVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSVU1TdGFuZGFsb25lQ3NwUnVsZVZpb2xhdGlvbkV2ZW50IH0gZnJvbSBcIi4vcnVtLXN0YW5kYWxvbmUtY3NwLXJ1bGUtdmlvbGF0aW9uLWV2ZW50LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFJVTVN0YW5kYWxvbmVFeGNlcHRpb25FdmVudCB9IGZyb20gXCIuL3J1bS1zdGFuZGFsb25lLWV4Y2VwdGlvbi1ldmVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSVU1TdGFuZGFsb25lTmF2aWdhdGlvbkV2ZW50IH0gZnJvbSBcIi4vcnVtLXN0YW5kYWxvbmUtbmF2aWdhdGlvbi1ldmVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSVU1TdW1tYXJ5RXZlbnQgfSBmcm9tIFwiLi9ydW0tcGFnZS1zdW1tYXJ5LWV2ZW50LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFJVTVVzZXJBY3Rpb25FdmVudCB9IGZyb20gXCIuL3J1bS11c2VyLWFjdGlvbi1ldmVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSVU1Vc2VySW50ZXJhY3Rpb25FdmVudCB9IGZyb20gXCIuL3J1bS11c2VyLWludGVyYWN0aW9uLWV2ZW50LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFJVTVZpc2liaWxpdHlDaGFuZ2VFdmVudCB9IGZyb20gXCIuL3J1bS12aXNpYmlsaXR5LWNoYW5nZS1ldmVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSVU1XZWJSZXF1ZXN0RXZlbnQgfSBmcm9tIFwiLi9ydW0td2ViLXJlcXVlc3QtZXZlbnQuanNcIjtcblxuLyoqXG4gKiBBbGwgdHlwZXMgb2YgZXZlbnRzIHRoZSBSVU0gSmF2YVNjcmlwdCBnZW5lcmF0ZXMuXG4gKlxuICogQGNhdGVnb3J5IEV2ZW50c1xuICovXG5leHBvcnQgdHlwZSBKU09ORXZlbnQgPVxuICAgIHwgUlVNRXZlbnRcbiAgICB8IFJVTUludGVybmFsU2VsZm1vbml0b3JpbmdFdmVudFxuICAgIHwgUlVNTG9uZ1Rhc2tFdmVudFxuICAgIHwgUlVNU2VsZm1vbml0b3JpbmdFdmVudFxuICAgIHwgUlVNU2Vzc2lvblByb3BlcnRpZXNFdmVudFxuICAgIHwgUlVNU3RhbmRhbG9uZUNzcFJ1bGVWaW9sYXRpb25FdmVudFxuICAgIHwgUlVNU3RhbmRhbG9uZUV4Y2VwdGlvbkV2ZW50XG4gICAgfCBSVU1TdGFuZGFsb25lTmF2aWdhdGlvbkV2ZW50XG4gICAgfCBSVU1TdW1tYXJ5RXZlbnRcbiAgICB8IFJVTVVzZXJBY3Rpb25FdmVudFxuICAgIHwgUlVNVXNlckludGVyYWN0aW9uRXZlbnRcbiAgICB8IFJVTVZpc2liaWxpdHlDaGFuZ2VFdmVudFxuICAgIHwgUlVNV2ViUmVxdWVzdEV2ZW50O1xuXG4vKipcbiAqIFRoZSBldmVudCBwYXJhbWV0ZXIgdGhlIHtAbGluayBkeW5hdHJhY2Uuc2VuZEV2ZW50fSBmdW5jdGlvbiBhY2NlcHRzLiBTZWUgdGhlIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGZvciBkZXRhaWxzLlxuICpcbiAqIEBjYXRlZ29yeSBUeXBlIEFsaWFzZXNcbiAqIEBzZWUge0BsaW5rIGR5bmF0cmFjZS5zZW5kRXZlbnR9XG4gKi9cbmV4cG9ydCB0eXBlIEFwaUNyZWF0ZWRFdmVudFByb3BlcnRpZXNFdmVudCA9IHtcbiAgICBba2V5IGluIGBldmVudF9wcm9wZXJ0aWVzLiR7c3RyaW5nfWBdPzogUHJpbWl0aXZlO1xufSAmIEFwaUNyZWF0ZWRBbGxvd2VkR2VuZXJhdGlvbkZpZWxkcztcblxuLyoqXG4gKiBUaGUgZXZlbnQgcGFyYW1ldGVyIHRoZSB7QGxpbmsgZHluYXRyYWNlLnNlbmRTZXNzaW9uUHJvcGVydHlFdmVudH0gZnVuY3Rpb24gYWNjZXB0cy4gU2VlIHRoZSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBmb3JcbiAqIGRldGFpbHMuXG4gKlxuICogQGNhdGVnb3J5IFR5cGUgQWxpYXNlc1xuICogQHNlZSB7QGxpbmsgZHluYXRyYWNlLnNlbmRTZXNzaW9uUHJvcGVydHlFdmVudH1cbiAqL1xuZXhwb3J0IHR5cGUgQXBpQ3JlYXRlZFNlc3Npb25Qcm9wZXJ0aWVzRXZlbnQgPSB7XG4gICAgW2tleSBpbiBgc2Vzc2lvbl9wcm9wZXJ0aWVzLiR7c3RyaW5nfWBdPzogUHJpbWl0aXZlO1xufSAmIEFwaUNyZWF0ZWRBbGxvd2VkR2VuZXJhdGlvbkZpZWxkcztcblxuLyoqXG4gKiBAaW5saW5lXG4gKiBAaWdub3JlXG4gKi9cbnR5cGUgV3JpdGFibGVGaWVsZHMgPSBQaWNrPEdlbmVyYWxSdW1FdmVudEZpZWxkcywgUnVtRXZlbnRLZXlzLkRVUkFUSU9OIHwgUnVtRXZlbnRLZXlzLlNUQVJUX1RJTUU+O1xuXG4vKipcbiAqIEBpbmxpbmVcbiAqIEBpZ25vcmVcbiAqL1xuZXhwb3J0IHR5cGUgQXBpQ3JlYXRlZEFsbG93ZWRHZW5lcmF0aW9uRmllbGRzID0gUGFydGlhbDxXcml0YWJsZUZpZWxkcz47XG5cbi8qKlxuICogQGlubGluZVxuICogQGlnbm9yZVxuICovXG5leHBvcnQgdHlwZSBKU09OT2JqZWN0ID0geyBbazogc3RyaW5nXTogSlNPTlZhbHVlIH07XG4vKipcbiAqIEFsbG93ZWQgdmFsdWUgdHlwZXMgZm9yIGV2ZW50c1xuICpcbiAqIEBpbmxpbmVcbiAqIEBpZ25vcmVcbiAqL1xuZXhwb3J0IHR5cGUgUHJpbWl0aXZlID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGw7XG4vKipcbiAqIEBpbmxpbmVcbiAqIEBpZ25vcmVcbiAqL1xuZXhwb3J0IHR5cGUgSlNPTkFycmF5ID0gSlNPTlZhbHVlW107XG4vKipcbiAqIEBpbmxpbmVcbiAqIEBpZ25vcmVcbiAqL1xuZXhwb3J0IHR5cGUgSlNPTlZhbHVlID0gSlNPTkFycmF5IHwgSlNPTk9iamVjdCB8IFByaW1pdGl2ZTtcbiJdfQ==
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { RumEventKeys } from "./rum-event-keys.js";
|
|
2
|
+
/**
|
|
3
|
+
* Validates custom field key names.
|
|
4
|
+
*
|
|
5
|
+
* Pattern: `/^[\dA-Za-z]+(?:\.[A-Za-z][\dA-Za-z]*|_[\dA-Za-z]+)*$/`
|
|
6
|
+
*
|
|
7
|
+
* Rules: alphanumeric characters (a-z, A-Z, 0-9), underscores (_) and dots (.).
|
|
8
|
+
* Each dot must be followed by an alphabetic character.
|
|
9
|
+
* Each underscore must be followed by an alphanumeric character.
|
|
10
|
+
*
|
|
11
|
+
* @example valid: `"my_key"`, `"event.type"`, `"my.custom2_key"`
|
|
12
|
+
* @example invalid: `"my-key"`, `"my..key"`, `"_key"`, `".key"`
|
|
13
|
+
*
|
|
14
|
+
* @category API
|
|
15
|
+
*/
|
|
16
|
+
export declare const VALID_KEY_REGEX: RegExp;
|
|
17
|
+
/**
|
|
18
|
+
* Consolidated enum containing all RUM event field namespace keys.
|
|
19
|
+
*
|
|
20
|
+
* @inline
|
|
21
|
+
* @category API
|
|
22
|
+
*/
|
|
23
|
+
export declare const enum RumEventPropertyNamespaces {
|
|
24
|
+
EVENT_PROPERTIES = "event_properties",
|
|
25
|
+
SESSION_PROPERTIES = "session_properties"
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Explicit event field keys that can be added via generation API {@link dynatrace.sendEvent} or {@link dynatrace.sendSessionPropertyEvent}
|
|
29
|
+
*
|
|
30
|
+
* @see {@link AllowedAddedFields}
|
|
31
|
+
* @inline
|
|
32
|
+
* @category API
|
|
33
|
+
*/
|
|
34
|
+
export declare const ADDABLE_FIELD_KEYS: readonly [RumEventKeys.DURATION];
|
|
35
|
+
/**
|
|
36
|
+
* Explicit event field keys that can be overridden via {@link dynatrace.addEventModifier}.
|
|
37
|
+
*
|
|
38
|
+
* @see {@link AllowedModificationFields}
|
|
39
|
+
* @inline
|
|
40
|
+
* @category API
|
|
41
|
+
*/
|
|
42
|
+
export declare const OVERRIDABLE_FIELD_KEYS: readonly [RumEventKeys.URL$FULL, RumEventKeys.VIEW$URL$FULL, RumEventKeys.VIEW$DETECTED_NAME, RumEventKeys.VIEW$SOURCE$DETECTED_NAME, RumEventKeys.PAGE$URL$FULL, RumEventKeys.PAGE$DETECTED_NAME, RumEventKeys.CSP$STACK_TRACE, RumEventKeys.EXCEPTION$STACK_TRACE, RumEventKeys.UI_ELEMENT$DETECTED_NAME, RumEventKeys.FORM_ELEMENT$DETECTED_NAME, RumEventKeys.LABEL_ELEMENT$DETECTED_NAME, RumEventKeys.DRAG_ELEMENT$DETECTED_NAME];
|
|
43
|
+
/**
|
|
44
|
+
* Explicit event namespace keys that have fields that can be added via {@link dynatrace.sendEvent} or {@link dynatrace.sendSessionPropertyEvent} with caveats:
|
|
45
|
+
* - {@link RumEventPropertyNamespaces.EVENT_PROPERTIES} can always be added unless created with {@link dynatrace.sendSessionPropertyEvent}
|
|
46
|
+
* - {@link RumEventPropertyNamespaces.SESSION_PROPERTIES} can only be added when created with {@link dynatrace.sendSessionPropertyEvent}
|
|
47
|
+
*
|
|
48
|
+
* @see {@link AllowedAddedFields}
|
|
49
|
+
* @inline
|
|
50
|
+
* @category API
|
|
51
|
+
*/
|
|
52
|
+
export declare const ADDABLE_NAMESPACE_KEYS: readonly [RumEventPropertyNamespaces.SESSION_PROPERTIES, RumEventPropertyNamespaces.EVENT_PROPERTIES];
|
|
53
|
+
/**
|
|
54
|
+
* Explicit event namespace keys that have fields that can be overridden via {@link dynatrace.addEventModifier} with caveats:
|
|
55
|
+
* - {@link RumEventPropertyNamespaces.EVENT_PROPERTIES} can always be modified unless created with {@link dynatrace.sendSessionPropertyEvent}
|
|
56
|
+
* - {@link RumEventPropertyNamespaces.SESSION_PROPERTIES} can only be modified when created with {@link dynatrace.sendSessionPropertyEvent}
|
|
57
|
+
*
|
|
58
|
+
* @see {@link AllowedModificationFields}
|
|
59
|
+
* @inline
|
|
60
|
+
* @category API
|
|
61
|
+
*/
|
|
62
|
+
export declare const OVERRIDABLE_NAMESPACE_KEYS: readonly [RumEventPropertyNamespaces.SESSION_PROPERTIES, RumEventPropertyNamespaces.EVENT_PROPERTIES];
|
|
63
|
+
/**
|
|
64
|
+
* Event fields that are allowed to be added using {@link dynatrace.sendEvent} or {@link dynatrace.sendSessionPropertyEvent}.
|
|
65
|
+
*
|
|
66
|
+
* @category API
|
|
67
|
+
*/
|
|
68
|
+
export type AllowedAddedFields = typeof ADDABLE_FIELD_KEYS[number] | typeof ADDABLE_NAMESPACE_KEYS[number];
|
|
69
|
+
/**
|
|
70
|
+
* Event fields that are allowed to be modified using {@link dynatrace.addEventModifier}.
|
|
71
|
+
*
|
|
72
|
+
* @category API
|
|
73
|
+
*/
|
|
74
|
+
export type AllowedModificationFields = typeof OVERRIDABLE_FIELD_KEYS[number] | typeof OVERRIDABLE_NAMESPACE_KEYS[number];
|