@o3r/analytics 12.0.0-next.2 → 12.0.0-next.21

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.
Files changed (41) hide show
  1. package/directives/track-events/base-track-events.d.ts +1 -1
  2. package/directives/track-events/track-click/track-click.directive.d.ts +1 -1
  3. package/directives/track-events/track-events.directive.d.ts +1 -1
  4. package/directives/track-events/track-events.module.d.ts +4 -1
  5. package/directives/track-events/track-events.module.d.ts.map +1 -1
  6. package/directives/track-events/track-focus/track-focus.directive.d.ts +1 -1
  7. package/fesm2022/o3r-analytics.mjs +27 -24
  8. package/fesm2022/o3r-analytics.mjs.map +1 -1
  9. package/fixtures/jasmine/package.json +3 -0
  10. package/fixtures/jest/package.json +3 -0
  11. package/package.json +13 -18
  12. package/schematics/package.json +3 -0
  13. package/esm2022/contracts/events-contracts.mjs +0 -2
  14. package/esm2022/contracts/index.mjs +0 -2
  15. package/esm2022/directives/index.mjs +0 -2
  16. package/esm2022/directives/track-events/base-track-events.mjs +0 -72
  17. package/esm2022/directives/track-events/index.mjs +0 -5
  18. package/esm2022/directives/track-events/track-click/track-click.directive.mjs +0 -42
  19. package/esm2022/directives/track-events/track-events.directive.mjs +0 -49
  20. package/esm2022/directives/track-events/track-events.module.mjs +0 -18
  21. package/esm2022/directives/track-events/track-focus/track-focus.directive.mjs +0 -39
  22. package/esm2022/fixtures/jasmine/event-track.service.fixture.jasmine.mjs +0 -40
  23. package/esm2022/fixtures/jasmine/index.mjs +0 -2
  24. package/esm2022/fixtures/jasmine/o3r-analytics-fixtures-jasmine.mjs +0 -5
  25. package/esm2022/fixtures/jest/event-track.service.fixture.jest.mjs +0 -40
  26. package/esm2022/fixtures/jest/index.mjs +0 -2
  27. package/esm2022/fixtures/jest/o3r-analytics-fixtures-jest.mjs +0 -5
  28. package/esm2022/o3r-analytics.mjs +0 -5
  29. package/esm2022/public_api.mjs +0 -5
  30. package/esm2022/services/event-track/event-track.configuration.mjs +0 -14
  31. package/esm2022/services/event-track/event-track.service.mjs +0 -303
  32. package/esm2022/services/event-track/index.mjs +0 -3
  33. package/esm2022/services/index.mjs +0 -2
  34. package/esm2022/stores/event-track/event-track.actions.mjs +0 -28
  35. package/esm2022/stores/event-track/event-track.module.mjs +0 -39
  36. package/esm2022/stores/event-track/event-track.reducer.mjs +0 -101
  37. package/esm2022/stores/event-track/event-track.selectors.mjs +0 -7
  38. package/esm2022/stores/event-track/event-track.state.mjs +0 -5
  39. package/esm2022/stores/event-track/event-track.sync.mjs +0 -7
  40. package/esm2022/stores/event-track/index.mjs +0 -7
  41. package/esm2022/stores/index.mjs +0 -2
