@sunbird-cb/utils 1.0.4 → 1.0.5

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.
@@ -72,11 +72,26 @@ export var WsEvents;
72
72
  EnumTelemetrySubType["HeartBeat"] = "HeartBeat";
73
73
  EnumTelemetrySubType["Search"] = "Search";
74
74
  EnumTelemetrySubType["Feedback"] = "Feedback";
75
+ EnumTelemetrySubType["Impression"] = "Impression";
75
76
  })(EnumTelemetrySubType = WsEvents.EnumTelemetrySubType || (WsEvents.EnumTelemetrySubType = {}));
77
+ function ITelemetryContext() { }
78
+ WsEvents.ITelemetryContext = ITelemetryContext;
79
+ if (false) {
80
+ ITelemetryContext.prototype.pageId;
81
+ ITelemetryContext.prototype.module;
82
+ ITelemetryContext.prototype.pageIdExt;
83
+ }
84
+ function ITelemetryTabData() { }
85
+ WsEvents.ITelemetryTabData = ITelemetryTabData;
86
+ if (false) {
87
+ ITelemetryTabData.prototype.label;
88
+ ITelemetryTabData.prototype.index;
89
+ }
76
90
  function IWsEventTelemetry() { }
77
91
  WsEvents.IWsEventTelemetry = IWsEventTelemetry;
78
92
  if (false) {
79
93
  IWsEventTelemetry.prototype.eventSubType;
94
+ IWsEventTelemetry.prototype.context;
80
95
  }
81
96
  let EnumTelemetryPdfActivity;
82
97
  (function (EnumTelemetryPdfActivity) {
@@ -101,6 +116,7 @@ export var WsEvents;
101
116
  IWsEventTelemetryInteract.prototype.type;
102
117
  IWsEventTelemetryInteract.prototype.subType;
103
118
  IWsEventTelemetryInteract.prototype.object;
119
+ IWsEventTelemetryInteract.prototype.context;
104
120
  }
105
121
  function IWsEventTelemetryFeedback() { }
106
122
  WsEvents.IWsEventTelemetryFeedback = IWsEventTelemetryFeedback;
@@ -108,6 +124,15 @@ export var WsEvents;
108
124
  IWsEventTelemetryFeedback.prototype.type;
109
125
  IWsEventTelemetryFeedback.prototype.subType;
110
126
  IWsEventTelemetryFeedback.prototype.object;
127
+ IWsEventTelemetryFeedback.prototype.context;
128
+ }
129
+ function IWsEventTelemetryImpression() { }
130
+ WsEvents.IWsEventTelemetryImpression = IWsEventTelemetryImpression;
131
+ if (false) {
132
+ IWsEventTelemetryImpression.prototype.type;
133
+ IWsEventTelemetryImpression.prototype.subType;
134
+ IWsEventTelemetryImpression.prototype.object;
135
+ IWsEventTelemetryImpression.prototype.context;
111
136
  }
112
137
  function IWsEventTelemetrySearch() { }
113
138
  WsEvents.IWsEventTelemetrySearch = IWsEventTelemetrySearch;
@@ -159,5 +184,34 @@ export var WsEvents;
159
184
  IWsEventTelemetryMediaData.prototype.maxedSeekedTime;
160
185
  IWsEventTelemetryMediaData.prototype.activityStartedAt;
161
186
  }
