angulartics2 11.0.0 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/angular-router.d.ts +3 -0
- package/angulartics2-core.d.ts +3 -0
- package/angulartics2.d.ts +1 -0
- package/angulartics2.module.d.ts +5 -0
- package/angulartics2On.d.ts +6 -0
- package/esm2020/angular-router.mjs +33 -0
- package/{esm2015/angulartics2-config.js → esm2020/angulartics2-config.mjs} +0 -0
- package/esm2020/angulartics2-core.mjs +93 -0
- package/{esm2015/angulartics2-interfaces.js → esm2020/angulartics2-interfaces.mjs} +0 -0
- package/{esm2015/angulartics2-token.js → esm2020/angulartics2-token.mjs} +0 -0
- package/{esm2015/angulartics2.js → esm2020/angulartics2.mjs} +0 -0
- package/esm2020/angulartics2.module.mjs +30 -0
- package/esm2020/angulartics2On.mjs +66 -0
- package/esm2020/providers/adobeanalytics/adobeanalytics.mjs +98 -0
- package/esm2020/providers/amplitude/amplitude.mjs +68 -0
- package/esm2020/providers/appinsights/appinsights.mjs +118 -0
- package/esm2020/providers/baidu/baidu.mjs +81 -0
- package/{esm2015/providers/clicky/clicky.interfaces.js → esm2020/providers/clicky/clicky.interfaces.mjs} +0 -0
- package/esm2020/providers/clicky/clicky.mjs +64 -0
- package/esm2020/providers/facebook/facebook.mjs +45 -0
- package/esm2020/providers/ga/ga.mjs +219 -0
- package/{esm2015/providers/ga-enhanced-ecom/ga-enhanced-ecom-options.js → esm2020/providers/ga-enhanced-ecom/ga-enhanced-ecom-options.mjs} +0 -0
- package/esm2020/providers/ga-enhanced-ecom/ga-enhanced-ecom.mjs +32 -0
- package/esm2020/providers/gosquared/gosquared.mjs +55 -0
- package/{esm2015/providers/gst/gst-interfaces.js → esm2020/providers/gst/gst-interfaces.mjs} +0 -0
- package/esm2020/providers/gst/gst.mjs +197 -0
- package/esm2020/providers/gtm/gtm.mjs +114 -0
- package/esm2020/providers/hubspot/hubspot.mjs +40 -0
- package/esm2020/providers/ibm-digital-analytics/ibm-digital-analytics.mjs +125 -0
- package/esm2020/providers/intercom/intercom.mjs +60 -0
- package/esm2020/providers/kissmetrics/kissmetrics.mjs +40 -0
- package/esm2020/providers/launch/launch.mjs +59 -0
- package/esm2020/providers/matomo/matomo.mjs +303 -0
- package/esm2020/providers/mixpanel/mixpanel.mjs +109 -0
- package/esm2020/providers/pyze/pyze.mjs +65 -0
- package/esm2020/providers/segment/segment.mjs +100 -0
- package/esm2020/providers/splunk/splunk.mjs +46 -0
- package/esm2020/providers/woopra/woopra.mjs +61 -0
- package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
- package/{esm2015/routerless.js → esm2020/routerless.mjs} +0 -0
- package/esm2020/routerless.module.mjs +28 -0
- package/fesm2015/{angulartics2.js → angulartics2.mjs} +201 -210
- package/fesm2015/angulartics2.mjs.map +1 -0
- package/fesm2020/angulartics2.mjs +2294 -0
- package/fesm2020/angulartics2.mjs.map +1 -0
- package/package.json +23 -11
- package/providers/adobeanalytics/README.md +12 -0
- package/providers/adobeanalytics/adobeanalytics.d.ts +3 -0
- package/providers/amplitude/README.md +12 -0
- package/providers/amplitude/amplitude.d.ts +3 -0
- package/providers/appinsights/README.md +12 -0
- package/providers/appinsights/appinsights.d.ts +3 -0
- package/providers/baidu/README.md +12 -0
- package/providers/baidu/baidu.d.ts +3 -0
- package/providers/clicky/README.md +93 -0
- package/providers/clicky/clicky.d.ts +3 -0
- package/providers/facebook/README.md +36 -0
- package/providers/facebook/facebook.d.ts +3 -0
- package/providers/ga/README.md +25 -0
- package/providers/ga/ga.d.ts +3 -0
- package/providers/ga-enhanced-ecom/README.md +12 -0
- package/providers/ga-enhanced-ecom/ga-enhanced-ecom.d.ts +3 -0
- package/providers/gosquared/README.md +12 -0
- package/providers/gosquared/gosquared.d.ts +3 -0
- package/providers/gst/README.md +110 -0
- package/providers/gst/gst.d.ts +3 -0
- package/providers/gtm/README.md +58 -0
- package/providers/gtm/gtm.d.ts +3 -0
- package/providers/hubspot/README.md +12 -0
- package/providers/hubspot/hubspot.d.ts +3 -0
- package/providers/ibm-digital-analytics/README.md +123 -0
- package/providers/ibm-digital-analytics/ibm-digital-analytics.d.ts +3 -0
- package/providers/intercom/README.md +12 -0
- package/providers/intercom/intercom.d.ts +3 -0
- package/providers/kissmetrics/README.md +12 -0
- package/providers/kissmetrics/kissmetrics.d.ts +3 -0
- package/providers/launch/README.md +59 -0
- package/providers/launch/launch.d.ts +3 -0
- package/providers/matomo/README.md +74 -0
- package/providers/matomo/matomo.d.ts +3 -0
- package/providers/mixpanel/README.md +105 -0
- package/providers/mixpanel/mixpanel.d.ts +3 -0
- package/providers/pyze/README.md +21 -0
- package/providers/pyze/pyze.d.ts +3 -0
- package/providers/segment/README.md +50 -0
- package/providers/segment/segment.d.ts +3 -0
- package/providers/splunk/README.md +57 -0
- package/providers/splunk/splunk.d.ts +3 -0
- package/providers/woopra/README.md +12 -0
- package/providers/woopra/woopra.d.ts +3 -0
- package/routerless.module.d.ts +5 -0
- package/angulartics2.metadata.json +0 -1
- package/bundles/angulartics2.umd.js +0 -2821
- package/bundles/angulartics2.umd.js.map +0 -1
- package/esm2015/angular-router.js +0 -36
- package/esm2015/angulartics2-core.js +0 -91
- package/esm2015/angulartics2.module.js +0 -25
- package/esm2015/angulartics2On.js +0 -55
- package/esm2015/providers/adobeanalytics/adobeanalytics.js +0 -102
- package/esm2015/providers/amplitude/amplitude.js +0 -70
- package/esm2015/providers/appinsights/appinsights.js +0 -120
- package/esm2015/providers/baidu/baidu.js +0 -83
- package/esm2015/providers/clicky/clicky.js +0 -68
- package/esm2015/providers/facebook/facebook.js +0 -47
- package/esm2015/providers/ga/ga.js +0 -208
- package/esm2015/providers/ga-enhanced-ecom/ga-enhanced-ecom.js +0 -30
- package/esm2015/providers/gosquared/gosquared.js +0 -57
- package/esm2015/providers/gst/gst.js +0 -182
- package/esm2015/providers/gtm/gtm.js +0 -107
- package/esm2015/providers/hubspot/hubspot.js +0 -42
- package/esm2015/providers/ibm-digital-analytics/ibm-digital-analytics.js +0 -127
- package/esm2015/providers/intercom/intercom.js +0 -62
- package/esm2015/providers/kissmetrics/kissmetrics.js +0 -42
- package/esm2015/providers/launch/launch.js +0 -61
- package/esm2015/providers/matomo/matomo.js +0 -305
- package/esm2015/providers/mixpanel/mixpanel.js +0 -111
- package/esm2015/providers/pyze/pyze.js +0 -67
- package/esm2015/providers/segment/segment.js +0 -102
- package/esm2015/providers/splunk/splunk.js +0 -48
- package/esm2015/providers/woopra/woopra.js +0 -63
- package/esm2015/routerless.module.js +0 -23
- package/fesm2015/angulartics2.js.map +0 -1
@@ -1,305 +0,0 @@
|
|
1
|
-
import { Injectable } from '@angular/core';
|
2
|
-
import { Angulartics2 } from '../../angulartics2-core';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
import * as i1 from "../../angulartics2-core";
|
5
|
-
export class Angulartics2Matomo {
|
6
|
-
constructor(angulartics2) {
|
7
|
-
this.angulartics2 = angulartics2;
|
8
|
-
if (typeof _paq === 'undefined') {
|
9
|
-
console.warn('Matomo not found');
|
10
|
-
}
|
11
|
-
this.angulartics2.setUsername.subscribe((x) => this.setUsername(x));
|
12
|
-
this.angulartics2.setUserProperties.subscribe((x) => this.setUserProperties(x));
|
13
|
-
}
|
14
|
-
startTracking() {
|
15
|
-
this.angulartics2.pageTrack
|
16
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
17
|
-
.subscribe(x => this.pageTrack(x.path));
|
18
|
-
this.angulartics2.eventTrack
|
19
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
20
|
-
.subscribe(x => this.eventTrack(x.action, x.properties));
|
21
|
-
}
|
22
|
-
pageTrack(path, title) {
|
23
|
-
try {
|
24
|
-
if (!window.location.origin) {
|
25
|
-
window.location.origin =
|
26
|
-
window.location.protocol +
|
27
|
-
'//' +
|
28
|
-
window.location.hostname +
|
29
|
-
(window.location.port ? ':' + window.location.port : '');
|
30
|
-
}
|
31
|
-
_paq.push(['setDocumentTitle', title || window.document.title]);
|
32
|
-
_paq.push(['setCustomUrl', window.location.origin + path]);
|
33
|
-
_paq.push(['trackPageView']);
|
34
|
-
}
|
35
|
-
catch (e) {
|
36
|
-
if (!(e instanceof ReferenceError)) {
|
37
|
-
throw e;
|
38
|
-
}
|
39
|
-
}
|
40
|
-
}
|
41
|
-
resetUser() {
|
42
|
-
try {
|
43
|
-
_paq.push(['appendToTrackingUrl', 'new_visit=1']); // (1) forces a new visit
|
44
|
-
_paq.push(['deleteCookies']); // (2) deletes existing tracking cookies to start the new visit
|
45
|
-
}
|
46
|
-
catch (e) {
|
47
|
-
if (!(e instanceof ReferenceError)) {
|
48
|
-
throw e;
|
49
|
-
}
|
50
|
-
}
|
51
|
-
}
|
52
|
-
/**
|
53
|
-
* Track a basic event in Matomo, or send an ecommerce event.
|
54
|
-
*
|
55
|
-
* @param action A string corresponding to the type of event that needs to be tracked.
|
56
|
-
* @param properties The properties that need to be logged with the event.
|
57
|
-
*/
|
58
|
-
eventTrack(action, properties) {
|
59
|
-
let params = [];
|
60
|
-
switch (action) {
|
61
|
-
/**
|
62
|
-
* @description Sets the current page view as a product or category page view. When you call
|
63
|
-
* setEcommerceView it must be followed by a call to trackPageView to record the product or
|
64
|
-
* category page view.
|
65
|
-
*
|
66
|
-
* @link https://matomo.org/docs/ecommerce-analytics/#tracking-product-page-views-category-page-views-optional
|
67
|
-
* @link https://developer.matomo.org/api-reference/tracking-javascript#ecommerce
|
68
|
-
*
|
69
|
-
* @property productSKU (required) SKU: Product unique identifier
|
70
|
-
* @property productName (optional) Product name
|
71
|
-
* @property categoryName (optional) Product category, or array of up to 5 categories
|
72
|
-
* @property price (optional) Product Price as displayed on the page
|
73
|
-
*/
|
74
|
-
case 'setEcommerceView':
|
75
|
-
params = [
|
76
|
-
'setEcommerceView',
|
77
|
-
properties.productSKU,
|
78
|
-
properties.productName,
|
79
|
-
properties.categoryName,
|
80
|
-
properties.price,
|
81
|
-
];
|
82
|
-
break;
|
83
|
-
/**
|
84
|
-
* @description Adds a product into the ecommerce order. Must be called for each product in
|
85
|
-
* the order.
|
86
|
-
*
|
87
|
-
* @link https://matomo.org/docs/ecommerce-analytics/#tracking-ecommerce-orders-items-purchased-required
|
88
|
-
* @link https://developer.matomo.org/api-reference/tracking-javascript#ecommerce
|
89
|
-
*
|
90
|
-
* @property productSKU (required) SKU: Product unique identifier
|
91
|
-
* @property productName (optional) Product name
|
92
|
-
* @property categoryName (optional) Product category, or array of up to 5 categories
|
93
|
-
* @property price (recommended) Product price
|
94
|
-
* @property quantity (optional, default to 1) Product quantity
|
95
|
-
*/
|
96
|
-
case 'addEcommerceItem':
|
97
|
-
params = [
|
98
|
-
'addEcommerceItem',
|
99
|
-
properties.productSKU,
|
100
|
-
properties.productName,
|
101
|
-
properties.productCategory,
|
102
|
-
properties.price,
|
103
|
-
properties.quantity,
|
104
|
-
];
|
105
|
-
break;
|
106
|
-
/**
|
107
|
-
* @description Tracks a shopping cart. Call this javascript function every time a user is
|
108
|
-
* adding, updating or deleting a product from the cart.
|
109
|
-
*
|
110
|
-
* @link https://matomo.org/docs/ecommerce-analytics/#tracking-add-to-cart-items-added-to-the-cart-optional
|
111
|
-
* @link https://developer.matomo.org/api-reference/tracking-javascript#ecommerce
|
112
|
-
*
|
113
|
-
* @property grandTotal (required) Cart amount
|
114
|
-
*/
|
115
|
-
case 'trackEcommerceCartUpdate':
|
116
|
-
params = [
|
117
|
-
'trackEcommerceCartUpdate',
|
118
|
-
properties.grandTotal,
|
119
|
-
];
|
120
|
-
break;
|
121
|
-
/**
|
122
|
-
* @description Tracks an Ecommerce order, including any ecommerce item previously added to
|
123
|
-
* the order. orderId and grandTotal (ie. revenue) are required parameters.
|
124
|
-
*
|
125
|
-
* @link https://matomo.org/docs/ecommerce-analytics/#tracking-ecommerce-orders-items-purchased-required
|
126
|
-
* @link https://developer.matomo.org/api-reference/tracking-javascript#ecommerce
|
127
|
-
*
|
128
|
-
* @property orderId (required) Unique Order ID
|
129
|
-
* @property grandTotal (required) Order Revenue grand total (includes tax, shipping, and subtracted discount)
|
130
|
-
* @property subTotal (optional) Order sub total (excludes shipping)
|
131
|
-
* @property tax (optional) Tax amount
|
132
|
-
* @property shipping (optional) Shipping amount
|
133
|
-
* @property discount (optional) Discount offered (set to false for unspecified parameter)
|
134
|
-
*/
|
135
|
-
case 'trackEcommerceOrder':
|
136
|
-
params = [
|
137
|
-
'trackEcommerceOrder',
|
138
|
-
properties.orderId,
|
139
|
-
properties.grandTotal,
|
140
|
-
properties.subTotal,
|
141
|
-
properties.tax,
|
142
|
-
properties.shipping,
|
143
|
-
properties.discount,
|
144
|
-
];
|
145
|
-
break;
|
146
|
-
/**
|
147
|
-
* @description To manually trigger an outlink
|
148
|
-
*
|
149
|
-
* @link https://matomo.org/docs/tracking-goals-web-analytics/
|
150
|
-
* @link https://developer.matomo.org/guides/tracking-javascript-guide#tracking-a-click-as-an-outlink-via-css-or-javascript
|
151
|
-
*
|
152
|
-
* @property url (required) link url
|
153
|
-
* @property linkType (optional) type of link
|
154
|
-
*/
|
155
|
-
case 'trackLink':
|
156
|
-
params = [
|
157
|
-
'trackLink',
|
158
|
-
properties.url,
|
159
|
-
properties.linkType,
|
160
|
-
];
|
161
|
-
break;
|
162
|
-
/**
|
163
|
-
* @description Tracks an Ecommerce goal
|
164
|
-
*
|
165
|
-
* @link https://matomo.org/docs/tracking-goals-web-analytics/
|
166
|
-
* @link https://developer.matomo.org/guides/tracking-javascript-guide#manually-trigger-goal-conversions
|
167
|
-
*
|
168
|
-
* @property goalId (required) Unique Goal ID
|
169
|
-
* @property value (optional) passed to goal tracking
|
170
|
-
*/
|
171
|
-
case 'trackGoal':
|
172
|
-
params = [
|
173
|
-
'trackGoal',
|
174
|
-
properties.goalId,
|
175
|
-
properties.value,
|
176
|
-
];
|
177
|
-
break;
|
178
|
-
/**
|
179
|
-
* @description Tracks a site search
|
180
|
-
*
|
181
|
-
* @link https://matomo.org/docs/site-search/
|
182
|
-
* @link https://developer.matomo.org/guides/tracking-javascript-guide#internal-search-tracking
|
183
|
-
*
|
184
|
-
* @property keyword (required) Keyword searched for
|
185
|
-
* @property category (optional) Search category
|
186
|
-
* @property searchCount (optional) Number of results
|
187
|
-
*/
|
188
|
-
case 'trackSiteSearch':
|
189
|
-
params = [
|
190
|
-
'trackSiteSearch',
|
191
|
-
properties.keyword,
|
192
|
-
properties.category,
|
193
|
-
properties.searchCount,
|
194
|
-
];
|
195
|
-
break;
|
196
|
-
/**
|
197
|
-
* @description Logs an event with an event category (Videos, Music, Games...), an event
|
198
|
-
* action (Play, Pause, Duration, Add Playlist, Downloaded, Clicked...), and an optional
|
199
|
-
* event name and optional numeric value.
|
200
|
-
*
|
201
|
-
* @link https://matomo.org/docs/event-tracking/
|
202
|
-
* @link https://developer.matomo.org/api-reference/tracking-javascript#using-the-tracker-object
|
203
|
-
*
|
204
|
-
* @property category
|
205
|
-
* @property action
|
206
|
-
* @property name (optional, recommended)
|
207
|
-
* @property value (optional)
|
208
|
-
*/
|
209
|
-
default:
|
210
|
-
// PAQ requires that eventValue be an integer, see: http://matomo.org/docs/event-tracking
|
211
|
-
if (properties.value) {
|
212
|
-
const parsed = parseInt(properties.value, 10);
|
213
|
-
properties.value = isNaN(parsed) ? 0 : parsed;
|
214
|
-
}
|
215
|
-
params = [
|
216
|
-
'trackEvent',
|
217
|
-
properties.category,
|
218
|
-
action,
|
219
|
-
properties.name ||
|
220
|
-
properties.label,
|
221
|
-
properties.value,
|
222
|
-
];
|
223
|
-
}
|
224
|
-
try {
|
225
|
-
_paq.push(params);
|
226
|
-
}
|
227
|
-
catch (e) {
|
228
|
-
if (!(e instanceof ReferenceError)) {
|
229
|
-
throw e;
|
230
|
-
}
|
231
|
-
}
|
232
|
-
}
|
233
|
-
setUsername(userId) {
|
234
|
-
try {
|
235
|
-
_paq.push(['setUserId', userId]);
|
236
|
-
}
|
237
|
-
catch (e) {
|
238
|
-
if (!(e instanceof ReferenceError)) {
|
239
|
-
throw e;
|
240
|
-
}
|
241
|
-
}
|
242
|
-
}
|
243
|
-
/**
|
244
|
-
* Sets custom dimensions if at least one property has the key "dimension<n>",
|
245
|
-
* e.g. dimension10. If there are custom dimensions, any other property is ignored.
|
246
|
-
*
|
247
|
-
* If there are no custom dimensions in the given properties object, the properties
|
248
|
-
* object is saved as a custom variable.
|
249
|
-
*
|
250
|
-
* If in doubt, prefer custom dimensions.
|
251
|
-
* @link https://matomo.org/docs/custom-variables/
|
252
|
-
*/
|
253
|
-
setUserProperties(properties) {
|
254
|
-
const dimensions = this.setCustomDimensions(properties);
|
255
|
-
try {
|
256
|
-
if (dimensions.length === 0) {
|
257
|
-
_paq.push([
|
258
|
-
'setCustomVariable',
|
259
|
-
properties.index,
|
260
|
-
properties.name,
|
261
|
-
properties.value,
|
262
|
-
properties.scope,
|
263
|
-
]);
|
264
|
-
}
|
265
|
-
}
|
266
|
-
catch (e) {
|
267
|
-
if (!(e instanceof ReferenceError)) {
|
268
|
-
throw e;
|
269
|
-
}
|
270
|
-
}
|
271
|
-
}
|
272
|
-
/**
|
273
|
-
* If you created a custom variable and then decide to remove this variable from
|
274
|
-
* a visit or page view, you can use deleteCustomVariable.
|
275
|
-
*
|
276
|
-
* @link https://developer.matomo.org/guides/tracking-javascript-guide#deleting-a-custom-variable
|
277
|
-
*/
|
278
|
-
deletedUserProperties(properties) {
|
279
|
-
try {
|
280
|
-
_paq.push(['deleteCustomVariable', properties.index, properties.scope]);
|
281
|
-
}
|
282
|
-
catch (e) {
|
283
|
-
if (!(e instanceof ReferenceError)) {
|
284
|
-
throw e;
|
285
|
-
}
|
286
|
-
}
|
287
|
-
}
|
288
|
-
setCustomDimensions(properties) {
|
289
|
-
const dimensionRegex = /dimension[1-9]\d*/;
|
290
|
-
const dimensions = Object.keys(properties).filter(key => dimensionRegex.exec(key));
|
291
|
-
dimensions.forEach(dimension => {
|
292
|
-
const number = Number(dimension.substr(9));
|
293
|
-
_paq.push(['setCustomDimension', number, properties[dimension]]);
|
294
|
-
});
|
295
|
-
return dimensions;
|
296
|
-
}
|
297
|
-
}
|
298
|
-
Angulartics2Matomo.ɵprov = i0.ɵɵdefineInjectable({ factory: function Angulartics2Matomo_Factory() { return new Angulartics2Matomo(i0.ɵɵinject(i1.Angulartics2)); }, token: Angulartics2Matomo, providedIn: "root" });
|
299
|
-
Angulartics2Matomo.decorators = [
|
300
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
301
|
-
];
|
302
|
-
Angulartics2Matomo.ctorParameters = () => [
|
303
|
-
{ type: Angulartics2 }
|
304
|
-
];
|
305
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0b21vLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9wcm92aWRlcnMvbWF0b21vL21hdG9tby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBdUl2RCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQW9CLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzVDLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBb0MsRUFBRSxFQUFFLENBQ3JGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FDMUIsQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTO2FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLENBQUM7YUFDN0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVU7YUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzthQUM3QyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVB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SSxDQUFDLENBQUMsQ0FBQyxZQUFZLGNBQWMsQ0FBQyxFQUFFO2dCQUNsQyxNQUFNLENBQUMsQ0FBQzthQUNUO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsVUFBNkM7UUFDdkUsTUFBTSxjQUFjLEdBQVcsbUJBQW1CLENBQUM7UUFDbkQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbkYsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM3QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRSxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Ozs7WUEzVEYsVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7O1lBdEl6QixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBbmd1bGFydGljczIgfSBmcm9tICcuLi8uLi9hbmd1bGFydGljczItY29yZSc7XG5cbmRlY2xhcmUgdmFyIF9wYXE6IGFueTtcblxuZXhwb3J0IHR5cGUgRXZlbnRUcmFja0FjdGlvbiA9XG4gIHwgJ3NldEVjb21tZXJjZVZpZXcnXG4gIHwgJ2FkZEVjb21tZXJjZUl0ZW0nXG4gIHwgJ3RyYWNrRWNvbW1lcmNlQ2FydFVwZGF0ZSdcbiAgfCAndHJhY2tFY29tbWVyY2VPcmRlcidcbiAgfCAndHJhY2tMaW5rJ1xuICB8ICd0cmFja0dvYWwnXG4gIHwgJ3RyYWNrU2l0ZVNlYXJjaCdcbiAgfCBzdHJpbmc7XG5cbmV4cG9ydCB0eXBlIFNjb3BlTWF0b21vID0gJ3Zpc2l0JyB8ICdwYWdlJztcblxuZXhwb3J0IGludGVyZmFjZSBEaW1lbnNpb25zTWF0b21vUHJvcGVydGllcyB7XG4gIGRpbWVuc2lvbjA/OiBzdHJpbmc7XG4gIGRpbWVuc2lvbjE/OiBzdHJpbmc7XG4gIGRpbWVuc2lvbjI/OiBzdHJpbmc7XG4gIGRpbWVuc2lvbjM/OiBzdHJpbmc7XG4gIGRpbWVuc2lvbjQ/OiBzdHJpbmc7XG4gIGRpbWVuc2lvbjU/OiBzdHJpbmc7XG4gIGRpbWVuc2lvbjY/OiBzdHJpbmc7XG4gIGRpbWVuc2lvbjc/OiBzdHJpbmc7XG4gIGRpbWVuc2lvbjg/OiBzdHJpbmc7XG4gIGRpbWVuc2lvbjk/OiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNldEVjb21tZXJjZVZpZXdNYXRvbW9Qcm9wZXJ0aWVzIHtcbiAgLyoqIEBjbGFzcyBTZXRFY29tbWVyY2VWaWV3TWF0b21vUHJvcGVydGllcyAqL1xuICBwcm9kdWN0U0tVOiBzdHJpbmc7XG4gIC8qKiBAY2xhc3MgU2V0RWNvbW1lcmNlVmlld01hdG9tb1Byb3BlcnRpZXMgKi9cbiAgcHJvZHVjdE5hbWU6IHN0cmluZztcbiAgLyoqIEBjbGFzcyBTZXRFY29tbWVyY2VWaWV3TWF0b21vUHJvcGVydGllcyAqL1xuICBjYXRlZ29yeU5hbWU6IHN0cmluZztcbiAgLyoqIEBjbGFzcyBTZXRFY29tbWVyY2VWaWV3TWF0b21vUHJvcGVydGllcyAqL1xuICBwcmljZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZEVjb21tZXJjZUl0ZW1Qcm9wZXJ0aWVzIHtcbiAgLyoqIEBjbGFzcyBBZGRFY29tbWVyY2VJdGVtUHJvcGVydGllcyAqL1xuICBwcm9kdWN0U0tVOiBzdHJpbmc7XG4gIC8qKiBAY2xhc3MgQWRkRWNvbW1lcmNlSXRlbVByb3BlcnRpZXMgKi9cbiAgcHJvZHVjdE5hbWU6IHN0cmluZztcbiAgLyoqIEBjbGFzcyBBZGRFY29tbWVyY2VJdGVtUHJvcGVydGllcyAqL1xuICBwcm9kdWN0Q2F0ZWdvcnk6IHN0cmluZztcbiAgLyoqIEBjbGFzcyBBZGRFY29tbWVyY2VJdGVtUHJvcGVydGllcyAqL1xuICBwcmljZTogc3RyaW5nO1xuICAvKiogQGNsYXNzIEFkZEVjb21tZXJjZUl0ZW1Qcm9wZXJ0aWVzICovXG4gIHF1YW50aXR5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2tFY29tbWVyY2VDYXJ0VXBkYXRlTWF0b21vUHJvcGVydGllcyB7XG4gIC8qKiBAY2xhc3MgVHJhY2tFY29tbWVyY2VDYXJ0VXBkYXRlTWF0b21vUHJvcGVydGllcyAqL1xuICBncmFuZFRvdGFsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2tFY29tbWVyY2VPcmRlck1hdG9tb1Byb3BlcnRpZXMge1xuICAvKiogQGNsYXNzIFRyYWNrRWNvbW1lcmNlT3JkZXJNYXRvbW9Qcm9wZXJ0aWVzICovXG4gIG9yZGVySWQ6IHN0cmluZztcbiAgLyoqIEBjbGFzcyBUcmFja0Vjb21tZXJjZU9yZGVyTWF0b21vUHJvcGVydGllcyAqL1xuICBncmFuZFRvdGFsOiBzdHJpbmc7XG4gIC8qKiBAY2xhc3MgVHJhY2tFY29tbWVyY2VPcmRlck1hdG9tb1Byb3BlcnRpZXMgKi9cbiAgc3ViVG90YWw6IHN0cmluZztcbiAgLyoqIEBjbGFzcyBUcmFja0Vjb21tZXJjZU9yZGVyTWF0b21vUHJvcGVydGllcyAqL1xuICB0YXg6IHN0cmluZztcbiAgLyoqIEBjbGFzcyBUcmFja0Vjb21tZXJjZU9yZGVyTWF0b21vUHJvcGVydGllcyAqL1xuICBzaGlwcGluZzogc3RyaW5nO1xuICAvKiogQGNsYXNzIFRyYWNrRWNvbW1lcmNlT3JkZXJNYXRvbW9Qcm9wZXJ0aWVzICovXG4gIGRpc2NvdW50OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2tMaW5rTWF0b21vUHJvcGVydGllcyB7XG4gIC8qKiBAY2xhc3MgVHJhY2tMaW5rTWF0b21vUHJvcGVydGllcyAqL1xuICB1cmw6IHN0cmluZztcbiAgLyoqIEBjbGFzcyBUcmFja0xpbmtNYXRvbW9Qcm9wZXJ0aWVzICovXG4gIGxpbmtUeXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2tHb2FsTWF0b21vUHJvcGVydGllcyB7XG4gIC8qKiBAY2xhc3MgVHJhY2tHb2FsTWF0b21vUHJvcGVydGllcyAqL1xuICBnb2FsSWQ6IHN0cmluZztcbiAgLyoqIEBjbGFzcyBUcmFja0dvYWxNYXRvbW9Qcm9wZXJ0aWVzICovXG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2tTaXRlU2VhcmNoTWF0b21vUHJvcGVydGllcyB7XG4gIC8qKiBAY2xhc3MgVHJhY2tTaXRlU2VhcmNoTWF0b21vUHJvcGVydGllcyAqL1xuICBrZXl3b3JkOiBzdHJpbmc7XG4gIC8qKiBAY2xhc3MgVHJhY2tTaXRlU2VhcmNoTWF0b21vUHJvcGVydGllcyAqL1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICAvKiogQGNsYXNzIFRyYWNrU2l0ZVNlYXJjaE1hdG9tb1Byb3BlcnRpZXMgKi9cbiAgc2VhcmNoQ291bnQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFja0V2ZW50TWF0b21vUHJvcGVydGllcyB7XG4gIC8qKiBAY2xhc3MgVHJhY2tFdmVudE1hdG9tb1Byb3BlcnRpZXMgKi9cbiAgY2F0ZWdvcnk6IHN0cmluZztcbiAgLyoqIEBjbGFzcyBUcmFja0V2ZW50TWF0b21vUHJvcGVydGllcyAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKiogQGNsYXNzIFRyYWNrRXZlbnRNYXRvbW9Qcm9wZXJ0aWVzICovXG4gIGxhYmVsPzogc3RyaW5nO1xuICAvKiogQGNsYXNzIFRyYWNrRXZlbnRNYXRvbW9Qcm9wZXJ0aWVzICovXG4gIHZhbHVlOiBudW1iZXIgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0Q3VzdG9tVmFyaWFibGVNYXRvbW9Qcm9wZXJ0aWVzIGV4dGVuZHMgRGltZW5zaW9uc01hdG9tb1Byb3BlcnRpZXMge1xuICAvKiogQGNsYXNzIFNldEN1c3RvbVZhcmlhYmxlTWF0b21vUHJvcGVydGllcyAqL1xuICBpbmRleDogbnVtYmVyO1xuICAvKiogQGNsYXNzIFNldEN1c3RvbVZhcmlhYmxlTWF0b21vUHJvcGVydGllcyAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBAY2xhc3MgU2V0Q3VzdG9tVmFyaWFibGVNYXRvbW9Qcm9wZXJ0aWVzICovXG4gIHZhbHVlOiBzdHJpbmc7XG4gIC8qKiBAY2xhc3MgU2V0Q3VzdG9tVmFyaWFibGVNYXRvbW9Qcm9wZXJ0aWVzICovXG4gIHNjb3BlOiBTY29wZU1hdG9tbztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZWxldGVDdXN0b21WYXJpYWJsZU1hdG9tb1Byb3BlcnRpZXMge1xuICAvKiogQGNsYXNzIERlbGV0ZUN1c3RvbVZhcmlhYmxlTWF0b21vUHJvcGVydGllcyAqL1xuICBpbmRleDogbnVtYmVyO1xuICAvKiogQGNsYXNzIERlbGV0ZUN1c3RvbVZhcmlhYmxlTWF0b21vUHJvcGVydGllcyAqL1xuICBzY29wZTogU2NvcGVNYXRvbW87XG59XG5cbmV4cG9ydCB0eXBlIEV2ZW50VHJhY2thY3Rpb25Qcm9wZXJ0aWVzID1cbiAgfCBTZXRFY29tbWVyY2VWaWV3TWF0b21vUHJvcGVydGllc1xuICB8IEFkZEVjb21tZXJjZUl0ZW1Qcm9wZXJ0aWVzXG4gIHwgVHJhY2tFY29tbWVyY2VDYXJ0VXBkYXRlTWF0b21vUHJvcGVydGllc1xuICB8IFRyYWNrRWNvbW1lcmNlT3JkZXJNYXRvbW9Qcm9wZXJ0aWVzXG4gIHwgVHJhY2tMaW5rTWF0b21vUHJvcGVydGllc1xuICB8IFRyYWNrR29hbE1hdG9tb1Byb3BlcnRpZXNcbiAgfCBUcmFja1NpdGVTZWFyY2hNYXRvbW9Qcm9wZXJ0aWVzXG4gIHwgVHJhY2tFdmVudE1hdG9tb1Byb3BlcnRpZXM7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQW5ndWxhcnRpY3MyTWF0b21vIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhbmd1bGFydGljczI6IEFuZ3VsYXJ0aWNzMikge1xuICAgIGlmICh0eXBlb2YgX3BhcSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnNvbGUud2FybignTWF0b21vIG5vdCBmb3VuZCcpO1xuICAgIH1cbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXRVc2VybmFtZS5zdWJzY3JpYmUoKHg6IHN0cmluZykgPT4gdGhpcy5zZXRVc2VybmFtZSh4KSk7XG4gICAgdGhpcy5hbmd1bGFydGljczIuc2V0VXNlclByb3BlcnRpZXMuc3Vic2NyaWJlKCh4OiBTZXRDdXN0b21WYXJpYWJsZU1hdG9tb1Byb3BlcnRpZXMpID0+XG4gICAgICB0aGlzLnNldFVzZXJQcm9wZXJ0aWVzKHgpLFxuICAgICk7XG4gIH1cblxuICBzdGFydFRyYWNraW5nKCk6IHZvaWQge1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLnBhZ2VUcmFja1xuICAgICAgLnBpcGUodGhpcy5hbmd1bGFydGljczIuZmlsdGVyRGV2ZWxvcGVyTW9kZSgpKVxuICAgICAgLnN1YnNjcmliZSh4ID0+IHRoaXMucGFnZVRyYWNrKHgucGF0aCkpO1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLmV2ZW50VHJhY2tcbiAgICAgIC5waXBlKHRoaXMuYW5ndWxhcnRpY3MyLmZpbHRlckRldmVsb3Blck1vZGUoKSlcbiAgICAgIC5zdWJzY3JpYmUoeCA9PiB0aGlzLmV2ZW50VHJhY2soeC5hY3Rpb24sIHgucHJvcGVydGllcykpO1xuICB9XG5cbiAgcGFnZVRyYWNrKHBhdGg6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCF3aW5kb3cubG9jYXRpb24ub3JpZ2luKSB7XG4gICAgICAgICh3aW5kb3cubG9jYXRpb24gYXMgYW55KS5vcmlnaW4gPVxuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArXG4gICAgICAgICAgJy8vJyArXG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lICtcbiAgICAgICAgICAod2luZG93LmxvY2F0aW9uLnBvcnQgPyAnOicgKyB3aW5kb3cubG9jYXRpb24ucG9ydCA6ICcnKTtcbiAgICAgIH1cbiAgICAgIF9wYXEucHVzaChbJ3NldERvY3VtZW50VGl0bGUnLCB0aXRsZSB8fCB3aW5kb3cuZG9jdW1lbnQudGl0bGVdKTtcbiAgICAgIF9wYXEucHVzaChbJ3NldEN1c3RvbVVybCcsIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyBwYXRoXSk7XG4gICAgICBfcGFxLnB1c2goWyd0cmFja1BhZ2VWaWV3J10pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXNldFVzZXIoKSB7XG4gICAgdHJ5IHtcbiAgICAgIF9wYXEucHVzaChbJ2FwcGVuZFRvVHJhY2tpbmdVcmwnLCAnbmV3X3Zpc2l0PTEnXSk7IC8vICgxKSBmb3JjZXMgYSBuZXcgdmlzaXRcbiAgICAgIF9wYXEucHVzaChbJ2RlbGV0ZUNvb2tpZXMnXSk7IC8vICgyKSBkZWxldGVzIGV4aXN0aW5nIHRyYWNraW5nIGNvb2tpZXMgdG8gc3RhcnQgdGhlIG5ldyB2aXNpdFxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBldmVudFRyYWNrKGFjdGlvbjogJ3NldEVjb21tZXJjZVZpZXcnLCBwcm9wZXJ0aWVzOiBTZXRFY29tbWVyY2VWaWV3TWF0b21vUHJvcGVydGllcyk6IHZvaWQ7XG4gIGV2ZW50VHJhY2soYWN0aW9uOiAnYWRkRWNvbW1lcmNlSXRlbScsIHByb3BlcnRpZXM6IEFkZEVjb21tZXJjZUl0ZW1Qcm9wZXJ0aWVzKTogdm9pZDtcbiAgZXZlbnRUcmFjayhcbiAgICBhY3Rpb246ICd0cmFja0Vjb21tZXJjZUNhcnRVcGRhdGUnLFxuICAgIHByb3BlcnRpZXM6IFRyYWNrRWNvbW1lcmNlQ2FydFVwZGF0ZU1hdG9tb1Byb3BlcnRpZXMsXG4gICk6IHZvaWQ7XG4gIGV2ZW50VHJhY2soYWN0aW9uOiAndHJhY2tFY29tbWVyY2VPcmRlcicsIHByb3BlcnRpZXM6IFRyYWNrRWNvbW1lcmNlT3JkZXJNYXRvbW9Qcm9wZXJ0aWVzKTogdm9pZDtcbiAgZXZlbnRUcmFjayhhY3Rpb246ICd0cmFja0xpbmsnLCBwcm9wZXJ0aWVzOiBUcmFja0xpbmtNYXRvbW9Qcm9wZXJ0aWVzKTogdm9pZDtcbiAgZXZlbnRUcmFjayhhY3Rpb246ICd0cmFja0dvYWwnLCBwcm9wZXJ0aWVzOiBUcmFja0dvYWxNYXRvbW9Qcm9wZXJ0aWVzKTogdm9pZDtcbiAgZXZlbnRUcmFjayhhY3Rpb246ICd0cmFja1NpdGVTZWFyY2gnLCBwcm9wZXJ0aWVzOiBUcmFja1NpdGVTZWFyY2hNYXRvbW9Qcm9wZXJ0aWVzKTogdm9pZDtcbiAgZXZlbnRUcmFjayhhY3Rpb246IHN0cmluZywgcHJvcGVydGllczogVHJhY2tFdmVudE1hdG9tb1Byb3BlcnRpZXMpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUcmFjayBhIGJhc2ljIGV2ZW50IGluIE1hdG9tbywgb3Igc2VuZCBhbiBlY29tbWVyY2UgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSBhY3Rpb24gQSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byB0aGUgdHlwZSBvZiBldmVudCB0aGF0IG5lZWRzIHRvIGJlIHRyYWNrZWQuXG4gICAqIEBwYXJhbSBwcm9wZXJ0aWVzIFRoZSBwcm9wZXJ0aWVzIHRoYXQgbmVlZCB0byBiZSBsb2dnZWQgd2l0aCB0aGUgZXZlbnQuXG4gICAqL1xuICBldmVudFRyYWNrKGFjdGlvbjogRXZlbnRUcmFja0FjdGlvbiwgcHJvcGVydGllcz86IEV2ZW50VHJhY2thY3Rpb25Qcm9wZXJ0aWVzKSB7XG4gICAgbGV0IHBhcmFtcyA9IFtdO1xuICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTZXRzIHRoZSBjdXJyZW50IHBhZ2UgdmlldyBhcyBhIHByb2R1Y3Qgb3IgY2F0ZWdvcnkgcGFnZSB2aWV3LiBXaGVuIHlvdSBjYWxsXG4gICAgICAgKiBzZXRFY29tbWVyY2VWaWV3IGl0IG11c3QgYmUgZm9sbG93ZWQgYnkgYSBjYWxsIHRvIHRyYWNrUGFnZVZpZXcgdG8gcmVjb3JkIHRoZSBwcm9kdWN0IG9yXG4gICAgICAgKiBjYXRlZ29yeSBwYWdlIHZpZXcuXG4gICAgICAgKlxuICAgICAgICogQGxpbmsgaHR0cHM6Ly9tYXRvbW8ub3JnL2RvY3MvZWNvbW1lcmNlLWFuYWx5dGljcy8jdHJhY2tpbmctcHJvZHVjdC1wYWdlLXZpZXdzLWNhdGVnb3J5LXBhZ2Utdmlld3Mtb3B0aW9uYWxcbiAgICAgICAqIEBsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1hdG9tby5vcmcvYXBpLXJlZmVyZW5jZS90cmFja2luZy1qYXZhc2NyaXB0I2Vjb21tZXJjZVxuICAgICAgICpcbiAgICAgICAqIEBwcm9wZXJ0eSBwcm9kdWN0U0tVIChyZXF1aXJlZCkgU0tVOiBQcm9kdWN0IHVuaXF1ZSBpZGVudGlmaWVyXG4gICAgICAgKiBAcHJvcGVydHkgcHJvZHVjdE5hbWUgKG9wdGlvbmFsKSBQcm9kdWN0IG5hbWVcbiAgICAgICAqIEBwcm9wZXJ0eSBjYXRlZ29yeU5hbWUgKG9wdGlvbmFsKSBQcm9kdWN0IGNhdGVnb3J5LCBvciBhcnJheSBvZiB1cCB0byA1IGNhdGVnb3JpZXNcbiAgICAgICAqIEBwcm9wZXJ0eSBwcmljZSAob3B0aW9uYWwpIFByb2R1Y3QgUHJpY2UgYXMgZGlzcGxheWVkIG9uIHRoZSBwYWdlXG4gICAgICAgKi9cbiAgICAgIGNhc2UgJ3NldEVjb21tZXJjZVZpZXcnOlxuICAgICAgICBwYXJhbXMgPSBbXG4gICAgICAgICAgJ3NldEVjb21tZXJjZVZpZXcnLFxuICAgICAgICAgIChwcm9wZXJ0aWVzIGFzIFNldEVjb21tZXJjZVZpZXdNYXRvbW9Qcm9wZXJ0aWVzKS5wcm9kdWN0U0tVLFxuICAgICAgICAgIChwcm9wZXJ0aWVzIGFzIFNldEVjb21tZXJjZVZpZXdNYXRvbW9Qcm9wZXJ0aWVzKS5wcm9kdWN0TmFtZSxcbiAgICAgICAgICAocHJvcGVydGllcyBhcyBTZXRFY29tbWVyY2VWaWV3TWF0b21vUHJvcGVydGllcykuY2F0ZWdvcnlOYW1lLFxuICAgICAgICAgIChwcm9wZXJ0aWVzIGFzIFNldEVjb21tZXJjZVZpZXdNYXRvbW9Qcm9wZXJ0aWVzKS5wcmljZSxcbiAgICAgICAgXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFkZHMgYSBwcm9kdWN0IGludG8gdGhlIGVjb21tZXJjZSBvcmRlci4gTXVzdCBiZSBjYWxsZWQgZm9yIGVhY2ggcHJvZHVjdCBpblxuICAgICAgICogdGhlIG9yZGVyLlxuICAgICAgICpcbiAgICAgICAqIEBsaW5rIGh0dHBzOi8vbWF0b21vLm9yZy9kb2NzL2Vjb21tZXJjZS1hbmFseXRpY3MvI3RyYWNraW5nLWVjb21tZXJjZS1vcmRlcnMtaXRlbXMtcHVyY2hhc2VkLXJlcXVpcmVkXG4gICAgICAgKiBAbGluayBodHRwczovL2RldmVsb3Blci5tYXRvbW8ub3JnL2FwaS1yZWZlcmVuY2UvdHJhY2tpbmctamF2YXNjcmlwdCNlY29tbWVyY2VcbiAgICAgICAqXG4gICAgICAgKiBAcHJvcGVydHkgcHJvZHVjdFNLVSAocmVxdWlyZWQpIFNLVTogUHJvZHVjdCB1bmlxdWUgaWRlbnRpZmllclxuICAgICAgICogQHByb3BlcnR5IHByb2R1Y3ROYW1lIChvcHRpb25hbCkgUHJvZHVjdCBuYW1lXG4gICAgICAgKiBAcHJvcGVydHkgY2F0ZWdvcnlOYW1lIChvcHRpb25hbCkgUHJvZHVjdCBjYXRlZ29yeSwgb3IgYXJyYXkgb2YgdXAgdG8gNSBjYXRlZ29yaWVzXG4gICAgICAgKiBAcHJvcGVydHkgcHJpY2UgKHJlY29tbWVuZGVkKSBQcm9kdWN0IHByaWNlXG4gICAgICAgKiBAcHJvcGVydHkgcXVhbnRpdHkgKG9wdGlvbmFsLCBkZWZhdWx0IHRvIDEpIFByb2R1Y3QgcXVhbnRpdHlcbiAgICAgICAqL1xuICAgICAgY2FzZSAnYWRkRWNvbW1lcmNlSXRlbSc6XG4gICAgICAgIHBhcmFtcyA9IFtcbiAgICAgICAgICAnYWRkRWNvbW1lcmNlSXRlbScsXG4gICAgICAgICAgKHByb3BlcnRpZXMgYXMgQWRkRWNvbW1lcmNlSXRlbVByb3BlcnRpZXMpLnByb2R1Y3RTS1UsXG4gICAgICAgICAgKHByb3BlcnRpZXMgYXMgQWRkRWNvbW1lcmNlSXRlbVByb3BlcnRpZXMpLnByb2R1Y3ROYW1lLFxuICAgICAgICAgIChwcm9wZXJ0aWVzIGFzIEFkZEVjb21tZXJjZUl0ZW1Qcm9wZXJ0aWVzKS5wcm9kdWN0Q2F0ZWdvcnksXG4gICAgICAgICAgKHByb3BlcnRpZXMgYXMgQWRkRWNvbW1lcmNlSXRlbVByb3BlcnRpZXMpLnByaWNlLFxuICAgICAgICAgIChwcm9wZXJ0aWVzIGFzIEFkZEVjb21tZXJjZUl0ZW1Qcm9wZXJ0aWVzKS5xdWFudGl0eSxcbiAgICAgICAgXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRyYWNrcyBhIHNob3BwaW5nIGNhcnQuIENhbGwgdGhpcyBqYXZhc2NyaXB0IGZ1bmN0aW9uIGV2ZXJ5IHRpbWUgYSB1c2VyIGlzXG4gICAgICAgKiBhZGRpbmcsIHVwZGF0aW5nIG9yIGRlbGV0aW5nIGEgcHJvZHVjdCBmcm9tIHRoZSBjYXJ0LlxuICAgICAgICpcbiAgICAgICAqIEBsaW5rIGh0dHBzOi8vbWF0b21vLm9yZy9kb2NzL2Vjb21tZXJjZS1hbmFseXRpY3MvI3RyYWNraW5nLWFkZC10by1jYXJ0LWl0ZW1zLWFkZGVkLXRvLXRoZS1jYXJ0LW9wdGlvbmFsXG4gICAgICAgKiBAbGluayBodHRwczovL2RldmVsb3Blci5tYXRvbW8ub3JnL2FwaS1yZWZlcmVuY2UvdHJhY2tpbmctamF2YXNjcmlwdCNlY29tbWVyY2VcbiAgICAgICAqXG4gICAgICAgKiBAcHJvcGVydHkgZ3JhbmRUb3RhbCAocmVxdWlyZWQpIENhcnQgYW1vdW50XG4gICAgICAgKi9cbiAgICAgIGNhc2UgJ3RyYWNrRWNvbW1lcmNlQ2FydFVwZGF0ZSc6XG4gICAgICAgIHBhcmFtcyA9IFtcbiAgICAgICAgICAndHJhY2tFY29tbWVyY2VDYXJ0VXBkYXRlJyxcbiAgICAgICAgICAocHJvcGVydGllcyBhcyBUcmFja0Vjb21tZXJjZUNhcnRVcGRhdGVNYXRvbW9Qcm9wZXJ0aWVzKS5ncmFuZFRvdGFsLFxuICAgICAgICBdO1xuICAgICAgICBicmVhaztcblxuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVHJhY2tzIGFuIEVjb21tZXJjZSBvcmRlciwgaW5jbHVkaW5nIGFueSBlY29tbWVyY2UgaXRlbSBwcmV2aW91c2x5IGFkZGVkIHRvXG4gICAgICAgKiB0aGUgb3JkZXIuIG9yZGVySWQgYW5kIGdyYW5kVG90YWwgKGllLiByZXZlbnVlKSBhcmUgcmVxdWlyZWQgcGFyYW1ldGVycy5cbiAgICAgICAqXG4gICAgICAgKiBAbGluayBodHRwczovL21hdG9tby5vcmcvZG9jcy9lY29tbWVyY2UtYW5hbHl0aWNzLyN0cmFja2luZy1lY29tbWVyY2Utb3JkZXJzLWl0ZW1zLXB1cmNoYXNlZC1yZXF1aXJlZFxuICAgICAgICogQGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubWF0b21vLm9yZy9hcGktcmVmZXJlbmNlL3RyYWNraW5nLWphdmFzY3JpcHQjZWNvbW1lcmNlXG4gICAgICAgKlxuICAgICAgICogQHByb3BlcnR5IG9yZGVySWQgKHJlcXVpcmVkKSBVbmlxdWUgT3JkZXIgSURcbiAgICAgICAqIEBwcm9wZXJ0eSBncmFuZFRvdGFsIChyZXF1aXJlZCkgT3JkZXIgUmV2ZW51ZSBncmFuZCB0b3RhbCAoaW5jbHVkZXMgdGF4LCBzaGlwcGluZywgYW5kIHN1YnRyYWN0ZWQgZGlzY291bnQpXG4gICAgICAgKiBAcHJvcGVydHkgc3ViVG90YWwgKG9wdGlvbmFsKSBPcmRlciBzdWIgdG90YWwgKGV4Y2x1ZGVzIHNoaXBwaW5nKVxuICAgICAgICogQHByb3BlcnR5IHRheCAob3B0aW9uYWwpIFRheCBhbW91bnRcbiAgICAgICAqIEBwcm9wZXJ0eSBzaGlwcGluZyAob3B0aW9uYWwpIFNoaXBwaW5nIGFtb3VudFxuICAgICAgICogQHByb3BlcnR5IGRpc2NvdW50IChvcHRpb25hbCkgRGlzY291bnQgb2ZmZXJlZCAoc2V0IHRvIGZhbHNlIGZvciB1bnNwZWNpZmllZCBwYXJhbWV0ZXIpXG4gICAgICAgKi9cbiAgICAgIGNhc2UgJ3RyYWNrRWNvbW1lcmNlT3JkZXInOlxuICAgICAgICBwYXJhbXMgPSBbXG4gICAgICAgICAgJ3RyYWNrRWNvbW1lcmNlT3JkZXInLFxuICAgICAgICAgIChwcm9wZXJ0aWVzIGFzIFRyYWNrRWNvbW1lcmNlT3JkZXJNYXRvbW9Qcm9wZXJ0aWVzKS5vcmRlcklkLFxuICAgICAgICAgIChwcm9wZXJ0aWVzIGFzIFRyYWNrRWNvbW1lcmNlT3JkZXJNYXRvbW9Qcm9wZXJ0aWVzKS5ncmFuZFRvdGFsLFxuICAgICAgICAgIChwcm9wZXJ0aWVzIGFzIFRyYWNrRWNvbW1lcmNlT3JkZXJNYXRvbW9Qcm9wZXJ0aWVzKS5zdWJUb3RhbCxcbiAgICAgICAgICAocHJvcGVydGllcyBhcyBUcmFja0Vjb21tZXJjZU9yZGVyTWF0b21vUHJvcGVydGllcykudGF4LFxuICAgICAgICAgIChwcm9wZXJ0aWVzIGFzIFRyYWNrRWNvbW1lcmNlT3JkZXJNYXRvbW9Qcm9wZXJ0aWVzKS5zaGlwcGluZyxcbiAgICAgICAgICAocHJvcGVydGllcyBhcyBUcmFja0Vjb21tZXJjZU9yZGVyTWF0b21vUHJvcGVydGllcykuZGlzY291bnQsXG4gICAgICAgIF07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUbyBtYW51YWxseSB0cmlnZ2VyIGFuIG91dGxpbmtcbiAgICAgICAqXG4gICAgICAgKiBAbGluayBodHRwczovL21hdG9tby5vcmcvZG9jcy90cmFja2luZy1nb2Fscy13ZWItYW5hbHl0aWNzL1xuICAgICAgICogQGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubWF0b21vLm9yZy9ndWlkZXMvdHJhY2tpbmctamF2YXNjcmlwdC1ndWlkZSN0cmFja2luZy1hLWNsaWNrLWFzLWFuLW91dGxpbmstdmlhLWNzcy1vci1qYXZhc2NyaXB0XG4gICAgICAgKlxuICAgICAgICogQHByb3BlcnR5IHVybCAocmVxdWlyZWQpIGxpbmsgdXJsXG4gICAgICAgKiBAcHJvcGVydHkgbGlua1R5cGUgKG9wdGlvbmFsKSB0eXBlIG9mIGxpbmtcbiAgICAgICAqL1xuICAgICAgY2FzZSAndHJhY2tMaW5rJzpcbiAgICAgICAgcGFyYW1zID0gW1xuICAgICAgICAgICd0cmFja0xpbmsnLFxuICAgICAgICAgIChwcm9wZXJ0aWVzIGFzIFRyYWNrTGlua01hdG9tb1Byb3BlcnRpZXMpLnVybCxcbiAgICAgICAgICAocHJvcGVydGllcyBhcyBUcmFja0xpbmtNYXRvbW9Qcm9wZXJ0aWVzKS5saW5rVHlwZSxcbiAgICAgICAgXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRyYWNrcyBhbiBFY29tbWVyY2UgZ29hbFxuICAgICAgICpcbiAgICAgICAqIEBsaW5rIGh0dHBzOi8vbWF0b21vLm9yZy9kb2NzL3RyYWNraW5nLWdvYWxzLXdlYi1hbmFseXRpY3MvXG4gICAgICAgKiBAbGluayBodHRwczovL2RldmVsb3Blci5tYXRvbW8ub3JnL2d1aWRlcy90cmFja2luZy1qYXZhc2NyaXB0LWd1aWRlI21hbnVhbGx5LXRyaWdnZXItZ29hbC1jb252ZXJzaW9uc1xuICAgICAgICpcbiAgICAgICAqIEBwcm9wZXJ0eSBnb2FsSWQgKHJlcXVpcmVkKSBVbmlxdWUgR29hbCBJRFxuICAgICAgICogQHByb3BlcnR5IHZhbHVlIChvcHRpb25hbCkgcGFzc2VkIHRvIGdvYWwgdHJhY2tpbmdcbiAgICAgICAqL1xuICAgICAgY2FzZSAndHJhY2tHb2FsJzpcbiAgICAgICAgcGFyYW1zID0gW1xuICAgICAgICAgICd0cmFja0dvYWwnLFxuICAgICAgICAgIChwcm9wZXJ0aWVzIGFzIFRyYWNrR29hbE1hdG9tb1Byb3BlcnRpZXMpLmdvYWxJZCxcbiAgICAgICAgICAocHJvcGVydGllcyBhcyBUcmFja0dvYWxNYXRvbW9Qcm9wZXJ0aWVzKS52YWx1ZSxcbiAgICAgICAgXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRyYWNrcyBhIHNpdGUgc2VhcmNoXG4gICAgICAgKlxuICAgICAgICogQGxpbmsgaHR0cHM6Ly9tYXRvbW8ub3JnL2RvY3Mvc2l0ZS1zZWFyY2gvXG4gICAgICAgKiBAbGluayBodHRwczovL2RldmVsb3Blci5tYXRvbW8ub3JnL2d1aWRlcy90cmFja2luZy1qYXZhc2NyaXB0LWd1aWRlI2ludGVybmFsLXNlYXJjaC10cmFja2luZ1xuICAgICAgICpcbiAgICAgICAqIEBwcm9wZXJ0eSBrZXl3b3JkIChyZXF1aXJlZCkgS2V5d29yZCBzZWFyY2hlZCBmb3JcbiAgICAgICAqIEBwcm9wZXJ0eSBjYXRlZ29yeSAob3B0aW9uYWwpIFNlYXJjaCBjYXRlZ29yeVxuICAgICAgICogQHByb3BlcnR5IHNlYXJjaENvdW50IChvcHRpb25hbCkgTnVtYmVyIG9mIHJlc3VsdHNcbiAgICAgICAqL1xuICAgICAgY2FzZSAndHJhY2tTaXRlU2VhcmNoJzpcbiAgICAgICAgcGFyYW1zID0gW1xuICAgICAgICAgICd0cmFja1NpdGVTZWFyY2gnLFxuICAgICAgICAgIChwcm9wZXJ0aWVzIGFzIFRyYWNrU2l0ZVNlYXJjaE1hdG9tb1Byb3BlcnRpZXMpLmtleXdvcmQsXG4gICAgICAgICAgKHByb3BlcnRpZXMgYXMgVHJhY2tTaXRlU2VhcmNoTWF0b21vUHJvcGVydGllcykuY2F0ZWdvcnksXG4gICAgICAgICAgKHByb3BlcnRpZXMgYXMgVHJhY2tTaXRlU2VhcmNoTWF0b21vUHJvcGVydGllcykuc2VhcmNoQ291bnQsXG4gICAgICAgIF07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBMb2dzIGFuIGV2ZW50IHdpdGggYW4gZXZlbnQgY2F0ZWdvcnkgKFZpZGVvcywgTXVzaWMsIEdhbWVzLi4uKSwgYW4gZXZlbnRcbiAgICAgICAqIGFjdGlvbiAoUGxheSwgUGF1c2UsIER1cmF0aW9uLCBBZGQgUGxheWxpc3QsIERvd25sb2FkZWQsIENsaWNrZWQuLi4pLCBhbmQgYW4gb3B0aW9uYWxcbiAgICAgICAqIGV2ZW50IG5hbWUgYW5kIG9wdGlvbmFsIG51bWVyaWMgdmFsdWUuXG4gICAgICAgKlxuICAgICAgICogQGxpbmsgaHR0cHM6Ly9tYXRvbW8ub3JnL2RvY3MvZXZlbnQtdHJhY2tpbmcvXG4gICAgICAgKiBAbGluayBodHRwczovL2RldmVsb3Blci5tYXRvbW8ub3JnL2FwaS1yZWZlcmVuY2UvdHJhY2tpbmctamF2YXNjcmlwdCN1c2luZy10aGUtdHJhY2tlci1vYmplY3RcbiAgICAgICAqXG4gICAgICAgKiBAcHJvcGVydHkgY2F0ZWdvcnlcbiAgICAgICAqIEBwcm9wZXJ0eSBhY3Rpb25cbiAgICAgICAqIEBwcm9wZXJ0eSBuYW1lIChvcHRpb25hbCwgcmVjb21tZW5kZWQpXG4gICAgICAgKiBAcHJvcGVydHkgdmFsdWUgKG9wdGlvbmFsKVxuICAgICAgICovXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBQQVEgcmVxdWlyZXMgdGhhdCBldmVudFZhbHVlIGJlIGFuIGludGVnZXIsIHNlZTogaHR0cDovL21hdG9tby5vcmcvZG9jcy9ldmVudC10cmFja2luZ1xuICAgICAgICBpZiAoKHByb3BlcnRpZXMgYXMgVHJhY2tFdmVudE1hdG9tb1Byb3BlcnRpZXMpLnZhbHVlKSB7XG4gICAgICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQoKHByb3BlcnRpZXMgYXMgVHJhY2tFdmVudE1hdG9tb1Byb3BlcnRpZXMpLnZhbHVlIGFzIGFueSwgMTApO1xuICAgICAgICAgIChwcm9wZXJ0aWVzIGFzIFRyYWNrRXZlbnRNYXRvbW9Qcm9wZXJ0aWVzKS52YWx1ZSA9IGlzTmFOKHBhcnNlZCkgPyAwIDogcGFyc2VkO1xuICAgICAgICB9XG5cbiAgICAgICAgcGFyYW1zID0gW1xuICAgICAgICAgICd0cmFja0V2ZW50JyxcbiAgICAgICAgICAocHJvcGVydGllcyBhcyBUcmFja0V2ZW50TWF0b21vUHJvcGVydGllcykuY2F0ZWdvcnksXG4gICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgIChwcm9wZXJ0aWVzIGFzIFRyYWNrRXZlbnRNYXRvbW9Qcm9wZXJ0aWVzKS5uYW1lIHx8XG4gICAgICAgICAgICAocHJvcGVydGllcyBhcyBUcmFja0V2ZW50TWF0b21vUHJvcGVydGllcykubGFiZWwsIC8vIENoYW5nZWQgaW4gZmF2b3VyIG9mIE1hdG9tbyBkb2N1bWVudGF0aW9uLiBBZGRlZCBmYWxsYmFjayBzbyBpdCdzIGJhY2t3YXJkcyBjb21wYXRpYmxlLlxuICAgICAgICAgIChwcm9wZXJ0aWVzIGFzIFRyYWNrRXZlbnRNYXRvbW9Qcm9wZXJ0aWVzKS52YWx1ZSxcbiAgICAgICAgXTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIF9wYXEucHVzaChwYXJhbXMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRVc2VybmFtZSh1c2VySWQ6IHN0cmluZyB8IGJvb2xlYW4pIHtcbiAgICB0cnkge1xuICAgICAgX3BhcS5wdXNoKFsnc2V0VXNlcklkJywgdXNlcklkXSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGN1c3RvbSBkaW1lbnNpb25zIGlmIGF0IGxlYXN0IG9uZSBwcm9wZXJ0eSBoYXMgdGhlIGtleSBcImRpbWVuc2lvbjxuPlwiLFxuICAgKiBlLmcuIGRpbWVuc2lvbjEwLiBJZiB0aGVyZSBhcmUgY3VzdG9tIGRpbWVuc2lvbnMsIGFueSBvdGhlciBwcm9wZXJ0eSBpcyBpZ25vcmVkLlxuICAgKlxuICAgKiBJZiB0aGVyZSBhcmUgbm8gY3VzdG9tIGRpbWVuc2lvbnMgaW4gdGhlIGdpdmVuIHByb3BlcnRpZXMgb2JqZWN0LCB0aGUgcHJvcGVydGllc1xuICAgKiBvYmplY3QgaXMgc2F2ZWQgYXMgYSBjdXN0b20gdmFyaWFibGUuXG4gICAqXG4gICAqIElmIGluIGRvdWJ0LCBwcmVmZXIgY3VzdG9tIGRpbWVuc2lvbnMuXG4gICAqIEBsaW5rIGh0dHBzOi8vbWF0b21vLm9yZy9kb2NzL2N1c3RvbS12YXJpYWJsZXMvXG4gICAqL1xuICBzZXRVc2VyUHJvcGVydGllcyhwcm9wZXJ0aWVzOiBTZXRDdXN0b21WYXJpYWJsZU1hdG9tb1Byb3BlcnRpZXMpIHtcbiAgICBjb25zdCBkaW1lbnNpb25zID0gdGhpcy5zZXRDdXN0b21EaW1lbnNpb25zKHByb3BlcnRpZXMpO1xuICAgIHRyeSB7XG4gICAgICBpZiAoZGltZW5zaW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgX3BhcS5wdXNoKFtcbiAgICAgICAgICAnc2V0Q3VzdG9tVmFyaWFibGUnLFxuICAgICAgICAgIHByb3BlcnRpZXMuaW5kZXgsXG4gICAgICAgICAgcHJvcGVydGllcy5uYW1lLFxuICAgICAgICAgIHByb3BlcnRpZXMudmFsdWUsXG4gICAgICAgICAgcHJvcGVydGllcy5zY29wZSxcbiAgICAgICAgXSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB5b3UgY3JlYXRlZCBhIGN1c3RvbSB2YXJpYWJsZSBhbmQgdGhlbiBkZWNpZGUgdG8gcmVtb3ZlIHRoaXMgdmFyaWFibGUgZnJvbVxuICAgKiBhIHZpc2l0IG9yIHBhZ2UgdmlldywgeW91IGNhbiB1c2UgZGVsZXRlQ3VzdG9tVmFyaWFibGUuXG4gICAqXG4gICAqIEBsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1hdG9tby5vcmcvZ3VpZGVzL3RyYWNraW5nLWphdmFzY3JpcHQtZ3VpZGUjZGVsZXRpbmctYS1jdXN0b20tdmFyaWFibGVcbiAgICovXG4gIGRlbGV0ZWRVc2VyUHJvcGVydGllcyhwcm9wZXJ0aWVzOiBEZWxldGVDdXN0b21WYXJpYWJsZU1hdG9tb1Byb3BlcnRpZXMpIHtcbiAgICB0cnkge1xuICAgICAgX3BhcS5wdXNoKFsnZGVsZXRlQ3VzdG9tVmFyaWFibGUnLCBwcm9wZXJ0aWVzLmluZGV4LCBwcm9wZXJ0aWVzLnNjb3BlXSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3VzdG9tRGltZW5zaW9ucyhwcm9wZXJ0aWVzOiBTZXRDdXN0b21WYXJpYWJsZU1hdG9tb1Byb3BlcnRpZXMpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZGltZW5zaW9uUmVnZXg6IFJlZ0V4cCA9IC9kaW1lbnNpb25bMS05XVxcZCovO1xuICAgIGNvbnN0IGRpbWVuc2lvbnMgPSBPYmplY3Qua2V5cyhwcm9wZXJ0aWVzKS5maWx0ZXIoa2V5ID0+IGRpbWVuc2lvblJlZ2V4LmV4ZWMoa2V5KSk7XG4gICAgZGltZW5zaW9ucy5mb3JFYWNoKGRpbWVuc2lvbiA9PiB7XG4gICAgICBjb25zdCBudW1iZXIgPSBOdW1iZXIoZGltZW5zaW9uLnN1YnN0cig5KSk7XG4gICAgICBfcGFxLnB1c2goWydzZXRDdXN0b21EaW1lbnNpb24nLCBudW1iZXIsIHByb3BlcnRpZXNbZGltZW5zaW9uXV0pO1xuICAgIH0pO1xuICAgIHJldHVybiBkaW1lbnNpb25zO1xuICB9XG59XG4iXX0=
|
@@ -1,111 +0,0 @@
|
|
1
|
-
import { Injectable } from '@angular/core';
|
2
|
-
import { Angulartics2 } from '../../angulartics2-core';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
import * as i1 from "../../angulartics2-core";
|
5
|
-
export class Angulartics2Mixpanel {
|
6
|
-
constructor(angulartics2) {
|
7
|
-
this.angulartics2 = angulartics2;
|
8
|
-
this.angulartics2.setUsername.subscribe((x) => this.setUsername(x));
|
9
|
-
this.angulartics2.setUserProperties.subscribe(x => this.setUserProperties(x));
|
10
|
-
this.angulartics2.setUserPropertiesOnce.subscribe(x => this.setUserPropertiesOnce(x));
|
11
|
-
this.angulartics2.setSuperProperties.subscribe(x => this.setSuperProperties(x));
|
12
|
-
this.angulartics2.setSuperPropertiesOnce.subscribe(x => this.setSuperPropertiesOnce(x));
|
13
|
-
this.angulartics2.setAlias.subscribe(x => this.setAlias(x));
|
14
|
-
}
|
15
|
-
startTracking() {
|
16
|
-
this.angulartics2.pageTrack
|
17
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
18
|
-
.subscribe(x => this.pageTrack(x.path));
|
19
|
-
this.angulartics2.eventTrack
|
20
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
21
|
-
.subscribe(x => this.eventTrack(x.action, x.properties));
|
22
|
-
}
|
23
|
-
pageTrack(path) {
|
24
|
-
try {
|
25
|
-
mixpanel.track('Page Viewed', { page: path });
|
26
|
-
}
|
27
|
-
catch (e) {
|
28
|
-
if (!(e instanceof ReferenceError)) {
|
29
|
-
throw e;
|
30
|
-
}
|
31
|
-
}
|
32
|
-
}
|
33
|
-
eventTrack(action, properties) {
|
34
|
-
try {
|
35
|
-
mixpanel.track(action, properties);
|
36
|
-
}
|
37
|
-
catch (e) {
|
38
|
-
if (!(e instanceof ReferenceError)) {
|
39
|
-
throw e;
|
40
|
-
}
|
41
|
-
}
|
42
|
-
}
|
43
|
-
setUsername(userId) {
|
44
|
-
try {
|
45
|
-
mixpanel.identify(userId);
|
46
|
-
}
|
47
|
-
catch (e) {
|
48
|
-
if (!(e instanceof ReferenceError)) {
|
49
|
-
throw e;
|
50
|
-
}
|
51
|
-
}
|
52
|
-
}
|
53
|
-
setUserProperties(properties) {
|
54
|
-
try {
|
55
|
-
mixpanel.people.set(properties);
|
56
|
-
}
|
57
|
-
catch (e) {
|
58
|
-
if (!(e instanceof ReferenceError)) {
|
59
|
-
throw e;
|
60
|
-
}
|
61
|
-
}
|
62
|
-
}
|
63
|
-
setUserPropertiesOnce(properties) {
|
64
|
-
try {
|
65
|
-
mixpanel.people.set_once(properties);
|
66
|
-
}
|
67
|
-
catch (e) {
|
68
|
-
if (!(e instanceof ReferenceError)) {
|
69
|
-
throw e;
|
70
|
-
}
|
71
|
-
}
|
72
|
-
}
|
73
|
-
setSuperProperties(properties) {
|
74
|
-
try {
|
75
|
-
mixpanel.register(properties);
|
76
|
-
}
|
77
|
-
catch (e) {
|
78
|
-
if (!(e instanceof ReferenceError)) {
|
79
|
-
throw e;
|
80
|
-
}
|
81
|
-
}
|
82
|
-
}
|
83
|
-
setSuperPropertiesOnce(properties) {
|
84
|
-
try {
|
85
|
-
mixpanel.register_once(properties);
|
86
|
-
}
|
87
|
-
catch (e) {
|
88
|
-
if (!(e instanceof ReferenceError)) {
|
89
|
-
throw e;
|
90
|
-
}
|
91
|
-
}
|
92
|
-
}
|
93
|
-
setAlias(alias) {
|
94
|
-
try {
|
95
|
-
mixpanel.alias(alias);
|
96
|
-
}
|
97
|
-
catch (e) {
|
98
|
-
if (!(e instanceof ReferenceError)) {
|
99
|
-
throw e;
|
100
|
-
}
|
101
|
-
}
|
102
|
-
}
|
103
|
-
}
|
104
|
-
Angulartics2Mixpanel.ɵprov = i0.ɵɵdefineInjectable({ factory: function Angulartics2Mixpanel_Factory() { return new Angulartics2Mixpanel(i0.ɵɵinject(i1.Angulartics2)); }, token: Angulartics2Mixpanel, providedIn: "root" });
|
105
|
-
Angulartics2Mixpanel.decorators = [
|
106
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
107
|
-
];
|
108
|
-
Angulartics2Mixpanel.ctorParameters = () => [
|
109
|
-
{ type: Angulartics2 }
|
110
|
-
];
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4cGFuZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Byb3ZpZGVycy9taXhwYW5lbC9taXhwYW5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBS3ZELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFBb0IsWUFBMEI7UUFBMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDNUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVB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Q0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLElBQUk7WUFDRixRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3ZCO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksY0FBYyxDQUFDLEVBQUU7Z0JBQ2xDLE1BQU0sQ0FBQyxDQUFDO2FBQ1Q7U0FDRjtJQUNILENBQUM7Ozs7WUFsR0YsVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7O1lBSnpCLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFuZ3VsYXJ0aWNzMiB9IGZyb20gJy4uLy4uL2FuZ3VsYXJ0aWNzMi1jb3JlJztcblxuZGVjbGFyZSB2YXIgbWl4cGFuZWw6IGFueTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFydGljczJNaXhwYW5lbCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYW5ndWxhcnRpY3MyOiBBbmd1bGFydGljczIpIHtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXRVc2VybmFtZS5zdWJzY3JpYmUoKHg6IHN0cmluZykgPT4gdGhpcy5zZXRVc2VybmFtZSh4KSk7XG4gICAgdGhpcy5hbmd1bGFydGljczIuc2V0VXNlclByb3BlcnRpZXMuc3Vic2NyaWJlKHggPT4gdGhpcy5zZXRVc2VyUHJvcGVydGllcyh4KSk7XG4gICAgdGhpcy5hbmd1bGFydGljczIuc2V0VXNlclByb3BlcnRpZXNPbmNlLnN1YnNjcmliZSh4ID0+IHRoaXMuc2V0VXNlclByb3BlcnRpZXNPbmNlKHgpKTtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXRTdXBlclByb3BlcnRpZXMuc3Vic2NyaWJlKHggPT4gdGhpcy5zZXRTdXBlclByb3BlcnRpZXMoeCkpO1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLnNldFN1cGVyUHJvcGVydGllc09uY2Uuc3Vic2NyaWJlKHggPT4gdGhpcy5zZXRTdXBlclByb3BlcnRpZXNPbmNlKHgpKTtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXRBbGlhcy5zdWJzY3JpYmUoeCA9PiB0aGlzLnNldEFsaWFzKHgpKTtcbiAgfVxuXG4gIHN0YXJ0VHJhY2tpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5hbmd1bGFydGljczIucGFnZVRyYWNrXG4gICAgICAucGlwZSh0aGlzLmFuZ3VsYXJ0aWNzMi5maWx0ZXJEZXZlbG9wZXJNb2RlKCkpXG4gICAgICAuc3Vic2NyaWJlKHggPT4gdGhpcy5wYWdlVHJhY2soeC5wYXRoKSk7XG4gICAgdGhpcy5hbmd1bGFydGljczIuZXZlbnRUcmFja1xuICAgICAgLnBpcGUodGhpcy5hbmd1bGFydGljczIuZmlsdGVyRGV2ZWxvcGVyTW9kZSgpKVxuICAgICAgLnN1YnNjcmliZSh4ID0+IHRoaXMuZXZlbnRUcmFjayh4LmFjdGlvbiwgeC5wcm9wZXJ0aWVzKSk7XG4gIH1cblxuICBwYWdlVHJhY2socGF0aDogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIG1peHBhbmVsLnRyYWNrKCdQYWdlIFZpZXdlZCcsIHsgcGFnZTogcGF0aCB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoIShlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZXZlbnRUcmFjayhhY3Rpb246IHN0cmluZywgcHJvcGVydGllczogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIG1peHBhbmVsLnRyYWNrKGFjdGlvbiwgcHJvcGVydGllcyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFVzZXJuYW1lKHVzZXJJZDogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIG1peHBhbmVsLmlkZW50aWZ5KHVzZXJJZCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFVzZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICBtaXhwYW5lbC5wZW9wbGUuc2V0KHByb3BlcnRpZXMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRVc2VyUHJvcGVydGllc09uY2UocHJvcGVydGllczogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIG1peHBhbmVsLnBlb3BsZS5zZXRfb25jZShwcm9wZXJ0aWVzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoIShlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0U3VwZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICBtaXhwYW5lbC5yZWdpc3Rlcihwcm9wZXJ0aWVzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoIShlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0U3VwZXJQcm9wZXJ0aWVzT25jZShwcm9wZXJ0aWVzOiBhbnkpIHtcbiAgICB0cnkge1xuICAgICAgbWl4cGFuZWwucmVnaXN0ZXJfb25jZShwcm9wZXJ0aWVzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoIShlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0QWxpYXMoYWxpYXM6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICBtaXhwYW5lbC5hbGlhcyhhbGlhcyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
@@ -1,67 +0,0 @@
|
|
1
|
-
import { Injectable } from '@angular/core';
|
2
|
-
import { Angulartics2 } from '../../angulartics2-core';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
import * as i1 from "../../angulartics2-core";
|
5
|
-
export class Angulartics2Pyze {
|
6
|
-
constructor(angulartics2) {
|
7
|
-
this.angulartics2 = angulartics2;
|
8
|
-
this.angulartics2.setUsername.subscribe((x) => this.setUserId(x));
|
9
|
-
this.angulartics2.setUserProperties.subscribe(x => this.postTraits(x));
|
10
|
-
}
|
11
|
-
startTracking() {
|
12
|
-
this.angulartics2.pageTrack
|
13
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
14
|
-
.subscribe(x => this.pageTrack(x.path));
|
15
|
-
this.angulartics2.eventTrack
|
16
|
-
.pipe(this.angulartics2.filterDeveloperMode())
|
17
|
-
.subscribe(x => this.eventTrack(x.action, x.properties));
|
18
|
-
}
|
19
|
-
pageTrack(path) {
|
20
|
-
try {
|
21
|
-
Pyze.postPageView('Page Viewed', { page: path });
|
22
|
-
}
|
23
|
-
catch (e) {
|
24
|
-
if (!(e instanceof ReferenceError)) {
|
25
|
-
throw e;
|
26
|
-
}
|
27
|
-
}
|
28
|
-
}
|
29
|
-
eventTrack(action, properties) {
|
30
|
-
try {
|
31
|
-
PyzeEvents.postCustomEventWithAttributes(action, properties);
|
32
|
-
}
|
33
|
-
catch (e) {
|
34
|
-
if (!(e instanceof ReferenceError)) {
|
35
|
-
throw e;
|
36
|
-
}
|
37
|
-
}
|
38
|
-
}
|
39
|
-
setUserId(userId) {
|
40
|
-
try {
|
41
|
-
PyzeIdentity.setUserIdentifier(userId);
|
42
|
-
}
|
43
|
-
catch (e) {
|
44
|
-
if (!(e instanceof ReferenceError)) {
|
45
|
-
throw e;
|
46
|
-
}
|
47
|
-
}
|
48
|
-
}
|
49
|
-
postTraits(properties) {
|
50
|
-
try {
|
51
|
-
PyzeIdentity.postTraits(properties);
|
52
|
-
}
|
53
|
-
catch (e) {
|
54
|
-
if (!(e instanceof ReferenceError)) {
|
55
|
-
throw e;
|
56
|
-
}
|
57
|
-
}
|
58
|
-
}
|
59
|
-
}
|
60
|
-
Angulartics2Pyze.ɵprov = i0.ɵɵdefineInjectable({ factory: function Angulartics2Pyze_Factory() { return new Angulartics2Pyze(i0.ɵɵinject(i1.Angulartics2)); }, token: Angulartics2Pyze, providedIn: "root" });
|
61
|
-
Angulartics2Pyze.decorators = [
|
62
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
63
|
-
];
|
64
|
-
Angulartics2Pyze.ctorParameters = () => [
|
65
|
-
{ type: Angulartics2 }
|
66
|
-
];
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHl6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcHJvdmlkZXJzL3B5emUvcHl6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBT3ZELE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsWUFBb0IsWUFBMEI7UUFBMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDNUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVM7YUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzthQUM3QyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVTthQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2FBQzdDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVk7UUFDcEIsSUFBSTtZQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDbEQ7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxjQUFjLENBQUMsRUFBRTtnQkFDbEMsTUFBTSxDQUFDLENBQUM7YUFDVDtTQUNGO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFjLEVBQUUsVUFBZTtRQUN4QyxJQUFJO1lBQ0YsVUFBVSxDQUFDLDZCQUE2QixDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztTQUM5RDtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLGNBQWMsQ0FBQyxFQUFFO2dCQUNsQyxNQUFNLENBQUMsQ0FBQzthQUNUO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWM7UUFDdEIsSUFBSTtZQUNGLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN4QztRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLGNBQWMsQ0FBQyxFQUFFO2dCQUNsQyxNQUFNLENBQUMsQ0FBQzthQUNUO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLFVBQWtCO1FBQzNCLElBQUk7WUFDRixZQUFZLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3JDO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksY0FBYyxDQUFDLEVBQUU7Z0JBQ2xDLE1BQU0sQ0FBQyxDQUFDO2FBQ1Q7U0FDRjtJQUNILENBQUM7Ozs7WUF0REYsVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7O1lBTnpCLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFuZ3VsYXJ0aWNzMiB9IGZyb20gJy4uLy4uL2FuZ3VsYXJ0aWNzMi1jb3JlJztcblxuZGVjbGFyZSB2YXIgUHl6ZTogYW55O1xuZGVjbGFyZSB2YXIgUHl6ZUV2ZW50czogYW55O1xuZGVjbGFyZSB2YXIgUHl6ZUlkZW50aXR5OiBhbnk7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQW5ndWxhcnRpY3MyUHl6ZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYW5ndWxhcnRpY3MyOiBBbmd1bGFydGljczIpIHtcbiAgICB0aGlzLmFuZ3VsYXJ0aWNzMi5zZXRVc2VybmFtZS5zdWJzY3JpYmUoKHg6IHN0cmluZykgPT4gdGhpcy5zZXRVc2VySWQoeCkpO1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLnNldFVzZXJQcm9wZXJ0aWVzLnN1YnNjcmliZSh4ID0+IHRoaXMucG9zdFRyYWl0cyh4KSk7XG4gIH1cblxuICBzdGFydFRyYWNraW5nKCk6IHZvaWQge1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLnBhZ2VUcmFja1xuICAgICAgLnBpcGUodGhpcy5hbmd1bGFydGljczIuZmlsdGVyRGV2ZWxvcGVyTW9kZSgpKVxuICAgICAgLnN1YnNjcmliZSh4ID0+IHRoaXMucGFnZVRyYWNrKHgucGF0aCkpO1xuICAgIHRoaXMuYW5ndWxhcnRpY3MyLmV2ZW50VHJhY2tcbiAgICAgIC5waXBlKHRoaXMuYW5ndWxhcnRpY3MyLmZpbHRlckRldmVsb3Blck1vZGUoKSlcbiAgICAgIC5zdWJzY3JpYmUoeCA9PiB0aGlzLmV2ZW50VHJhY2soeC5hY3Rpb24sIHgucHJvcGVydGllcykpO1xuICB9XG5cbiAgcGFnZVRyYWNrKHBhdGg6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBQeXplLnBvc3RQYWdlVmlldygnUGFnZSBWaWV3ZWQnLCB7IHBhZ2U6IHBhdGggfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGV2ZW50VHJhY2soYWN0aW9uOiBzdHJpbmcsIHByb3BlcnRpZXM6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICBQeXplRXZlbnRzLnBvc3RDdXN0b21FdmVudFdpdGhBdHRyaWJ1dGVzKGFjdGlvbiwgcHJvcGVydGllcyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFVzZXJJZCh1c2VySWQ6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBQeXplSWRlbnRpdHkuc2V0VXNlcklkZW50aWZpZXIodXNlcklkKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoIShlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcG9zdFRyYWl0cyhwcm9wZXJ0aWVzOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgUHl6ZUlkZW50aXR5LnBvc3RUcmFpdHMocHJvcGVydGllcyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKSkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|