@@ -1,303 +0,0 @@
1
- import { Inject, Injectable, NgZone, Optional, } from '@angular/core';
2
- import { NavigationEnd, Router, } from '@angular/router';
3
- import { BehaviorSubject, combineLatest, fromEvent, ReplaySubject, } from 'rxjs';
4
- import { delay, filter, skip, skipWhile, take, takeWhile, withLatestFrom, } from 'rxjs/operators';
5
- import { defaultEventTrackConfiguration, EVENT_TRACK_SERVICE_CONFIGURATION, } from './event-track.configuration';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/router";
8
- /** The initial value of the performance measurements */
9
- export const performanceMarksInitialState = {
10
- page: '',
11
- perceived: {},
12
- serverCalls: [],
13
- customMarks: []
14
- };
15
- /**
16
- * Service to expose the tracked events as streams. Also provide a way to activate/deactivate the tracking
17
- */
18
- export class EventTrackService {
19
- /** Performance payload object */
20
- get performancePayload() {
21
- return this._performancePayload;
22
- }
23
- /** Performance payload object */
24
- set performancePayload(value) {
25
- if (this.isPerfTrackingActive) {
26
- this._performancePayload = { ...value, page: this.router.url }; // Saves the current page url
27
- this.perfEventTrack.next(this._performancePayload);
28
- }
29
- }
30
- constructor(router, zone, config) {
31
- this.router = router;
32
- this.zone = zone;
33
- /** Boolean to indicate the first load of the application */
34
- this.isFirstLoad = true;
35
- this._performancePayload = performanceMarksInitialState;
36
- const eventConfiguration = { ...defaultEventTrackConfiguration, ...config };
37
- this.uiTrackingActivated = new BehaviorSubject(eventConfiguration.activate.uiTracking);
38
- this.uiTrackingActive$ = this.uiTrackingActivated.asObservable();
39
- this.uiEventTrack = new ReplaySubject(eventConfiguration.uiEventsBufferSize);
40
- this.uiEventTrack$ = this.uiEventTrack.asObservable();
41
- // Custom events
42
- this.customEventTrack = new ReplaySubject();
43
- this.customEventTrack$ = this.customEventTrack.asObservable();
44
- this.perfTrackingActivated = new BehaviorSubject(eventConfiguration.activate.perfTracking);
45
- this.perfTrackingActive$ = this.perfTrackingActivated.asObservable();
46
- this.perfEventTrack = new ReplaySubject(eventConfiguration.perfBufferSize);
47
- this.perfEventTrack$ = this.perfEventTrack.asObservable();
48
- this.perfTrackingActive$.subscribe((activated) => this.isPerfTrackingActive = activated);
49
- const routerNavigationEnd$ = this.router.events.pipe(filter((event) => event instanceof NavigationEnd));
50
- const trackingNavigationEnd$ = routerNavigationEnd$.pipe(withLatestFrom(this.perfTrackingActive$));
51
- // Handles first load navigation
52
- combineLatest(trackingNavigationEnd$.pipe(take(1), filter(() => typeof window.performance.timing !== 'undefined'), takeWhile(([_event, active]) => active)), fromEvent(window, 'load').pipe(delay(0))).subscribe(async () => {
53
- if (eventConfiguration.useBrowserApiForFirstFP) {
54
- const browserEntries = window.performance.getEntriesByType && window.performance.getEntriesByType('paint');
55
- const browserFP = browserEntries && browserEntries.find((entry) => entry.name === 'first-paint');
56
- if (browserFP) {
57
- const endTime = Math.round(browserFP.startTime);
58
- this.addFPToPerfPayload({ startTime: 0, endTime });
59
- }
60
- }
61
- else if (this.firstPaint) { // If there is a registered firstPaint value emit it
62
- this.addFPToPerfPayload(await this.firstPaint);
63
- this.firstPaint = undefined;
64
- }
65
- this.markFirstLoad();
66
- });
67
- // Handles later navigation
68
- trackingNavigationEnd$.pipe(skip(1), skipWhile(([_event, active]) => !active)).subscribe(async () => {
69
- this.isFirstLoad = false;
70
- this.resetPerfMarks();
71
- if (this.firstPaint) { // If there is a registered firstPaint value emit it
72
- this.addFPToPerfPayload(await this.firstPaint);
73
- this.firstPaint = undefined;
74
- }
75
- });
76
- }
77
- /**
78
- * Create metrics object for the first load of the application
79
- */
80
- createFirstLoadData() {
81
- const navigation = window.performance.timing;
82
- return {
83
- connection: Math.round(navigation.connectEnd - navigation.navigationStart),
84
- request: Math.round(navigation.responseStart - navigation.connectEnd),
85
- response: Math.round(navigation.responseEnd - navigation.responseStart),
86
- DOM: Math.round(navigation.loadEventEnd - navigation.responseEnd),
87
- total: Math.round(navigation.loadEventEnd - navigation.navigationStart)
88
- };
89
- }
90
- /**
91
- * Populate performance payload with FP object
92
- * @param FP
93
- */
94
- addFPToPerfPayload(FP) {
95
- const perfFirstPaint = {
96
- ...this.performancePayload,
97
- perceived: {
98
- ...this.performancePayload.perceived,
99
- FP
100
- }
101
- };
102
- this.performancePayload = perfFirstPaint;
103
- }
104
- /**
105
- * Reset all metrics to initial state; Add the pageName on top of it
106
- */
107
- resetPerfMarks() {
108
- this.performancePayload = { ...performanceMarksInitialState };
109
- }
110
- /**
111
- * Mark the first load metrics using the navigation API.
112
- * This has to be called only once in a single page application, being meaningful only for the first load
113
- * This mark is populated by default in this service when the NavigationEnd event of the router emits for the first time
114
- */
115
- markFirstLoad() {
116
- const firstLoad = this.createFirstLoadData();
117
- this.performancePayload = { ...this.performancePayload, firstLoad };
118
- }
119
- /**
120
- * Mark the first paint value
121
- * Store the first paint timing value to be emitted at Navigation End
122
- * @param emit If true, sets the FP to the current page. Otherwise, wait for next NavigationEnd event to happen
123
- */
124
- async markFP(emit = false) {
125
- this.firstPaint = this.getTiming();
126
- if (emit) {
127
- this.addFPToPerfPayload(await this.firstPaint);
128
- this.firstPaint = undefined;
129
- }
130
- }
131
- /**
132
- * Mark the first meaningful paint value.
133
- * @param markOnlyFirstLoad If false, marks the FMP for subsequent loads else only for the first load of the application
134
- */
135
- async markFMP(markOnlyFirstLoad = true) {
136
- if (!markOnlyFirstLoad || (markOnlyFirstLoad && this.isFirstLoad)) {
137
- const timing = await this.getTiming();
138
- const perfFirstMeaningfulPaint = {
139
- ...this.performancePayload,
140
- perceived: {
141
- ...this.performancePayload.perceived,
142
- FMP: timing
143
- }
144
- };
145
- this.performancePayload = perfFirstMeaningfulPaint;
146
- }
147
- }
148
- /**
149
- * Add data ready perceived event
150
- * This probe marks the time when the page considers it has all the data to become interactive
151
- */
152
- async markDataReady() {
153
- const timing = await this.getTiming();
154
- const perfDataReady = {
155
- ...this.performancePayload,
156
- perceived: {
157
- ...this.performancePayload.perceived,
158
- dataReady: timing
159
- }
160
- };
161
- this.performancePayload = perfDataReady;
162
- }
163
- /**
164
- * Add a custom event and its measurements
165
- * @param label The event name
166
- */
167
- async addCustomMark(label) {
168
- const timing = await this.getTiming();
169
- const customMark = { label, timing };
170
- const perf = { ...this.performancePayload, customMarks: this.performancePayload.customMarks.concat(customMark) };
171
- this.performancePayload = perf;
172
- }
173
- /**
174
- * Add a server call object in the list of server calls metrics
175
- * @param serverCall The object to add in the server calls metrics
176
- */
177
- addServerCallMark(serverCall) {
178
- const perf = { ...this.performancePayload, serverCalls: this.performancePayload.serverCalls.concat(serverCall) };
179
- this.performancePayload = perf;
180
- }
181
- /**
182
- * Add a DxAPI SDK server call object, created by the SDK Probe plugin, in the list of server calls metrics.
183
- * In order to have requestId for the DxAPI calls, your server has to expose 'ama-request-id' via Access-Control-Expose-Headers
184
- * @param serverMark The mark object
185
- */
186
- async addSDKServerCallMark(serverMark) {
187
- let serverCallMetric = {
188
- url: serverMark.url,
189
- httpMethod: serverMark.requestOptions.method,
190
- httpStatus: serverMark.response && serverMark.response.status,
191
- timing: { startTime: serverMark.startTime, endTime: serverMark.endTime },
192
- error: serverMark.error
193
- };
194
- if (serverMark.response) {
195
- const clonedResponse = serverMark.response.clone();
196
- const amaRequestId = clonedResponse.headers.get('ama-request-id');
197
- const blob = await clonedResponse.blob();
198
- serverCallMetric = {
199
- ...serverCallMetric,
200
- responseSize: blob.size,
201
- requestId: amaRequestId || undefined
202
- };
203
- }
204
- this.addServerCallMark(serverCallMetric);
205
- }
206
- /**
207
- * Add a custom event and mark the start time, and returns the element index
208
- * @param label Event name
209
- * @returns the element index if tracking is active. Otherwise, -1
210
- */
211
- startCustomMark(label) {
212
- if (!this.isPerfTrackingActive) {
213
- return -1;
214
- }
215
- const startTime = Math.round(window.performance.now());
216
- const customMark = { label, timing: { startTime } };
217
- const perf = { ...this.performancePayload, customMarks: this.performancePayload.customMarks.concat(customMark) };
218
- this.performancePayload = perf;
219
- return this.performancePayload.customMarks.length - 1;
220
- }
221
- /**
222
- * End the event mark given in parameter;
223
- * Returns false if the custom event is not found in the list of custom marks; true otherwise
224
- * @param eventIndex Index of the custom event to be marked as ended
225
- */
226
- endCustomMark(eventIndex) {
227
- if (!this.isPerfTrackingActive) {
228
- return false;
229
- }
230
- let updated = false;
231
- const perf = {
232
- ...this.performancePayload,
233
- customMarks: this.performancePayload.customMarks.map((eventObj, index) => {
234
- if (index !== eventIndex) {
235
- return eventObj;
236
- }
237
- updated = true;
238
- const endTime = Math.round(window.performance.now());
239
- return { label: eventObj.label, timing: { ...eventObj.timing, endTime } };
240
- })
241
- };
242
- this.performancePayload = perf;
243
- return updated;
244
- }
245
- /**
246
- * The goal of this method is to compute a time range duration between the moment you call the function (lower bound timestamp)
247
- * and the end of the composite rendering (upper bound measurement - a time mark that occurs after the real composite)
248
- * For the first load of the application, the start time is considered as the start of navigation to ensure a cumulative measure.
249
- * It is using the 'NgZone' service to runOutsideAngular to prevent any change detection to occur, nor angular error handling, speeding up the measurement.
250
- * Example {@link markFMP} is called in {@link ngAfterViewInit}, the end time will be computed once the render pipeline stage completed the changes triggered by the javascript
251
- */
252
- getTiming() {
253
- const startTime = this.isFirstLoad ? 0 : Math.round(window.performance.now());
254
- return new Promise((resolve) => {
255
- this.zone.runOutsideAngular(() => {
256
- setTimeout(() => {
257
- const endTime = Math.round(window.performance.now());
258
- resolve({ startTime, endTime });
259
- }, 0);
260
- });
261
- });
262
- }
263
- /**
264
- * Add an event to the stream of captured UI events
265
- * @param uiEvent emitted event object
266
- */
267
- addUiEvent(uiEvent) {
268
- this.uiEventTrack.next(uiEvent);
269
- }
270
- /**
271
- * Add an event to the stream of captured custom events
272
- * @param customEvent emitted event object
273
- */
274
- addCustomEvent(customEvent) {
275
- this.customEventTrack.next(customEvent);
276
- }
277
- /**
278
- * Activate/deactivate the tracking mode for UI events
279
- * @param activate activation/deactivation boolean
280
- */
281
- toggleUiTracking(activate) {
282
- this.uiTrackingActivated.next(activate);
283
- }
284
- /**
285
- * Activate/deactivate the tracking mode for performance measurements
286
- * @param activate activation/deactivation boolean
287
- */
288
- togglePerfTracking(activate) {
289
- this.perfTrackingActivated.next(activate);
290
- }
291
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EventTrackService, deps: [{ token: i1.Router }, { token: i0.NgZone }, { token: EVENT_TRACK_SERVICE_CONFIGURATION, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
292
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EventTrackService, providedIn: 'root' }); }
293
- }
294
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EventTrackService, decorators: [{
295
- type: Injectable,
296
- args: [{ providedIn: 'root' }]
297
- }], ctorParameters: () => [{ type: i1.Router }, { type: i0.NgZone }, { type: undefined, decorators: [{
298
- type: Optional
299
- }, {
300
- type: Inject,
301
- args: [EVENT_TRACK_SERVICE_CONFIGURATION]
302
- }] }] });
303
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtdHJhY2suc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9ldmVudC10cmFjay9ldmVudC10cmFjay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGFBQWEsRUFDYixNQUFNLEdBQ1AsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixTQUFTLEVBRVQsYUFBYSxHQUNkLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sSUFBSSxFQUNKLFNBQVMsRUFDVCxJQUFJLEVBQ0osU0FBUyxFQUNULGNBQWMsR0FDZixNQUFNLGdCQUFnQixDQUFDO0FBVXhCLE9BQU8sRUFDTCw4QkFBOEIsRUFDOUIsaUNBQWlDLEdBRWxDLE1BQU0sNkJBQTZCLENBQUM7OztBQUVyQyx3REFBd0Q7QUFDeEQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQStCO0lBQ3RFLElBQUksRUFBRSxFQUFFO0lBQ1IsU0FBUyxFQUFFLEVBQUU7SUFDYixXQUFXLEVBQUUsRUFBRTtJQUNmLFdBQVcsRUFBRSxFQUFFO0NBQ1AsQ0FBQztBQUVYOztHQUVHO0FBSUgsTUFBTSxPQUFPLGlCQUFpQjtJQW1DNUIsaUNBQWlDO0lBQ2pDLElBQVksa0JBQWtCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFFRCxpQ0FBaUM7SUFDakMsSUFBWSxrQkFBa0IsQ0FBQyxLQUF1QjtRQUNwRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxJ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QUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtnQkFDL0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztvQkFDckQsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ2xDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNSLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVSxDQUFDLE9BQXVCO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxjQUFjLENBQUMsV0FBK0I7UUFDbkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksZ0JBQWdCLENBQUMsUUFBaUI7UUFDdkMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksa0JBQWtCLENBQUMsUUFBaUI7UUFDekMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QyxDQUFDO2tJQS9VVSxpQkFBaUIsOERBZ0RvRSxpQ0FBaUM7c0lBaER0SCxpQkFBaUIsY0FGZCxNQUFNOzs0RkFFVCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQ1QsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFrRHVELFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uIC0tIG5hbWluZyBjb252ZW50aW9uIGZvciBET00sIEZQLCBhbmQgRk1QIGltcG9zZWQgYnkgTGlnaHRob3VzZSAqL1xuaW1wb3J0IHR5cGUge1xuICBNYXJrLFxufSBmcm9tICdAYW1hLXNkay9jb3JlJztcbmltcG9ydCB7XG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgTmdab25lLFxuICBPcHRpb25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBOYXZpZ2F0aW9uRW5kLFxuICBSb3V0ZXIsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZyb21FdmVudCxcbiAgT2JzZXJ2YWJsZSxcbiAgUmVwbGF5U3ViamVjdCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkZWxheSxcbiAgZmlsdGVyLFxuICBza2lwLFxuICBza2lwV2hpbGUsXG4gIHRha2UsXG4gIHRha2VXaGlsZSxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEN1c3RvbUV2ZW50TWFya3MsXG4gIEN1c3RvbUV2ZW50UGF5bG9hZCxcbiAgRXZlbnRUaW1pbmcsXG4gIEZpcnN0TG9hZERhdGFQYXlsb2FkLFxuICBQZXJmRXZlbnRQYXlsb2FkLFxuICBTZXJ2ZXJDYWxsTWV0cmljLFxuICBVaUV2ZW50UGF5bG9hZCxcbn0gZnJvbSAnLi4vLi4vY29udHJhY3RzJztcbmltcG9ydCB7XG4gIGRlZmF1bHRFdmVudFRyYWNrQ29uZmlndXJhdGlvbixcbiAgRVZFTlRfVFJBQ0tfU0VSVklDRV9DT05GSUdVUkFUSU9OLFxuICBFdmVudFRyYWNrQ29uZmlndXJhdGlvbixcbn0gZnJvbSAnLi9ldmVudC10cmFjay5jb25maWd1cmF0aW9uJztcblxuLyoqIFRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBwZXJmb3JtYW5jZSBtZWFzdXJlbWVudHMgKi9cbmV4cG9ydCBjb25zdCBwZXJmb3JtYW5jZU1hcmtzSW5pdGlhbFN0YXRlOiBSZWFkb25seTxQZXJmRXZlbnRQYXlsb2FkPiA9IHtcbiAgcGFnZTogJycsXG4gIHBlcmNlaXZlZDoge30sXG4gIHNlcnZlckNhbGxzOiBbXSxcbiAgY3VzdG9tTWFya3M6IFtdXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIFNlcnZpY2UgdG8gZXhwb3NlIHRoZSB0cmFja2VkIGV2ZW50cyBhcyBzdHJlYW1zLiBBbHNvIHByb3ZpZGUgYSB3YXkgdG8gYWN0aXZhdGUvZGVhY3RpdmF0ZSB0aGUgdHJhY2tpbmdcbiAqL1xuQEluamVjdGFibGUoXG4gIHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH1cbilcbmV4cG9ydCBjbGFzcyBFdmVudFRyYWNrU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdWlFdmVudFRyYWNrOiBSZXBsYXlTdWJqZWN0PFVpRXZlbnRQYXlsb2FkPjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGN1c3RvbUV2ZW50VHJhY2s6IFJlcGxheVN1YmplY3Q8Q3VzdG9tRXZlbnRQYXlsb2FkPjtcblxuICBwcml2YXRlIHJlYWRvbmx5IHBlcmZFdmVudFRyYWNrOiBSZXBsYXlTdWJqZWN0PFBlcmZFdmVudFBheWxvYWQ+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdWlUcmFja2luZ0FjdGl2YXRlZDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGVyZlRyYWNraW5nQWN0aXZhdGVkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG5cbiAgcHJpdmF0ZSBmaXJzdFBhaW50PzogUHJvbWlzZTxFdmVudFRpbWluZz47XG5cbiAgLyoqIFVJIGNhcHR1cmVkIGV2ZW50cyBhcyBzdHJlYW0gKi9cbiAgcHVibGljIHVpRXZlbnRUcmFjayQ6IE9ic2VydmFibGU8VWlFdmVudFBheWxvYWQ+O1xuXG4gIC8qKiBDdXN0b20gY2FwdHVyZWQgZXZlbnRzIGFzIHN0cmVhbSAqL1xuICBwdWJsaWMgY3VzdG9tRXZlbnRUcmFjayQ6IE9ic2VydmFibGU8Q3VzdG9tRXZlbnRQYXlsb2FkPjtcblxuICAvKiogUGVyZm9ybWFuY2UgY2FwdHVyZWQgZXZlbnRzIGFzIHN0cmVhbSAqL1xuICBwdWJsaWMgcGVyZkV2ZW50VHJhY2skOiBPYnNlcnZhYmxlPFBlcmZFdmVudFBheWxvYWQ+O1xuXG4gIC8qKiBTdHJlYW0gb2YgYm9vbGVhbnMgZm9yIHRoZSB1aSB0cmFja2luZyBtb2RlIGFjdGl2ZS9pbmFjdGl2ZSAqL1xuICBwdWJsaWMgdWlUcmFja2luZ0FjdGl2ZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgLyoqIFN0cmVhbSBvZiBib29sZWFucyBmb3IgdGhlIHBlcmZvcm1hbmNlIHRyYWNraW5nIG1vZGUgYWN0aXZlL2luYWN0aXZlICovXG4gIHB1YmxpYyBwZXJmVHJhY2tpbmdBY3RpdmUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIC8qKiBUcnVlIGlmIHRoZSBwZXJmIHRyYWNraW5nIGlzIGFjdGl2YXRlZDsgZmFsc2Ugb3RoZXJ3aXNlICovXG4gIHByaXZhdGUgaXNQZXJmVHJhY2tpbmdBY3RpdmUhOiBib29sZWFuO1xuXG4gIC8qKiBCb29sZWFuIHRvIGluZGljYXRlIHRoZSBmaXJzdCBsb2FkIG9mIHRoZSBhcHBsaWNhdGlvbiAqL1xuICBwcml2YXRlIGlzRmlyc3RMb2FkID0gdHJ1ZTtcblxuICBwcml2YXRlIF9wZXJmb3JtYW5jZVBheWxvYWQ6IFBlcmZFdmVudFBheWxvYWQgPSBwZXJmb3JtYW5jZU1hcmtzSW5pdGlhbFN0YXRlO1xuICAvKiogUGVyZm9ybWFuY2UgcGF5bG9hZCBvYmplY3QgKi9cbiAgcHJpdmF0ZSBnZXQgcGVyZm9ybWFuY2VQYXlsb2FkKCkge1xuICAgIHJldHVybiB0aGlzLl9wZXJmb3JtYW5jZVBheWxvYWQ7XG4gIH1cblxuICAvKiogUGVyZm9ybWFuY2UgcGF5bG9hZCBvYmplY3QgKi9cbiAgcHJpdmF0ZSBzZXQgcGVyZm9ybWFuY2VQYXlsb2FkKHZhbHVlOiBQZXJmRXZlbnRQYXlsb2FkKSB7XG4gICAgaWYgKHRoaXMuaXNQZXJmVHJhY2tpbmdBY3RpdmUpIHtcbiAgICAgIHRoaXMuX3BlcmZvcm1hbmNlUGF5bG9hZCA9IHsgLi4udmFsdWUsIHBhZ2U6IHRoaXMucm91dGVyLnVybCB9OyAvLyBTYXZlcyB0aGUgY3VycmVudCBwYWdlIHVybFxuICAgICAgdGhpcy5wZXJmRXZlbnRUcmFjay5uZXh0KHRoaXMuX3BlcmZvcm1hbmNlUGF5bG9hZCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSByZWFkb25seSB6b25lOiBOZ1pvbmUsIEBPcHRpb25hbCgpIEBJbmplY3QoRVZFTlRfVFJBQ0tfU0VSVklDRV9DT05GSUdVUkFUSU9OKSBjb25maWc/OiBFdmVudFRyYWNrQ29uZmlndXJhdGlvbikge1xuICAgIGNvbnN0IGV2ZW50Q29uZmlndXJhdGlvbiA9IHsgLi4uZGVmYXVsdEV2ZW50VHJhY2tDb25maWd1cmF0aW9uLCAuLi5jb25maWcgfTtcbiAgICB0aGlzLnVpVHJhY2tpbmdBY3RpdmF0ZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGV2ZW50Q29uZmlndXJhdGlvbi5hY3RpdmF0ZS51aVRyYWNraW5nKTtcbiAgICB0aGlzLnVpVHJhY2tpbmdBY3RpdmUkID0gdGhpcy51aVRyYWNraW5nQWN0aXZhdGVkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMudWlFdmVudFRyYWNrID0gbmV3IFJlcGxheVN1YmplY3Q8VWlFdmVudFBheWxvYWQ+KGV2ZW50Q29uZmlndXJhdGlvbi51aUV2ZW50c0J1ZmZlclNpemUpO1xuICAgIHRoaXMudWlFdmVudFRyYWNrJCA9IHRoaXMudWlFdmVudFRyYWNrLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgLy8gQ3VzdG9tIGV2ZW50c1xuICAgIHRoaXMuY3VzdG9tRXZlbnRUcmFjayA9IG5ldyBSZXBsYXlTdWJqZWN0PEN1c3RvbUV2ZW50UGF5bG9hZD4oKTtcbiAgICB0aGlzLmN1c3RvbUV2ZW50VHJhY2skID0gdGhpcy5jdXN0b21FdmVudFRyYWNrLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgdGhpcy5wZXJmVHJhY2tpbmdBY3RpdmF0ZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGV2ZW50Q29uZmlndXJhdGlvbi5hY3RpdmF0ZS5wZXJmVHJhY2tpbmcpO1xuICAgIHRoaXMucGVyZlRyYWNraW5nQWN0aXZlJCA9IHRoaXMucGVyZlRyYWNraW5nQWN0aXZhdGVkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMucGVyZkV2ZW50VHJhY2sgPSBuZXcgUmVwbGF5U3ViamVjdDxQZXJmRXZlbnRQYXlsb2FkPihldmVudENvbmZpZ3VyYXRpb24ucGVyZkJ1ZmZlclNpemUpO1xuICAgIHRoaXMucGVyZkV2ZW50VHJhY2skID0gdGhpcy5wZXJmRXZlbnRUcmFjay5hc09ic2VydmFibGUoKTtcblxuICAgIHRoaXMucGVyZlRyYWNraW5nQWN0aXZlJC5zdWJzY3JpYmUoKGFjdGl2YXRlZCkgPT4gdGhpcy5pc1BlcmZUcmFja2luZ0FjdGl2ZSA9IGFjdGl2YXRlZCk7XG5cbiAgICBjb25zdCByb3V0ZXJOYXZpZ2F0aW9uRW5kJCA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcigoZXZlbnQpOiBldmVudCBpcyBOYXZpZ2F0aW9uRW5kID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpO1xuICAgIGNvbnN0IHRyYWNraW5nTmF2aWdhdGlvbkVuZCQgPSByb3V0ZXJOYXZpZ2F0aW9uRW5kJC5waXBlKHdpdGhMYXRlc3RGcm9tKHRoaXMucGVyZlRyYWNraW5nQWN0aXZlJCkpO1xuXG4gICAgLy8gSGFuZGxlcyBmaXJzdCBsb2FkIG5hdmlnYXRpb25cbiAgICBjb21iaW5lTGF0ZXN0KFxuICAgICAgdHJhY2tpbmdOYXZpZ2F0aW9uRW5kJC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdHlwZW9mIHdpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmcgIT09ICd1bmRlZmluZWQnKSxcbiAgICAgICAgdGFrZVdoaWxlKChbX2V2ZW50LCBhY3RpdmVdKSA9PiBhY3RpdmUpXG4gICAgICApLFxuICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ2xvYWQnKS5waXBlKGRlbGF5KDApKVxuICAgICkuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgIGlmIChldmVudENvbmZpZ3VyYXRpb24udXNlQnJvd3NlckFwaUZvckZpcnN0RlApIHtcbiAgICAgICAgY29uc3QgYnJvd3NlckVudHJpZXMgPSB3aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSAmJiB3aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSgncGFpbnQnKTtcbiAgICAgICAgY29uc3QgYnJvd3NlckZQID0gYnJvd3NlckVudHJpZXMgJiYgYnJvd3NlckVudHJpZXMuZmluZCgoZW50cnkpID0+IGVudHJ5Lm5hbWUgPT09ICdmaXJzdC1wYWludCcpO1xuICAgICAgICBpZiAoYnJvd3NlckZQKSB7XG4gICAgICAgICAgY29uc3QgZW5kVGltZSA9IE1hdGgucm91bmQoYnJvd3NlckZQLnN0YXJ0VGltZSk7XG4gICAgICAgICAgdGhpcy5hZGRGUFRvUGVyZlBheWxvYWQoeyBzdGFydFRpbWU6IDAsIGVuZFRpbWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5maXJzdFBhaW50KSB7IC8vIElmIHRoZXJlIGlzIGEgcmVnaXN0ZXJlZCBmaXJzdFBhaW50IHZhbHVlIGVtaXQgaXRcbiAgICAgICAgdGhpcy5hZGRGUFRvUGVyZlBheWxvYWQoYXdhaXQgdGhpcy5maXJzdFBhaW50KTtcbiAgICAgICAgdGhpcy5maXJzdFBhaW50ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgdGhpcy5tYXJrRmlyc3RMb2FkKCk7XG4gICAgfSk7XG5cbiAgICAvLyBIYW5kbGVzIGxhdGVyIG5hdmlnYXRpb25cbiAgICB0cmFja2luZ05hdmlnYXRpb25FbmQkLnBpcGUoXG4gICAgICBza2lwKDEpLFxuICAgICAgc2tpcFdoaWxlKChbX2V2ZW50LCBhY3RpdmVdKSA9PiAhYWN0aXZlKVxuICAgICkuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgIHRoaXMuaXNGaXJzdExvYWQgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVzZXRQZXJmTWFya3MoKTtcbiAgICAgIGlmICh0aGlzLmZpcnN0UGFpbnQpIHsgLy8gSWYgdGhlcmUgaXMgYSByZWdpc3RlcmVkIGZpcnN0UGFpbnQgdmFsdWUgZW1pdCBpdFxuICAgICAgICB0aGlzLmFkZEZQVG9QZXJmUGF5bG9hZChhd2FpdCB0aGlzLmZpcnN0UGFpbnQpO1xuICAgICAgICB0aGlzLmZpcnN0UGFpbnQgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIG1ldHJpY3Mgb2JqZWN0IGZvciB0aGUgZmlyc3QgbG9hZCBvZiB0aGUgYXBwbGljYXRpb25cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRmlyc3RMb2FkRGF0YSgpOiBGaXJzdExvYWREYXRhUGF5bG9hZCB7XG4gICAgY29uc3QgbmF2aWdhdGlvbiA9IHdpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmc7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbm5lY3Rpb246IE1hdGgucm91bmQobmF2aWdhdGlvbi5jb25uZWN0RW5kIC0gbmF2aWdhdGlvbi5uYXZpZ2F0aW9uU3RhcnQpLFxuICAgICAgcmVxdWVzdDogTWF0aC5yb3VuZChuYXZpZ2F0aW9uLnJlc3BvbnNlU3RhcnQgLSBuYXZpZ2F0aW9uLmNvbm5lY3RFbmQpLFxuICAgICAgcmVzcG9uc2U6IE1hdGgucm91bmQobmF2aWdhdGlvbi5yZXNwb25zZUVuZCAtIG5hdmlnYXRpb24ucmVzcG9uc2VTdGFydCksXG4gICAgICBET006IE1hdGgucm91bmQobmF2aWdhdGlvbi5sb2FkRXZlbnRFbmQgLSBuYXZpZ2F0aW9uLnJlc3BvbnNlRW5kKSxcbiAgICAgIHRvdGFsOiBNYXRoLnJvdW5kKG5hdmlnYXRpb24ubG9hZEV2ZW50RW5kIC0gbmF2aWdhdGlvbi5uYXZpZ2F0aW9uU3RhcnQpXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQb3B1bGF0ZSBwZXJmb3JtYW5jZSBwYXlsb2FkIHdpdGggRlAgb2JqZWN0XG4gICAqIEBwYXJhbSBGUFxuICAgKi9cbiAgcHJpdmF0ZSBhZGRGUFRvUGVyZlBheWxvYWQoRlA6IEV2ZW50VGltaW5nKSB7XG4gICAgY29uc3QgcGVyZkZpcnN0UGFpbnQgPSB7XG4gICAgICAuLi50aGlzLnBlcmZvcm1hbmNlUGF5bG9hZCxcbiAgICAgIHBlcmNlaXZlZDoge1xuICAgICAgICAuLi50aGlzLnBlcmZvcm1hbmNlUGF5bG9hZC5wZXJjZWl2ZWQsXG4gICAgICAgIEZQXG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLnBlcmZvcm1hbmNlUGF5bG9hZCA9IHBlcmZGaXJzdFBhaW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IGFsbCBtZXRyaWNzIHRvIGluaXRpYWwgc3RhdGU7IEFkZCB0aGUgcGFnZU5hbWUgb24gdG9wIG9mIGl0XG4gICAqL1xuICBwdWJsaWMgcmVzZXRQZXJmTWFya3MoKSB7XG4gICAgdGhpcy5wZXJmb3JtYW5jZVBheWxvYWQgPSB7IC4uLnBlcmZvcm1hbmNlTWFya3NJbml0aWFsU3RhdGUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJrIHRoZSBmaXJzdCBsb2FkIG1ldHJpY3MgdXNpbmcgdGhlIG5hdmlnYXRpb24gQVBJLlxuICAgKiBUaGlzIGhhcyB0byBiZSBjYWxsZWQgb25seSBvbmNlIGluIGEgc2luZ2xlIHBhZ2UgYXBwbGljYXRpb24sIGJlaW5nIG1lYW5pbmdmdWwgb25seSBmb3IgdGhlIGZpcnN0IGxvYWRcbiAgICogVGhpcyBtYXJrIGlzIHBvcHVsYXRlZCBieSBkZWZhdWx0IGluIHRoaXMgc2VydmljZSB3aGVuIHRoZSBOYXZpZ2F0aW9uRW5kIGV2ZW50IG9mIHRoZSByb3V0ZXIgZW1pdHMgZm9yIHRoZSBmaXJzdCB0aW1lXG4gICAqL1xuICBwdWJsaWMgbWFya0ZpcnN0TG9hZCgpIHtcbiAgICBjb25zdCBmaXJzdExvYWQgPSB0aGlzLmNyZWF0ZUZpcnN0TG9hZERhdGEoKTtcbiAgICB0aGlzLnBlcmZvcm1hbmNlUGF5bG9hZCA9IHsgLi4udGhpcy5wZXJmb3JtYW5jZVBheWxvYWQsIGZpcnN0TG9hZCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcmsgdGhlIGZpcnN0IHBhaW50IHZhbHVlXG4gICAqIFN0b3JlIHRoZSBmaXJzdCBwYWludCB0aW1pbmcgdmFsdWUgdG8gYmUgZW1pdHRlZCBhdCBOYXZpZ2F0aW9uIEVuZFxuICAgKiBAcGFyYW0gZW1pdCBJZiB0cnVlLCBzZXRzIHRoZSBGUCB0byB0aGUgY3VycmVudCBwYWdlLiBPdGhlcndpc2UsIHdhaXQgZm9yIG5leHQgTmF2aWdhdGlvbkVuZCBldmVudCB0byBoYXBwZW5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBtYXJrRlAoZW1pdCA9IGZhbHNlKSB7XG4gICAgdGhpcy5maXJzdFBhaW50ID0gdGhpcy5nZXRUaW1pbmcoKTtcbiAgICBpZiAoZW1pdCkge1xuICAgICAgdGhpcy5hZGRGUFRvUGVyZlBheWxvYWQoYXdhaXQgdGhpcy5maXJzdFBhaW50KTtcbiAgICAgIHRoaXMuZmlyc3RQYWludCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWFyayB0aGUgZmlyc3QgbWVhbmluZ2Z1bCBwYWludCB2YWx1ZS5cbiAgICogQHBhcmFtIG1hcmtPbmx5Rmlyc3RMb2FkIElmIGZhbHNlLCBtYXJrcyB0aGUgRk1QIGZvciBzdWJzZXF1ZW50IGxvYWRzIGVsc2Ugb25seSBmb3IgdGhlIGZpcnN0IGxvYWQgb2YgdGhlIGFwcGxpY2F0aW9uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbWFya0ZNUChtYXJrT25seUZpcnN0TG9hZCA9IHRydWUpIHtcbiAgICBpZiAoIW1hcmtPbmx5Rmlyc3RMb2FkIHx8IChtYXJrT25seUZpcnN0TG9hZCAmJiB0aGlzLmlzRmlyc3RMb2FkKSkge1xuICAgICAgY29uc3QgdGltaW5nID0gYXdhaXQgdGhpcy5nZXRUaW1pbmcoKTtcbiAgICAgIGNvbnN0IHBlcmZGaXJzdE1lYW5pbmdmdWxQYWludCA9IHtcbiAgICAgICAgLi4udGhpcy5wZXJmb3JtYW5jZVBheWxvYWQsXG4gICAgICAgIHBlcmNlaXZlZDoge1xuICAgICAgICAgIC4uLnRoaXMucGVyZm9ybWFuY2VQYXlsb2FkLnBlcmNlaXZlZCxcbiAgICAgICAgICBGTVA6IHRpbWluZ1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdGhpcy5wZXJmb3JtYW5jZVBheWxvYWQgPSBwZXJmRmlyc3RNZWFuaW5nZnVsUGFpbnQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBkYXRhIHJlYWR5IHBlcmNlaXZlZCBldmVudFxuICAgKiBUaGlzIHByb2JlIG1hcmtzIHRoZSB0aW1lIHdoZW4gdGhlIHBhZ2UgY29uc2lkZXJzIGl0IGhhcyBhbGwgdGhlIGRhdGEgdG8gYmVjb21lIGludGVyYWN0aXZlXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbWFya0RhdGFSZWFkeSgpIHtcbiAgICBjb25zdCB0aW1pbmcgPSBhd2FpdCB0aGlzLmdldFRpbWluZygpO1xuICAgIGNvbnN0IHBlcmZEYXRhUmVhZHkgPSB7XG4gICAgICAuLi50aGlzLnBlcmZvcm1hbmNlUGF5bG9hZCxcbiAgICAgIHBlcmNlaXZlZDoge1xuICAgICAgICAuLi50aGlzLnBlcmZvcm1hbmNlUGF5bG9hZC5wZXJjZWl2ZWQsXG4gICAgICAgIGRhdGFSZWFkeTogdGltaW5nXG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLnBlcmZvcm1hbmNlUGF5bG9hZCA9IHBlcmZEYXRhUmVhZHk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgY3VzdG9tIGV2ZW50IGFuZCBpdHMgbWVhc3VyZW1lbnRzXG4gICAqIEBwYXJhbSBsYWJlbCBUaGUgZXZlbnQgbmFtZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGFkZEN1c3RvbU1hcmsobGFiZWw6IHN0cmluZykge1xuICAgIGNvbnN0IHRpbWluZyA9IGF3YWl0IHRoaXMuZ2V0VGltaW5nKCk7XG4gICAgY29uc3QgY3VzdG9tTWFyayA9IHsgbGFiZWwsIHRpbWluZyB9IGFzIGNvbnN0IHNhdGlzZmllcyBDdXN0b21FdmVudE1hcmtzO1xuICAgIGNvbnN0IHBlcmYgPSB7IC4uLnRoaXMucGVyZm9ybWFuY2VQYXlsb2FkLCBjdXN0b21NYXJrczogdGhpcy5wZXJmb3JtYW5jZVBheWxvYWQuY3VzdG9tTWFya3MuY29uY2F0KGN1c3RvbU1hcmspIH07XG4gICAgdGhpcy5wZXJmb3JtYW5jZVBheWxvYWQgPSBwZXJmO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHNlcnZlciBjYWxsIG9iamVjdCBpbiB0aGUgbGlzdCBvZiBzZXJ2ZXIgY2FsbHMgbWV0cmljc1xuICAgKiBAcGFyYW0gc2VydmVyQ2FsbCBUaGUgb2JqZWN0IHRvIGFkZCBpbiB0aGUgc2VydmVyIGNhbGxzIG1ldHJpY3NcbiAgICovXG4gIHB1YmxpYyBhZGRTZXJ2ZXJDYWxsTWFyayhzZXJ2ZXJDYWxsOiBTZXJ2ZXJDYWxsTWV0cmljKSB7XG4gICAgY29uc3QgcGVyZiA9IHsgLi4udGhpcy5wZXJmb3JtYW5jZVBheWxvYWQsIHNlcnZlckNhbGxzOiB0aGlzLnBlcmZvcm1hbmNlUGF5bG9hZC5zZXJ2ZXJDYWxscy5jb25jYXQoc2VydmVyQ2FsbCkgfTtcbiAgICB0aGlzLnBlcmZvcm1hbmNlUGF5bG9hZCA9IHBlcmY7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgRHhBUEkgU0RLIHNlcnZlciBjYWxsIG9iamVjdCwgY3JlYXRlZCBieSB0aGUgU0RLIFByb2JlIHBsdWdpbiwgaW4gdGhlIGxpc3Qgb2Ygc2VydmVyIGNhbGxzIG1ldHJpY3MuXG4gICAqIEluIG9yZGVyIHRvIGhhdmUgcmVxdWVzdElkIGZvciB0aGUgRHhBUEkgY2FsbHMsIHlvdXIgc2VydmVyIGhhcyB0byBleHBvc2UgJ2FtYS1yZXF1ZXN0LWlkJyB2aWEgQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnNcbiAgICogQHBhcmFtIHNlcnZlck1hcmsgVGhlIG1hcmsgb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgYWRkU0RLU2VydmVyQ2FsbE1hcmsoc2VydmVyTWFyazogTWFyaykge1xuICAgIGxldCBzZXJ2ZXJDYWxsTWV0cmljOiBTZXJ2ZXJDYWxsTWV0cmljID0ge1xuICAgICAgdXJsOiBzZXJ2ZXJNYXJrLnVybCxcbiAgICAgIGh0dHBNZXRob2Q6IHNlcnZlck1hcmsucmVxdWVzdE9wdGlvbnMubWV0aG9kLFxuICAgICAgaHR0cFN0YXR1czogc2VydmVyTWFyay5yZXNwb25zZSAmJiBzZXJ2ZXJNYXJrLnJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIHRpbWluZzogeyBzdGFydFRpbWU6IHNlcnZlck1hcmsuc3RhcnRUaW1lLCBlbmRUaW1lOiBzZXJ2ZXJNYXJrLmVuZFRpbWUgfSxcbiAgICAgIGVycm9yOiBzZXJ2ZXJNYXJrLmVycm9yXG4gICAgfTtcbiAgICBpZiAoc2VydmVyTWFyay5yZXNwb25zZSkge1xuICAgICAgY29uc3QgY2xvbmVkUmVzcG9uc2UgPSBzZXJ2ZXJNYXJrLnJlc3BvbnNlLmNsb25lKCk7XG4gICAgICBjb25zdCBhbWFSZXF1ZXN0SWQgPSBjbG9uZWRSZXNwb25zZS5oZWFkZXJzLmdldCgnYW1hLXJlcXVlc3QtaWQnKTtcbiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBjbG9uZWRSZXNwb25zZS5ibG9iKCk7XG4gICAgICBzZXJ2ZXJDYWxsTWV0cmljID0ge1xuICAgICAgICAuLi5zZXJ2ZXJDYWxsTWV0cmljLFxuICAgICAgICByZXNwb25zZVNpemU6IGJsb2Iuc2l6ZSxcbiAgICAgICAgcmVxdWVzdElkOiBhbWFSZXF1ZXN0SWQgfHwgdW5kZWZpbmVkXG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLmFkZFNlcnZlckNhbGxNYXJrKHNlcnZlckNhbGxNZXRyaWMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGN1c3RvbSBldmVudCBhbmQgbWFyayB0aGUgc3RhcnQgdGltZSwgYW5kIHJldHVybnMgdGhlIGVsZW1lbnQgaW5kZXhcbiAgICogQHBhcmFtIGxhYmVsIEV2ZW50IG5hbWVcbiAgICogQHJldHVybnMgdGhlIGVsZW1lbnQgaW5kZXggaWYgdHJhY2tpbmcgaXMgYWN0aXZlLiBPdGhlcndpc2UsIC0xXG4gICAqL1xuICBwdWJsaWMgc3RhcnRDdXN0b21NYXJrKGxhYmVsOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuaXNQZXJmVHJhY2tpbmdBY3RpdmUpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgY29uc3Qgc3RhcnRUaW1lID0gTWF0aC5yb3VuZCh3aW5kb3cucGVyZm9ybWFuY2Uubm93KCkpO1xuICAgIGNvbnN0IGN1c3RvbU1hcmsgPSB7IGxhYmVsLCB0aW1pbmc6IHsgc3RhcnRUaW1lIH0gfSBhcyBjb25zdCBzYXRpc2ZpZXMgQ3VzdG9tRXZlbnRNYXJrcztcbiAgICBjb25zdCBwZXJmID0geyAuLi50aGlzLnBlcmZvcm1hbmNlUGF5bG9hZCwgY3VzdG9tTWFya3M6IHRoaXMucGVyZm9ybWFuY2VQYXlsb2FkLmN1c3RvbU1hcmtzLmNvbmNhdChjdXN0b21NYXJrKSB9O1xuICAgIHRoaXMucGVyZm9ybWFuY2VQYXlsb2FkID0gcGVyZjtcbiAgICByZXR1cm4gdGhpcy5wZXJmb3JtYW5jZVBheWxvYWQuY3VzdG9tTWFya3MubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmQgdGhlIGV2ZW50IG1hcmsgZ2l2ZW4gaW4gcGFyYW1ldGVyO1xuICAgKiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBjdXN0b20gZXZlbnQgaXMgbm90IGZvdW5kIGluIHRoZSBsaXN0IG9mIGN1c3RvbSBtYXJrczsgdHJ1ZSBvdGhlcndpc2VcbiAgICogQHBhcmFtIGV2ZW50SW5kZXggSW5kZXggb2YgdGhlIGN1c3RvbSBldmVudCB0byBiZSBtYXJrZWQgYXMgZW5kZWRcbiAgICovXG4gIHB1YmxpYyBlbmRDdXN0b21NYXJrKGV2ZW50SW5kZXg6IG51bWJlcikge1xuICAgIGlmICghdGhpcy5pc1BlcmZUcmFja2luZ0FjdGl2ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgdXBkYXRlZCA9IGZhbHNlO1xuICAgIGNvbnN0IHBlcmYgPSB7XG4gICAgICAuLi50aGlzLnBlcmZvcm1hbmNlUGF5bG9hZCxcbiAgICAgIGN1c3RvbU1hcmtzOiB0aGlzLnBlcmZvcm1hbmNlUGF5bG9hZC5jdXN0b21NYXJrcy5tYXAoKGV2ZW50T2JqLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggIT09IGV2ZW50SW5kZXgpIHtcbiAgICAgICAgICByZXR1cm4gZXZlbnRPYmo7XG4gICAgICAgIH1cbiAgICAgICAgdXBkYXRlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGVuZFRpbWUgPSBNYXRoLnJvdW5kKHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKSk7XG4gICAgICAgIHJldHVybiB7IGxhYmVsOiBldmVudE9iai5sYWJlbCwgdGltaW5nOiB7IC4uLmV2ZW50T2JqLnRpbWluZywgZW5kVGltZSB9IH07XG4gICAgICB9KVxuICAgIH07XG4gICAgdGhpcy5wZXJmb3JtYW5jZVBheWxvYWQgPSBwZXJmO1xuICAgIHJldHVybiB1cGRhdGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBnb2FsIG9mIHRoaXMgbWV0aG9kIGlzIHRvIGNvbXB1dGUgYSB0aW1lIHJhbmdlIGR1cmF0aW9uIGJldHdlZW4gdGhlIG1vbWVudCB5b3UgY2FsbCB0aGUgZnVuY3Rpb24gKGxvd2VyIGJvdW5kIHRpbWVzdGFtcClcbiAgICogYW5kIHRoZSBlbmQgb2YgdGhlIGNvbXBvc2l0ZSByZW5kZXJpbmcgKHVwcGVyIGJvdW5kIG1lYXN1cmVtZW50IC0gYSB0aW1lIG1hcmsgdGhhdCBvY2N1cnMgYWZ0ZXIgdGhlIHJlYWwgY29tcG9zaXRlKVxuICAgKiBGb3IgdGhlIGZpcnN0IGxvYWQgb2YgdGhlIGFwcGxpY2F0aW9uLCB0aGUgc3RhcnQgdGltZSBpcyBjb25zaWRlcmVkIGFzIHRoZSBzdGFydCBvZiBuYXZpZ2F0aW9uIHRvIGVuc3VyZSBhIGN1bXVsYXRpdmUgbWVhc3VyZS5cbiAgICogSXQgaXMgdXNpbmcgdGhlICdOZ1pvbmUnIHNlcnZpY2UgdG8gcnVuT3V0c2lkZUFuZ3VsYXIgdG8gcHJldmVudCBhbnkgY2hhbmdlIGRldGVjdGlvbiB0byBvY2N1ciwgbm9yIGFuZ3VsYXIgZXJyb3IgaGFuZGxpbmcsIHNwZWVkaW5nIHVwIHRoZSBtZWFzdXJlbWVudC5cbiAgICogRXhhbXBsZSB7QGxpbmsgbWFya0ZNUH0gaXMgY2FsbGVkIGluIHtAbGluayBuZ0FmdGVyVmlld0luaXR9LCB0aGUgZW5kIHRpbWUgd2lsbCBiZSBjb21wdXRlZCBvbmNlIHRoZSByZW5kZXIgcGlwZWxpbmUgc3RhZ2UgY29tcGxldGVkIHRoZSBjaGFuZ2VzIHRyaWdnZXJlZCBieSB0aGUgamF2YXNjcmlwdFxuICAgKi9cbiAgcHVibGljIGdldFRpbWluZygpOiBQcm9taXNlPEV2ZW50VGltaW5nPiB7XG4gICAgY29uc3Qgc3RhcnRUaW1lID0gdGhpcy5pc0ZpcnN0TG9hZCA/IDAgOiBNYXRoLnJvdW5kKHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKSk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBlbmRUaW1lID0gTWF0aC5yb3VuZCh3aW5kb3cucGVyZm9ybWFuY2Uubm93KCkpO1xuICAgICAgICAgIHJlc29sdmUoeyBzdGFydFRpbWUsIGVuZFRpbWUgfSk7XG4gICAgICAgIH0sIDApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGV2ZW50IHRvIHRoZSBzdHJlYW0gb2YgY2FwdHVyZWQgVUkgZXZlbnRzXG4gICAqIEBwYXJhbSB1aUV2ZW50IGVtaXR0ZWQgZXZlbnQgb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgYWRkVWlFdmVudCh1aUV2ZW50OiBVaUV2ZW50UGF5bG9hZCkge1xuICAgIHRoaXMudWlFdmVudFRyYWNrLm5leHQodWlFdmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGV2ZW50IHRvIHRoZSBzdHJlYW0gb2YgY2FwdHVyZWQgY3VzdG9tIGV2ZW50c1xuICAgKiBAcGFyYW0gY3VzdG9tRXZlbnQgZW1pdHRlZCBldmVudCBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBhZGRDdXN0b21FdmVudChjdXN0b21FdmVudDogQ3VzdG9tRXZlbnRQYXlsb2FkKSB7XG4gICAgdGhpcy5jdXN0b21FdmVudFRyYWNrLm5leHQoY3VzdG9tRXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlL2RlYWN0aXZhdGUgdGhlIHRyYWNraW5nIG1vZGUgZm9yIFVJIGV2ZW50c1xuICAgKiBAcGFyYW0gYWN0aXZhdGUgYWN0aXZhdGlvbi9kZWFjdGl2YXRpb24gYm9vbGVhblxuICAgKi9cbiAgcHVibGljIHRvZ2dsZVVpVHJhY2tpbmcoYWN0aXZhdGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnVpVHJhY2tpbmdBY3RpdmF0ZWQubmV4dChhY3RpdmF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUvZGVhY3RpdmF0ZSB0aGUgdHJhY2tpbmcgbW9kZSBmb3IgcGVyZm9ybWFuY2UgbWVhc3VyZW1lbnRzXG4gICAqIEBwYXJhbSBhY3RpdmF0ZSBhY3RpdmF0aW9uL2RlYWN0aXZhdGlvbiBib29sZWFuXG4gICAqL1xuICBwdWJsaWMgdG9nZ2xlUGVyZlRyYWNraW5nKGFjdGl2YXRlOiBib29sZWFuKSB7XG4gICAgdGhpcy5wZXJmVHJhY2tpbmdBY3RpdmF0ZWQubmV4dChhY3RpdmF0ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,3 +0,0 @@
1
- export * from './event-track.configuration';
2
- export * from './event-track.service';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvZXZlbnQtdHJhY2svaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ldmVudC10cmFjay5jb25maWd1cmF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vZXZlbnQtdHJhY2suc2VydmljZSc7XG4iXX0=
@@ -1,2 +0,0 @@
1
- export * from './event-track/index';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZXZlbnQtdHJhY2svaW5kZXgnO1xuIl19
@@ -1,28 +0,0 @@
1
- import { createAction, props, } from '@ngrx/store';
2
- /** StateActions */
3
- const ACTION_SET = '[EventTrack] set';
4
- const ACTION_UPDATE = '[EventTrack] update';
5
- const ACTION_REGISTER_HERO_COMPONENT = '[EventTrack] register hero component';
6
- const ACTION_SET_HERO_COMPONENT_TTI = '[EventTrack] set hero component TTI';
7
- const ACTION_RESET = '[EventTrack] reset';
8
- /**
9
- * Clear the current store object and replace it with the new one
10
- */
11
- export const setEventTrack = createAction(ACTION_SET, props());
12
- /**
13
- * Change a part or the whole object in the store.
14
- */
15
- export const updateEventTrack = createAction(ACTION_UPDATE, props());
16
- /**
17
- * Clear the whole state, return to the initial one
18
- */
19
- export const resetEventTrack = createAction(ACTION_RESET);
20
- /**
21
- * Register hero component in the store
22
- */
23
- export const registerHeroComponent = createAction(ACTION_REGISTER_HERO_COMPONENT, props());
24
- /**
25
- * Set the TTI measure for a hero component in the store
26
- */
27
- export const setHeroComponentTTI = createAction(ACTION_SET_HERO_COMPONENT_TTI, props());
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtdHJhY2suYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdG9yZXMvZXZlbnQtdHJhY2svZXZlbnQtdHJhY2suYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLEtBQUssR0FDTixNQUFNLGFBQWEsQ0FBQztBQU1yQixtQkFBbUI7QUFDbkIsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUM7QUFDdEMsTUFBTSxhQUFhLEdBQUcscUJBQXFCLENBQUM7QUFDNUMsTUFBTSw4QkFBOEIsR0FBRyxzQ0FBc0MsQ0FBQztBQUM5RSxNQUFNLDZCQUE2QixHQUFHLHFDQUFxQyxDQUFDO0FBQzVFLE1BQU0sWUFBWSxHQUFHLG9CQUFvQixDQUFDO0FBd0IxQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBOEIsQ0FBQyxDQUFDO0FBRTNGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQXVDLENBQUMsQ0FBQztBQUUxRzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFMUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxZQUFZLENBQUMsOEJBQThCLEVBQUUsS0FBSyxFQUEyQyxDQUFDLENBQUM7QUFFcEk7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxZQUFZLENBQUMsNkJBQTZCLEVBQUUsS0FBSyxFQUF5QyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjcmVhdGVBY3Rpb24sXG4gIHByb3BzLFxufSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBFdmVudFRyYWNrU3RhdGUsXG4gIFJlZ2lzdGVySGVyb0NvbXBvbmVudFBheWxvYWQsXG59IGZyb20gJy4vZXZlbnQtdHJhY2suc3RhdGUnO1xuXG4vKiogU3RhdGVBY3Rpb25zICovXG5jb25zdCBBQ1RJT05fU0VUID0gJ1tFdmVudFRyYWNrXSBzZXQnO1xuY29uc3QgQUNUSU9OX1VQREFURSA9ICdbRXZlbnRUcmFja10gdXBkYXRlJztcbmNvbnN0IEFDVElPTl9SRUdJU1RFUl9IRVJPX0NPTVBPTkVOVCA9ICdbRXZlbnRUcmFja10gcmVnaXN0ZXIgaGVybyBjb21wb25lbnQnO1xuY29uc3QgQUNUSU9OX1NFVF9IRVJPX0NPTVBPTkVOVF9UVEkgPSAnW0V2ZW50VHJhY2tdIHNldCBoZXJvIGNvbXBvbmVudCBUVEknO1xuY29uc3QgQUNUSU9OX1JFU0VUID0gJ1tFdmVudFRyYWNrXSByZXNldCc7XG5cbi8qKlxuICogVGhlIHBheWxvYWQgZm9yIHNldHRpbmcgVFRJIGZvciBhIGhlcm8gY29tcG9uZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2V0SGVyb0NvbXBvbmVudFRUSVBheWxvYWQge1xuICAvKipcbiAgICogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGhlcm8gY29tcG9uZW50XG4gICAqL1xuICBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgVFRJIG1lYXN1cmUgZm9yIHRoZSBoZXJvIGNvbXBvbmVudFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAtLSBuYW1pbmcgY29udmVudGlvbiBpbXBvc2VkIGJ5IExpZ2h0aG91c2VcbiAgVFRJOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgQVBJIGVuZHBvaW50cyB1c2VkIGluIHRoZSBIZXJvIGNvbXBvbmVudCBhbmQgaXQncyBzdWJjb21wb25lbnRzXG4gICAqIFRoZXNlIGFyZSB0aGUgQVBJJ3MgaW52b2tlZCB3aGVuIHRoZSBUVEkgaXMgbWVhc3VyZWRcbiAgICovXG4gIGludm9sdmVkQXBpRW5kcG9pbnRzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ2xlYXIgdGhlIGN1cnJlbnQgc3RvcmUgb2JqZWN0IGFuZCByZXBsYWNlIGl0IHdpdGggdGhlIG5ldyBvbmVcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV2ZW50VHJhY2sgPSBjcmVhdGVBY3Rpb24oQUNUSU9OX1NFVCwgcHJvcHM8eyBtb2RlbDogRXZlbnRUcmFja1N0YXRlIH0+KCkpO1xuXG4vKipcbiAqIENoYW5nZSBhIHBhcnQgb3IgdGhlIHdob2xlIG9iamVjdCBpbiB0aGUgc3RvcmUuXG4gKi9cbmV4cG9ydCBjb25zdCB1cGRhdGVFdmVudFRyYWNrID0gY3JlYXRlQWN0aW9uKEFDVElPTl9VUERBVEUsIHByb3BzPFBhcnRpYWw8eyBtb2RlbDogRXZlbnRUcmFja1N0YXRlIH0+PigpKTtcblxuLyoqXG4gKiBDbGVhciB0aGUgd2hvbGUgc3RhdGUsIHJldHVybiB0byB0aGUgaW5pdGlhbCBvbmVcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc2V0RXZlbnRUcmFjayA9IGNyZWF0ZUFjdGlvbihBQ1RJT05fUkVTRVQpO1xuXG4vKipcbiAqIFJlZ2lzdGVyIGhlcm8gY29tcG9uZW50IGluIHRoZSBzdG9yZVxuICovXG5leHBvcnQgY29uc3QgcmVnaXN0ZXJIZXJvQ29tcG9uZW50ID0gY3JlYXRlQWN0aW9uKEFDVElPTl9SRUdJU1RFUl9IRVJPX0NPTVBPTkVOVCwgcHJvcHM8eyBtb2RlbDogUmVnaXN0ZXJIZXJvQ29tcG9uZW50UGF5bG9hZCB9PigpKTtcblxuLyoqXG4gKiBTZXQgdGhlIFRUSSBtZWFzdXJlIGZvciBhIGhlcm8gY29tcG9uZW50IGluIHRoZSBzdG9yZVxuICovXG5leHBvcnQgY29uc3Qgc2V0SGVyb0NvbXBvbmVudFRUSSA9IGNyZWF0ZUFjdGlvbihBQ1RJT05fU0VUX0hFUk9fQ09NUE9ORU5UX1RUSSwgcHJvcHM8eyBtb2RlbDogU2V0SGVyb0NvbXBvbmVudFRUSVBheWxvYWQgfT4oKSk7XG4iXX0=
@@ -1,39 +0,0 @@
1
- import { InjectionToken, NgModule, } from '@angular/core';
2
- import { StoreModule, } from '@ngrx/store';
3
- import { eventTrackReducer, } from './event-track.reducer';
4
- import { EVENT_TRACK_STORE_NAME, } from './event-track.state';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@ngrx/store";
7
- /** Token of the EventTrack reducer */
8
- export const EVENT_TRACK_REDUCER_TOKEN = new InjectionToken('Feature EventTrack Reducer');
9
- /** Provide default reducer for EventTrack store */
10
- export function getDefaultEventTrackReducer() {
11
- return eventTrackReducer;
12
- }
13
- export class EventTrackStoreModule {
14
- static forRoot(reducerFactory) {
15
- return {
16
- ngModule: EventTrackStoreModule,
17
- providers: [
18
- { provide: EVENT_TRACK_REDUCER_TOKEN, useFactory: reducerFactory }
19
- ]
20
- };
21
- }
22
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EventTrackStoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
23
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: EventTrackStoreModule, imports: [i1.StoreFeatureModule] }); }
24
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EventTrackStoreModule, providers: [
25
- { provide: EVENT_TRACK_REDUCER_TOKEN, useFactory: getDefaultEventTrackReducer }
26
- ], imports: [StoreModule.forFeature(EVENT_TRACK_STORE_NAME, EVENT_TRACK_REDUCER_TOKEN)] }); }
27
- }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EventTrackStoreModule, decorators: [{
29
- type: NgModule,
30
- args: [{
31
- imports: [
32
- StoreModule.forFeature(EVENT_TRACK_STORE_NAME, EVENT_TRACK_REDUCER_TOKEN)
33
- ],
34
- providers: [
35
- { provide: EVENT_TRACK_REDUCER_TOKEN, useFactory: getDefaultEventTrackReducer }
36
- ]
37
- }]
38
- }] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtdHJhY2subW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N0b3Jlcy9ldmVudC10cmFjay9ldmVudC10cmFjay5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGNBQWMsRUFFZCxRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLFdBQVcsR0FDWixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsaUJBQWlCLEdBQ2xCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUNMLHNCQUFzQixHQUV2QixNQUFNLHFCQUFxQixDQUFDOzs7QUFFN0Isc0NBQXNDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksY0FBYyxDQUF5Qyw0QkFBNEIsQ0FBQyxDQUFDO0FBRWxJLG1EQUFtRDtBQUNuRCxNQUFNLFVBQVUsMkJBQTJCO0lBQ3pDLE9BQU8saUJBQWlCLENBQUM7QUFDM0IsQ0FBQztBQVVELE1BQU0sT0FBTyxxQkFBcUI7SUFDekIsTUFBTSxDQUFDLE9BQU8sQ0FBNEIsY0FBOEM7UUFDN0YsT0FBTztZQUNMLFFBQVEsRUFBRSxxQkFBcUI7WUFDL0IsU0FBUyxFQUFFO2dCQUNULEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUU7YUFDbkU7U0FDRixDQUFDO0lBQ0osQ0FBQztrSUFSVSxxQkFBcUI7bUlBQXJCLHFCQUFxQjttSUFBckIscUJBQXFCLGFBSnJCO1lBQ1QsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsVUFBVSxFQUFFLDJCQUEyQixFQUFFO1NBQ2hGLFlBSkMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSx5QkFBeUIsQ0FBQzs7NEZBTWhFLHFCQUFxQjtrQkFSakMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsV0FBVyxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSx5QkFBeUIsQ0FBQztxQkFDMUU7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFVBQVUsRUFBRSwyQkFBMkIsRUFBRTtxQkFDaEY7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3Rpb25Ub2tlbixcbiAgTW9kdWxlV2l0aFByb3ZpZGVycyxcbiAgTmdNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aW9uLFxuICBBY3Rpb25SZWR1Y2VyLFxuICBTdG9yZU1vZHVsZSxcbn0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgZXZlbnRUcmFja1JlZHVjZXIsXG59IGZyb20gJy4vZXZlbnQtdHJhY2sucmVkdWNlcic7XG5pbXBvcnQge1xuICBFVkVOVF9UUkFDS19TVE9SRV9OQU1FLFxuICBFdmVudFRyYWNrU3RhdGUsXG59IGZyb20gJy4vZXZlbnQtdHJhY2suc3RhdGUnO1xuXG4vKiogVG9rZW4gb2YgdGhlIEV2ZW50VHJhY2sgcmVkdWNlciAqL1xuZXhwb3J0IGNvbnN0IEVWRU5UX1RSQUNLX1JFRFVDRVJfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48QWN0aW9uUmVkdWNlcjxFdmVudFRyYWNrU3RhdGUsIEFjdGlvbj4+KCdGZWF0dXJlIEV2ZW50VHJhY2sgUmVkdWNlcicpO1xuXG4vKiogUHJvdmlkZSBkZWZhdWx0IHJlZHVjZXIgZm9yIEV2ZW50VHJhY2sgc3RvcmUgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0RXZlbnRUcmFja1JlZHVjZXIoKSB7XG4gIHJldHVybiBldmVudFRyYWNrUmVkdWNlcjtcbn1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIFN0b3JlTW9kdWxlLmZvckZlYXR1cmUoRVZFTlRfVFJBQ0tfU1RPUkVfTkFNRSwgRVZFTlRfVFJBQ0tfUkVEVUNFUl9UT0tFTilcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBFVkVOVF9UUkFDS19SRURVQ0VSX1RPS0VOLCB1c2VGYWN0b3J5OiBnZXREZWZhdWx0RXZlbnRUcmFja1JlZHVjZXIgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEV2ZW50VHJhY2tTdG9yZU1vZHVsZSB7XG4gIHB1YmxpYyBzdGF0aWMgZm9yUm9vdDxUIGV4dGVuZHMgRXZlbnRUcmFja1N0YXRlPihyZWR1Y2VyRmFjdG9yeTogKCkgPT4gQWN0aW9uUmVkdWNlcjxULCBBY3Rpb24+KTogTW9kdWxlV2l0aFByb3ZpZGVyczxFdmVudFRyYWNrU3RvcmVNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEV2ZW50VHJhY2tTdG9yZU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IEVWRU5UX1RSQUNLX1JFRFVDRVJfVE9LRU4sIHVzZUZhY3Rvcnk6IHJlZHVjZXJGYWN0b3J5IH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,101 +0,0 @@
1
- import { createReducer, on, } from '@ngrx/store';
2
- import * as actions from './event-track.actions';
3
- /** The initial value of the Hero component */
4
- export const heroComponentInitialState = { id: '', TTI: 0, involvedApiEndpoints: [] };
5
- /**
6
- * eventTrack initial state
7
- */
8
- export const eventTrackInitialState = {
9
- heroComponent: heroComponentInitialState,
10
- isTTIComputed: false
11
- };
12
- /**
13
- * Return all the involved API endpoints present in the component including its child & subchild
14
- * Iterate recursively till the component with no children
15
- * @param component
16
- * @returns string[]
17
- */
18
- function getComponentInvolvedEndPoints(component) {
19
- return Array.from((component.children || []).reduce((accum, value) => {
20
- getComponentInvolvedEndPoints(value).forEach((item) => accum.add(item));
21
- return accum;
22
- }, new Set(component.involvedApiEndpoints)));
23
- }
24
- /**
25
- * Get all the involved API endpoints of the heroComponent with maximum TTI value
26
- * If the parent contains max TTI, then all its child & subchild end points are used
27
- * otherwise only component with max TTI end points are used
28
- * @param component
29
- * @param maxTTI
30
- * @returns string[]
31
- */
32
- function getInvolvedAPIEndpoints(component, maxTTI) {
33
- if (component.componentTTI === maxTTI) {
34
- return getComponentInvolvedEndPoints(component);
35
- }
36
- return Array.from((component.children || []).reduce((accum, value) => {
37
- getInvolvedAPIEndpoints(value, maxTTI).forEach((endpoint) => accum.add(endpoint));
38
- return accum;
39
- }, new Set()));
40
- }
41
- /**
42
- * Recursively iterate the page hierarchy
43
- * and set the TTI for the specified component
44
- * and compute the TTI for the corresponding parent
45
- * @param component the parent component/page
46
- * @param id the identifier of the component/page
47
- * @param value the TTI value
48
- * @param endpoints API URLs of the component
49
- * @returns HeroComponent
50
- */
51
- function computeTTI(component, id, value, endpoints = []) {
52
- const computedComponent = { ...component };
53
- if (computedComponent.id === id) {
54
- computedComponent.TTI = value;
55
- computedComponent.hasBeenLogged = true;
56
- computedComponent.involvedApiEndpoints = endpoints;
57
- computedComponent.componentTTI = value;
58
- }
59
- else if (computedComponent.children) {
60
- computedComponent.children = computedComponent.children.map((child) => computeTTI(child, id, value, endpoints));
61
- }
62
- // Compute the TTI of the current component comparing the child TTI measures
63
- if (computedComponent.children && computedComponent.children.length > 0) {
64
- const maxChildTTI = Math.max(...computedComponent.children.map((child) => child.TTI));
65
- computedComponent.TTI = Math.max(maxChildTTI, computedComponent.TTI);
66
- }
67
- return computedComponent;
68
- }
69
- /**
70
- * Check if the TTI for the page is computed
71
- * @param component the parent component/page
72
- * @returns boolean
73
- */
74
- function isTTIComputed(component) {
75
- if (component.measureSelf && !component.hasBeenLogged) {
76
- return false;
77
- }
78
- return component.children && component.children.length > 0 ? component.children.every((child) => isTTIComputed(child)) : component.TTI > 0;
79
- }
80
- /**
81
- * List of basic actions for EventTrack
82
- */
83
- export const eventTrackReducerFeatures = [
84
- on(actions.setEventTrack, (_state, payload) => ({ ...payload.model })),
85
- on(actions.updateEventTrack, (state, payload) => ({ ...state, ...payload.model })),
86
- on(actions.resetEventTrack, () => eventTrackInitialState),
87
- on(actions.registerHeroComponent, (state, payload) => ({ ...state, heroComponent: { ...payload.model, TTI: 0 } })),
88
- on(actions.setHeroComponentTTI, (state, payload) => {
89
- const updatedHeroComponent = computeTTI(state.heroComponent, payload.model.id, payload.model.TTI, payload.model.involvedApiEndpoints);
90
- const isComputed = isTTIComputed(updatedHeroComponent);
91
- if (isComputed) {
92
- updatedHeroComponent.involvedApiEndpoints = getInvolvedAPIEndpoints(updatedHeroComponent, updatedHeroComponent.TTI) || [];
93
- }
94
- return { ...state, heroComponent: updatedHeroComponent, isTTIComputed: isComputed };
95
- })
96
- ];
97
- /**
98
- * EventTrack Store default reducer
99
- */
100
- export const eventTrackReducer = createReducer(eventTrackInitialState, ...eventTrackReducerFeatures);
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtdHJhY2sucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdG9yZXMvZXZlbnQtdHJhY2svZXZlbnQtdHJhY2sucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsYUFBYSxFQUNiLEVBQUUsR0FFSCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEtBQUssT0FBTyxNQUFNLHVCQUF1QixDQUFDO0FBTWpELDhDQUE4QztBQUM5QyxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBa0IsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFFckc7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBb0I7SUFDckQsYUFBYSxFQUFFLHlCQUF5QjtJQUN4QyxhQUFhLEVBQUUsS0FBSztDQUNyQixDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSCxTQUFTLDZCQUE2QixDQUFDLFNBQXdCO0lBQzdELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FDZixDQUFDLFNBQVMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ2pELDZCQUE2QixDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFTLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQ3BELENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQVMsdUJBQXVCLENBQUMsU0FBd0IsRUFBRSxNQUFjO0lBQ3ZFLElBQUksU0FBUyxDQUFDLFlB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QUN0QixHQUFHLHlCQUF5QixDQUM3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWN0aW9uQ3JlYXRvcixcbiAgY3JlYXRlUmVkdWNlcixcbiAgb24sXG4gIFJlZHVjZXJUeXBlcyxcbn0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0ICogYXMgYWN0aW9ucyBmcm9tICcuL2V2ZW50LXRyYWNrLmFjdGlvbnMnO1xuaW1wb3J0IHtcbiAgRXZlbnRUcmFja1N0YXRlLFxuICBIZXJvQ29tcG9uZW50LFxufSBmcm9tICcuL2V2ZW50LXRyYWNrLnN0YXRlJztcblxuLyoqIFRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBIZXJvIGNvbXBvbmVudCAqL1xuZXhwb3J0IGNvbnN0IGhlcm9Db21wb25lbnRJbml0aWFsU3RhdGU6IEhlcm9Db21wb25lbnQgPSB7IGlkOiAnJywgVFRJOiAwLCBpbnZvbHZlZEFwaUVuZHBvaW50czogW10gfTtcblxuLyoqXG4gKiBldmVudFRyYWNrIGluaXRpYWwgc3RhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IGV2ZW50VHJhY2tJbml0aWFsU3RhdGU6IEV2ZW50VHJhY2tTdGF0ZSA9IHtcbiAgaGVyb0NvbXBvbmVudDogaGVyb0NvbXBvbmVudEluaXRpYWxTdGF0ZSxcbiAgaXNUVElDb21wdXRlZDogZmFsc2Vcbn07XG5cbi8qKlxuICogUmV0dXJuIGFsbCB0aGUgaW52b2x2ZWQgQVBJIGVuZHBvaW50cyBwcmVzZW50IGluIHRoZSBjb21wb25lbnQgaW5jbHVkaW5nIGl0cyBjaGlsZCAmIHN1YmNoaWxkXG4gKiBJdGVyYXRlIHJlY3Vyc2l2ZWx5IHRpbGwgdGhlIGNvbXBvbmVudCB3aXRoIG5vIGNoaWxkcmVuXG4gKiBAcGFyYW0gY29tcG9uZW50XG4gKiBAcmV0dXJucyBzdHJpbmdbXVxuICovXG5mdW5jdGlvbiBnZXRDb21wb25lbnRJbnZvbHZlZEVuZFBvaW50cyhjb21wb25lbnQ6IEhlcm9Db21wb25lbnQpOiBzdHJpbmdbXSB7XG4gIHJldHVybiBBcnJheS5mcm9tKFxuICAgIChjb21wb25lbnQuY2hpbGRyZW4gfHwgW10pLnJlZHVjZSgoYWNjdW0sIHZhbHVlKSA9PiB7XG4gICAgICBnZXRDb21wb25lbnRJbnZvbHZlZEVuZFBvaW50cyh2YWx1ZSkuZm9yRWFjaCgoaXRlbSkgPT4gYWNjdW0uYWRkKGl0ZW0pKTtcbiAgICAgIHJldHVybiBhY2N1bTtcbiAgICB9LCBuZXcgU2V0PHN0cmluZz4oY29tcG9uZW50Lmludm9sdmVkQXBpRW5kcG9pbnRzKSlcbiAgKTtcbn1cblxuLyoqXG4gKiBHZXQgYWxsIHRoZSBpbnZvbHZlZCBBUEkgZW5kcG9pbnRzIG9mIHRoZSBoZXJvQ29tcG9uZW50IHdpdGggbWF4aW11bSBUVEkgdmFsdWVcbiAqIElmIHRoZSBwYXJlbnQgY29udGFpbnMgbWF4IFRUSSwgdGhlbiBhbGwgaXRzIGNoaWxkICYgc3ViY2hpbGQgZW5kIHBvaW50cyBhcmUgdXNlZFxuICogb3RoZXJ3aXNlIG9ubHkgY29tcG9uZW50IHdpdGggbWF4IFRUSSBlbmQgcG9pbnRzIGFyZSB1c2VkXG4gKiBAcGFyYW0gY29tcG9uZW50XG4gKiBAcGFyYW0gbWF4VFRJXG4gKiBAcmV0dXJucyBzdHJpbmdbXVxuICovXG5mdW5jdGlvbiBnZXRJbnZvbHZlZEFQSUVuZHBvaW50cyhjb21wb25lbnQ6IEhlcm9Db21wb25lbnQsIG1heFRUSTogbnVtYmVyKTogc3RyaW5nW10ge1xuICBpZiAoY29tcG9uZW50LmNvbXBvbmVudFRUSSA9PT0gbWF4VFRJKSB7XG4gICAgcmV0dXJuIGdldENvbXBvbmVudEludm9sdmVkRW5kUG9pbnRzKGNvbXBvbmVudCk7XG4gIH1cbiAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgKGNvbXBvbmVudC5jaGlsZHJlbiB8fCBbXSkucmVkdWNlKChhY2N1bSwgdmFsdWUpID0+IHtcbiAgICAgIGdldEludm9sdmVkQVBJRW5kcG9pbnRzKHZhbHVlLCBtYXhUVEkpLmZvckVhY2goKGVuZHBvaW50KSA9PiBhY2N1bS5hZGQoZW5kcG9pbnQpKTtcbiAgICAgIHJldHVybiBhY2N1bTtcbiAgICB9LCBuZXcgU2V0PHN0cmluZz4oKSlcbiAgKTtcbn1cblxuLyoqXG4gKiBSZWN1cnNpdmVseSBpdGVyYXRlIHRoZSBwYWdlIGhpZXJhcmNoeVxuICogYW5kIHNldCB0aGUgVFRJIGZvciB0aGUgc3BlY2lmaWVkIGNvbXBvbmVudFxuICogYW5kIGNvbXB1dGUgdGhlIFRUSSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgcGFyZW50XG4gKiBAcGFyYW0gY29tcG9uZW50IHRoZSBwYXJlbnQgY29tcG9uZW50L3BhZ2VcbiAqIEBwYXJhbSBpZCB0aGUgaWRlbnRpZmllciBvZiB0aGUgY29tcG9uZW50L3BhZ2VcbiAqIEBwYXJhbSB2YWx1ZSB0aGUgVFRJIHZhbHVlXG4gKiBAcGFyYW0gZW5kcG9pbnRzIEFQSSBVUkxzIG9mIHRoZSBjb21wb25lbnRcbiAqIEByZXR1cm5zIEhlcm9Db21wb25lbnRcbiAqL1xuZnVuY3Rpb24gY29tcHV0ZVRUSShjb21wb25lbnQ6IEhlcm9Db21wb25lbnQsIGlkOiBzdHJpbmcsIHZhbHVlOiBudW1iZXIsIGVuZHBvaW50czogc3RyaW5nW10gPSBbXSk6IEhlcm9Db21wb25lbnQge1xuICBjb25zdCBjb21wdXRlZENvbXBvbmVudCA9IHsgLi4uY29tcG9uZW50IH07XG4gIGlmIChjb21wdXRlZENvbXBvbmVudC5pZCA9PT0gaWQpIHtcbiAgICBjb21wdXRlZENvbXBvbmVudC5UVEkgPSB2YWx1ZTtcbiAgICBjb21wdXRlZENvbXBvbmVudC5oYXNCZWVuTG9nZ2VkID0gdHJ1ZTtcbiAgICBjb21wdXRlZENvbXBvbmVudC5pbnZvbHZlZEFwaUVuZHBvaW50cyA9IGVuZHBvaW50cztcbiAgICBjb21wdXRlZENvbXBvbmVudC5jb21wb25lbnRUVEkgPSB2YWx1ZTtcbiAgfSBlbHNlIGlmIChjb21wdXRlZENvbXBvbmVudC5jaGlsZHJlbikge1xuICAgIGNvbXB1dGVkQ29tcG9uZW50LmNoaWxkcmVuID0gY29tcHV0ZWRDb21wb25lbnQuY2hpbGRyZW4ubWFwKChjaGlsZCkgPT4gY29tcHV0ZVRUSShjaGlsZCwgaWQsIHZhbHVlLCBlbmRwb2ludHMpKTtcbiAgfVxuICAvLyBDb21wdXRlIHRoZSBUVEkgb2YgdGhlIGN1cnJlbnQgY29tcG9uZW50IGNvbXBhcmluZyB0aGUgY2hpbGQgVFRJIG1lYXN1cmVzXG4gIGlmIChjb21wdXRlZENvbXBvbmVudC5jaGlsZHJlbiAmJiBjb21wdXRlZENvbXBvbmVudC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgbWF4Q2hpbGRUVEkgPSBNYXRoLm1heCguLi5jb21wdXRlZENvbXBvbmVudC5jaGlsZHJlbi5tYXAoKGNoaWxkOiBIZXJvQ29tcG9uZW50KSA9PiBjaGlsZC5UVEkpKTtcbiAgICBjb21wdXRlZENvbXBvbmVudC5UVEkgPSBNYXRoLm1heChtYXhDaGlsZFRUSSwgY29tcHV0ZWRDb21wb25lbnQuVFRJKTtcbiAgfVxuICByZXR1cm4gY29tcHV0ZWRDb21wb25lbnQ7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIFRUSSBmb3IgdGhlIHBhZ2UgaXMgY29tcHV0ZWRcbiAqIEBwYXJhbSBjb21wb25lbnQgdGhlIHBhcmVudCBjb21wb25lbnQvcGFnZVxuICogQHJldHVybnMgYm9vbGVhblxuICovXG5mdW5jdGlvbiBpc1RUSUNvbXB1dGVkKGNvbXBvbmVudDogSGVyb0NvbXBvbmVudCk6IGJvb2xlYW4ge1xuICBpZiAoY29tcG9uZW50Lm1lYXN1cmVTZWxmICYmICFjb21wb25lbnQuaGFzQmVlbkxvZ2dlZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gY29tcG9uZW50LmNoaWxkcmVuICYmIGNvbXBvbmVudC5jaGlsZHJlbi5sZW5ndGggPiAwID8gY29tcG9uZW50LmNoaWxkcmVuLmV2ZXJ5KChjaGlsZCkgPT4gaXNUVElDb21wdXRlZChjaGlsZCkpIDogY29tcG9uZW50LlRUSSA+IDA7XG59XG5cbi8qKlxuICogTGlzdCBvZiBiYXNpYyBhY3Rpb25zIGZvciBFdmVudFRyYWNrXG4gKi9cbmV4cG9ydCBjb25zdCBldmVudFRyYWNrUmVkdWNlckZlYXR1cmVzOiBSZWR1Y2VyVHlwZXM8RXZlbnRUcmFja1N0YXRlLCBBY3Rpb25DcmVhdG9yW10+W10gPSBbXG4gIG9uKGFjdGlvbnMuc2V0RXZlbnRUcmFjaywgKF9zdGF0ZSwgcGF5bG9hZCkgPT4gKHsgLi4ucGF5bG9hZC5tb2RlbCB9KSksXG5cbiAgb24oYWN0aW9ucy51cGRhdGVFdmVudFRyYWNrLCAoc3RhdGUsIHBheWxvYWQpID0+ICh7IC4uLnN0YXRlLCAuLi5wYXlsb2FkLm1vZGVsIH0pKSxcblxuICBvbihhY3Rpb25zLnJlc2V0RXZlbnRUcmFjaywgKCkgPT4gZXZlbnRUcmFja0luaXRpYWxTdGF0ZSksXG5cbiAgb24oYWN0aW9ucy5yZWdpc3Rlckhlcm9Db21wb25lbnQsIChzdGF0ZSwgcGF5bG9hZCkgPT4gKHsgLi4uc3RhdGUsIGhlcm9Db21wb25lbnQ6IHsgLi4ucGF5bG9hZC5tb2RlbCwgVFRJOiAwIH0gfSkpLFxuXG4gIG9uKGFjdGlvbnMuc2V0SGVyb0NvbXBvbmVudFRUSSwgKHN0YXRlLCBwYXlsb2FkKSA9PiB7XG4gICAgY29uc3QgdXBkYXRlZEhlcm9Db21wb25lbnQgPSBjb21wdXRlVFRJKHN0YXRlLmhlcm9Db21wb25lbnQsIHBheWxvYWQubW9kZWwuaWQsIHBheWxvYWQubW9kZWwuVFRJLCBwYXlsb2FkLm1vZGVsLmludm9sdmVkQXBpRW5kcG9pbnRzKTtcbiAgICBjb25zdCBpc0NvbXB1dGVkID0gaXNUVElDb21wdXRlZCh1cGRhdGVkSGVyb0NvbXBvbmVudCk7XG4gICAgaWYgKGlzQ29tcHV0ZWQpIHtcbiAgICAgIHVwZGF0ZWRIZXJvQ29tcG9uZW50Lmludm9sdmVkQXBpRW5kcG9pbnRzID0gZ2V0SW52b2x2ZWRBUElFbmRwb2ludHModXBkYXRlZEhlcm9Db21wb25lbnQsIHVwZGF0ZWRIZXJvQ29tcG9uZW50LlRUSSkgfHwgW107XG4gICAgfVxuICAgIHJldHVybiB7IC4uLnN0YXRlLCBoZXJvQ29tcG9uZW50OiB1cGRhdGVkSGVyb0NvbXBvbmVudCwgaXNUVElDb21wdXRlZDogaXNDb21wdXRlZCB9O1xuICB9KVxuXTtcblxuLyoqXG4gKiBFdmVudFRyYWNrIFN0b3JlIGRlZmF1bHQgcmVkdWNlclxuICovXG5leHBvcnQgY29uc3QgZXZlbnRUcmFja1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFxuICBldmVudFRyYWNrSW5pdGlhbFN0YXRlLFxuICAuLi5ldmVudFRyYWNrUmVkdWNlckZlYXR1cmVzXG4pO1xuIl19
@@ -1,7 +0,0 @@
1
- import { createFeatureSelector, createSelector, } from '@ngrx/store';
2
- import { EVENT_TRACK_STORE_NAME, } from './event-track.state';
3
- /** Select EventTrack State */
4
- export const selectEventTrackState = createFeatureSelector(EVENT_TRACK_STORE_NAME);
5
- /** Select hero component status */
6
- export const selectHeroComponentStatus = createSelector(selectEventTrackState, (state) => (state.isTTIComputed ? state.heroComponent.TTI : undefined));
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtdHJhY2suc2VsZWN0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N0b3Jlcy9ldmVudC10cmFjay9ldmVudC10cmFjay5zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixjQUFjLEdBQ2YsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLHNCQUFzQixHQUV2QixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLDhCQUE4QjtBQUM5QixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBa0Isc0JBQXNCLENBQUMsQ0FBQztBQUVwRyxtQ0FBbUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsY0FBYyxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxFQUFzQixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGNyZWF0ZUZlYXR1cmVTZWxlY3RvcixcbiAgY3JlYXRlU2VsZWN0b3IsXG59IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIEVWRU5UX1RSQUNLX1NUT1JFX05BTUUsXG4gIEV2ZW50VHJhY2tTdGF0ZSxcbn0gZnJvbSAnLi9ldmVudC10cmFjay5zdGF0ZSc7XG5cbi8qKiBTZWxlY3QgRXZlbnRUcmFjayBTdGF0ZSAqL1xuZXhwb3J0IGNvbnN0IHNlbGVjdEV2ZW50VHJhY2tTdGF0ZSA9IGNyZWF0ZUZlYXR1cmVTZWxlY3RvcjxFdmVudFRyYWNrU3RhdGU+KEVWRU5UX1RSQUNLX1NUT1JFX05BTUUpO1xuXG4vKiogU2VsZWN0IGhlcm8gY29tcG9uZW50IHN0YXR1cyAqL1xuZXhwb3J0IGNvbnN0IHNlbGVjdEhlcm9Db21wb25lbnRTdGF0dXMgPSBjcmVhdGVTZWxlY3RvcihzZWxlY3RFdmVudFRyYWNrU3RhdGUsIChzdGF0ZSk6IG51bWJlciB8IHVuZGVmaW5lZCA9PiAoc3RhdGUuaXNUVElDb21wdXRlZCA/IHN0YXRlLmhlcm9Db21wb25lbnQuVFRJIDogdW5kZWZpbmVkKSk7XG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Name of the EventTrack Store
3
- */
4
- export const EVENT_TRACK_STORE_NAME = 'eventTrack';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtdHJhY2suc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3RvcmVzL2V2ZW50LXRyYWNrL2V2ZW50LXRyYWNrLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTREQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGludGVyZmFjZSBmb3IgSGVybyBjb21wb25lbnQsIHdoaWNoIGRldGVybWluZXMgdGhlIFRpbWUgVG8gSW50ZXJhY3RpdmUgKFRUSSkgZm9yIGEgcGFnZVxuICogSXQgZm9sbG93cyBhIFRyZWUgZGF0YSBzdHJ1Y3R1cmUsIHdpdGggdGhlIHJvb3Qgbm9kZSBhcyB0aGUgUGFnZSBhbmQgdGhlIGhlcm8gY29tcG9uZW50cyBhc1xuICogaXRzIGNoaWxkcmVuLiBFYWNoIGNoaWxkIGNhbiBoYXZlIGl0cyBvd24gaGVybyBjb21wb25lbnRzLiBUaGUgVFRJIGZvciB0aGUgcGFnZVxuICogd291bGQgYmUgY29tcHV0ZWQgdXNpbmcgYSBib3R0b20tdXAgYXBwcm9hY2ggc3RhcnRpbmcgZnJvbSB0aGUgY2hpbGRyZW4gYXQgdGhlIGJvdHRvbSAobGVhZiBub2RlcykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGVyb0NvbXBvbmVudCBleHRlbmRzIFJlZ2lzdGVySGVyb0NvbXBvbmVudFBheWxvYWQge1xuICAvKiogVGhlIFRpbWUgVG8gSW50ZXJhY3RpdmUoVFRJKSBtZWFzdXJlIGZvciB0aGUgY29tcG9uZW50ICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gLS0gbmFtaW5nIGNvbnZlbnRpb24gaW1wb3NlZCBieSBMaWdodGhvdXNlXG4gIFRUSTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCb29sZWFuIHRvIGluZGljYXRlIGlmIHRoZSBUVEkgZm9yIHRoZSBjb21wb25lbnRcbiAgICogaGFzIGJlZW4gZXhwbGljaXRseSBtZWFzdXJlZCBhbmQgbG9nZ2VkXG4gICAqL1xuICBoYXNCZWVuTG9nZ2VkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTGlzdCBvZiBBUEkgZW5kcG9pbnRzIHVzZWQgaW4gdGhlIEhlcm8gY29tcG9uZW50IGFuZCBpdCdzIHN1YmNvbXBvbmVudHNcbiAgICogVGhlc2UgYXJlIHRoZSBBUEkncyBpbnZva2VkIHdoZW4gdGhlIFRUSSBpcyBtZWFzdXJlZFxuICAgKi9cbiAgaW52b2x2ZWRBcGlFbmRwb2ludHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQWN0dWFsIFRUSSBtZWFzdXJlIG9mIHRoZSBjb21wb25lbnQsXG4gICAqIGRvZXNuJ3QgY2hhbmdlIHVwb24gaXQncyBjaGlsZHJlbiBNYXggVFRJIHZhbHVlXG4gICAqL1xuICBjb21wb25lbnRUVEk/OiBudW1iZXI7XG59XG5cbi8qKiBUaGUgaW50ZXJmYWNlIGZvciB0aGUgcmVnaXN0ZXIgaGVybyBjb21wb25lbnQgcGF5bG9hZCwgd2hpY2ggaXMgdXNlZCB0byByZWdpc3RlciBhIGhlcm8gY29tcG9uZW50IGFuZCBpdHMgY2hpbGRyZW4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJIZXJvQ29tcG9uZW50UGF5bG9hZCB7XG4gIC8qKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaGVybyBjb21wb25lbnQgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEJvb2xlYW4gdG8gaW5kaWNhdGUgaWYgdGhlIFRUSSBjb21wdXRhdGlvbiBzaG91bGQgdGFrZSBpbnRvIGFjY291bnRcbiAgICogdGhlIFRUSSBvZiB0aGUgY29tcG9uZW50IGl0c2VsZiBpbiBhZGRpdGlvbiB0byB0aGF0IG9mIGl0cyBjaGlsZCBjb21wb25lbnRzXG4gICAqL1xuICBtZWFzdXJlU2VsZj86IGJvb2xlYW47XG4gIC8qKiBUaGUgaWRlbnRpZmllcnMgb2YgdGhlIGNoaWxkcmVuIGhlcm8gY29tcG9uZW50cyAqL1xuICBjaGlsZHJlbj86IEhlcm9Db21wb25lbnRbXTtcbn1cblxuLyoqXG4gKiBFdmVudFRyYWNrIHN0b3JlIHN0YXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRUcmFja1N0YXRlIHtcbiAgLyoqIFRoZSBoZXJvIGNvbXBvbmVudCBmb3IgY29tcHV0aW5nIFRUSSAqL1xuICBoZXJvQ29tcG9uZW50OiBIZXJvQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBCb29sZWFuIHRvIGluZGljYXRlIHRoZSBjb21wbGV0aW9uIG9mIFRUSSBjb21wdXRhdGlvblxuICAgKiBUVEkgZm9yIGEgaGVybyBjb21wb25lbnQgaXMgY29uc2lkZXJlZCB0byBiZSBjb21wdXRlZFxuICAgKiBvbmx5IHdoZW4gdGhlIFRUSSBvZiBhbGwgaXRzIGNoaWxkcmVuIGhhdmUgYmVlbiBjb21wdXRlZFxuICAgKiBlZzogZm9yIGEgY29tcG9uZW50IEEgaGF2aW5nIEIgYW5kIEMgYXMgY2hpbGRyZW4sIHRoaXMgdmFsdWVcbiAgICogaXMgc2V0IG9ubHkgd2hlbiBUVEkgZm9yIGFsbCBBLCBCIGFuZCBDIGhhdmUgYmVlbiBzZXRcbiAgICovXG4gIGlzVFRJQ29tcHV0ZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogTmFtZSBvZiB0aGUgRXZlbnRUcmFjayBTdG9yZVxuICovXG5leHBvcnQgY29uc3QgRVZFTlRfVFJBQ0tfU1RPUkVfTkFNRSA9ICdldmVudFRyYWNrJztcblxuLyoqXG4gKiBFdmVudFRyYWNrIFN0b3JlIEludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50VHJhY2tTdG9yZSB7XG4gIC8qKiBFdmVudFRyYWNrIHN0YXRlICovXG4gIFtFVkVOVF9UUkFDS19TVE9SRV9OQU1FXTogRXZlbnRUcmFja1N0YXRlO1xufVxuIl19
@@ -1,7 +0,0 @@
1
- import { eventTrackInitialState, } from './event-track.reducer';
2
- export const eventTrackStorageSync = {
3
- deserialize: (rawObject) => {
4
- return rawObject ? rawObject : eventTrackInitialState;
5
- }
6
- };
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtdHJhY2suc3luYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdG9yZXMvZXZlbnQtdHJhY2svZXZlbnQtdHJhY2suc3luYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQ0wsc0JBQXNCLEdBQ3ZCLE1BQU0sdUJBQXVCLENBQUM7QUFLL0IsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQTBDO0lBQzFFLFdBQVcsRUFBRSxDQUFDLFNBQWMsRUFBRSxFQUFFO1FBQzlCLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUE0QixDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQztJQUMzRSxDQUFDO0NBQ08sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgU2VyaWFsaXplcixcbn0gZnJvbSAnQG8zci9jb3JlJztcbmltcG9ydCB7XG4gIGV2ZW50VHJhY2tJbml0aWFsU3RhdGUsXG59IGZyb20gJy4vZXZlbnQtdHJhY2sucmVkdWNlcic7XG5pbXBvcnQge1xuICBFdmVudFRyYWNrU3RhdGUsXG59IGZyb20gJy4vZXZlbnQtdHJhY2suc3RhdGUnO1xuXG5leHBvcnQgY29uc3QgZXZlbnRUcmFja1N0b3JhZ2VTeW5jOiBSZWFkb25seTxTZXJpYWxpemVyPEV2ZW50VHJhY2tTdGF0ZT4+ID0ge1xuICBkZXNlcmlhbGl6ZTogKHJhd09iamVjdDogYW55KSA9PiB7XG4gICAgcmV0dXJuIHJhd09iamVjdCA/IHJhd09iamVjdCBhcyBFdmVudFRyYWNrU3RhdGUgOiBldmVudFRyYWNrSW5pdGlhbFN0YXRlO1xuICB9XG59IGFzIGNvbnN0O1xuIl19
@@ -1,7 +0,0 @@
1
- export * from './event-track.actions';
2
- export * from './event-track.module';
3
- export * from './event-track.reducer';
4
- export * from './event-track.selectors';
5
- export * from './event-track.state';
6
- export * from './event-track.sync';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3RvcmVzL2V2ZW50LXRyYWNrL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ldmVudC10cmFjay5hY3Rpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vZXZlbnQtdHJhY2subW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZXZlbnQtdHJhY2sucmVkdWNlcic7XG5leHBvcnQgKiBmcm9tICcuL2V2ZW50LXRyYWNrLnNlbGVjdG9ycyc7XG5leHBvcnQgKiBmcm9tICcuL2V2ZW50LXRyYWNrLnN0YXRlJztcbmV4cG9ydCAqIGZyb20gJy4vZXZlbnQtdHJhY2suc3luYyc7XG4iXX0=
@@ -1,2 +0,0 @@
1
- export * from './event-track/index';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RvcmVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2V2ZW50LXRyYWNrL2luZGV4JztcbiJdfQ==