187
+ let EnumTelemetrymodules;
188
+ (function (EnumTelemetrymodules) {
189
+ EnumTelemetrymodules["CONTENT"] = "content";
190
+ EnumTelemetrymodules["FEEDBACK"] = "feedback";
191
+ EnumTelemetrymodules["COURSE"] = "course";
192
+ EnumTelemetrymodules["PROGRAM"] = "program";
193
+ EnumTelemetrymodules["EXPLORE"] = "explore";
194
+ EnumTelemetrymodules["LEARN"] = "learn";
195
+ EnumTelemetrymodules["HOME"] = "home";
196
+ EnumTelemetrymodules["DASHBOARD"] = "dashboard";
197
+ EnumTelemetrymodules["SEARCH"] = "search";
198
+ EnumTelemetrymodules["DISCUSS"] = "discuss";
199
+ EnumTelemetrymodules["COMPETENCY"] = "competency";
200
+ EnumTelemetrymodules["EVENTS"] = "events";
201
+ EnumTelemetrymodules["CAREER"] = "career";
202
+ EnumTelemetrymodules["PROFILE"] = "profile";
203
+ EnumTelemetrymodules["NETWORK"] = "network";
204
+ EnumTelemetrymodules["SUPPORT"] = "support";
205
+ })(EnumTelemetrymodules = WsEvents.EnumTelemetrymodules || (WsEvents.EnumTelemetrymodules = {}));
206
+ let EnumInteractTypes;
207
+ (function (EnumInteractTypes) {
208
+ EnumInteractTypes["CLICK"] = "click";
209
+ })(EnumInteractTypes = WsEvents.EnumInteractTypes || (WsEvents.EnumInteractTypes = {}));
210
+ let EnumInteractSubTypes;
211
+ (function (EnumInteractSubTypes) {
212
+ EnumInteractSubTypes["COURSE_TAB"] = "course-tab";
213
+ EnumInteractSubTypes["CAREER_TAB"] = "career-tab";
214
+ EnumInteractSubTypes["PROFILE_EDIT_TAB"] = "profile-edit-tab";
215
+ })(EnumInteractSubTypes = WsEvents.EnumInteractSubTypes || (WsEvents.EnumInteractSubTypes = {}));
162
216
  })(WsEvents || (WsEvents = {}));
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQubW9kZWwuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3VuYmlyZC1jYi91dGlscy8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9ldmVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxNQUFNLEtBQVcsUUFBUSxDQXNKeEI7QUF0SkQsV0FBaUIsUUFBUTtJQUN2QixrQ0FJQzs7O1FBSEMsbUNBQWM7UUFDZCx5Q0FBa0I7UUFDbEIsNENBQXFCOztJQUV2QixnQ0FJQzs7O1FBSEMsaUNBQVk7UUFDWixvQ0FBZTtRQUNmLHFDQUFnQjs7SUFFbEIsSUFBWSxXQVFYO0lBUkQsV0FBWSxXQUFXO1FBQ3JCLGdDQUFpQixDQUFBO1FBQ2pCLHNDQUF1QixDQUFBO1FBQ3ZCLGdEQUFpQyxDQUFBO1FBQ2pDLGtGQUFtRSxDQUFBO1FBQ25FLG9DQUFxQixDQUFBO1FBQ3JCLDhDQUErQixDQUFBO1FBQy9CLHdEQUF5QyxDQUFBO0lBQzNDLENBQUMsRUFSVyxXQUFXLEdBQVgsb0JBQVcsS0FBWCxvQkFBVyxRQVF0QjtJQUNELElBQVksZUFNWDtJQU5ELFdBQVksZUFBZTtRQUN6QixnQ0FBYSxDQUFBO1FBQ2Isa0NBQWUsQ0FBQTtRQUNmLGdDQUFhLENBQUE7UUFDYiw4QkFBVyxDQUFBO1FBQ1gsa0NBQWUsQ0FBQTtJQUNqQixDQUFDLEVBTlcsZUFBZSxHQUFmLHdCQUFlLEtBQWYsd0JBQWUsUUFNMUI7SUFDQSxJQUFZLFlBSVg7SUFKRCxXQUFZLFlBQVk7UUFDdEIsbUNBQW1CLENBQUE7UUFDbkIsbUNBQW1CLENBQUE7UUFDbkIsbUNBQW1CLENBQUE7SUFDckIsQ0FBQyxFQUpXLFlBQVksR0FBWixxQkFBWSxLQUFaLHFCQUFZLFFBSXZCO0lBQ0YsSUFBWSxlQUdYO0lBSEQsV0FBWSxlQUFlO1FBQ3pCLGdDQUFhLENBQUE7UUFDYixvQ0FBaUIsQ0FBQTtJQUNuQixDQUFDLEVBSFcsZUFBZSxHQUFmLHdCQUFlLEtBQWYsd0JBQWUsUUFHMUI7SUFDRCxJQUFZLGVBR1g7SUFIRCxXQUFZLGVBQWU7UUFDekIsZ0NBQWEsQ0FBQTtRQUNiLGdDQUFhLENBQUE7SUFDZixDQUFDLEVBSFcsZUFBZSxHQUFmLHdCQUFlLEtBQWYsd0JBQWUsUUFHMUI7SUFDRCxJQUFZLHNCQUVYO0lBRkQsV0FBWSxzQkFBc0I7UUFDaEMsOENBQW9CLENBQUE7SUFDdEIsQ0FBQyxFQUZXLHNCQUFzQixHQUF0QiwrQkFBc0IsS0FBdEIsK0JBQXNCLFFBRWpDO0lBRUQsd0JBT0M7OztRQU5DLDhCQUFzQjtRQUN0QixrQ0FBOEI7UUFDOUIseUJBQXNEO1FBQ3RELHVCQUFVO1FBQ1YseUJBQU87UUFDUCxvQ0FBcUI7O0lBR3ZCLElBQVksb0JBU1g7SUFURCxXQUFZLG9CQUFvQjtRQUM5QixxQ0FBYSxDQUFBO1FBQ2IsNkNBQXFCLENBQUE7UUFDckIseUNBQWlCLENBQUE7UUFDakIsNkNBQXFCLENBQUE7UUFDckIsbURBQTJCLENBQUE7UUFDM0IsK0NBQXVCLENBQUE7UUFDdkIseUNBQWlCLENBQUE7UUFDakIsNkNBQXFCLENBQUE7SUFDdkIsQ0FBQyxFQVRXLG9CQUFvQixHQUFwQiw2QkFBb0IsS0FBcEIsNkJBQW9CLFFBUy9CO0lBRUQsZ0NBRUM7OztRQURDLHlDQUFrQzs7SUFJcEMsSUFBWSx3QkFNWDtJQU5ELFdBQVksd0JBQXdCO1FBQ2xDLHlEQUE2QixDQUFBO1FBQzdCLHlFQUE2QyxDQUFBO1FBQzdDLDZFQUFpRCxDQUFBO1FBQ2pELHVEQUEyQixDQUFBO1FBQzNCLHlDQUFhLENBQUE7SUFDZixDQUFDLEVBTlcsd0JBQXdCLEdBQXhCLGlDQUF3QixLQUF4QixpQ0FBd0IsUUFNbkM7SUFDRCx1Q0FNQzs7O1FBTEMsZ0RBQXNDO1FBQ3RDLCtDQUFtQjtRQUNuQiw2Q0FBaUI7UUFDakIscURBQThCO1FBQzlCLDBDQUFXOztJQUtiLHdDQUlDOzs7UUFIQyx5Q0FBWTtRQUNaLDRDQUFnQjtRQUNoQiwyQ0FBVzs7SUFHYix3Q0FJQzs7O1FBSEMseUNBQVk7UUFDWiw0Q0FBZ0I7UUFDaEIsMkNBQVc7O0lBR2Isc0NBT0M7OztRQU5DLHVDQUFZO1FBQ1osMENBQWdCO1FBQ2hCLHdDQUFjO1FBQ2QsMENBQWdCO1FBQ2hCLHVDQUFhO1FBQ2IseUNBQVk7O0lBRWQseUNBTUM7OztRQUxDLDBDQUFZO1FBR1osd0NBQVU7O0lBU1osSUFBWSwwQkFjWDtJQWRELFdBQVksMEJBQTBCO1FBQ3BDLCtDQUFpQixDQUFBO1FBQ2pCLCtDQUFpQixDQUFBO1FBQ2pCLCtDQUFpQixDQUFBO1FBQ2pCLDZDQUFlLENBQUE7UUFDZiw2REFBK0IsQ0FBQTtRQUMvQiwyQ0FBYSxDQUFBO1FBQ2IsK0NBQWlCLENBQUE7UUFDakIsNkVBQStDLENBQUE7UUFDL0MsMkVBQTZDLENBQUE7UUFDN0MsK0VBQWlELENBQUE7UUFDakQsMkZBQTZELENBQUE7UUFDN0QsK0ZBQWlFLENBQUE7UUFDakUsMkNBQWEsQ0FBQTtJQUNmLENBQUMsRUFkVywwQkFBMEIsR0FBMUIsbUNBQTBCLEtBQTFCLG1DQUEwQixRQWNyQztJQUNELElBQVksdUJBTVg7SUFORCxXQUFZLHVCQUF1QjtRQUNqQyw4Q0FBbUIsQ0FBQTtRQUNuQiw0Q0FBaUIsQ0FBQTtRQUNqQiwwQ0FBZSxDQUFBO1FBQ2Ysa0RBQXVCLENBQUE7UUFDdkIsc0RBQTJCLENBQUE7SUFDN0IsQ0FBQyxFQU5XLHVCQUF1QixHQUF2QixnQ0FBdUIsS0FBdkIsZ0NBQXVCLFFBTWxDO0lBQ0QseUNBT0M7OztRQU5DLGtEQUFxQztRQUNyQyxrREFBd0M7UUFDeEMsaURBQTBCO1FBQzFCLCtDQUF3QjtRQUN4QixxREFBdUI7UUFDdkIsdURBQStCOztBQUduQyxDQUFDLEVBdEpnQixRQUFRLEtBQVIsUUFBUSxRQXNKeEIiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuZXhwb3J0IG5hbWVzcGFjZSBXc0V2ZW50cyB7XHJcbiAgZXhwb3J0IGludGVyZmFjZSBJV3NFdmVudHNGcm9tV2lkZ2V0IHtcclxuICAgIHR5cGU6ICd3aWRnZXQnXHJcbiAgICB3aWRnZXRUeXBlOiBzdHJpbmdcclxuICAgIHdpZGdldFN1YlR5cGU6IHN0cmluZ1xyXG4gIH1cclxuICBleHBvcnQgaW50ZXJmYWNlIElXc0V2ZW50c0Zyb21QYWdlIHtcclxuICAgIHR5cGU6ICdwYWdlJ1xyXG4gICAgcGFnZVVybDogc3RyaW5nXHJcbiAgICBwYWdlVHlwZTogc3RyaW5nXHJcbiAgfVxyXG4gIGV4cG9ydCBlbnVtIFdzRXZlbnRUeXBlIHtcclxuICAgIEFjdGlvbiA9ICdBY3Rpb24nLFxyXG4gICAgVGVsZW1ldHJ5ID0gJ1RlbGVtZXRyeScsXHJcbiAgICBQYWdlTmF2aWdhdGlvbiA9ICdQYWdlTmF2aWdhdGlvbicsXHJcbiAgICBBY2Nlc3NSZXN0cmljdGVkQ29udGVudEFjY2Vzc2VkID0gJ0FjY2Vzc1Jlc3RyaWN0ZWRDb250ZW50QWNjZXNzZWQnLFxyXG4gICAgUGFnZVNsb3cgPSAnUGFnZVNsb3cnLFxyXG4gICAgRXJyb3JPY2N1cnJlZCA9ICdFcnJvck9jY3VycmVkJyxcclxuICAgIFdpZGdldFJlc29sdmVFcnJvciA9ICdXaWRnZXRSZXNvbHZlRXJyb3InLFxyXG4gIH1cclxuICBleHBvcnQgZW51bSBXc0V2ZW50TG9nTGV2ZWwge1xyXG4gICAgV2FybiA9ICdXYXJuJyxcclxuICAgIEVycm9yID0gJ0Vycm9yJyxcclxuICAgIEluZm8gPSAnSW5mbycsXHJcbiAgICBMb2cgPSAnTG9nJyxcclxuICAgIFRyYWNlID0gJ1RyYWNlJyxcclxuICB9XHJcbiAgIGV4cG9ydCBlbnVtIFdzQXVkaXRUeXBlcyB7XHJcbiAgICAgQ3JlYXRlZCA9ICdDcmVhdGVkJyxcclxuICAgICBVcGRhdGVkID0gJ1VwZGF0ZWQnLFxyXG4gICAgIERlbGV0ZWQgPSAnRGVsZXRlZCcsXHJcbiAgIH1cclxuICBleHBvcnQgZW51bSBXc1RpbWVTcGVudFR5cGUge1xyXG4gICAgUGFnZSA9ICdQYWdlJyxcclxuICAgIFBsYXllciA9ICdQbGF5ZXInLFxyXG4gIH1cclxuICBleHBvcnQgZW51bSBXc1RpbWVTcGVudE1vZGUge1xyXG4gICAgUGxheSA9ICdQbGF5JyxcclxuICAgIFZpZXcgPSAnVmlldycsXHJcbiAgfVxyXG4gIGV4cG9ydCBlbnVtIGV4dGVybmFsVGVsZW1ldHJ5cGRhdGEge1xyXG4gICAgUkJDUCA9ICdyYmNwLXdlYi11aScsXHJcbiAgfVxyXG5cclxuICBleHBvcnQgaW50ZXJmYWNlIElXc0V2ZW50czxUPiB7XHJcbiAgICBldmVudFR5cGU6IFdzRXZlbnRUeXBlXHJcbiAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50TG9nTGV2ZWxcclxuICAgIGZyb206IElXc0V2ZW50c0Zyb21XaWRnZXQgfCBJV3NFdmVudHNGcm9tUGFnZSB8IHN0cmluZ1xyXG4gICAgdG86IHN0cmluZ1xyXG4gICAgZGF0YTogVFxyXG4gICAgcGFzc1Rocm91Z2hEYXRhPzogYW55XHJcbiAgfVxyXG5cclxuICBleHBvcnQgZW51bSBFbnVtVGVsZW1ldHJ5U3ViVHlwZSB7XHJcbiAgICBJbml0ID0gJ0luaXQnLFxyXG4gICAgSW50ZXJhY3QgPSAnSW50ZXJhY3QnLFxyXG4gICAgTG9hZGVkID0gJ0xvYWRlZCcsXHJcbiAgICBVbmxvYWRlZCA9ICdVbmxvYWRlZCcsXHJcbiAgICBTdGF0ZUNoYW5nZSA9ICdTdGF0ZUNoYW5nZScsXHJcbiAgICBIZWFydEJlYXQgPSAnSGVhcnRCZWF0JyxcclxuICAgIFNlYXJjaCA9ICdTZWFyY2gnLFxyXG4gICAgRmVlZGJhY2sgPSAnRmVlZGJhY2snLFxyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGludGVyZmFjZSBJV3NFdmVudFRlbGVtZXRyeSB7XHJcbiAgICBldmVudFN1YlR5cGU6IEVudW1UZWxlbWV0cnlTdWJUeXBlXHJcbiAgfVxyXG5cclxuICAvLyBQREYgVGVsZW1ldHJ5IEV2ZW50XHJcbiAgZXhwb3J0IGVudW0gRW51bVRlbGVtZXRyeVBkZkFjdGl2aXR5IHtcclxuICAgIFBBR0VfQ0hBTkdFRCA9ICdQQUdFX0NIQU5HRUQnLFxyXG4gICAgRlVMTFNDUkVFTl9BQ1RJVkFURUQgPSAnRlVMTFNDUkVFTl9BQ1RJVkFURUQnLFxyXG4gICAgRlVMTFNDUkVFTl9ERUFDVElWQVRFRCA9ICdGVUxMU0NSRUVOX0RFQUNUSVZBVEVEJyxcclxuICAgIFpPT01fQ0hBTkdFID0gJ1pPT01fQ0hBTkdFJyxcclxuICAgIE5PTkUgPSAnTk9ORScsXHJcbiAgfVxyXG4gIGV4cG9ydCBpbnRlcmZhY2UgSVdzRXZlbnRUZWxlbWV0cnlQZGZEYXRhIGV4dGVuZHMgSVdzRXZlbnRUZWxlbWV0cnkge1xyXG4gICAgYWN0aXZpdHlUeXBlOiBFbnVtVGVsZW1ldHJ5UGRmQWN0aXZpdHlcclxuICAgIGN1cnJlbnRQYWdlOiBudW1iZXJcclxuICAgIHRvdGFsUGFnZTogbnVtYmVyXHJcbiAgICBhY3Rpdml0eVN0YXJ0ZWRBdDogRGF0ZSB8IG51bGxcclxuICAgIG9iamVjdDogYW55XHJcbiAgfVxyXG4gIGV4cG9ydCB0eXBlIFdzRXZlbnRUZWxlbWV0cnlQREYgPSBJV3NFdmVudHM8SVdzRXZlbnRUZWxlbWV0cnlQZGZEYXRhPlxyXG5cclxuICAvLyBJbnRlcmFjdCBUZWxlbWV0cnkgRXZlbnRcclxuICBleHBvcnQgaW50ZXJmYWNlIElXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3QgZXh0ZW5kcyBJV3NFdmVudFRlbGVtZXRyeSB7XHJcbiAgICB0eXBlOiBzdHJpbmdcclxuICAgIHN1YlR5cGU/OiBzdHJpbmdcclxuICAgIG9iamVjdDogYW55XHJcbiAgfVxyXG5cclxuICBleHBvcnQgaW50ZXJmYWNlIElXc0V2ZW50VGVsZW1ldHJ5RmVlZGJhY2sgZXh0ZW5kcyBJV3NFdmVudFRlbGVtZXRyeSB7XHJcbiAgICB0eXBlOiBzdHJpbmdcclxuICAgIHN1YlR5cGU/OiBzdHJpbmdcclxuICAgIG9iamVjdDogYW55XHJcbiAgfVxyXG5cclxuICBleHBvcnQgaW50ZXJmYWNlIElXc0V2ZW50VGVsZW1ldHJ5U2VhcmNoIGV4dGVuZHMgSVdzRXZlbnRUZWxlbWV0cnkge1xyXG4gICAgdHlwZTogc3RyaW5nXHJcbiAgICBzdWJUeXBlPzogc3RyaW5nXHJcbiAgICBxdWVyeT86IHN0cmluZ1xyXG4gICAgZmlsdGVycz86IHN0cmluZ1xyXG4gICAgc2l6ZT86IG51bWJlclxyXG4gICAgbG9jYWxlPzogYW55XHJcbiAgfVxyXG4gIGV4cG9ydCBpbnRlcmZhY2UgSVdzRXZlbnRUZWxlbWV0cnlIZWFydEJlYXQgZXh0ZW5kcyBJV3NFdmVudFRlbGVtZXRyeSB7XHJcbiAgICB0eXBlOiBzdHJpbmdcclxuICAgIC8vIHN1YlR5cGU/OiBzdHJpbmdcclxuICAgIC8vIG1vZGU6IHN0cmluZ1xyXG4gICAgaWQ6IHN0cmluZ1xyXG4gICAgLy8gbWltZVR5cGU6IHN0cmluZ1xyXG4gIH1cclxuICBleHBvcnQgdHlwZSBXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3QgPSBJV3NFdmVudHM8SVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD5cclxuICBleHBvcnQgdHlwZSBXc0V2ZW50VGVsZW1ldHJ5RmVlZGJhY2sgPSBJV3NFdmVudHM8SVdzRXZlbnRUZWxlbWV0cnlGZWVkYmFjaz5cclxuICBleHBvcnQgdHlwZSBXc0V2ZW50VGVsZW1ldHJ5U2VhcmNoID0gSVdzRXZlbnRzPElXc0V2ZW50VGVsZW1ldHJ5U2VhcmNoPlxyXG4gIGV4cG9ydCB0eXBlIFdzRXZlbnRUZWxlbWV0cnlIZWFydEJlYXQgPSBJV3NFdmVudHM8SVdzRXZlbnRUZWxlbWV0cnlIZWFydEJlYXQ+XHJcblxyXG4gIC8vIE11bHRpbWVkaWEgVGVsZW1ldHJ5IERhdGFcclxuICBleHBvcnQgZW51bSBFbnVtVGVsZW1ldHJ5TWVkaWFBY3Rpdml0eSB7XHJcbiAgICBQTEFZRUQgPSAnUExBWUVEJyxcclxuICAgIFBBVVNFRCA9ICdQQVVTRUQnLFxyXG4gICAgU0VFS0VEID0gJ1NFRUtFRCcsXHJcbiAgICBFTkRFRCA9ICdFTkRFRCcsXHJcbiAgICBWT0xVTUVfQ0hBTkdFID0gJ1ZPTFVNRV9DSEFOR0UnLFxyXG4gICAgTVVURSA9ICdNVVRFJyxcclxuICAgIFVOTVVURSA9ICdVTk1VVEUnLFxyXG4gICAgUExBWUJBQ0tfU1BFRURfQ0hBTkdFID0gJ1BMQVlCQUNLX1NQRUVEX0NIQU5HRScsXHJcbiAgICBGVUxMU0NSRUVOX0FDVElWQVRFRCA9ICdGVUxMU0NSRUVOX0FDVElWQVRFRCcsXHJcbiAgICBGVUxMU0NSRUVOX0RFQUNUSVZBVEVEID0gJ0ZVTExTQ1JFRU5fREVBQ1RJVkFURUQnLFxyXG4gICAgUElDVFVSRV9JTl9QSUNUVVJFX0FDVElWQVRFRCA9ICdQSUNUVVJFX0lOX1BJQ1RVUkVfQUNUSVZBVEVEJyxcclxuICAgIFBJQ1RVUkVfSU5fUElDVFVSRV9ERUFDVElWQVRFRCA9ICdQSUNUVVJFX0lOX1BJQ1RVUkVfREVBQ1RJVkFURUQnLFxyXG4gICAgTk9ORSA9ICdOT05FJyxcclxuICB9XHJcbiAgZXhwb3J0IGVudW0gRW51bVRlbGVtZXRyeU1lZGlhU3RhdGUge1xyXG4gICAgUExBWUlORyA9ICdQTEFZSU5HJyxcclxuICAgIFBBVVNFRCA9ICdQQVVTRUQnLFxyXG4gICAgRU5ERUQgPSAnRU5ERUQnLFxyXG4gICAgQlVGRkVSSU5HID0gJ0JVRkZFUklORycsXHJcbiAgICBOT1RfU1RBUlRFRCA9ICdOT1RfU1RBUlRFRCcsXHJcbiAgfVxyXG4gIGV4cG9ydCBpbnRlcmZhY2UgSVdzRXZlbnRUZWxlbWV0cnlNZWRpYURhdGEgZXh0ZW5kcyBJV3NFdmVudFRlbGVtZXRyeSB7XHJcbiAgICBjdXJyZW50U3RhdGU6IEVudW1UZWxlbWV0cnlNZWRpYVN0YXRlXHJcbiAgICBhY3Rpdml0eVR5cGU6IEVudW1UZWxlbWV0cnlNZWRpYUFjdGl2aXR5XHJcbiAgICBjdXJyZW50VGltZTogbnVtYmVyIHwgbnVsbFxyXG4gICAgdG90YWxUaW1lOiBudW1iZXIgfCBudWxsXHJcbiAgICBtYXhlZFNlZWtlZFRpbWU6IG51bWJlclxyXG4gICAgYWN0aXZpdHlTdGFydGVkQXQ/OiBEYXRlIHwgbnVsbFxyXG4gIH1cclxuICBleHBvcnQgdHlwZSBXc0V2ZW50VGVsZW1ldHJ5TWVkaWEgPSBJV3NFdmVudHM8SVdzRXZlbnRUZWxlbWV0cnlNZWRpYURhdGE+XHJcbn1cclxuIl19
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQubW9kZWwuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3VuYmlyZC1jYi91dGlscy8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9ldmVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLEtBQVcsUUFBUSxDQXdNeEI7QUF4TUQsV0FBaUIsUUFBUTtJQUN2QixrQ0FJQzs7O1FBSEMsbUNBQWM7UUFDZCx5Q0FBa0I7UUFDbEIsNENBQXFCOztJQUV2QixnQ0FJQzs7O1FBSEMsaUNBQVk7UUFDWixvQ0FBZTtRQUNmLHFDQUFnQjs7SUFFbEIsSUFBWSxXQVFYO0lBUkQsV0FBWSxXQUFXO1FBQ3JCLGdDQUFpQixDQUFBO1FBQ2pCLHNDQUF1QixDQUFBO1FBQ3ZCLGdEQUFpQyxDQUFBO1FBQ2pDLGtGQUFtRSxDQUFBO1FBQ25FLG9DQUFxQixDQUFBO1FBQ3JCLDhDQUErQixDQUFBO1FBQy9CLHdEQUF5QyxDQUFBO0lBQzNDLENBQUMsRUFSVyxXQUFXLEdBQVgsb0JBQVcsS0FBWCxvQkFBVyxRQVF0QjtJQUNELElBQVksZUFNWDtJQU5ELFdBQVksZUFBZTtRQUN6QixnQ0FBYSxDQUFBO1FBQ2Isa0NBQWUsQ0FBQTtRQUNmLGdDQUFhLENBQUE7UUFDYiw4QkFBVyxDQUFBO1FBQ1gsa0NBQWUsQ0FBQTtJQUNqQixDQUFDLEVBTlcsZUFBZSxHQUFmLHdCQUFlLEtBQWYsd0JBQWUsUUFNMUI7SUFDQSxJQUFZLFlBSVg7SUFKRCxXQUFZLFlBQVk7UUFDdEIsbUNBQW1CLENBQUE7UUFDbkIsbUNBQW1CLENBQUE7UUFDbkIsbUNBQW1CLENBQUE7SUFDckIsQ0FBQyxFQUpXLFlBQVksR0FBWixxQkFBWSxLQUFaLHFCQUFZLFFBSXZCO0lBQ0YsSUFBWSxlQUdYO0lBSEQsV0FBWSxlQUFlO1FBQ3pCLGdDQUFhLENBQUE7UUFDYixvQ0FBaUIsQ0FBQTtJQUNuQixDQUFDLEVBSFcsZUFBZSxHQUFmLHdCQUFlLEtBQWYsd0JBQWUsUUFHMUI7SUFD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LHFEQUF1QjtRQUN2Qix1REFBK0I7O0lBSWpDLElBQVksb0JBaUJYO0lBakJELFdBQVksb0JBQW9CO1FBQzlCLDJDQUFtQixDQUFBO1FBQ25CLDZDQUFxQixDQUFBO1FBQ3JCLHlDQUFpQixDQUFBO1FBQ2pCLDJDQUFtQixDQUFBO1FBQ25CLDJDQUFtQixDQUFBO1FBQ25CLHVDQUFlLENBQUE7UUFDZixxQ0FBYSxDQUFBO1FBQ2IsK0NBQXVCLENBQUE7UUFDdkIseUNBQWlCLENBQUE7UUFDakIsMkNBQW1CLENBQUE7UUFDbkIsaURBQXlCLENBQUE7UUFDekIseUNBQWlCLENBQUE7UUFDakIseUNBQWlCLENBQUE7UUFDakIsMkNBQW1CLENBQUE7UUFDbkIsMkNBQW1CLENBQUE7UUFDbkIsMkNBQW1CLENBQUE7SUFDckIsQ0FBQyxFQWpCVyxvQkFBb0IsR0FBcEIsNkJBQW9CLEtBQXBCLDZCQUFvQixRQWlCL0I7SUFDRCxJQUFZLGlCQUVYO0lBRkQsV0FBWSxpQkFBaUI7UUFDM0Isb0NBQWUsQ0FBQTtJQUNqQixDQUFDLEVBRlcsaUJBQWlCLEdBQWpCLDBCQUFpQixLQUFqQiwwQkFBaUIsUUFFNUI7SUFDRCxJQUFZLG9CQUlYO0lBSkQsV0FBWSxvQkFBb0I7UUFDOUIsaURBQXlCLENBQUE7UUFDekIsaURBQXlCLENBQUE7UUFDekIsNkRBQXFDLENBQUE7SUFDdkMsQ0FBQyxFQUpXLG9CQUFvQixHQUFwQiw2QkFBb0IsS0FBcEIsNkJBQW9CLFFBSS9CO0FBQ0gsQ0FBQyxFQXhNZ0IsUUFBUSxLQUFSLFFBQVEsUUF3TXhCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IG5hbWVzcGFjZSBXc0V2ZW50cyB7XHJcbiAgZXhwb3J0IGludGVyZmFjZSBJV3NFdmVudHNGcm9tV2lkZ2V0IHtcclxuICAgIHR5cGU6ICd3aWRnZXQnXHJcbiAgICB3aWRnZXRUeXBlOiBzdHJpbmdcclxuICAgIHdpZGdldFN1YlR5cGU6IHN0cmluZ1xyXG4gIH1cclxuICBleHBvcnQgaW50ZXJmYWNlIElXc0V2ZW50c0Zyb21QYWdlIHtcclxuICAgIHR5cGU6ICdwYWdlJ1xyXG4gICAgcGFnZVVybDogc3RyaW5nXHJcbiAgICBwYWdlVHlwZTogc3RyaW5nXHJcbiAgfVxyXG4gIGV4cG9ydCBlbnVtIFdzRXZlbnRUeXBlIHtcclxuICAgIEFjdGlvbiA9ICdBY3Rpb24nLFxyXG4gICAgVGVsZW1ldHJ5ID0gJ1RlbGVtZXRyeScsXHJcbiAgICBQYWdlTmF2aWdhdGlvbiA9ICdQYWdlTmF2aWdhdGlvbicsXHJcbiAgICBBY2Nlc3NSZXN0cmljdGVkQ29udGVudEFjY2Vzc2VkID0gJ0FjY2Vzc1Jlc3RyaWN0ZWRDb250ZW50QWNjZXNzZWQnLFxyXG4gICAgUGFnZVNsb3cgPSAnUGFnZVNsb3cnLFxyXG4gICAgRXJyb3JPY2N1cnJlZCA9ICdFcnJvck9jY3VycmVkJyxcclxuICAgIFdpZGdldFJlc29sdmVFcnJvciA9ICdXaWRnZXRSZXNvbHZlRXJyb3InLFxyXG4gIH1cclxuICBleHBvcnQgZW51bSBXc0V2ZW50TG9nTGV2ZWwge1xyXG4gICAgV2FybiA9ICdXYXJuJyxcclxuICAgIEVycm9yID0gJ0Vycm9yJyxcclxuICAgIEluZm8gPSAnSW5mbycsXHJcbiAgICBMb2cgPSAnTG9nJyxcclxuICAgIFRyYWNlID0gJ1RyYWNlJyxcclxuICB9XHJcbiAgIGV4cG9ydCBlbnVtIFdzQXVkaXRUeXBlcyB7XHJcbiAgICAgQ3JlYXRlZCA9ICdDcmVhdGVkJyxcclxuICAgICBVcGRhdGVkID0gJ1VwZGF0ZWQnLFxyXG4gICAgIERlbGV0ZWQgPSAnRGVsZXRlZCcsXHJcbiAgIH1cclxuICBleHBvcnQgZW51bSBXc1RpbWVTcGVudFR5cGUge1xyXG4gICAgUGFnZSA9ICdQYWdlJyxcclxuICAgIFBsYXllciA9ICdQbGF5ZXInLFxyXG4gIH1cclxuICBleHBvcnQgZW51bSBXc1RpbWVTcGVudE1vZGUge1xyXG4gICAgUGxheSA9ICdQbGF5JyxcclxuICAgIFZpZXcgPSAnVmlldycsXHJcbiAgfVxyXG4gIGV4cG9ydCBlbnVtIGV4dGVybmFsVGVsZW1ldHJ5cGRhdGEge1xyXG4gICAgUkJDUCA9ICdyYmNwLXdlYi11aScsXHJcbiAgfVxyXG5cclxuICBleHBvcnQgaW50ZXJmYWNlIElXc0V2ZW50czxUPiB7XHJcbiAgICBldmVudFR5cGU6IFdzRXZlbnRUeXBlXHJcbiAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50TG9nTGV2ZWxcclxuICAgIGZyb206IElXc0V2ZW50c0Zyb21XaWRnZXQgfCBJV3NFdmVudHNGcm9tUGFnZSB8IHN0cmluZ1xyXG4gICAgdG86IHN0cmluZ1xyXG4gICAgZGF0YTogVFxyXG4gICAgcGFzc1Rocm91Z2hEYXRhPzogYW55XHJcbiAgfVxyXG5cclxuICBleHBvcnQgZW51bSBFbnVtVGVsZW1ldHJ5U3ViVHlwZSB7XHJcbiAgICBJbml0ID0gJ0luaXQnLFxyXG4gICAgSW50ZXJhY3QgPSAnSW50ZXJhY3QnLFxyXG4gICAgTG9hZGVkID0gJ0xvYWRlZCcsXHJcbiAgICBVbmxvYWRlZCA9ICdVbmxvYWRlZCcsXHJcbiAgICBTdGF0ZUNoYW5nZSA9ICdTdGF0ZUNoYW5nZScsXHJcbiAgICBIZWFydEJlYXQgPSAnSGVhcnRCZWF0JyxcclxuICAgIFNlYXJjaCA9ICdTZWFyY2gnLFxyXG4gICAgRmVlZGJhY2sgPSAnRmVlZGJhY2snLFxyXG4gICAgSW1wcmVzc2lvbiA9ICdJbXByZXNzaW9uJyxcclxuICB9XHJcblxyXG4gIGV4cG9ydCBpbnRlcmZhY2UgSVRlbGVtZXRyeUNvbnRleHQge1xyXG4gICAgcGFnZUlkPzogc3RyaW5nLFxyXG4gICAgbW9kdWxlPzogc3RyaW5nLFxyXG4gICAgcGFnZUlkRXh0Pzogc3RyaW5nXHJcbiAgfVxyXG5cclxuICBleHBvcnQgaW50ZXJmYWNlIElUZWxlbWV0cnlUYWJEYXRhIHtcclxuICAgIGxhYmVsOiBzdHJpbmcsXHJcbiAgICBpbmRleDogbnVtYmVyLFxyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGludGVyZmFjZSBJV3NFdmVudFRlbGVtZXRyeSB7XHJcbiAgICBldmVudFN1YlR5cGU6IEVudW1UZWxlbWV0cnlTdWJUeXBlXHJcbiAgICBjb250ZXh0PzogSVRlbGVtZXRyeUNvbnRleHRcclxuICB9XHJcblxyXG4gIC8vIFBERiBUZWxlbWV0cnkgRXZlbnRcclxuICBleHBvcnQgZW51bSBFbnVtVGVsZW1ldHJ5UGRmQWN0aXZpdHkge1xyXG4gICAgUEFHRV9DSEFOR0VEID0gJ1BBR0VfQ0hBTkdFRCcsXHJcbiAgICBGVUxMU0NSRUVOX0FDVElWQVRFRCA9ICdGVUxMU0NSRUVOX0FDVElWQVRFRCcsXHJcbiAgICBGVUxMU0NSRUVOX0RFQUNUSVZBVEVEID0gJ0ZVTExTQ1JFRU5fREVBQ1RJVkFURUQnLFxyXG4gICAgWk9PTV9DSEFOR0UgPSAnWk9PTV9DSEFOR0UnLFxyXG4gICAgTk9ORSA9ICdOT05FJyxcclxuICB9XHJcbiAgZXhwb3J0IGludGVyZmFjZSBJV3NFdmVudFRlbGVtZXRyeVBkZkRhdGEgZXh0ZW5kcyBJV3NFdmVudFRlbGVtZXRyeSB7XHJcbiAgICBhY3Rpdml0eVR5cGU6IEVudW1UZWxlbWV0cnlQZGZBY3Rpdml0eVxyXG4gICAgY3VycmVudFBhZ2U6IG51bWJlclxyXG4gICAgdG90YWxQYWdlOiBudW1iZXJcclxuICAgIGFjdGl2aXR5U3RhcnRlZEF0OiBEYXRlIHwgbnVsbFxyXG4gICAgb2JqZWN0OiBhbnlcclxuICB9XHJcbiAgZXhwb3J0IHR5cGUgV3NFdmVudFRlbGVtZXRyeVBERiA9IElXc0V2ZW50czxJV3NFdmVudFRlbGVtZXRyeVBkZkRhdGE+XHJcblxyXG4gIC8vIEludGVyYWN0IFRlbGVtZXRyeSBFdmVudFxyXG4gIGV4cG9ydCBpbnRlcmZhY2UgSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdCBleHRlbmRzIElXc0V2ZW50VGVsZW1ldHJ5IHtcclxuICAgIHR5cGU6IHN0cmluZ1xyXG4gICAgc3ViVHlwZT86IHN0cmluZ1xyXG4gICAgb2JqZWN0OiBhbnlcclxuICAgIGNvbnRleHQ/OiBJVGVsZW1ldHJ5Q29udGV4dFxyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGludGVyZmFjZSBJV3NFdmVudFRlbGVtZXRyeUZlZWRiYWNrIGV4dGVuZHMgSVdzRXZlbnRUZWxlbWV0cnkge1xyXG4gICAgdHlwZTogc3RyaW5nXHJcbiAgICBzdWJUeXBlPzogc3RyaW5nXHJcbiAgICBvYmplY3Q6IGFueVxyXG4gICAgY29udGV4dD86IElUZWxlbWV0cnlDb250ZXh0XHJcbiAgfVxyXG5cclxuICBleHBvcnQgaW50ZXJmYWNlIElXc0V2ZW50VGVsZW1ldHJ5SW1wcmVzc2lvbiBleHRlbmRzIElXc0V2ZW50VGVsZW1ldHJ5IHtcclxuICAgIHR5cGU/OiBzdHJpbmdcclxuICAgIHN1YlR5cGU/OiBzdHJpbmdcclxuICAgIG9iamVjdD86IGFueVxyXG4gICAgY29udGV4dD86IElUZWxlbWV0cnlDb250ZXh0XHJcbiAgfVxyXG5cclxuICBleHBvcnQgaW50ZXJmYWNlIElXc0V2ZW50VGVsZW1ldHJ5U2VhcmNoIGV4dGVuZHMgSVdzRXZlbnRUZWxlbWV0cnkge1xyXG4gICAgdHlwZTogc3RyaW5nXHJcbiAgICBzdWJUeXBlPzogc3RyaW5nXHJcbiAgICBxdWVyeT86IHN0cmluZ1xyXG4gICAgZmlsdGVycz86IHN0cmluZ1xyXG4gICAgc2l6ZT86IG51bWJlclxyXG4gICAgbG9jYWxlPzogYW55XHJcbiAgfVxyXG4gIGV4cG9ydCBpbnRlcmZhY2UgSVdzRXZlbnRUZWxlbWV0cnlIZWFydEJlYXQgZXh0ZW5kcyBJV3NFdmVudFRlbGVtZXRyeSB7XHJcbiAgICB0eXBlOiBzdHJpbmdcclxuICAgIC8vIHN1YlR5cGU/OiBzdHJpbmdcclxuICAgIC8vIG1vZGU6IHN0cmluZ1xyXG4gICAgaWQ6IHN0cmluZ1xyXG4gICAgLy8gbWltZVR5cGU6IHN0cmluZ1xyXG4gIH1cclxuICBleHBvcnQgdHlwZSBXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3QgPSBJV3NFdmVudHM8SVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD5cclxuICBleHBvcnQgdHlwZSBXc0V2ZW50VGVsZW1ldHJ5RmVlZGJhY2sgPSBJV3NFdmVudHM8SVdzRXZlbnRUZWxlbWV0cnlGZWVkYmFjaz5cclxuICBleHBvcnQgdHlwZSBXc0V2ZW50VGVsZW1ldHJ5SW1wcmVzc2lvbiA9IElXc0V2ZW50czxJV3NFdmVudFRlbGVtZXRyeUltcHJlc3Npb24+XHJcbiAgZXhwb3J0IHR5cGUgV3NFdmVudFRlbGVtZXRyeVNlYXJjaCA9IElXc0V2ZW50czxJV3NFdmVudFRlbGVtZXRyeVNlYXJjaD5cclxuICBleHBvcnQgdHlwZSBXc0V2ZW50VGVsZW1ldHJ5SGVhcnRCZWF0ID0gSVdzRXZlbnRzPElXc0V2ZW50VGVsZW1ldHJ5SGVhcnRCZWF0PlxyXG5cclxuICAvLyBNdWx0aW1lZGlhIFRlbGVtZXRyeSBEYXRhXHJcbiAgZXhwb3J0IGVudW0gRW51bVRlbGVtZXRyeU1lZGlhQWN0aXZpdHkge1xyXG4gICAgUExBWUVEID0gJ1BMQVlFRCcsXHJcbiAgICBQQVVTRUQgPSAnUEFVU0VEJyxcclxuICAgIFNFRUtFRCA9ICdTRUVLRUQnLFxyXG4gICAgRU5ERUQgPSAnRU5ERUQnLFxyXG4gICAgVk9MVU1FX0NIQU5HRSA9ICdWT0xVTUVfQ0hBTkdFJyxcclxuICAgIE1VVEUgPSAnTVVURScsXHJcbiAgICBVTk1VVEUgPSAnVU5NVVRFJyxcclxuICAgIFBMQVlCQUNLX1NQRUVEX0NIQU5HRSA9ICdQTEFZQkFDS19TUEVFRF9DSEFOR0UnLFxyXG4gICAgRlVMTFNDUkVFTl9BQ1RJVkFURUQgPSAnRlVMTFNDUkVFTl9BQ1RJVkFURUQnLFxyXG4gICAgRlVMTFNDUkVFTl9ERUFDVElWQVRFRCA9ICdGVUxMU0NSRUVOX0RFQUNUSVZBVEVEJyxcclxuICAgIFBJQ1RVUkVfSU5fUElDVFVSRV9BQ1RJVkFURUQgPSAnUElDVFVSRV9JTl9QSUNUVVJFX0FDVElWQVRFRCcsXHJcbiAgICBQSUNUVVJFX0lOX1BJQ1RVUkVfREVBQ1RJVkFURUQgPSAnUElDVFVSRV9JTl9QSUNUVVJFX0RFQUNUSVZBVEVEJyxcclxuICAgIE5PTkUgPSAnTk9ORScsXHJcbiAgfVxyXG4gIGV4cG9ydCBlbnVtIEVudW1UZWxlbWV0cnlNZWRpYVN0YXRlIHtcclxuICAgIFBMQVlJTkcgPSAnUExBWUlORycsXHJcbiAgICBQQVVTRUQgPSAnUEFVU0VEJyxcclxuICAgIEVOREVEID0gJ0VOREVEJyxcclxuICAgIEJVRkZFUklORyA9ICdCVUZGRVJJTkcnLFxyXG4gICAgTk9UX1NUQVJURUQgPSAnTk9UX1NUQVJURUQnLFxyXG4gIH1cclxuICBleHBvcnQgaW50ZXJmYWNlIElXc0V2ZW50VGVsZW1ldHJ5TWVkaWFEYXRhIGV4dGVuZHMgSVdzRXZlbnRUZWxlbWV0cnkge1xyXG4gICAgY3VycmVudFN0YXRlOiBFbnVtVGVsZW1ldHJ5TWVkaWFTdGF0ZVxyXG4gICAgYWN0aXZpdHlUeXBlOiBFbnVtVGVsZW1ldHJ5TWVkaWFBY3Rpdml0eVxyXG4gICAgY3VycmVudFRpbWU6IG51bWJlciB8IG51bGxcclxuICAgIHRvdGFsVGltZTogbnVtYmVyIHwgbnVsbFxyXG4gICAgbWF4ZWRTZWVrZWRUaW1lOiBudW1iZXJcclxuICAgIGFjdGl2aXR5U3RhcnRlZEF0PzogRGF0ZSB8IG51bGxcclxuICB9XHJcbiAgZXhwb3J0IHR5cGUgV3NFdmVudFRlbGVtZXRyeU1lZGlhID0gSVdzRXZlbnRzPElXc0V2ZW50VGVsZW1ldHJ5TWVkaWFEYXRhPlxyXG5cclxuICBleHBvcnQgZW51bSBFbnVtVGVsZW1ldHJ5bW9kdWxlcyB7XHJcbiAgICBDT05URU5UID0gJ2NvbnRlbnQnLFxyXG4gICAgRkVFREJBQ0sgPSAnZmVlZGJhY2snLFxyXG4gICAgQ09VUlNFID0gJ2NvdXJzZScsXHJcbiAgICBQUk9HUkFNID0gJ3Byb2dyYW0nLFxyXG4gICAgRVhQTE9SRSA9ICdleHBsb3JlJyxcclxuICAgIExFQVJOID0gJ2xlYXJuJyxcclxuICAgIEhPTUUgPSAnaG9tZScsXHJcbiAgICBEQVNIQk9BUkQgPSAnZGFzaGJvYXJkJyxcclxuICAgIFNFQVJDSCA9ICdzZWFyY2gnLFxyXG4gICAgRElTQ1VTUyA9ICdkaXNjdXNzJyxcclxuICAgIENPTVBFVEVOQ1kgPSAnY29tcGV0ZW5jeScsXHJcbiAgICBFVkVOVFMgPSAnZXZlbnRzJyxcclxuICAgIENBUkVFUiA9ICdjYXJlZXInLFxyXG4gICAgUFJPRklMRSA9ICdwcm9maWxlJyxcclxuICAgIE5FVFdPUksgPSAnbmV0d29yaycsXHJcbiAgICBTVVBQT1JUID0gJ3N1cHBvcnQnLFxyXG4gIH1cclxuICBleHBvcnQgZW51bSBFbnVtSW50ZXJhY3RUeXBlcyB7XHJcbiAgICBDTElDSyA9ICdjbGljaycsXHJcbiAgfVxyXG4gIGV4cG9ydCBlbnVtIEVudW1JbnRlcmFjdFN1YlR5cGVzIHtcclxuICAgIENPVVJTRV9UQUIgPSAnY291cnNlLXRhYicsXHJcbiAgICBDQVJFRVJfVEFCID0gJ2NhcmVlci10YWInLFxyXG4gICAgUFJPRklMRV9FRElUX1RBQiA9ICdwcm9maWxlLWVkaXQtdGFiJyxcclxuICB9XHJcbn1cclxuIl19
@@ -1,16 +1,20 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { Subject } from 'rxjs';
3
3
  import { WsEvents } from './event.model';
4
+ import { UtilityService } from './utility.service';
5
+ import _ from 'lodash';
4
6
  import * as i0 from "@angular/core";
7
+ import * as i1 from "./utility.service";
5
8
  export class EventService {
6
- constructor() {
9
+ constructor(utilitySvc) {
10
+ this.utilitySvc = utilitySvc;
7
11
  this.eventsSubject = new Subject();
8
12
  this.events$ = this.eventsSubject.asObservable();
9
13
  }
10
14
  dispatchEvent(event) {
11
15
  this.eventsSubject.next(event);
12
16
  }
13
- raiseInteractTelemetry(type, subType, object, from) {
17
+ raiseInteractTelemetry(type, subType, object, context) {
14
18
  this.dispatchEvent({
15
19
  eventType: WsEvents.WsEventType.Telemetry,
16
20
  eventLogLevel: WsEvents.WsEventLogLevel.Info,
@@ -18,9 +22,10 @@ export class EventService {
18
22
  type,
19
23
  subType,
20
24
  object,
25
+ context: this.getContext(context),
21
26
  eventSubType: WsEvents.EnumTelemetrySubType.Interact,
22
27
  },
23
- from: from || '',
28
+ from: '',
24
29
  to: 'Telemetry',
25
30
  });
26
31
  }
@@ -38,16 +43,63 @@ export class EventService {
38
43
  to: 'Telemetry',
39
44
  });
40
45
  }
46
+ raiseCustomImpression(context) {
47
+ this.dispatchEvent({
48
+ eventType: WsEvents.WsEventType.Telemetry,
49
+ eventLogLevel: WsEvents.WsEventLogLevel.Info,
50
+ data: {
51
+ context: this.getContext(context),
52
+ eventSubType: WsEvents.EnumTelemetrySubType.Impression,
53
+ },
54
+ from: '',
55
+ to: 'Telemetry',
56
+ });
57
+ }
58
+ getContext(context) {
59
+ const routeDataContext = this.utilitySvc.routeData;
60
+ const finalContext = {
61
+ pageId: routeDataContext.pageId,
62
+ module: routeDataContext.module,
63
+ };
64
+ if (context) {
65
+ if (context.pageIdExt) {
66
+ finalContext.pageId = `${routeDataContext.pageId}_${context.pageIdExt}`;
67
+ }
68
+ else if (context.pageId) {
69
+ finalContext.pageId = context.pageId;
70
+ }
71
+ if (context.module) {
72
+ finalContext.module = context.module;
73
+ }
74
+ }
75
+ return finalContext;
76
+ }
77
+ handleTabTelemetry(subType, data) {
78
+ this.raiseInteractTelemetry(WsEvents.EnumInteractTypes.CLICK, subType, {
79
+ id: `${_.camelCase(data.label)}`,
80
+ context: {
81
+ position: data.index,
82
+ },
83
+ }, {
84
+ pageIdExt: `${_.camelCase(data.label)}-tab`,
85
+ });
86
+ this.raiseCustomImpression({
87
+ pageIdExt: `${_.camelCase(data.label)}-tab`,
88
+ });
89
+ }
41
90
  }
42
91
  EventService.decorators = [
43
92
  { type: Injectable, args: [{
44
93
  providedIn: 'root',
45
94
  },] }
46
95
  ];
47
- EventService.ctorParameters = () => [];
48
- /** @nocollapse */ EventService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function EventService_Factory() { return new EventService(); }, token: EventService, providedIn: "root" });
96
+ EventService.ctorParameters = () => [
97
+ { type: UtilityService }
98
+ ];
99
+ /** @nocollapse */ EventService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function EventService_Factory() { return new EventService(i0.ɵɵinject(i1.UtilityService)); }, token: EventService, providedIn: "root" });
49
100
  if (false) {
50
101
  EventService.prototype.eventsSubject;
51
102
  EventService.prototype.events$;
103
+ EventService.prototype.utilitySvc;
52
104
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdW5iaXJkLWNiL3V0aWxzLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7O0FBSXhDLE1BQU0sT0FBTyxZQUFZO0lBSXZCO1FBSFEsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQTtRQUN2RCxZQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQUlsRCxDQUFDO0lBRUQsYUFBYSxDQUFJLEtBQTRCO1FBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFHRCxzQkFBc0IsQ0FBQyxJQUFZLEVBQUUsT0FBMkIsRUFBRSxNQUFXLEVBQUUsSUFBYTtRQUMxRixJQUFJLENBQUMsYUFBYSxDQUFxQztZQUNyRCxTQUFTLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTO1lBQ3pDLGFBQWEsRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUk7WUFDNUMsSUFBSSxFQUFFO2dCQUNKLElBQUk7Z0JBQ0osT0FBTztnQkFDUCxNQUFNO2dCQUNOLFlBQVksRUFBRSxRQUFRLENBQUMsb0JBQW9CLENBQUMsUUFBUTthQUNyRDtZQUNELElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtZQUNoQixFQUFFLEVBQUUsV0FBVztTQUNoQixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsc0JBQXNCLENBQUMsSUFBWSxFQUFFLE9BQTJCLEVBQUUsTUFBVyxFQUFFLElBQWE7UUFDMUYsSUFBSSxDQUFDLGFBQWEsQ0FBcUM7WUFDckQsU0FBUyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUztZQUN6QyxhQUFhLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJO1lBQzVDLElBQUksRUFBRTtnQkFDSixJQUFJO2dCQUNKLE9BQU87Z0JBQ1AsTUFBTTtnQkFDTixZQUFZLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixDQUFDLFFBQVE7YUFDckQ7WUFDRCxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDaEIsRUFBRSxFQUFFLFdBQVc7U0FDaEIsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs7O1lBNUNGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7Ozs7SUFFQyxxQ0FBOEQ7SUFDOUQsK0JBQWtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBXc0V2ZW50cyB9IGZyb20gJy4vZXZlbnQubW9kZWwnXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFdmVudFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgZXZlbnRzU3ViamVjdCA9IG5ldyBTdWJqZWN0PFdzRXZlbnRzLklXc0V2ZW50czxhbnk+PigpXHJcbiAgcHVibGljIGV2ZW50cyQgPSB0aGlzLmV2ZW50c1N1YmplY3QuYXNPYnNlcnZhYmxlKClcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAvLyB0aGlzLmZvY3VzQ2hhbmdlRXZlbnRMaXN0ZW5lcigpXHJcbiAgfVxyXG5cclxuICBkaXNwYXRjaEV2ZW50PFQ+KGV2ZW50OiBXc0V2ZW50cy5JV3NFdmVudHM8VD4pIHtcclxuICAgIHRoaXMuZXZlbnRzU3ViamVjdC5uZXh0KGV2ZW50KVxyXG4gIH1cclxuXHJcbiAgLy8gaGVscGVyIGZ1bmN0aW9uc1xyXG4gIHJhaXNlSW50ZXJhY3RUZWxlbWV0cnkodHlwZTogc3RyaW5nLCBzdWJUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQsIG9iamVjdDogYW55LCBmcm9tPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oe1xyXG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcclxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB0eXBlLFxyXG4gICAgICAgIHN1YlR5cGUsXHJcbiAgICAgICAgb2JqZWN0LFxyXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuSW50ZXJhY3QsXHJcbiAgICAgIH0sXHJcbiAgICAgIGZyb206IGZyb20gfHwgJycsXHJcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICByYWlzZUZlZWRiYWNrVGVsZW1ldHJ5KHR5cGU6IHN0cmluZywgc3ViVHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBvYmplY3Q6IGFueSwgZnJvbT86IHN0cmluZykge1xyXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KHtcclxuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXHJcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgICBzdWJUeXBlLFxyXG4gICAgICAgIG9iamVjdCxcclxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkZlZWRiYWNrLFxyXG4gICAgICB9LFxyXG4gICAgICBmcm9tOiBmcm9tIHx8ICcnLFxyXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8gcHJpdmF0ZSBmb2N1c0NoYW5nZUV2ZW50TGlzdGVuZXIoKSB7XHJcbiAgLy8gICBmcm9tRXZlbnQod2luZG93LCAnZm9jdXMnKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gIC8vICAgICB0aGlzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoJ2ZvY3VzJywgJ2dhaW5lZCcsIHt9KVxyXG4gIC8vICAgfSlcclxuICAvLyAgIGZyb21FdmVudCh3aW5kb3csICdibHVyJykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAvLyAgICAgdGhpcy5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KCdmb2N1cycsICdsb3N0Jywge30pXHJcbiAgLy8gICB9KVxyXG4gIC8vIH1cclxufVxyXG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdW5iaXJkLWNiL3V0aWxzLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWxELE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQTs7O0FBSXRCLE1BQU0sT0FBTyxZQUFZO0lBSXZCLFlBQ1UsVUFBMEI7UUFBMUIsZUFBVSxHQUFWLFVBQVUsQ0FBZ0I7UUFKNUIsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQTtRQUN2RCxZQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQU1sRCxDQUFDO0lBRUQsYUFBYSxDQUFJLEtBQTRCO1FBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFHRCxzQkFBc0IsQ0FBQyxJQUFZLEVBQUUsT0FBMkIsRUFBRSxNQUFXLEVBQUUsT0FBb0M7UUFDakgsSUFBSSxDQUFDLGFBQWEsQ0FBcUM7WUFDckQsU0FBUyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUztZQUN6QyxhQUFhLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJO1lBQzVDLElBQUksRUFBRTtnQkFDSixJQUFJO2dCQUNKLE9BQU87Z0JBQ1AsTUFBTTtnQkFDTixPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7Z0JBQ2pDLFlBQVksRUFBRSxRQUFRLENBQUMsb0JBQW9CLENBQUMsUUFBUTthQUNyRDtZ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bmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBXc0V2ZW50cyB9IGZyb20gJy4vZXZlbnQubW9kZWwnXHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi91dGlsaXR5LnNlcnZpY2UnXHJcbi8qIHRzbGludDpkaXNhYmxlKi9cclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJ1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXZlbnRTZXJ2aWNlIHtcclxuICBwcml2YXRlIGV2ZW50c1N1YmplY3QgPSBuZXcgU3ViamVjdDxXc0V2ZW50cy5JV3NFdmVudHM8YW55Pj4oKVxyXG4gIHB1YmxpYyBldmVudHMkID0gdGhpcy5ldmVudHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB1dGlsaXR5U3ZjOiBVdGlsaXR5U2VydmljZSxcclxuICApIHtcclxuICAgIC8vIHRoaXMuZm9jdXNDaGFuZ2VFdmVudExpc3RlbmVyKClcclxuICB9XHJcblxyXG4gIGRpc3BhdGNoRXZlbnQ8VD4oZXZlbnQ6IFdzRXZlbnRzLklXc0V2ZW50czxUPikge1xyXG4gICAgdGhpcy5ldmVudHNTdWJqZWN0Lm5leHQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICAvLyBoZWxwZXIgZnVuY3Rpb25zXHJcbiAgcmFpc2VJbnRlcmFjdFRlbGVtZXRyeSh0eXBlOiBzdHJpbmcsIHN1YlR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZCwgb2JqZWN0OiBhbnksIGNvbnRleHQ/OiBXc0V2ZW50cy5JVGVsZW1ldHJ5Q29udGV4dCkge1xyXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KHtcclxuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXHJcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgICBzdWJUeXBlLFxyXG4gICAgICAgIG9iamVjdCxcclxuICAgICAgICBjb250ZXh0OiB0aGlzLmdldENvbnRleHQoY29udGV4dCksXHJcbiAgICAgICAgZXZlbnRTdWJUeXBlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5JbnRlcmFjdCxcclxuICAgICAgfSxcclxuICAgICAgZnJvbTogJycsXHJcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICByYWlzZUZlZWRiYWNrVGVsZW1ldHJ5KHR5cGU6IHN0cmluZywgc3ViVHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBvYmplY3Q6IGFueSwgZnJvbT86IHN0cmluZykge1xyXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KHtcclxuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXHJcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgICBzdWJUeXBlLFxyXG4gICAgICAgIG9iamVjdCxcclxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkZlZWRiYWNrLFxyXG4gICAgICB9LFxyXG4gICAgICBmcm9tOiBmcm9tIHx8ICcnLFxyXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8gUmFpc2UgY3VzdG9tIGltcHJlc3Npb24gZXZlbnRzIGVnOm9uIHRhYiBjaGFuZ2VcclxuICByYWlzZUN1c3RvbUltcHJlc3Npb24oY29udGV4dD86IFdzRXZlbnRzLklUZWxlbWV0cnlDb250ZXh0KSB7XHJcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbXByZXNzaW9uPih7XHJcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxyXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGNvbnRleHQ6IHRoaXMuZ2V0Q29udGV4dChjb250ZXh0KSxcclxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkltcHJlc3Npb24sXHJcbiAgICAgIH0sXHJcbiAgICAgIGZyb206ICcnLFxyXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8gcHJpdmF0ZSBmb2N1c0NoYW5nZUV2ZW50TGlzdGVuZXIoKSB7XHJcbiAgLy8gICBmcm9tRXZlbnQod2luZG93LCAnZm9jdXMnKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gIC8vICAgICB0aGlzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoJ2ZvY3VzJywgJ2dhaW5lZCcsIHt9KVxyXG4gIC8vICAgfSlcclxuICAvLyAgIGZyb21FdmVudCh3aW5kb3csICdibHVyJykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAvLyAgICAgdGhpcy5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KCdmb2N1cycsICdsb3N0Jywge30pXHJcbiAgLy8gICB9KVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gTWV0aG9kIHRvIGdldCB0aGUgY29udGV4dCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGVsZW1ldHJ5IGludGVyYWN0IGV2ZW50XHJcbiAgcHJpdmF0ZSBnZXRDb250ZXh0KGNvbnRleHQ6IFdzRXZlbnRzLklUZWxlbWV0cnlDb250ZXh0IHwgdW5kZWZpbmVkKTogV3NFdmVudHMuSVRlbGVtZXRyeUNvbnRleHQge1xyXG4gICAgY29uc3Qgcm91dGVEYXRhQ29udGV4dCA9IHRoaXMudXRpbGl0eVN2Yy5yb3V0ZURhdGFcclxuICAgIC8vIGluaXRpYWxpemUgd2l0aCB0aGUgcm91dGUgZGF0YSBjb25maWd1cmF0aW9uIC0gY3VycmVudCByb3V0ZSdzIHBhZ2VJRCAmIG1vZHVsZVxyXG4gICAgY29uc3QgZmluYWxDb250ZXh0OiBXc0V2ZW50cy5JVGVsZW1ldHJ5Q29udGV4dCA9IHtcclxuICAgICAgcGFnZUlkOiByb3V0ZURhdGFDb250ZXh0LnBhZ2VJZCxcclxuICAgICAgbW9kdWxlOiByb3V0ZURhdGFDb250ZXh0Lm1vZHVsZSxcclxuICAgIH1cclxuICAgIGlmIChjb250ZXh0KSB7XHJcbiAgICAgIC8vIGlmIGNvbnRleHQgaGFzIHBhZ2VJZEV4dCwgYXBwZW5kIGl0IHRvIHRoZSByb3V0ZSdzIHBhZ2VJZFxyXG4gICAgICBpZiAoY29udGV4dC5wYWdlSWRFeHQpIHtcclxuICAgICAgICBmaW5hbENvbnRleHQucGFnZUlkID0gYCR7cm91dGVEYXRhQ29udGV4dC5wYWdlSWR9XyR7Y29udGV4dC5wYWdlSWRFeHR9YFxyXG4gICAgICB9IGVsc2UgaWYgKGNvbnRleHQucGFnZUlkKSB7XHJcbiAgICAgICAgLy8gZWxzZSBjb250ZXh0IGhhcyBwYWdlSWQsIG92ZXJyaWRlIGl0IHRvIHRoZSBmaW5hbCBwYWdlSURcclxuICAgICAgICBmaW5hbENvbnRleHQucGFnZUlkID0gY29udGV4dC5wYWdlSWRcclxuICAgICAgfVxyXG4gICAgICAvLyBpZiBjb250ZXh0IGhhcyBtb2R1bGUsIG92ZXJyaWRlIGl0IHRvIHRoZSBmaW5hbCBtb2R1bGVcclxuICAgICAgaWYgKGNvbnRleHQubW9kdWxlKSB7XHJcbiAgICAgICAgZmluYWxDb250ZXh0Lm1vZHVsZSA9IGNvbnRleHQubW9kdWxlXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmluYWxDb250ZXh0XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlVGFiVGVsZW1ldHJ5KHN1YlR5cGU6IHN0cmluZywgZGF0YTogV3NFdmVudHMuSVRlbGVtZXRyeVRhYkRhdGEpIHtcclxuICAgIC8vIHJhaXNlIGEgdGFiIGNsaWNrIGludGVyYWN0IGV2ZW50XHJcbiAgICB0aGlzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoXHJcbiAgICAgIFdzRXZlbnRzLkVudW1JbnRlcmFjdFR5cGVzLkNMSUNLLFxyXG4gICAgICBzdWJUeXBlLFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IGAke18uY2FtZWxDYXNlKGRhdGEubGFiZWwpfWAsXHJcbiAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgcG9zaXRpb246IGRhdGEuaW5kZXgsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICBwYWdlSWRFeHQ6IGAke18uY2FtZWxDYXNlKGRhdGEubGFiZWwpfS10YWJgLFxyXG4gICAgfSlcclxuXHJcbiAgICAvLyByYWlzZSBhIHRhYiBjbGljayBpbXByZXNzaW9uIGV2ZW50XHJcbiAgICB0aGlzLnJhaXNlQ3VzdG9tSW1wcmVzc2lvbih7XHJcbiAgICAgIHBhZ2VJZEV4dDogYCR7Xy5jYW1lbENhc2UoZGF0YS5sYWJlbCl9LXRhYmAsXHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -20,10 +20,10 @@ export class TelemetryService {
20
20
  this.externalApps = {
21
21
  RBCP: 'rbcp-web-ui',
22
22
  };
23
+ this.environment = environment;
23
24
  const instanceConfig = this.configSvc.instanceConfig;
24
25
  if (instanceConfig) {
25
26
  this.telemetryConfig = instanceConfig.telemetryConfig;
26
- this.environment = environment;
27
27
  this.telemetryConfig = Object.assign({}, this.telemetryConfig, { pdata: Object.assign({}, this.telemetryConfig.pdata, { id: `${environment.name}.${this.telemetryConfig.pdata.id}` }), uid: this.configSvc.userProfile && this.configSvc.userProfile.userId, channel: this.rootOrgId || this.telemetryConfig.channel, sid: this.getTelemetrySessionId });
28
28
  this.pData = this.telemetryConfig.pdata;
29
29
  this.addPlayerListener();
@@ -32,6 +32,7 @@ export class TelemetryService {
32
32
  this.addTimeSpentListener();
33
33
  this.addSearchListener();
34
34
  this.addHearbeatListener();
35
+ this.addCustomImpressionListener();
35
36
  }
36
37
  }
37
38
  get getTelemetrySessionId() {
@@ -50,9 +51,11 @@ export class TelemetryService {
50
51
  type,
51
52
  mode,
52
53
  pageid: id,
54
+ duration: 1,
53
55
  }, {
54
56
  context: {
55
57
  pdata: Object.assign({}, this.pData, { id: this.pData.id }),
58
+ env: 'home',
56
59
  },
57
60
  object: Object.assign({}, (data) && data),
58
61
  });
@@ -116,7 +119,7 @@ export class TelemetryService {
116
119
  const page = this.getPageDetails();
117
120
  if (data) {
118
121
  page.pageid = data.pageId;
119
- page.module = data.pageModule;
122
+ page.module = data.module;
120
123
  }
121
124
  const edata = {
122
125
  pageid: page.pageid,
@@ -139,7 +142,7 @@ export class TelemetryService {
139
142
  $t.impression(edata, {
140
143
  context: {
141
144
  pdata: Object.assign({}, this.pData, { id: this.pData.id }),
142
- env: page.module,
145
+ env: page.module || '',
143
146
  },
144
147
  });
145
148
  }
@@ -242,11 +245,9 @@ export class TelemetryService {
242
245
  type: event.data.type,
243
246
  subtype: event.data.subType,
244
247
  id: (event.data.object) ? event.data.object.contentId || event.data.object.id || interactid || '' : '',
245
- pageid: page.pageid,
248
+ pageid: event.data.context && event.data.context.pageId || page.pageid,
246
249
  }, {
247
- context: {
248
- pdata: Object.assign({}, this.pData, { id: this.pData.id }),
249
- },
250
+ context: Object.assign({ pdata: Object.assign({}, this.pData, { id: this.pData.id }) }, (event.data.context && event.data.context.module ? { env: event.data.context.module } : null)),
250
251
  object: Object.assign({}, event.data.object),
251
252
  });
252
253
  }
@@ -287,6 +288,21 @@ export class TelemetryService {
287
288
  }
288
289
  }));
289
290
  }
291
+ addCustomImpressionListener() {
292
+ this.eventsSvc.events$
293
+ .pipe(filter(((event) => event &&
294
+ event.data &&
295
+ event.eventType === WsEvents.WsEventType.Telemetry &&
296
+ event.data.eventSubType === WsEvents.EnumTelemetrySubType.Impression)))
297
+ .subscribe((event => {
298
+ try {
299
+ this.impression(event.data.context);
300
+ }
301
+ catch (e) {
302
+ console.log('Error in telemetry impression', e);
303
+ }
304
+ }));
305
+ }
290
306
  addHearbeatListener() {
291
307
  this.eventsSvc.events$
292
308
  .pipe(filter(((event) => event &&
@@ -390,11 +406,11 @@ if (false) {
390
406
  TelemetryService.prototype.previousUrl;
391
407
  TelemetryService.prototype.telemetryConfig;
392
408
  TelemetryService.prototype.pData;
409
+ TelemetryService.prototype.environment;
393
410
  TelemetryService.prototype.contextCdata;
394
411
  TelemetryService.prototype.externalApps;
395
- TelemetryService.prototype.environment;
396
412
  TelemetryService.prototype.configSvc;
397
413
  TelemetryService.prototype.eventsSvc;
398
414
  TelemetryService.prototype.logger;
399
415
  }
400
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3VuYmlyZC1jYi91dGlscy8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy90ZWxlbWV0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHdkMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFBOzs7OztBQVFoRCxNQUFNLE9BQU8sZ0JBQWdCO0lBVTNCLFlBQ3lCLFdBQWdCLEVBQy9CLFNBQWdDLEVBQ2hDLFNBQXVCLEVBRXZCLE1BQXFCO1FBSHJCLGNBQVMsR0FBVCxTQUFTLENBQXVCO1FBQ2hDLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFFdkIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQWQvQixnQkFBVyxHQUFrQixJQUFJLENBQUE7UUFDakMsb0JBQWUsR0FBNkMsSUFBSSxDQUFBO1FBQ2hFLFVBQUssR0FBUSxJQUFJLENBQUE7UUFDakIsaUJBQVksR0FBRyxFQUFFLENBQUE7UUFFakIsaUJBQVksR0FBUTtZQUNsQixJQUFJLEVBQUUsYUFBYTtTQUNwQixDQUFBO2NBVU8sY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYztRQUNwRCxJQUFJLGNBQWMsRUFBRTtZQUNsQixJQUFJLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQyxlQUFlLENBQUE7WUFDckQsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7WUFDOUIsSUFBSSxDQUFDLGVBQWUs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LENBQUMsQ0FBQztZQUM1RCxNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUE7SUFDSCxDQUFDO0lBRUQsNEJBQTRCLENBQUMsUUFBa0I7Y0FFdkMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2NBQ2hDLFNBQVMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUU1QyxJQUFJLE1BQU0sS0FBSyxDQUFDLENBQUMsSUFBSSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUE7U0FDWjtRQUVELElBQUksTUFBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNqRCxPQUFPLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7U0FDNUI7UUFFRCxJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUMsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkQsT0FBTyxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFBO1NBQy9CO1FBRUQsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDOzs7WUEvZ0JGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OzRDQVlJLE1BQU0sU0FBQyxhQUFhO1lBdEJoQixxQkFBcUI7WUFFckIsWUFBWTtZQUNaLGFBQWE7Ozs7SUFTcEIsdUNBQWlDO0lBQ2pDLDJDQUFnRTtJQUNoRSxpQ0FBaUI7SUFDakIsd0NBQWlCO0lBRWpCLHdDQUVDO0lBQ0QsdUNBQWdCO0lBR2QscUNBQXdDO0lBQ3hDLHFDQUErQjtJQUUvQixrQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuLy8gaW1wb3J0IHsgQXV0aEtleWNsb2FrU2VydmljZSB9IGZyb20gJy4vYXV0aC1rZXljbG9hay5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBOc0luc3RhbmNlQ29uZmlnIH0gZnJvbSAnLi9jb25maWd1cmF0aW9ucy5tb2RlbCdcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWd1cmF0aW9ucy5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBXc0V2ZW50cyB9IGZyb20gJy4vZXZlbnQubW9kZWwnXHJcbmltcG9ydCB7IEV2ZW50U2VydmljZSB9IGZyb20gJy4vZXZlbnQuc2VydmljZSdcclxuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4vbG9nZ2VyLnNlcnZpY2UnXHJcbmltcG9ydCB7IE5zQ29udGVudCB9IGZyb20gJy4vd2lkZ2V0LWNvbnRlbnQubW9kZWwnXHJcblxyXG5kZWNsYXJlIHZhciAkdDogYW55XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGVsZW1ldHJ5U2VydmljZSB7XHJcbiAgcHJldmlvdXNVcmw6IHN0cmluZyB8IG51bGwgPSBudWxsXHJcbiAgdGVsZW1ldHJ5Q29uZmlnOiBOc0luc3RhbmNlQ29uZmlnLklUZWxlbWV0cnlDb25maWcgfCBudWxsID0gbnVsbFxyXG4gIHBEYXRhOiBhbnkgPSBudWxsXHJcbiAgY29udGV4dENkYXRhID0gW11cclxuXHJcbiAgZXh0ZXJuYWxBcHBzOiBhbnkgPSB7XHJcbiAgICBSQkNQOiAncmJjcC13ZWItdWknLFxyXG4gIH1cclxuICBlbnZpcm9ubWVudDogYW55XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIGVudmlyb25tZW50OiBhbnksXHJcbiAgICBwcml2YXRlIGNvbmZpZ1N2YzogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBldmVudHNTdmM6IEV2ZW50U2VydmljZSxcclxuICAgIC8vIHByaXZhdGUgYXV0aFN2YzogQXV0aEtleWNsb2FrU2VydmljZSxcclxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxyXG5cclxuICApIHtcclxuICAgIGNvbnN0IGluc3RhbmNlQ29uZmlnID0gdGhpcy5jb25maWdTdmMuaW5zdGFuY2VDb25maWdcclxuICAgIGlmIChpbnN0YW5jZUNvbmZpZykge1xyXG4gICAgICB0aGlzLnRlbGVtZXRyeUNvbmZpZyA9IGluc3RhbmNlQ29uZmlnLnRlbGVtZXRyeUNvbmZpZ1xyXG4gICAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnRcclxuICAgICAgdGhpcy50ZWxlbWV0cnlDb25maWcgPSB7XHJcbiAgICAgICAgLi4udGhpcy50ZWxlbWV0cnlDb25maWcsXHJcbiAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgIC4uLnRoaXMudGVsZW1ldHJ5Q29uZmlnLnBkYXRhLFxyXG4gICAgICAgICAgLy8gcGlkOiBuYXZpZ2F0b3IudXNlckFnZW50LFxyXG4gICAgICAgICAgaWQ6IGAke2Vudmlyb25tZW50Lm5hbWV9LiR7dGhpcy50ZWxlbWV0cnlDb25maWcucGRhdGEuaWR9YCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHVpZDogdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUgJiYgdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUudXNlcklkLFxyXG4gICAgICAgIC8vIGF1dGh0b2tlbjogdGhpcy5hdXRoU3ZjLnRva2VuLFxyXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgY2hhbm5lbDogdGhpcy5yb290T3JnSWQgfHwgdGhpcy50ZWxlbWV0cnlDb25maWcuY2hhbm5lbCxcclxuICAgICAgICBzaWQ6IHRoaXMuZ2V0VGVsZW1ldHJ5U2Vzc2lvbklkLFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucERhdGEgPSB0aGlzLnRlbGVtZXRyeUNvbmZpZy5wZGF0YVxyXG4gICAgICB0aGlzLmFkZFBsYXllckxpc3RlbmVyKClcclxuICAgICAgdGhpcy5hZGRJbnRlcmFjdExpc3RlbmVyKClcclxuICAgICAgdGhpcy5hZGRGZWVkYmFja0xpc3RlbmVyKClcclxuICAgICAgdGhpcy5hZGRUaW1lU3BlbnRMaXN0ZW5lcigpXHJcbiAgICAgIHRoaXMuYWRkU2VhcmNoTGlzdGVuZXIoKVxyXG4gICAgICB0aGlzLmFkZEhlYXJiZWF0TGlzdGVuZXIoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGdldFRlbGVtZXRyeVNlc3Npb25JZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0ZWxlbWV0cnlTZXNzaW9uSWQnKSB8fCAnJ1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJvb3RPcmdJZCgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnU3ZjICYmIHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlICYmIHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnJvb3RPcmdJZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUucm9vdE9yZ0lkXHJcbiAgICB9XHJcbiAgICByZXR1cm4gJydcclxuICB9XHJcblxyXG4gIHN0YXJ0KHR5cGU6IHN0cmluZywgbW9kZTogc3RyaW5nLCBpZDogc3RyaW5nLCBkYXRhPzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy50ZWxlbWV0cnlDb25maWcpIHtcclxuICAgICAgICAkdC5zdGFydChcclxuICAgICAgICAgIHRoaXMudGVsZW1ldHJ5Q29uZmlnLFxyXG4gICAgICAgICAgaWQsXHJcbiAgICAgICAgICAnMS4wJyxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgLy8gaWQsXHJcbiAgICAgICAgICAgIHR5cGUsXHJcbiAgICAgICAgICAgIG1vZGUsXHJcbiAgICAgICAgICAgIHBhZ2VpZDogaWQsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMucERhdGEsXHJcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5wRGF0YS5pZCxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvYmplY3Q6IHtcclxuICAgICAgICAgICAgICAuLi4oZGF0YSkgJiYgZGF0YSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0Vycm9yIEluaXRpYWxpemluZyBUZWxlbWV0cnkuIENvbmZpZyBtaXNzaW5nLicpXHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgc3RhcnQnLCBlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZW5kKHR5cGU6IHN0cmluZywgbW9kZTogc3RyaW5nLCBpZDogc3RyaW5nLCBkYXRhPzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICAkdC5lbmQoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdHlwZSxcclxuICAgICAgICAgIG1vZGUsXHJcbiAgICAgICAgICBwYWdlaWQ6IGlkLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMucERhdGEsXHJcbiAgICAgICAgICAgICAgaWQ6IHRoaXMucERhdGEuaWQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb2JqZWN0OiB7XHJcbiAgICAgICAgICAgIC4uLihkYXRhKSAmJiBkYXRhLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICApXHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gdGVsZW1ldHJ5IGVuZCcsIGUpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhdWRpdCh0eXBlOiBzdHJpbmcsIHByb3BzOiBzdHJpbmcsIGRhdGE6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgJHQuYXVkaXQoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdHlwZSxcclxuICAgICAgICAgIHByb3BzLFxyXG4gICAgICAgICAgLy8gZGF0YSxcclxuICAgICAgICAgIHN0YXRlOiBkYXRhLCAvLyBPcHRpb25hbC4gQ3VycmVudCBTdGF0ZVxyXG4gICAgICAgICAgcHJldnN0YXRlOiAnJywgLy8gT3B0aW9uYWwuIFByZXZpb3VzIFN0YXRlXHJcbiAgICAgICAgICBkdXJhdGlvbjogJycsIC8vIE9wdGlvbmFsLlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMucERhdGEsXHJcbiAgICAgICAgICAgICAgaWQ6IHRoaXMucERhdGEuaWQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIClcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgYXVkaXQnLCBlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGVhcnRiZWF0KHR5cGU6IHN0cmluZywgaWQ6IHN0cmluZykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgJHQuaGVhcnRiZWF0KHtcclxuICAgICAgICBpZCxcclxuICAgICAgICAvLyBtb2RlLFxyXG4gICAgICAgIHR5cGUsXHJcbiAgICAgIH0pXHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gdGVsZW1ldHJ5IGhlYXJ0YmVhdCcsIGUpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbXByZXNzaW9uKGRhdGE/OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLmdldFBhZ2VEZXRhaWxzKClcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICBwYWdlLnBhZ2VpZCA9IGRhdGEucGFnZUlkXHJcbiAgICAgICAgcGFnZS5tb2R1bGUgPSBkYXRhLnBhZ2VNb2R1bGVcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBlZGF0YSA9IHtcclxuICAgICAgICBwYWdlaWQ6IHBhZ2UucGFnZWlkLCAvLyBSZXF1aXJlZC4gVW5pcXVlIHBhZ2UgaWRcclxuICAgICAgICB0eXBlOiBwYWdlLnBhZ2VVcmxQYXJ0c1swXSwgLy8gUmVxdWlyZWQuIEltcHJlc3Npb24gdHlwZSAobGlzdCwgZGV0YWlsLCB2aWV3LCBlZGl0LCB3b3JrZmxvdywgc2VhcmNoKVxyXG4gICAgICAgIHVyaTogcGFnZS5wYWdlVXJsLFxyXG4gICAgICB9XHJcbiAgICAgIGlmIChwYWdlLm9iamVjdElkKSB7XHJcbiAgICAgICAgY29uc3QgY29uZmlnID0ge1xyXG4gICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMucERhdGEsXHJcbiAgICAgICAgICAgICAgaWQ6IHRoaXMucERhdGEuaWQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVudjogcGFnZS5tb2R1bGUgfHwgKHRoaXMudGVsZW1ldHJ5Q29uZmlnICYmIHRoaXMudGVsZW1ldHJ5Q29uZmlnLmVudiksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb2JqZWN0OiB7XHJcbiAgICAgICAgICAgIGlkOiBwYWdlLm9iamVjdElkLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9XHJcbiAgICAgICAgJHQuaW1wcmVzc2lvbihlZGF0YSwgY29uZmlnKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICR0LmltcHJlc3Npb24oZWRhdGEsIHtcclxuICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgIGlkOiB0aGlzLnBEYXRhLmlkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlbnY6IHBhZ2UubW9kdWxlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucHJldmlvdXNVcmwgPSBwYWdlLnBhZ2VVcmxcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgaW1wcmVzc2lvbicsIGUpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHRlcm5hbEltcHJlc3Npb24oaW1wcmVzc2lvbkRhdGE6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcGFnZSA9IHRoaXMuZ2V0UGFnZURldGFpbHMoKVxyXG4gICAgICBpZiAodGhpcy5leHRlcm5hbEFwcHNbaW1wcmVzc2lvbkRhdGEuc3ViQXBwbGljYXRpb25OYW1lXSkge1xyXG4gICAgICAgIGNvbnN0IGV4dGVybmFsQ29uZmlnID0gcGFnZS5vYmplY3RJZCA/IHtcclxuICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgIGlkOiB0aGlzLmV4dGVybmFsQXBwc1tpbXByZXNzaW9uRGF0YS5zdWJBcHBsaWNhdGlvbk5hbWVdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9iamVjdDoge1xyXG4gICAgICAgICAgICBpZDogcGFnZS5vYmplY3RJZCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSA6IHtcclxuICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgIGlkOiB0aGlzLmV4dGVybmFsQXBwc1tpbXByZXNzaW9uRGF0YS5zdWJBcHBsaWNhdGlvbk5hbWVdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9XHJcbiAgICAgICAgJHQuaW1wcmVzc2lvbihpbXByZXNzaW9uRGF0YS5kYXRhLCBleHRlcm5hbENvbmZpZylcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBleHRlcm5hbEltcHJlc3Npb24nLCBlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkVGltZVNwZW50TGlzdGVuZXIoKSB7XHJcbiAgICB0aGlzLmV2ZW50c1N2Yy5ldmVudHMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihcclxuICAgICAgICAgIGV2ZW50ID0+XHJcbiAgICAgICAgICAgIGV2ZW50ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmV2ZW50VHlwZSA9PT0gV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEudHlwZSA9PT0gV3NFdmVudHMuV3NUaW1lU3BlbnRUeXBlLlBhZ2UgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5tb2RlICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEsXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQuZGF0YS5zdGF0ZSA9PT0gV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuTG9hZGVkKSB7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0KFxyXG4gICAgICAgICAgICBldmVudC5kYXRhLnR5cGUgfHwgV3NFdmVudHMuV3NUaW1lU3BlbnRUeXBlLlBhZ2UsXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEubW9kZSB8fCBXc0V2ZW50cy5Xc1RpbWVTcGVudE1vZGUuVmlldyxcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5wYWdlSWQsXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChldmVudC5kYXRhLnN0YXRlID09PSBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5VbmxvYWRlZCkge1xyXG4gICAgICAgICAgdGhpcy5lbmQoXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEudHlwZSB8fCBXc0V2ZW50cy5Xc1RpbWVTcGVudFR5cGUuUGFnZSxcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5tb2RlIHx8IFdzRXZlbnRzLldzVGltZVNwZW50TW9kZS5WaWV3LFxyXG4gICAgICAgICAgICBldmVudC5kYXRhLnBhZ2VJZCxcclxuICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG4gIGFkZFBsYXllckxpc3RlbmVyKCkge1xyXG4gICAgdGhpcy5ldmVudHNTdmMuZXZlbnRzJFxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaWx0ZXIoXHJcbiAgICAgICAgICBldmVudCA9PlxyXG4gICAgICAgICAgICBldmVudCAmJlxyXG4gICAgICAgICAgICBldmVudC5ldmVudFR5cGUgPT09IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhLnR5cGUgPT09IFdzRXZlbnRzLldzVGltZVNwZW50VHlwZS5QbGF5ZXIgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5tb2RlICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEsXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICBjb25zdCBjb250ZW50OiBOc0NvbnRlbnQuSUNvbnRlbnQgfCBudWxsID0gZXZlbnQuZGF0YS5jb250ZW50XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZXZlbnQuZGF0YS5zdGF0ZSA9PT0gV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuTG9hZGVkICYmXHJcbiAgICAgICAgICAoIWNvbnRlbnQgfHxcclxuICAgICAgICAgICAgKGNvbnRlbnQuaXNJZnJhbWVTdXBwb3J0ZWQgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdtYXliZScgfHxcclxuICAgICAgICAgICAgKGNvbnRlbnQuaXNJZnJhbWVTdXBwb3J0ZWQgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICd5ZXMnKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5zdGFydChcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS50eXBlIHx8IFdzRXZlbnRzLldzVGltZVNwZW50VHlwZS5QbGF5ZXIsXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEubW9kZSB8fCBXc0V2ZW50cy5Xc1RpbWVTcGVudE1vZGUuUGxheSxcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5pZGVudGlmaWVyLFxyXG4gICAgICAgICAgICBldmVudC5kYXRhLm9iamVjdFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBldmVudC5kYXRhLnN0YXRlID09PSBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5VbmxvYWRlZCAmJlxyXG4gICAgICAgICAgKCFjb250ZW50IHx8XHJcbiAgICAgICAgICAgIChjb250ZW50LmlzSWZyYW1lU3VwcG9ydGVkIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnbWF5YmUnIHx8XHJcbiAgICAgICAgICAgIChjb250ZW50LmlzSWZyYW1lU3VwcG9ydGVkIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAneWVzJylcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZW5kKFxyXG4gICAgICAgICAgICBldmVudC5kYXRhLnR5cGUgfHwgV3NFdmVudHMuV3NUaW1lU3BlbnRUeXBlLlBsYXllcixcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5tb2RlIHx8IFdzRXZlbnRzLldzVGltZVNwZW50TW9kZS5QbGF5LFxyXG4gICAgICAgICAgICBldmVudC5kYXRhLmlkZW50aWZpZXIsXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEub2JqZWN0XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgYWRkSW50ZXJhY3RMaXN0ZW5lcigpIHtcclxuICAgIHRoaXMuZXZlbnRzU3ZjLmV2ZW50cyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgKGV2ZW50OiBXc0V2ZW50cy5Xc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3QpID0+XHJcbiAgICAgICAgICAgIGV2ZW50ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEgJiZcclxuICAgICAgICAgICAgZXZlbnQuZXZlbnRUeXBlID09PSBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnkgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5ldmVudFN1YlR5cGUgPT09IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkludGVyYWN0LFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgY29uc3QgcGFnZSA9IHRoaXMuZ2V0UGFnZURldGFpbHMoKVxyXG4gICAgICAgIGlmICh0eXBlb2YgZXZlbnQuZnJvbSA9PT0gJ3N0cmluZycgJiYgdGhpcy5leHRlcm5hbEFwcHNbZXZlbnQuZnJvbV0pIHtcclxuICAgICAgICAgIGNvbnN0IGV4dGVybmFsQ29uZmlnID0ge1xyXG4gICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMucERhdGEsXHJcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5leHRlcm5hbEFwcHNbZXZlbnQuZnJvbV0sXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICR0LmludGVyYWN0KGV2ZW50LmRhdGEsIGV4dGVybmFsQ29uZmlnKVxyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBpbnRlcmFjdCcsIGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCBpbnRlcmFjdGlkXHJcbiAgICAgICAgICBpZiAoZXZlbnQuZGF0YS50eXBlID09PSAnZ29hbCcpIHtcclxuICAgICAgICAgICAgaW50ZXJhY3RpZCA9IHBhZ2UucGFnZVVybFBhcnRzWzRdXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAkdC5pbnRlcmFjdChcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBldmVudC5kYXRhLnR5cGUsXHJcbiAgICAgICAgICAgICAgICBzdWJ0eXBlOiBldmVudC5kYXRhLnN1YlR5cGUsXHJcbiAgICAgICAgICAgICAgICAvLyBvYmplY3Q6IGV2ZW50LmRhdGEub2JqZWN0LFxyXG4gICAgICAgICAgICAgICAgaWQ6IChldmVudC5kYXRhLm9iamVjdCkgPyBldmVudC5kYXRhLm9iamVjdC5jb250ZW50SWQgfHwgZXZlbnQuZGF0YS5vYmplY3QuaWQgfHwgaW50ZXJhY3RpZCB8fCAnJyA6ICcnLFxyXG4gICAgICAgICAgICAgICAgcGFnZWlkOiBwYWdlLnBhZ2VpZCxcclxuICAgICAgICAgICAgICAgIC8vIHRhcmdldDogeyBwYWdlIH0sXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5wRGF0YSxcclxuICAgICAgICAgICAgICAgICAgICBpZDogdGhpcy5wRGF0YS5pZCxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBvYmplY3Q6IHtcclxuICAgICAgICAgICAgICAgICAgLi4uZXZlbnQuZGF0YS5vYmplY3QsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gdGVsZW1ldHJ5IGludGVyYWN0JywgZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBhZGRGZWVkYmFja0xpc3RlbmVyKCkge1xyXG4gICAgdGhpcy5ldmVudHNTdmMuZXZlbnRzJFxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaWx0ZXIoXHJcbiAgICAgICAgICAoZXZlbnQ6IFdzRXZlbnRzLldzRXZlbnRUZWxlbWV0cnlGZWVkYmFjaykgPT5cclxuICAgICAgICAgICAgZXZlbnQgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YSAmJlxyXG4gICAgICAgICAgICBldmVudC5ldmVudFR5cGUgPT09IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhLmV2ZW50U3ViVHlwZSA9PT0gV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuRmVlZGJhY2ssXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICBjb25zdCBwYWdlID0gdGhpcy5nZXRQYWdlRGV0YWlscygpXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICR0LmZlZWRiYWNrKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgcmF0aW5nOiBldmVudC5kYXRhLm9iamVjdC5yYXRpbmcgfHwgMCxcclxuICAgICAgICAgICAgICBjb21tZW50aWQ6IGV2ZW50LmRhdGEub2JqZWN0LmNvbW1lbnRpZCB8fCAnJyxcclxuICAgICAgICAgICAgICBjb21tZW50dHh0OiBldmVudC5kYXRhLm9iamVjdC5jb21tZW50dHh0IHx8ICcnLFxyXG4gICAgICAgICAgICAgIHBhZ2VpZDogcGFnZS5wYWdlaWQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgICAgICBpZDogdGhpcy5wRGF0YS5pZCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBvYmplY3Q6IHtcclxuICAgICAgICAgICAgICAgIGlkOiBldmVudC5kYXRhLm9iamVjdC5jb250ZW50SWQgfHwgZXZlbnQuZGF0YS5vYmplY3QuaWQgfHwgJycsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBldmVudC5kYXRhLnR5cGUgfHwgJycsXHJcbiAgICAgICAgICAgICAgICB2ZXI6IGAkeyhldmVudC5kYXRhLm9iamVjdC52ZXJzaW9uIHx8ICcxJyl9JHsnJ31gLFxyXG4gICAgICAgICAgICAgICAgcm9sbHVwOiB7fSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBpbnRlcmFjdCcsIGUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgYWRkSGVhcmJlYXRMaXN0ZW5lcigpIHtcclxuICAgIHRoaXMuZXZlbnRzU3ZjLmV2ZW50cyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgKGV2ZW50OiBXc0V2ZW50cy5Xc0V2ZW50VGVsZW1ldHJ5SGVhcnRCZWF0KSA9PlxyXG4gICAgICAgICAgICBldmVudCAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmV2ZW50VHlwZSA9PT0gV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEuZXZlbnRTdWJUeXBlID09PSBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5IZWFydEJlYXQsXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIGV2ZW50LmZyb20gPT09ICdzdHJpbmcnICYmIHRoaXMuZXh0ZXJuYWxBcHBzW2V2ZW50LmZyb21dKSB7XHJcbiAgICAgICAgICBjb25zdCBleHRlcm5hbENvbmZpZyA9IHtcclxuICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuZXh0ZXJuYWxBcHBzW2V2ZW50LmZyb21dLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAkdC5oZWFydGJlYXQoZXZlbnQuZGF0YSwgZXh0ZXJuYWxDb25maWcpXHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gdGVsZW1ldHJ5IGhlYXJ0YmVhdCcsIGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICR0LmhlYXJ0YmVhdChcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBldmVudC5kYXRhLnR5cGUsXHJcbiAgICAgICAgICAgICAgICAvLyBzdWJ0eXBlOiBldmVudC5kYXRhLmV2ZW50U3ViVHlwZSxcclxuICAgICAgICAgICAgICAgIGlkOiBldmVudC5kYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgLy8gbWltZVR5cGU6IGV2ZW50LmRhdGEubWltZVR5cGUsXHJcbiAgICAgICAgICAgICAgICAvLyBtb2RlOiBldmVudC5kYXRhLm1vZGUsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5wRGF0YSxcclxuICAgICAgICAgICAgICAgICAgICBpZDogdGhpcy5wRGF0YS5pZCxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgaGVhcnRiZWF0JywgZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBhZGRTZWFyY2hMaXN0ZW5lcigpIHtcclxuICAgIHRoaXMuZXZlbnRzU3ZjLmV2ZW50cyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgKGV2ZW50OiBXc0V2ZW50cy5Xc0V2ZW50VGVsZW1ldHJ5U2VhcmNoKSA9PlxyXG4gICAgICAgICAgICBldmVudCAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmV2ZW50VHlwZSA9PT0gV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEuZXZlbnRTdWJUeXBlID09PSBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5TZWFyY2gsXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgJHQuc2VhcmNoKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgcXVlcnk6IGV2ZW50LmRhdGEucXVlcnksXHJcbiAgICAgICAgICAgICAgZmlsdGVyczogZXZlbnQuZGF0YS5maWx0ZXJzLFxyXG4gICAgICAgICAgICAgIHNpemU6IGV2ZW50LmRhdGEuc2l6ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgIC4uLnRoaXMucERhdGEsXHJcbiAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLnBEYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBzZWFyY2gnLCBlKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGdldFBhZ2VEZXRhaWxzKCkge1xyXG4gICAgY29uc3QgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKCcvJywgJycpXHJcbiAgICBjb25zdCB1cmwgPSBwYXRoICsgd2luZG93LmxvY2F0aW9uLnNlYXJjaFxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcGFnZWlkOiBwYXRoLFxyXG4gICAgICBwYWdlVXJsOiB1cmwsXHJcbiAgICAgIHBhZ2VVcmxQYXJ0czogcGF0aC5zcGxpdCgnLycpLFxyXG4gICAgICByZWZmZXJVcmw6IHRoaXMucHJldmlvdXNVcmwsXHJcbiAgICAgIG9iamVjdElkOiB0aGlzLmV4dHJhY3RDb250ZW50SWRGcm9tVXJsUGFydHMocGF0aC5zcGxpdCgnLycpKSxcclxuICAgICAgbW9kdWxlOiAnJyxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4dHJhY3RDb250ZW50SWRGcm9tVXJsUGFydHModXJsUGFydHM6IHN0cmluZ1tdKSB7XHJcbiAgICAvLyBUT0RPOiBwaWNrIHRvYyBhbmQgdmlld2VyIHVybCBmcm9tIHNvbWUgY29uZmlndXJhdGlvblxyXG4gICAgY29uc3QgdG9jSWR4ID0gdXJsUGFydHMuaW5kZXhPZigndG9jJylcclxuICAgIGNvbnN0IHZpZXdlcklkeCA9IHVybFBhcnRzLmluZGV4T2YoJ3ZpZXdlcicpXHJcblxyXG4gICAgaWYgKHRvY0lkeCA9PT0gLTEgJiYgdmlld2VySWR4ID09PSAtMSkge1xyXG4gICAgICByZXR1cm4gbnVsbFxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0b2NJZHggIT09IC0xICYmIHRvY0lkeCA8IHVybFBhcnRzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgcmV0dXJuIHVybFBhcnRzW3RvY0lkeCArIDFdIC8vIGUuZy4gdXJsIC9hcHAvdG9jLzxjb250ZW50X2lkPlxyXG4gICAgfVxyXG5cclxuICAgIGlmICh2aWV3ZXJJZHggIT09IC0xICYmIHZpZXdlcklkeCA8IHVybFBhcnRzLmxlbmd0aCAtIDIpIHtcclxuICAgICAgcmV0dXJuIHVybFBhcnRzW3ZpZXdlcklkeCArIDJdIC8vIGUuZy4gdXJsIC9hcHAvdmlld2VyLzxjb250ZW50X3R5cGU+Lzxjb250ZW50X2lkPlxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsXHJcbiAgfVxyXG59XHJcbiJdfQ==
416
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3VuYmlyZC1jYi91dGlscy8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy90ZWxlbWV0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHdkMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFBOzs7OztBQVFoRCxNQUFNLE9BQU8sZ0JBQWdCO0lBVTNCLFlBQ3lCLFdBQWdCLEVBQy9CLFNBQWdDLEVBQ2hDLFNBQXVCLEVBRXZCLE1BQXFCO1FBSHJCLGNBQVMsR0FBVCxTQUFTLENBQXVCO1FBQ2hDLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFFdkIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQWQvQixnQkFBVyxHQUFrQixJQUFJLENBQUE7UUFDakMsb0JBQWUsR0FBNkMsSUFBSSxDQUFBO1FBQ2hFLFVBQUssR0FBUSxJQUFJLENBQUE7UUFFakIsaUJBQVksR0FBRyxFQUFFLENBQUE7UUFFakIsaUJBQVksR0FBUTtZQUNsQixJQUFJLEVBQUUsYUFBYTtTQUNwQixDQUFBO1FBUUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7Y0FDeEIsY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYztRQUNwRCxJQUFJLGNBQWMsRUFBRTtZQUNsQixJQUFJLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQyxlQUFlLENBQUE7WUFDckQsSUFBSSxDQUFDLGVBQWUs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Q2hDLFNBQVMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUU1QyxJQUFJLE1BQU0sS0FBSyxDQUFDLENBQUMsSUFBSSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUE7U0FDWjtRQUVELElBQUksTUFBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNqRCxPQUFPLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7U0FDNUI7UUFFRCxJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUMsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkQsT0FBTyxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFBO1NBQy9CO1FBRUQsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDOzs7WUF6aUJGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OzRDQVlJLE1BQU0sU0FBQyxhQUFhO1lBdEJoQixxQkFBcUI7WUFFckIsWUFBWTtZQUNaLGFBQWE7Ozs7SUFTcEIsdUNBQWlDO0lBQ2pDLDJDQUFnRTtJQUNoRSxpQ0FBaUI7SUFDakIsdUNBQWdCO0lBQ2hCLHdDQUFpQjtJQUVqQix3Q0FFQztJQUdDLHFDQUF3QztJQUN4QyxxQ0FBK0I7SUFFL0Isa0NBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcbi8vIGltcG9ydCB7IEF1dGhLZXljbG9ha1NlcnZpY2UgfSBmcm9tICcuL2F1dGgta2V5Y2xvYWsuc2VydmljZSdcclxuaW1wb3J0IHsgTnNJbnN0YW5jZUNvbmZpZyB9IGZyb20gJy4vY29uZmlndXJhdGlvbnMubW9kZWwnXHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zU2VydmljZSB9IGZyb20gJy4vY29uZmlndXJhdGlvbnMuc2VydmljZSdcclxuaW1wb3J0IHsgV3NFdmVudHMgfSBmcm9tICcuL2V2ZW50Lm1vZGVsJ1xyXG5pbXBvcnQgeyBFdmVudFNlcnZpY2UgfSBmcm9tICcuL2V2ZW50LnNlcnZpY2UnXHJcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuL2xvZ2dlci5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBOc0NvbnRlbnQgfSBmcm9tICcuL3dpZGdldC1jb250ZW50Lm1vZGVsJ1xyXG5cclxuZGVjbGFyZSB2YXIgJHQ6IGFueVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRlbGVtZXRyeVNlcnZpY2Uge1xyXG4gIHByZXZpb3VzVXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbFxyXG4gIHRlbGVtZXRyeUNvbmZpZzogTnNJbnN0YW5jZUNvbmZpZy5JVGVsZW1ldHJ5Q29uZmlnIHwgbnVsbCA9IG51bGxcclxuICBwRGF0YTogYW55ID0gbnVsbFxyXG4gIGVudmlyb25tZW50OiBhbnlcclxuICBjb250ZXh0Q2RhdGEgPSBbXVxyXG5cclxuICBleHRlcm5hbEFwcHM6IGFueSA9IHtcclxuICAgIFJCQ1A6ICdyYmNwLXdlYi11aScsXHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBlbnZpcm9ubWVudDogYW55LFxyXG4gICAgcHJpdmF0ZSBjb25maWdTdmM6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgZXZlbnRzU3ZjOiBFdmVudFNlcnZpY2UsXHJcbiAgICAvLyBwcml2YXRlIGF1dGhTdmM6IEF1dGhLZXljbG9ha1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSxcclxuICApIHtcclxuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudFxyXG4gICAgY29uc3QgaW5zdGFuY2VDb25maWcgPSB0aGlzLmNvbmZpZ1N2Yy5pbnN0YW5jZUNvbmZpZ1xyXG4gICAgaWYgKGluc3RhbmNlQ29uZmlnKSB7XHJcbiAgICAgIHRoaXMudGVsZW1ldHJ5Q29uZmlnID0gaW5zdGFuY2VDb25maWcudGVsZW1ldHJ5Q29uZmlnXHJcbiAgICAgIHRoaXMudGVsZW1ldHJ5Q29uZmlnID0ge1xyXG4gICAgICAgIC4uLnRoaXMudGVsZW1ldHJ5Q29uZmlnLFxyXG4gICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAuLi50aGlzLnRlbGVtZXRyeUNvbmZpZy5wZGF0YSxcclxuICAgICAgICAgIC8vIHBpZDogbmF2aWdhdG9yLnVzZXJBZ2VudCxcclxuICAgICAgICAgIGlkOiBgJHtlbnZpcm9ubWVudC5uYW1lfS4ke3RoaXMudGVsZW1ldHJ5Q29uZmlnLnBkYXRhLmlkfWAsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB1aWQ6IHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlICYmIHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnVzZXJJZCxcclxuICAgICAgICAvLyBhdXRodG9rZW46IHRoaXMuYXV0aFN2Yy50b2tlbixcclxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgICAgIGNoYW5uZWw6IHRoaXMucm9vdE9yZ0lkIHx8IHRoaXMudGVsZW1ldHJ5Q29uZmlnLmNoYW5uZWwsXHJcbiAgICAgICAgc2lkOiB0aGlzLmdldFRlbGVtZXRyeVNlc3Npb25JZCxcclxuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wRGF0YSA9IHRoaXMudGVsZW1ldHJ5Q29uZmlnLnBkYXRhXHJcbiAgICAgIHRoaXMuYWRkUGxheWVyTGlzdGVuZXIoKVxyXG4gICAgICB0aGlzLmFkZEludGVyYWN0TGlzdGVuZXIoKVxyXG4gICAgICB0aGlzLmFkZEZlZWRiYWNrTGlzdGVuZXIoKVxyXG4gICAgICB0aGlzLmFkZFRpbWVTcGVudExpc3RlbmVyKClcclxuICAgICAgdGhpcy5hZGRTZWFyY2hMaXN0ZW5lcigpXHJcbiAgICAgIHRoaXMuYWRkSGVhcmJlYXRMaXN0ZW5lcigpXHJcbiAgICAgIHRoaXMuYWRkQ3VzdG9tSW1wcmVzc2lvbkxpc3RlbmVyKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBnZXRUZWxlbWV0cnlTZXNzaW9uSWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGVsZW1ldHJ5U2Vzc2lvbklkJykgfHwgJydcclxuICB9XHJcblxyXG4gIGdldCByb290T3JnSWQoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZ1N2YyAmJiB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZSAmJiB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS5yb290T3JnSWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnJvb3RPcmdJZFxyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnXHJcbiAgfVxyXG5cclxuICBzdGFydCh0eXBlOiBzdHJpbmcsIG1vZGU6IHN0cmluZywgaWQ6IHN0cmluZywgZGF0YT86IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMudGVsZW1ldHJ5Q29uZmlnKSB7XHJcbiAgICAgICAgJHQuc3RhcnQoXHJcbiAgICAgICAgICB0aGlzLnRlbGVtZXRyeUNvbmZpZyxcclxuICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgJzEuMCcsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIC8vIGlkLFxyXG4gICAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgICBtb2RlLFxyXG4gICAgICAgICAgICBwYWdlaWQ6IGlkLFxyXG4gICAgICAgICAgICBkdXJhdGlvbjogMSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5wRGF0YSxcclxuICAgICAgICAgICAgICAgIGlkOiB0aGlzLnBEYXRhLmlkLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgZW52OiAnaG9tZScsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9iamVjdDoge1xyXG4gICAgICAgICAgICAgIC4uLihkYXRhKSAmJiBkYXRhLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignRXJyb3IgSW5pdGlhbGl6aW5nIFRlbGVtZXRyeS4gQ29uZmlnIG1pc3NpbmcuJylcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBzdGFydCcsIGUpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbmQodHlwZTogc3RyaW5nLCBtb2RlOiBzdHJpbmcsIGlkOiBzdHJpbmcsIGRhdGE/OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgICR0LmVuZChcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgbW9kZSxcclxuICAgICAgICAgIHBhZ2VpZDogaWQsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5wRGF0YSxcclxuICAgICAgICAgICAgICBpZDogdGhpcy5wRGF0YS5pZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvYmplY3Q6IHtcclxuICAgICAgICAgICAgLi4uKGRhdGEpICYmIGRhdGEsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIClcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgZW5kJywgZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGF1ZGl0KHR5cGU6IHN0cmluZywgcHJvcHM6IHN0cmluZywgZGF0YTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICAkdC5hdWRpdChcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgcHJvcHMsXHJcbiAgICAgICAgICAvLyBkYXRhLFxyXG4gICAgICAgICAgc3RhdGU6IGRhdGEsIC8vIE9wdGlvbmFsLiBDdXJyZW50IFN0YXRlXHJcbiAgICAgICAgICBwcmV2c3RhdGU6ICcnLCAvLyBPcHRpb25hbC4gUHJldmlvdXMgU3RhdGVcclxuICAgICAgICAgIGR1cmF0aW9uOiAnJywgLy8gT3B0aW9uYWwuXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5wRGF0YSxcclxuICAgICAgICAgICAgICBpZDogdGhpcy5wRGF0YS5pZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgKVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBhdWRpdCcsIGUpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoZWFydGJlYXQodHlwZTogc3RyaW5nLCBpZDogc3RyaW5nKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICAkdC5oZWFydGJlYXQoe1xyXG4gICAgICAgIGlkLFxyXG4gICAgICAgIC8vIG1vZGUsXHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgfSlcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgaGVhcnRiZWF0JywgZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGltcHJlc3Npb24oZGF0YT86IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcGFnZSA9IHRoaXMuZ2V0UGFnZURldGFpbHMoKVxyXG4gICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgIHBhZ2UucGFnZWlkID0gZGF0YS5wYWdlSWRcclxuICAgICAgICBwYWdlLm1vZHVsZSA9IGRhdGEubW9kdWxlXHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZWRhdGEgPSB7XHJcbiAgICAgICAgcGFnZWlkOiBwYWdlLnBhZ2VpZCwgLy8gUmVxdWlyZWQuIFVuaXF1ZSBwYWdlIGlkXHJcbiAgICAgICAgdHlwZTogcGFnZS5wYWdlVXJsUGFydHNbMF0sIC8vIFJlcXVpcmVkLiBJbXByZXNzaW9uIHR5cGUgKGxpc3QsIGRldGFpbCwgdmlldywgZWRpdCwgd29ya2Zsb3csIHNlYXJjaClcclxuICAgICAgICB1cmk6IHBhZ2UucGFnZVVybCxcclxuICAgICAgfVxyXG4gICAgICBpZiAocGFnZS5vYmplY3RJZCkge1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHtcclxuICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgIGlkOiB0aGlzLnBEYXRhLmlkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlbnY6IHBhZ2UubW9kdWxlIHx8ICh0aGlzLnRlbGVtZXRyeUNvbmZpZyAmJiB0aGlzLnRlbGVtZXRyeUNvbmZpZy5lbnYpLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9iamVjdDoge1xyXG4gICAgICAgICAgICBpZDogcGFnZS5vYmplY3RJZCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfVxyXG4gICAgICAgICR0LmltcHJlc3Npb24oZWRhdGEsIGNvbmZpZylcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAkdC5pbXByZXNzaW9uKGVkYXRhLCB7XHJcbiAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5wRGF0YSxcclxuICAgICAgICAgICAgICBpZDogdGhpcy5wRGF0YS5pZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZW52OiBwYWdlLm1vZHVsZSB8fCAnJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnByZXZpb3VzVXJsID0gcGFnZS5wYWdlVXJsXHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gdGVsZW1ldHJ5IGltcHJlc3Npb24nLCBlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXh0ZXJuYWxJbXByZXNzaW9uKGltcHJlc3Npb25EYXRhOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLmdldFBhZ2VEZXRhaWxzKClcclxuICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxBcHBzW2ltcHJlc3Npb25EYXRhLnN1YkFwcGxpY2F0aW9uTmFtZV0pIHtcclxuICAgICAgICBjb25zdCBleHRlcm5hbENvbmZpZyA9IHBhZ2Uub2JqZWN0SWQgPyB7XHJcbiAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5wRGF0YSxcclxuICAgICAgICAgICAgICBpZDogdGhpcy5leHRlcm5hbEFwcHNbaW1wcmVzc2lvbkRhdGEuc3ViQXBwbGljYXRpb25OYW1lXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvYmplY3Q6IHtcclxuICAgICAgICAgICAgaWQ6IHBhZ2Uub2JqZWN0SWQsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0gOiB7XHJcbiAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5wRGF0YSxcclxuICAgICAgICAgICAgICBpZDogdGhpcy5leHRlcm5hbEFwcHNbaW1wcmVzc2lvbkRhdGEuc3ViQXBwbGljYXRpb25OYW1lXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfVxyXG4gICAgICAgICR0LmltcHJlc3Npb24oaW1wcmVzc2lvbkRhdGEuZGF0YSwgZXh0ZXJuYWxDb25maWcpXHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgZXh0ZXJuYWxJbXByZXNzaW9uJywgZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZFRpbWVTcGVudExpc3RlbmVyKCkge1xyXG4gICAgdGhpcy5ldmVudHNTdmMuZXZlbnRzJFxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaWx0ZXIoXHJcbiAgICAgICAgICBldmVudCA9PlxyXG4gICAgICAgICAgICBldmVudCAmJlxyXG4gICAgICAgICAgICBldmVudC5ldmVudFR5cGUgPT09IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhLnR5cGUgPT09IFdzRXZlbnRzLldzVGltZVNwZW50VHlwZS5QYWdlICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEubW9kZSAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhLFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmRhdGEuc3RhdGUgPT09IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkxvYWRlZCkge1xyXG4gICAgICAgICAgdGhpcy5zdGFydChcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS50eXBlIHx8IFdzRXZlbnRzLldzVGltZVNwZW50VHlwZS5QYWdlLFxyXG4gICAgICAgICAgICBldmVudC5kYXRhLm1vZGUgfHwgV3NFdmVudHMuV3NUaW1lU3BlbnRNb2RlLlZpZXcsXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEucGFnZUlkLFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXZlbnQuZGF0YS5zdGF0ZSA9PT0gV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuVW5sb2FkZWQpIHtcclxuICAgICAgICAgIHRoaXMuZW5kKFxyXG4gICAgICAgICAgICBldmVudC5kYXRhLnR5cGUgfHwgV3NFdmVudHMuV3NUaW1lU3BlbnRUeXBlLlBhZ2UsXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEubW9kZSB8fCBXc0V2ZW50cy5Xc1RpbWVTcGVudE1vZGUuVmlldyxcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5wYWdlSWQsXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuICBhZGRQbGF5ZXJMaXN0ZW5lcigpIHtcclxuICAgIHRoaXMuZXZlbnRzU3ZjLmV2ZW50cyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgZXZlbnQgPT5cclxuICAgICAgICAgICAgZXZlbnQgJiZcclxuICAgICAgICAgICAgZXZlbnQuZXZlbnRUeXBlID09PSBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnkgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS50eXBlID09PSBXc0V2ZW50cy5Xc1RpbWVTcGVudFR5cGUuUGxheWVyICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEubW9kZSAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhLFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgY29uc3QgY29udGVudDogTnNDb250ZW50LklDb250ZW50IHwgbnVsbCA9IGV2ZW50LmRhdGEuY29udGVudFxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGV2ZW50LmRhdGEuc3RhdGUgPT09IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkxvYWRlZCAmJlxyXG4gICAgICAgICAgKCFjb250ZW50IHx8XHJcbiAgICAgICAgICAgIChjb250ZW50LmlzSWZyYW1lU3VwcG9ydGVkIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnbWF5YmUnIHx8XHJcbiAgICAgICAgICAgIChjb250ZW50LmlzSWZyYW1lU3VwcG9ydGVkIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAneWVzJylcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuc3RhcnQoXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEudHlwZSB8fCBXc0V2ZW50cy5Xc1RpbWVTcGVudFR5cGUuUGxheWVyLFxyXG4gICAgICAgICAgICBldmVudC5kYXRhLm1vZGUgfHwgV3NFdmVudHMuV3NUaW1lU3BlbnRNb2RlLlBsYXksXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEuaWRlbnRpZmllcixcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5vYmplY3RcclxuICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZXZlbnQuZGF0YS5zdGF0ZSA9PT0gV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuVW5sb2FkZWQgJiZcclxuICAgICAgICAgICghY29udGVudCB8fFxyXG4gICAgICAgICAgICAoY29udGVudC5pc0lmcmFtZVN1cHBvcnRlZCB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ21heWJlJyB8fFxyXG4gICAgICAgICAgICAoY29udGVudC5pc0lmcmFtZVN1cHBvcnRlZCB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ3llcycpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmVuZChcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS50eXBlIHx8IFdzRXZlbnRzLldzVGltZVNwZW50VHlwZS5QbGF5ZXIsXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEubW9kZSB8fCBXc0V2ZW50cy5Xc1RpbWVTcGVudE1vZGUuUGxheSxcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5pZGVudGlmaWVyLFxyXG4gICAgICAgICAgICBldmVudC5kYXRhLm9iamVjdFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGFkZEludGVyYWN0TGlzdGVuZXIoKSB7XHJcbiAgICB0aGlzLmV2ZW50c1N2Yy5ldmVudHMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihcclxuICAgICAgICAgIChldmVudDogV3NFdmVudHMuV3NFdmVudFRlbGVtZXRyeUludGVyYWN0KSA9PlxyXG4gICAgICAgICAgICBldmVudCAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmV2ZW50VHlwZSA9PT0gV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEuZXZlbnRTdWJUeXBlID09PSBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5JbnRlcmFjdCxcclxuICAgICAgICApLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLmdldFBhZ2VEZXRhaWxzKClcclxuICAgICAgICBpZiAodHlwZW9mIGV2ZW50LmZyb20gPT09ICdzdHJpbmcnICYmIHRoaXMuZXh0ZXJuYWxBcHBzW2V2ZW50LmZyb21dKSB7XHJcbiAgICAgICAgICBjb25zdCBleHRlcm5hbENvbmZpZyA9IHtcclxuICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgIHBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuZXh0ZXJuYWxBcHBzW2V2ZW50LmZyb21dLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAkdC5pbnRlcmFjdChldmVudC5kYXRhLCBleHRlcm5hbENvbmZpZylcclxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgaW50ZXJhY3QnLCBlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgaW50ZXJhY3RpZFxyXG4gICAgICAgICAgaWYgKGV2ZW50LmRhdGEudHlwZSA9PT0gJ2dvYWwnKSB7XHJcbiAgICAgICAgICAgIGludGVyYWN0aWQgPSBwYWdlLnBhZ2VVcmxQYXJ0c1s0XVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgJHQuaW50ZXJhY3QoXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogZXZlbnQuZGF0YS50eXBlLFxyXG4gICAgICAgICAgICAgICAgc3VidHlwZTogZXZlbnQuZGF0YS5zdWJUeXBlLFxyXG4gICAgICAgICAgICAgICAgLy8gb2JqZWN0OiBldmVudC5kYXRhLm9iamVjdCxcclxuICAgICAgICAgICAgICAgIGlkOiAoZXZlbnQuZGF0YS5vYmplY3QpID8gZXZlbnQuZGF0YS5vYmplY3QuY29udGVudElkIHx8IGV2ZW50LmRhdGEub2JqZWN0LmlkIHx8IGludGVyYWN0aWQgfHwgJycgOiAnJyxcclxuICAgICAgICAgICAgICAgIHBhZ2VpZDogZXZlbnQuZGF0YS5jb250ZXh0ICYmIGV2ZW50LmRhdGEuY29udGV4dC5wYWdlSWQgfHwgIHBhZ2UucGFnZWlkLFxyXG4gICAgICAgICAgICAgICAgLy8gdGFyZ2V0OiB7IHBhZ2UgfSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLnBEYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAuLi4oZXZlbnQuZGF0YS5jb250ZXh0ICYmIGV2ZW50LmRhdGEuY29udGV4dC5tb2R1bGUgPyB7IGVudjogZXZlbnQuZGF0YS5jb250ZXh0Lm1vZHVsZSB9IDogbnVsbCksXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgb2JqZWN0OiB7XHJcbiAgICAgICAgICAgICAgICAgIC4uLmV2ZW50LmRhdGEub2JqZWN0LFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBpbnRlcmFjdCcsIGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgYWRkRmVlZGJhY2tMaXN0ZW5lcigpIHtcclxuICAgIHRoaXMuZXZlbnRzU3ZjLmV2ZW50cyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgKGV2ZW50OiBXc0V2ZW50cy5Xc0V2ZW50VGVsZW1ldHJ5RmVlZGJhY2spID0+XHJcbiAgICAgICAgICAgIGV2ZW50ICYmXHJcbiAgICAgICAgICAgIGV2ZW50LmRhdGEgJiZcclxuICAgICAgICAgICAgZXZlbnQuZXZlbnRUeXBlID09PSBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnkgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YS5ldmVudFN1YlR5cGUgPT09IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkZlZWRiYWNrLFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgY29uc3QgcGFnZSA9IHRoaXMuZ2V0UGFnZURldGFpbHMoKVxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAkdC5mZWVkYmFjayhcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHJhdGluZzogZXZlbnQuZGF0YS5vYmplY3QucmF0aW5nIHx8IDAsXHJcbiAgICAgICAgICAgICAgY29tbWVudGlkOiBldmVudC5kYXRhLm9iamVjdC5jb21tZW50aWQgfHwgJycsXHJcbiAgICAgICAgICAgICAgY29tbWVudHR4dDogZXZlbnQuZGF0YS5vYmplY3QuY29tbWVudHR4dCB8fCAnJyxcclxuICAgICAgICAgICAgICBwYWdlaWQ6IHBhZ2UucGFnZWlkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgcGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgLi4udGhpcy5wRGF0YSxcclxuICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMucERhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgb2JqZWN0OiB7XHJcbiAgICAgICAgICAgICAgICBpZDogZXZlbnQuZGF0YS5vYmplY3QuY29udGVudElkIHx8IGV2ZW50LmRhdGEub2JqZWN0LmlkIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogZXZlbnQuZGF0YS50eXBlIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgdmVyOiBgJHsoZXZlbnQuZGF0YS5vYmplY3QudmVyc2lvbiB8fCAnMScpfSR7Jyd9YCxcclxuICAgICAgICAgICAgICAgIHJvbGx1cDoge30sXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgaW50ZXJhY3QnLCBlKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGFkZEN1c3RvbUltcHJlc3Npb25MaXN0ZW5lcigpIHtcclxuICAgIHRoaXMuZXZlbnRzU3ZjLmV2ZW50cyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgKGV2ZW50OiBXc0V2ZW50cy5Xc0V2ZW50VGVsZW1ldHJ5SW1wcmVzc2lvbikgPT5cclxuICAgICAgICAgICAgZXZlbnQgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YSAmJlxyXG4gICAgICAgICAgICBldmVudC5ldmVudFR5cGUgPT09IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhLmV2ZW50U3ViVHlwZSA9PT0gV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuSW1wcmVzc2lvbixcclxuICAgICAgICApLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnZXZlbnQuZGF0YTo6JywgZXZlbnQuZGF0YSlcclxuICAgICAgICAgIHRoaXMuaW1wcmVzc2lvbihldmVudC5kYXRhLmNvbnRleHQpXHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gdGVsZW1ldHJ5IGltcHJlc3Npb24nLCBlKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGFkZEhlYXJiZWF0TGlzdGVuZXIoKSB7XHJcbiAgICB0aGlzLmV2ZW50c1N2Yy5ldmVudHMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihcclxuICAgICAgICAgIChldmVudDogV3NFdmVudHMuV3NFdmVudFRlbGVtZXRyeUhlYXJ0QmVhdCkgPT5cclxuICAgICAgICAgICAgZXZlbnQgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YSAmJlxyXG4gICAgICAgICAgICBldmVudC5ldmVudFR5cGUgPT09IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhLmV2ZW50U3ViVHlwZSA9PT0gV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuSGVhcnRCZWF0LFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBldmVudC5mcm9tID09PSAnc3RyaW5nJyAmJiB0aGlzLmV4dGVybmFsQXBwc1tldmVudC5mcm9tXSkge1xyXG4gICAgICAgICAgY29uc3QgZXh0ZXJuYWxDb25maWcgPSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5wRGF0YSxcclxuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmV4dGVybmFsQXBwc1tldmVudC5mcm9tXSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgJHQuaGVhcnRiZWF0KGV2ZW50LmRhdGEsIGV4dGVybmFsQ29uZmlnKVxyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHRlbGVtZXRyeSBoZWFydGJlYXQnLCBlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAkdC5oZWFydGJlYXQoXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogZXZlbnQuZGF0YS50eXBlLFxyXG4gICAgICAgICAgICAgICAgLy8gc3VidHlwZTogZXZlbnQuZGF0YS5ldmVudFN1YlR5cGUsXHJcbiAgICAgICAgICAgICAgICBpZDogZXZlbnQuZGF0YS5pZCxcclxuICAgICAgICAgICAgICAgIC8vIG1pbWVUeXBlOiBldmVudC5kYXRhLm1pbWVUeXBlLFxyXG4gICAgICAgICAgICAgICAgLy8gbW9kZTogZXZlbnQuZGF0YS5tb2RlLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMucERhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMucERhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gdGVsZW1ldHJ5IGhlYXJ0YmVhdCcsIGUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgYWRkU2VhcmNoTGlzdGVuZXIoKSB7XHJcbiAgICB0aGlzLmV2ZW50c1N2Yy5ldmVudHMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihcclxuICAgICAgICAgIChldmVudDogV3NFdmVudHMuV3NFdmVudFRlbGVtZXRyeVNlYXJjaCkgPT5cclxuICAgICAgICAgICAgZXZlbnQgJiZcclxuICAgICAgICAgICAgZXZlbnQuZGF0YSAmJlxyXG4gICAgICAgICAgICBldmVudC5ldmVudFR5cGUgPT09IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSAmJlxyXG4gICAgICAgICAgICBldmVudC5kYXRhLmV2ZW50U3ViVHlwZSA9PT0gV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuU2VhcmNoLFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICR0LnNlYXJjaChcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHF1ZXJ5OiBldmVudC5kYXRhLnF1ZXJ5LFxyXG4gICAgICAgICAgICAgIGZpbHRlcnM6IGV2ZW50LmRhdGEuZmlsdGVycyxcclxuICAgICAgICAgICAgICBzaXplOiBldmVudC5kYXRhLnNpemUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICBwZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAuLi50aGlzLnBEYXRhLFxyXG4gICAgICAgICAgICAgICAgICBpZDogdGhpcy5wRGF0YS5pZCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIClcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiB0ZWxlbWV0cnkgc2VhcmNoJywgZSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXRQYWdlRGV0YWlscygpIHtcclxuICAgIGNvbnN0IHBhdGggPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgnLycsICcnKVxyXG4gICAgY29uc3QgdXJsID0gcGF0aCArIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2hcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHBhZ2VpZDogcGF0aCxcclxuICAgICAgcGFnZVVybDogdXJsLFxyXG4gICAgICBwYWdlVXJsUGFydHM6IHBhdGguc3BsaXQoJy8nKSxcclxuICAgICAgcmVmZmVyVXJsOiB0aGlzLnByZXZpb3VzVXJsLFxyXG4gICAgICBvYmplY3RJZDogdGhpcy5leHRyYWN0Q29udGVudElkRnJvbVVybFBhcnRzKHBhdGguc3BsaXQoJy8nKSksXHJcbiAgICAgIG1vZHVsZTogJycsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHRyYWN0Q29udGVudElkRnJvbVVybFBhcnRzKHVybFBhcnRzOiBzdHJpbmdbXSkge1xyXG4gICAgLy8gVE9ETzogcGljayB0b2MgYW5kIHZpZXdlciB1cmwgZnJvbSBzb21lIGNvbmZpZ3VyYXRpb25cclxuICAgIGNvbnN0IHRvY0lkeCA9IHVybFBhcnRzLmluZGV4T2YoJ3RvYycpXHJcbiAgICBjb25zdCB2aWV3ZXJJZHggPSB1cmxQYXJ0cy5pbmRleE9mKCd2aWV3ZXInKVxyXG5cclxuICAgIGlmICh0b2NJZHggPT09IC0xICYmIHZpZXdlcklkeCA9PT0gLTEpIHtcclxuICAgICAgcmV0dXJuIG51bGxcclxuICAgIH1cclxuXHJcbiAgICBpZiAodG9jSWR4ICE9PSAtMSAmJiB0b2NJZHggPCB1cmxQYXJ0cy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIHJldHVybiB1cmxQYXJ0c1t0b2NJZHggKyAxXSAvLyBlLmcuIHVybCAvYXBwL3RvYy88Y29udGVudF9pZD5cclxuICAgIH1cclxuXHJcbiAgICBpZiAodmlld2VySWR4ICE9PSAtMSAmJiB2aWV3ZXJJZHggPCB1cmxQYXJ0cy5sZW5ndGggLSAyKSB7XHJcbiAgICAgIHJldHVybiB1cmxQYXJ0c1t2aWV3ZXJJZHggKyAyXSAvLyBlLmcuIHVybCAvYXBwL3ZpZXdlci88Y29udGVudF90eXBlPi88Y29udGVudF9pZD5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxufVxyXG4iXX0=