@c8y/ngx-components 1018.0.240 → 1018.0.243

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.
@@ -135,9 +135,9 @@ export class GainsightService {
135
135
  */
136
136
  identify(sendPiiData, identifyData) {
137
137
  const windowRef = window;
138
- const { id: userId, email } = identifyData.user;
139
- const { name: tenantID } = identifyData.currentTenant;
140
- const { instanceId } = identifyData;
138
+ const { id: userId, email, roles } = identifyData.user;
139
+ const { name: tenantID, customProperties, domainName } = identifyData.currentTenant;
140
+ const { instanceId, versionUI, versionBE } = identifyData;
141
141
  /**
142
142
  * Passing ID is a minimum required data to make an identify call to Gainsight.
143
143
  * isUserCreatedAfterAnonymizationWasActivated parameter is passed to later distinguish between users created before and after data anonymization done by Gainsight.
@@ -154,36 +154,27 @@ export class GainsightService {
154
154
  isUserCreatedAfterAnonymizationWasActivated: true,
155
155
  tenantID: tenantID,
156
156
  email: '--',
157
- userName: '',
158
- firstName: '',
159
- lastName: '',
160
- domainName: '',
161
- versionUI: '',
162
- versionBE: '',
163
- userLanguage: '',
164
- instanceId: '',
165
- externalReference: '',
166
- userRoles: '',
157
+ userName: '--',
158
+ firstName: '--',
159
+ lastName: '--',
160
+ domainName,
161
+ versionUI,
162
+ versionBE,
163
+ userLanguage: this.translateService.currentLang,
164
+ instanceId,
165
+ externalReference: customProperties?.externalReference,
166
+ userRoles: this.transformUserRolesToStr(roles?.references),
167
167
  customBranding: this.isCustomBranding(),
168
168
  fullTracking: sendPiiData
169
169
  };
170
170
  if (sendPiiData) {
171
- const { userName, firstName, lastName, roles } = identifyData.user;
172
- const { customProperties, domainName } = identifyData.currentTenant;
173
- const { versionUI, versionBE } = identifyData;
171
+ const { userName, firstName, lastName } = identifyData.user;
174
172
  const extendedIdentify = {
175
173
  ...requiredIdentify,
176
174
  email,
177
175
  userName,
178
176
  firstName,
179
- lastName,
180
- domainName,
181
- versionUI,
182
- versionBE,
183
- userLanguage: this.translateService.currentLang,
184
- instanceId,
185
- externalReference: customProperties?.externalReference,
186
- userRoles: this.transformUserRolesToStr(roles?.references)
177
+ lastName
187
178
  };
188
179
  windowRef[this.GAINSIGHT_GLOBAL_SCOPE]('identify', extendedIdentify, {
189
180
  id: `${tenantID}_${instanceId}`,
@@ -382,4 +373,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
382
373
  providedIn: 'root'
383
374
  }]
384
375
  }], ctorParameters: function () { return [{ type: i1.AppStateService }, { type: i2.OptionsService }, { type: i3.CookieBannerService }, { type: i4.UserPreferencesService }, { type: i5.TranslateService }]; } });
385
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FpbnNpZ2h0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3Byb2R1Y3QtZXhwZXJpZW5jZS9nYWluc2lnaHQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scURBQXFELENBQUM7Ozs7Ozs7QUF1QjdGOzs7R0FHRztBQUlILE1BQU0sT0FBTyxnQkFBZ0I7SUEyQjNCLFlBQ1UsUUFBeUIsRUFDekIsT0FBdUIsRUFDdkIsbUJBQXdDLEVBQ3hDLHNCQUE4QyxFQUM5QyxnQkFBa0M7UUFKbEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUEvQjVDOztXQUVHO1FBQ0gsaUJBQVksR0FBRyxJ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LENBQUM7UUFDakMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdEMscUJBQXFCLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxxQkFBcUIsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGdCQUFnQixDQUN0QixlQUF1QixFQUN2QixZQUF1QztRQUV2QyxJQUFJLGFBQWEsR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNsQixPQUFPLGVBQWUsQ0FBQztTQUN4QjtRQUNELGlDQUFpQztRQUNqQyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUM7UUFDMUIsYUFBYSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7OzZHQWphVSxnQkFBZ0I7aUhBQWhCLGdCQUFnQixjQUZmLE1BQU07MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElDdXJyZW50VGVuYW50LCBJQ3VzdG9tUHJvcGVydGllcywgSUlkZW50aWZpZWQsIElVc2VyIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgY2FtZWxDYXNlLCBmbGF0TWFwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSwgZmlsdGVyLCBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb29raWVCYW5uZXJTZXJ2aWNlIH0gZnJvbSAnLi4vYm9vdHN0cmFwL2Nvb2tpZS1iYW5uZXIvY29va2llLWJhbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL29wdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdWktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3VzZXItcHJlZmVyZW5jZXMvdXNlci1wcmVmZXJlbmNlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFB4RXZlbnREYXRhIH0gZnJvbSAnLi9wcm9kdWN0LWV4cGVyaWVuY2UubW9kZWwnO1xuXG5pbnRlcmZhY2UgVXNlclJvbGUge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQHByb3BlcnR5IHVzZXIgVGhlIHVzZXIgd2hpY2ggaXMgZ2l2ZW4gdG8gR2FpbnNpZ2h0LlxuICogQHByb3BlcnR5IHRlbmFudCBUaGUgdGVuYW50IHdoaWNoIGlzIGdpdmVuIHRvIEdhaW5zaWdodC5cbiAqIEBwcm9wZXJ0eSBpbnN0YW5jZUlkIEV4dHJhY3RlZCBkb21haW4gcGFydCBvZiBhbiBVUkwuXG4gKiBAcHJvcGVydHkgdmVyc2lvblVJIFRoZSBVSSB2ZXJzaW9uIHVzZWQuXG4gKiBAcHJvcGVydHkgdmVyc2lvbkJFIFRoZSBCRSB2ZXJzaW9uIHVzZWQuXG4gKi9cbmludGVyZmFjZSBJZGVudGlmeURhdGEge1xuICB1c2VyOiBJVXNlcjtcbiAgY3VycmVudFRlbmFudDogSUN1cnJlbnRUZW5hbnQ7XG4gIGluc3RhbmNlSWQ6IHN0cmluZztcbiAgdmVyc2lvblVJPzogc3RyaW5nO1xuICB2ZXJzaW9uQkU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBzZXJ2aWNlIHRvIG1hbmFnZSB0aGUgR2FpbnNpZ2h0IGludGVncmF0aW9uLiBJdCBhbGxvd3MgdG8gbG9hZCB0aGVcbiAqIHRhZyBhbmRcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgR2FpbnNpZ2h0U2VydmljZSB7XG4gIC8qKlxuICAgKiBBIHN1YmplY3QgdGhhdCBlbWl0cyB0aGUgdGFnIGZ1bmN0aW9uIGFzIHNvb24gYXMgYSBuZXcgdGFnIGlzIHNldC5cbiAgICovXG4gIHRhZ0Z1bmN0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gIHRyYWNraW5nTG9hZGVkJDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgLyoqXG4gICAqIEdhaW5zaWdodCBpcyBhY3RpdmF0ZWQgb25seSB3aGVuIHRoZSBjb29raWUgYmFubmVyIGlzIHByZXNlbnQuIElmIGZ1bmN0aW9uYWwgY29va2llcyBhcmUgZW5hYmxlZCwgYm90aCBwZXJzb25hbGx5IGlkZW50aWZpYWJsZSBpbmZvcm1hdGlvbiAoUElJKSBhbmQgcmVxdWlyZWQgZGF0YSBhcmUgc2VudC5cbiAgICogT3RoZXJ3aXNlLCBvbmx5IHRoZSByZXF1aXJlZCBkYXRhIGlzIHRyYW5zbWl0dGVkIGR1cmluZyB0aGUgaWRlbnRpdHkgc3RlcCBleGVjdXRpb24uXG4gICAqL1xuICByZWFkb25seSBVU0VSX1BSRUZFUkVOQ0VTX0dBSU5TSUdIVF9LRVkgPSAnZ2FpbnNpZ2h0RW5hYmxlZCc7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUga2V5IHJlbWFpbmVkIHVuY2hhbmdlZCwgYnV0IGFwcGxpZXMgdG8gYWxsIGVuZ2FnZW1lbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgVVNFUl9QUkVGRVJFTkNFU19HQUlOU0lHSFRfRU5HQUdFTUVOVFNfS0VZID0gJ2dhaW5zaWdodEJvdEVuYWJsZWQnO1xuICByZWFkb25seSBISURFX0dBSU5TSUdIVF9CT1RfU1RZTEVfSUQgPSAnaGlkZS1ncy1ib3QnO1xuICBwcml2YXRlIHJlYWRvbmx5IEdBSU5TSUdIVF9VUkwgPSAnd2ViLXNkay5hcHRyaW5zaWMuY29tL2FwaS9hcHRyaW5zaWMuanM/YT0nO1xuICBwcml2YXRlIHJlYWRvbmx5IEdBSU5TSUdIVF9HTE9CQUxfU0NPUEUgPSAnYXB0cmluc2ljJztcbiAgcHJpdmF0ZSByZWFkb25seSBTQ1JJUFRfRVhFQ1VUSU9OX1dBSVRfVElNRSA9IDUwMDtcbiAgcHJpdmF0ZSByZWFkb25seSBPUFRJT05TX0tFWV9DQVRFR09SWSA9ICdnYWluc2lnaHQnO1xuICBwcml2YXRlIHJlYWRvbmx5IE9QVElPTlNfS0VZX05BTUUgPSAnYXBpLmtleSc7XG4gIHByaXZhdGUgaXNTY3JpcHRMb2FkZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBnYWluc2lnaHRLZXk6IHN0cmluZztcbiAgcHJpdmF0ZSBjYWNoZWRSZXZlcnRlZFRyYW5zbGF0aW9uczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcHJpdmF0ZSBjYWNoZWRMYW5ndWFnZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIG9wdGlvbnM6IE9wdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29va2llQmFubmVyU2VydmljZTogQ29va2llQmFubmVyU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJQcmVmZXJlbmNlc1NlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgR2FpbnNpZ2h0IHByZWZlcmVuY2UgaXMgZGlzYWJsZWQgaW4gdXNlciBwcmVmZXJlbmNlcy5cbiAgICogQHBhcmFtIHByZWZlcmVuY2VOYW1lIC0gTmFtZSBvZiB0aGUgR2FpbnNpZ2h0IHByZWZlcmVuY2UuXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGB0cnVlYCBpZiB0aGUgcHJlZmVyZW5jZSBpcyBkaXNhYmxlZCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAqL1xuICBhc3luYyBpc0dhaW5zaWdodFByZWZlcmVuY2VEaXNhYmxlZEluVXNlclByZWZlcmVuY2VzKHByZWZlcmVuY2VOYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB1c2VyR2FpbnNpZ2h0UHJlZiA9IGF3YWl0IHRoaXMudXNlclByZWZlcmVuY2VzU2VydmljZS5nZXQocHJlZmVyZW5jZU5hbWUpLnRvUHJvbWlzZSgpO1xuXG4gICAgcmV0dXJuIHVzZXJHYWluc2lnaHRQcmVmID09PSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGF0ZSBvZiB0aGUgZnVuY3Rpb25hbCBjb29raWUuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIEEgYm9vbGVhbiB2YWx1ZSB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBmdW5jdGlvbmFsIGNvb2tpZSBzaG91bGQgYmUgZW5hYmxlZCAoYHRydWVgKSBvciBkaXNhYmxlZCAoYGZhbHNlYCkuXG4gICAqL1xuICBzZXRGdW5jdGlvbmFsQ29va2llKHZhbHVlOiBib29sZWFuKSB7XG4gICAgY29uc3QgY29va2llcyA9IHRoaXMuY29va2llQmFubmVyU2VydmljZS5nZXRVc2VyQ29va2llUHJlZmVyZW5jZXMoKTtcbiAgICBpZiAoY29va2llcykge1xuICAgICAgT2JqZWN0LmtleXMoY29va2llcykuZm9yRWFjaChjb29raWVOYW1lID0+IHtcbiAgICAgICAgaWYgKGNvb2tpZU5hbWUgPT09ICdmdW5jdGlvbmFsJykge1xuICAgICAgICAgIGNvb2tpZXNbY29va2llTmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FjY2VwdENvb2tpZU5vdGljZScsIEpTT04uc3RyaW5naWZ5KGNvb2tpZXMpKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRHYWluc2lnaHRLZXkoKSB7XG4gICAgdGhpcy5nYWluc2lnaHRLZXkgPVxuICAgICAgdGhpcy5vcHRpb25zLmdhaW5zaWdodEtleSB8fFxuICAgICAgKGF3YWl0IHRoaXMub3B0aW9ucy5nZXRTeXN0ZW1PcHRpb24odGhpcy5PUFRJT05TX0tFWV9DQVRFR09SWSwgdGhpcy5PUFRJT05TX0tFWV9OQU1FKSk7XG4gICAgcmV0dXJuIHRoaXMuZ2FpbnNpZ2h0S2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRhZyBnbG9iYWwgZnVuY3Rpb24gd2hpY2ggY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgdXNlclxuICAgKiBvciBhZGQgc3BlY2lhbCBldmVudHMuXG4gICAqL1xuICBnZXQgdGFnRnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KVt0aGlzLkdBSU5TSUdIVF9HTE9CQUxfU0NPUEVdO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIHNjcmlwdCB0YWcgYW5kIGNhbGxzIHRoZSBpZGVudGlmeSBmdW5jdGlvbiB0byBzdGFydCB0aGUgdHJhY2tpbmcuXG4gICAqIEBwYXJhbSBjdXJyZW50VGVuYW50IFRoZSBjdXJyZW50IHRlbmFudC5cbiAgICogQHBhcmFtIHNlbmRQaWlEYXRhIEZsYWcgZm9yIHNlbmRpbmcgcGVyc29uYWxseSBpZGVudGlmaWFibGUgaW5mb3JtYXRpb24gKFBJSSkgZHVyaW5nIGlkZW50aWZpY2F0aW9uIGluIEdhaW5zaWdodC5cbiAgICovXG4gIGFzeW5jIGxvYWRUYWcoY3VycmVudFRlbmFudDogSUN1cnJlbnRUZW5hbnQsIHNlbmRQaWlEYXRhOiBib29sZWFuKSB7XG4gICAgY29uc3Qgc2NyaXB0VGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgY29uc3Qga2V5ID0gYXdhaXQgdGhpcy5nZXRHYWluc2lnaHRLZXkoKTtcblxuICAgIGlmIChrZXkgJiYgIXRoaXMuaXNTY3JpcHRMb2FkZWQpIHtcbiAgICAgIHRoaXMubG9hZFNjcmlwdFRhZyhzY3JpcHRUYWcsIGtleSk7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRVc2VyU3RyZWFtID0gdGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlcjtcbiAgICAgIGNvbnN0IHNjcmlwdExvYWRTdHJlYW0gPSBmcm9tRXZlbnQoc2NyaXB0VGFnLCAnbG9hZCcpO1xuICAgICAgY29uc3QgdmVyc2lvblN0cmVhbSA9IHRoaXMuYXBwU3RhdGUuc3RhdGUkLnBpcGUoXG4gICAgICAgIGZpbHRlcigoeyB2ZXJzaW9ucyB9KSA9PiB2ZXJzaW9ucy5iYWNrZW5kKSxcbiAgICAgICAgbWFwKCh7IHZlcnNpb25zIH0pID0+IHZlcnNpb25zKSxcbiAgICAgICAgdGFrZSgxKVxuICAgICAgKTtcblxuICAgICAgY29uc3Qgc291cmNlU3RyZWFtcyA9IHNlbmRQaWlEYXRhXG4gICAgICAgID8gW2N1cnJlbnRVc2VyU3RyZWFtLCBzY3JpcHRMb2FkU3RyZWFtLCB2ZXJzaW9uU3RyZWFtXVxuICAgICAgICA6IFtjdXJyZW50VXNlclN0cmVhbSwgc2NyaXB0TG9hZFN0cmVhbV07XG5cbiAgICAgIGNvbWJpbmVMYXRlc3Qoc291cmNlU3RyZWFtcylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZGVsYXkodGhpcy5TQ1JJUFRfRVhFQ1VUSU9OX1dBSVRfVElNRSksXG4gICAgICAgICAgZmlsdGVyKChbdXNlciwgc2NyaXB0RXZlbnRdKSA9PiAhIShzY3JpcHRFdmVudCAmJiB1c2VyKSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKGFyZ3MgPT4ge1xuICAgICAgICAgIGNvbnN0IFt1c2VyLCAsIHZlcnNpb25zXSA9IGFyZ3M7XG4gICAgICAgICAgdGhpcy5zZXRHbG9iYWxDb250ZXh0KCk7XG5cbiAgICAgICAgICBjb25zdCBpbnN0YW5jZUlkID0gdGhpcy5nZXRJbnN0YW5jZUlkRnJvbVVybCgpO1xuICAgICAgICAgIGlmIChzZW5kUGlpRGF0YSkge1xuICAgICAgICAgICAgY29uc3QgdmVyc2lvblVJOiBzdHJpbmcgPSB2ZXJzaW9ucy51aS5uZ3g7XG4gICAgICAgICAgICBjb25zdCB2ZXJzaW9uQkU6IHN0cmluZyA9IHZlcnNpb25zLmJhY2tlbmQ7XG4gICAgICAgICAgICBjb25zdCBleHRlbmRlZElkZW50aWZ5RGF0YTogSWRlbnRpZnlEYXRhID0ge1xuICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgICBjdXJyZW50VGVuYW50LFxuICAgICAgICAgICAgICBpbnN0YW5jZUlkLFxuICAgICAgICAgICAgICB2ZXJzaW9uVUksXG4gICAgICAgICAgICAgIHZlcnNpb25CRVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuaWRlbnRpZnkoc2VuZFBpaURhdGEsIGV4dGVuZGVkSWRlbnRpZnlEYXRhKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcmVxdWlyZWRJZGVudGlmeURhdGE6IElkZW50aWZ5RGF0YSA9IHsgdXNlciwgY3VycmVudFRlbmFudCwgaW5zdGFuY2VJZCB9O1xuICAgICAgICAgICAgdGhpcy5pZGVudGlmeShzZW5kUGlpRGF0YSwgcmVxdWlyZWRJZGVudGlmeURhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmlzU2NyaXB0TG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnRhZ0Z1bmN0aW9uJC5uZXh0KHRoaXMudGFnRnVuY3Rpb24pO1xuICAgICAgICAgIHRoaXMudHJhY2tpbmdMb2FkZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVzIHRoZSB1c2VyL2FjY291bnQgYXQgR2FpbnNpZ2h0LlxuICAgKiBAcGFyYW0gc2VuZFBpaURhdGEgRmxhZyBmb3Igc2VuZGluZyBwZXJzb25hbGx5IGlkZW50aWZpYWJsZSBpbmZvcm1hdGlvbi5cbiAgICogQHBhcmFtIGlkZW50aWZ5RGF0YSBPYmplY3QgY29udGFpbmluZyBpZGVudGlmaWNhdGlvbiBkYXRhLlxuICAgKi9cbiAgaWRlbnRpZnkoc2VuZFBpaURhdGE6IGJvb2xlYW4sIGlkZW50aWZ5RGF0YTogSWRlbnRpZnlEYXRhKSB7XG4gICAgY29uc3Qgd2luZG93UmVmID0gd2luZG93IGFzIGFueTtcbiAgICBjb25zdCB7IGlkOiB1c2VySWQsIGVtYWlsIH0gPSBpZGVudGlmeURhdGEudXNlcjtcbiAgICBjb25zdCB7IG5hbWU6IHRlbmFudElEIH0gPSBpZGVudGlmeURhdGEuY3VycmVudFRlbmFudDtcbiAgICBjb25zdCB7IGluc3RhbmNlSWQgfSA9IGlkZW50aWZ5RGF0YTtcblxuICAgIC8qKlxuICAgICAqIFBhc3NpbmcgSUQgaXMgYSBtaW5pbXVtIHJlcXVpcmVkIGRhdGEgdG8gbWFrZSBhbiBpZGVudGlmeSBjYWxsIHRvIEdhaW5zaWdodC5cbiAgICAgKiBpc1VzZXJDcmVhdGVkQWZ0ZXJBbm9ueW1pemF0aW9uV2FzQWN0aXZhdGVkIHBhcmFtZXRlciBpcyBwYXNzZWQgdG8gbGF0ZXIgZGlzdGluZ3Vpc2ggYmV0d2VlbiB1c2VycyBjcmVhdGVkIGJlZm9yZSBhbmQgYWZ0ZXIgZGF0YSBhbm9ueW1pemF0aW9uIGRvbmUgYnkgR2FpbnNpZ2h0LlxuICAgICAqIHRlbmFudElEIFVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0ZW5hbnRzIHdoZW4gc2FtZSBlbWFpbCBpcyB1c2VkIGZvciBkaWZmZXJlbnQgdGVuYW50cy5cbiAgICAgKlxuICAgICAqIER1ZSB0byBHUyBsaW1pdGF0aW9ucyAoR1MgZG9lcyBub3QgYWxsb3cgY2xlYXJpbmcgdXNlciBhdHRyL3ByZWZlcmVuY2VzIHZpYSB0aGUgR1MgdGFnISksXG4gICAgICogd2UgYWx3YXlzIG5lZWQgdG8gaW5pdGlhbGl6ZSBmaWVsZHMgcmVsYXRlZCB0byBQSUkgdG8gcHJldmVudCBsZWFraW5nIHRoaXMgZGF0YSB0byBHUyB3aGVuIHRoZSB1c2VyIGhhcyBkaXNhYmxlZCBmdW5jdGlvbmFsIGNvb2tpZXMuXG4gICAgICovXG4gICAgY29uc3QgcmVxdWlyZWRJZGVudGlmeSA9IHtcbiAgICAgIC8qKlxuICAgICAgICogRW1haWwgd2FzIG5vdCBtYW5kYXRvcnkgZm9ybSBmaWVsZCB1bnRpbCAxMC4xNFxuICAgICAgICovXG4gICAgICBpZDogZW1haWwgPyBlbWFpbCA6IGAke3VzZXJJZH1fJHt0ZW5hbnRJRH1fJHtpbnN0YW5jZUlkfWAsXG4gICAgICBpc1VzZXJDcmVhdGVkQWZ0ZXJBbm9ueW1pemF0aW9uV2FzQWN0aXZhdGVkOiB0cnVlLFxuICAgICAgdGVuYW50SUQ6IHRlbmFudElELFxuICAgICAgZW1haWw6ICctLScsXG4gICAgICB1c2VyTmFtZTogJycsXG4gICAgICBmaXJzdE5hbWU6ICcnLFxuICAgICAgbGFzdE5hbWU6ICcnLFxuICAgICAgZG9tYWluTmFtZTogJycsXG4gICAgICB2ZXJzaW9uVUk6ICcnLFxuICAgICAgdmVyc2lvbkJFOiAnJyxcbiAgICAgIHVzZXJMYW5ndWFnZTogJycsXG4gICAgICBpbnN0YW5jZUlkOiAnJyxcbiAgICAgIGV4dGVybmFsUmVmZXJlbmNlOiAnJyxcbiAgICAgIHVzZXJSb2xlczogJycsXG4gICAgICBjdXN0b21CcmFuZGluZzogdGhpcy5pc0N1c3RvbUJyYW5kaW5nKCksXG4gICAgICBmdWxsVHJhY2tpbmc6IHNlbmRQaWlEYXRhXG4gICAgfTtcblxuICAgIGlmIChzZW5kUGlpRGF0YSkge1xuICAgICAgY29uc3QgeyB1c2VyTmFtZSwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgcm9sZXMgfSA9IGlkZW50aWZ5RGF0YS51c2VyO1xuICAgICAgY29uc3QgeyBjdXN0b21Qcm9wZXJ0aWVzLCBkb21haW5OYW1lIH0gPSBpZGVudGlmeURhdGEuY3VycmVudFRlbmFudDtcbiAgICAgIGNvbnN0IHsgdmVyc2lvblVJLCB2ZXJzaW9uQkUgfSA9IGlkZW50aWZ5RGF0YTtcblxuICAgICAgY29uc3QgZXh0ZW5kZWRJZGVudGlmeSA9IHtcbiAgICAgICAgLi4ucmVxdWlyZWRJZGVudGlmeSxcbiAgICAgICAgZW1haWwsXG4gICAgICAgIHVzZXJOYW1lLFxuICAgICAgICBmaXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lLFxuICAgICAgICBkb21haW5OYW1lLFxuICAgICAgICB2ZXJzaW9uVUksXG4gICAgICAgIHZlcnNpb25CRSxcbiAgICAgICAgdXNlckxhbmd1YWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcsXG4gICAgICAgIGluc3RhbmNlSWQsXG4gICAgICAgIGV4dGVybmFsUmVmZXJlbmNlOiBjdXN0b21Qcm9wZXJ0aWVzPy5leHRlcm5hbFJlZmVyZW5jZSxcbiAgICAgICAgdXNlclJvbGVzOiB0aGlzLnRyYW5zZm9ybVVzZXJSb2xlc1RvU3RyKHJvbGVzPy5yZWZlcmVuY2VzKVxuICAgICAgfTtcblxuICAgICAgd2luZG93UmVmW3RoaXMuR0FJTlNJR0hUX0dMT0JBTF9TQ09QRV0oJ2lkZW50aWZ5JywgZXh0ZW5kZWRJZGVudGlmeSwge1xuICAgICAgICBpZDogYCR7dGVuYW50SUR9XyR7aW5zdGFuY2VJZH1gLFxuICAgICAgICBpbnN0YW5jZUlkXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB3aW5kb3dSZWZbdGhpcy5HQUlOU0lHSFRfR0xPQkFMX1NDT1BFXSgnaWRlbnRpZnknLCByZXF1aXJlZElkZW50aWZ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VycyBhbiBldmVudCB0byBiZSByZWNvcmRlZCBieSBHYWluc2lnaHQgUFguXG4gICAqIFRoaXMgbWV0aG9kIGNhbGxzIHRoZSBHYWluc2lnaHQgUFgncyB0cmFja2luZyBtZWNoYW5pc20gdG8gbG9nIGEgc3BlY2lmaWMgZXZlbnRcbiAgICogYWxvbmcgd2l0aCBpdHMgYXNzb2NpYXRlZCBwcm9wZXJ0aWVzLlxuICAgKiBAcGFyYW0gZXZlbnROYW1lIC0gTmFtZSBvZiB0aGUgZXZlbnQgdG8gYmUgdHJpZ2dlcmVkLlxuICAgKiBAcGFyYW0gcHJvcHMgLSBPcHRpb25hbCBwcm9wZXJ0aWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnQuXG4gICAqL1xuICB0cmlnZ2VyRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcsIHByb3BzPzogUHhFdmVudERhdGEpIHtcbiAgICBpZiAodGhpcy50YWdGdW5jdGlvbiAmJiBldmVudE5hbWUpIHtcbiAgICAgIGV2ZW50TmFtZSA9IHRoaXMucHJlcGFyZUV2ZW50TmFtZShldmVudE5hbWUpO1xuICAgICAgdGhpcy50YWdGdW5jdGlvbigndHJhY2snLCBldmVudE5hbWUsIHByb3BzKTtcbiAgICB9XG4gIH1cblxuICB0cmFuc2xhdGVUb0VuZ2xpc2godGV4dFRvVHJhbnNsYXRlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgY3VycmVudExhbmcgfSA9IHRoaXMudHJhbnNsYXRlU2VydmljZTtcblxuICAgIGlmIChjdXJyZW50TGFuZyA9PT0gJ2VuJykge1xuICAgICAgcmV0dXJuIHRleHRUb1RyYW5zbGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudExhbmcgJiYgY3VycmVudExhbmcgIT09IHRoaXMuY2FjaGVkTGFuZ3VhZ2UpIHtcbiAgICAgIHRoaXMuY2FjaGVkUmV2ZXJ0ZWRUcmFuc2xhdGlvbnMgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNhY2hlZFJldmVydGVkVHJhbnNsYXRpb25zKSB7XG4gICAgICB0aGlzLmNhY2hlZExhbmd1YWdlID0gY3VycmVudExhbmc7XG4gICAgICB0aGlzLmNhY2hlZFJldmVydGVkVHJhbnNsYXRpb25zID0gdGhpcy5nZXRSZXZlcnRlZFRyYW5zbGF0aW9ucyhjdXJyZW50TGFuZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0RW5UcmFuc2xhdGlvbih0ZXh0VG9UcmFuc2xhdGUsIHRoaXMuY2FjaGVkUmV2ZXJ0ZWRUcmFuc2xhdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciBwZXJzb25hbGx5IGlkZW50aWZpYWJsZSBpbmZvcm1hdGlvbiAoUElJKSBzaG91bGQgYmUgc2VudCB3aGlsZSBsb2FkaW5nIGEgdGFnLlxuICAgKiBUaGUgZGVjaXNpb24gdG8gYWN0aXZhdGUgR2FpbnNpZ2h0IGFuZCBzZW5kIFBJSSByZWxpZXMgb24gd2hldGhlciB0aGUgY29va2llUHJlZmVyZW5jZXMgb3B0aW9uIGlzIGRlZmluZWQgaW4gdGhlIGFwcGxpY2F0aW9uIHNldHRpbmdzLFxuICAgKiBpZiB0aGUgZnVuY3Rpb25hbCBjb29raWUgaXMgZW5hYmxlZCwgYW5kIGlmIHRoZSB1c2VyIGdyYW50cyBwZXJtaXNzaW9uLlxuICAgKi9cbiAgYXN5bmMgc2hvdWxkU2VuZFBpaURhdGEoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29va2llQmFubmVyU2VydmljZS5pc0NvbmZpZ0Nvb2tpZVByZWZlcmVuY2VzRGVmaW5lZCgpICYmXG4gICAgICB0aGlzLmNvb2tpZUJhbm5lclNlcnZpY2UuaXNGdW5jdGlvbmFsQ29va2llRW5hYmxlZCgpICYmXG4gICAgICAhKGF3YWl0IHRoaXMuaXNHYWluc2lnaHRQcmVmZXJlbmNlRGlzYWJsZWRJblVzZXJQcmVmZXJlbmNlcyhcbiAgICAgICAgdGhpcy5VU0VSX1BSRUZFUkVOQ0VTX0dBSU5TSUdIVF9LRVlcbiAgICAgICkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGEgc3BlY2lmaWMgdXNlciBhdHRyaWJ1dGUgaW4gdGhlIEdhaW5zaWdodCBnbG9iYWwgc2NvcGUuXG4gICAqIFRoaXMgbWV0aG9kIGludGVyZmFjZXMgd2l0aCB0aGUgR2FpbnNpZ2h0IGdsb2JhbCBvYmplY3QgdG8gc2V0IGEgdXNlcidzIHNwZWNpZmljIGF0dHJpYnV0ZSB3aXRoIGEgcHJvdmlkZWQgdmFsdWUuXG4gICAqIEBwYXJhbSBuYW1lIC0gTmFtZSBvZiB0aGUgdXNlciBhdHRyaWJ1dGUgdG8gYmUgdXBkYXRlZC5cbiAgICogQHBhcmFtIHZhbHVlIC0gVmFsdWUgdG8gc2V0IGZvciB0aGUgc3BlY2lmaWVkIHVzZXIgYXR0cmlidXRlLlxuICAgKi9cbiAgdXBkYXRlVXNlckF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyIHwgYm9vbGVhbik6IHZvaWQge1xuICAgIHdpbmRvd1t0aGlzLkdBSU5TSUdIVF9HTE9CQUxfU0NPUEVdPy4oJ3NldCcsICd1c2VyJywgeyBbbmFtZV06IHZhbHVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgdGhlIGNhcGFiaWxpdHkgdG8gbW9kaWZ5IEdhaW5zaWdodCBQWCBzZXR0aW5ncy5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgY2hlY2tzIG11bHRpcGxlIGNvbmRpdGlvbnM6XG4gICAqIDEuIFdoZXRoZXIgdHJhY2tpbmcgaGFzIGJlZW4gZGlzYWJsZWQgZ2xvYmFsbHkgdmlhIGFwcGxpY2F0aW9uIG9wdGlvbnMuXG4gICAqIDIuIFdoZXRoZXIgR2FpbnNpZ2h0IGlzIGRpc2FibGVkIGF0IHRoZSB0ZW5hbnQgbGV2ZWwgdGhyb3VnaCBjdXN0b20gcHJvcGVydGllcy5cbiAgICogMy4gV2hldGhlciBhIEdhaW5zaWdodCBrZXkgaXMgYXZhaWxhYmxlLCBlaXRoZXIgY3VycmVudGx5IGxvYWRlZCBvciBmZXRjaGVkIGFzeW5jaHJvbm91c2x5LlxuICAgKiA0LiBXaGV0aGVyIGNvb2tpZSBwcmVmZXJlbmNlcyBhcmUgZGVmaW5lZCBhbmQgYXZhaWxhYmxlIGZvciB0aGUgdXNlci5cbiAgICpcbiAgICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgYm9vbGVhbi4gVHJ1ZSBpbmRpY2F0ZXMgdGhlIHVzZXIgY2FuIGVkaXQgcHJvZHVjdCBleHBlcmllbmNlIHNldHRpbmdzLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgYXN5bmMgY2FuRWRpdFByb2R1Y3RFeHBlcmllbmNlU2V0dGluZ3MoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY3VycmVudFRlbmFudCA9IHRoaXMuYXBwU3RhdGUuY3VycmVudFRlbmFudC52YWx1ZTtcbiAgICBjb25zdCB7IGN1c3RvbVByb3BlcnRpZXMgfSA9IGN1cnJlbnRUZW5hbnQ7XG4gICAgaWYgKFxuICAgICAgdGhpcy5pc1RyYWNraW5nRGlzYWJsZWQoKSB8fFxuICAgICAgdGhpcy5pc0dhaW5zaWdodERpc2FibGVkQXRUZW5hbnRDdXN0b21Qcm9wZXJ0aWVzKGN1c3RvbVByb3BlcnRpZXMpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGdhaW5zaWdodEtleSA9ICEhdGhpcy5nYWluc2lnaHRLZXkgfHwgISEoYXdhaXQgdGhpcy5nZXRHYWluc2lnaHRLZXkoKSk7XG4gICAgcmV0dXJuIChcbiAgICAgIGdhaW5zaWdodEtleSAmJlxuICAgICAgdGhpcy5jb29raWVCYW5uZXJTZXJ2aWNlLmlzQ29uZmlnQ29va2llUHJlZmVyZW5jZXNEZWZpbmVkKCkgJiZcbiAgICAgICEhdGhpcy5jb29raWVCYW5uZXJTZXJ2aWNlLmdldFVzZXJDb29raWVQcmVmZXJlbmNlcygpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBnbG9iYWwgY29udGV4dCBmb3IgR2FpbnNpZ2h0IHdpdGggdGhlIGN1cnJlbnQgYXBwbGljYXRpb24gbmFtZS5cbiAgICogVGhlIGdsb2JhbCBjb250ZXh0IGNhbiBiZSB1dGlsaXplZCBieSBHYWluc2lnaHQgZm9yIHZhcmlvdXMgcHVycG9zZXMsIHN1Y2ggYXMgc2VnbWVudGluZyB1c2Vycy5cbiAgICovXG4gIHNldEdsb2JhbENvbnRleHQoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudEFwcFN0YXRlID0gdGhpcy5hcHBTdGF0ZS5zdGF0ZSQudmFsdWU7XG4gICAgY29uc3QgY3VycmVudEFwcE5hbWUgPSBjdXJyZW50QXBwU3RhdGUuYXBwLm5hbWU7XG5cbiAgICB3aW5kb3dbdGhpcy5HQUlOU0lHSFRfR0xPQkFMX1NDT1BFXT8uKCdzZXQnLCAnZ2xvYmFsQ29udGV4dCcsIHsgcHJvamVjdE5hbWU6IGN1cnJlbnRBcHBOYW1lIH0pO1xuICB9XG5cbiAgdHJhbnNmb3JtVXNlclJvbGVzVG9TdHIodXNlclJvbGVzPzogSUlkZW50aWZpZWRbXSk6IHN0cmluZyB7XG4gICAgaWYgKCF1c2VyUm9sZXMpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gZmxhdE1hcCh1c2VyUm9sZXMsICh1c2VyUm9sZTogeyByb2xlOiBVc2VyUm9sZSB9KSA9PiB1c2VyUm9sZS5yb2xlLm5hbWUpLmpvaW4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgR2FpbnNpZ2h0IGlzIGRpc2FibGVkIGJhc2VkIG9uIHRlbmFudCBjdXN0b20gcHJvcGVydGllcy5cbiAgICpcbiAgICogQHBhcmFtIGN1c3RvbVByb3BlcnRpZXMgLSBUaGUgY3VzdG9tIHByb3BlcnRpZXMgb2YgdGhlIHRlbmFudC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gVHJ1ZSBpZiBHYWluc2lnaHQgaXMgZGlzYWJsZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzR2FpbnNpZ2h0RGlzYWJsZWRBdFRlbmFudEN1c3RvbVByb3BlcnRpZXMoY3VzdG9tUHJvcGVydGllczogSUN1c3RvbVByb3BlcnRpZXMpIHtcbiAgICBjb25zdCBnYWluc2lnaHRFbmFibGVkID0gY3VzdG9tUHJvcGVydGllcyAmJiBjdXN0b21Qcm9wZXJ0aWVzLmdhaW5zaWdodEVuYWJsZWQ7XG4gICAgcmV0dXJuIGdhaW5zaWdodEVuYWJsZWQgPT09IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgY3VzdG9tIGJyYW5kaW5nIGlzIGVuYWJsZWQgYmFzZWQgb24gdGhlIHByZXNlbmNlIG9mIGEgYnJhbmQgbG9nby5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gVHJ1ZSBpZiBjdXN0b20gYnJhbmRpbmcgaXMgYXBwbGllZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNDdXN0b21CcmFuZGluZygpOiBib29sZWFuIHtcbiAgICBjb25zdCBicmFuZGluZ0Nzc1ZhcnMgPSB0aGlzLm9wdGlvbnMuZ2V0KCdicmFuZGluZ0Nzc1ZhcnMnKSB8fCB7fTtcbiAgICByZXR1cm4gISFicmFuZGluZ0Nzc1ZhcnNbJ2JyYW5kLWxvZ28taW1nJ107XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0cmFja2luZyBpcyBkaXNhYmxlZCBiYXNlZCBvbiB0aGUgYXBwbGljYXRpb24gb3B0aW9ucy5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRyYWNraW5nIGlzIGRpc2FibGVkLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAgICovXG4gIGlzVHJhY2tpbmdEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmRpc2FibGVUcmFja2luZyA9PT0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZUV2ZW50TmFtZShiYXNlRXZlbnROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBiYXNlRXZlbnROYW1lXG4gICAgICAuc3BsaXQoJzonKVxuICAgICAgLm1hcChldmVudE5hbWVQYXJ0ID0+IGNhbWVsQ2FzZShyZW1vdmVUcmFuc2xhdGlvbkNvbnRleHQoZXZlbnROYW1lUGFydCkpKVxuICAgICAgLmpvaW4oJzonKTtcblxuICAgIGZ1bmN0aW9uIHJlbW92ZVRyYW5zbGF0aW9uQ29udGV4dChldmVudE5hbWVQYXJ0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIGV2ZW50TmFtZVBhcnQucmVwbGFjZSgvYFtcXHdcXFddKmAvZywgJycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZFNjcmlwdFRhZyhzY3JpcHRUYWc6IEhUTUxTY3JpcHRFbGVtZW50LCBrZXk6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB3aW5kb3dSZWYgPSB3aW5kb3cgYXMgYW55O1xuICAgICAgY29uc3QgZmlyc3RUYWcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07XG4gICAgICBjb25zdCBwcm90b2NvbCA9IGxvY2F0aW9uLnByb3RvY29sO1xuICAgICAgY29uc3QgZ2FpbnNpZ2h0R2xvYmFsU2NvcGUgPSB0aGlzLkdBSU5TSUdIVF9HTE9CQUxfU0NPUEU7XG4gICAgICBzY3JpcHRUYWcuc3JjID0gYCR7cHJvdG9jb2x9Ly8ke3RoaXMuR0FJTlNJR0hUX1VSTH0ke2tleX1gO1xuICAgICAgKHdpbmRvd1JlZlt0aGlzLkdBSU5TSUdIVF9HTE9CQUxfU0NPUEVdID1cbiAgICAgICAgd2luZG93UmVmW3RoaXMuR0FJTlNJR0hUX0dMT0JBTF9TQ09QRV0gfHxcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm9ubHktYXJyb3ctZnVuY3Rpb25zXG4gICAgICAgIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgICAgKHdpbmRvd1JlZltnYWluc2lnaHRHbG9iYWxTY29wZV0ucSA9IHdpbmRvd1JlZltnYWluc2lnaHRHbG9iYWxTY29wZV0ucSB8fCBbXSkucHVzaChhcmdzKTtcbiAgICAgICAgfSksXG4gICAgICAgICh3aW5kb3dSZWZbZ2FpbnNpZ2h0R2xvYmFsU2NvcGVdLnAgPSBrZXkpO1xuICAgICAgc2NyaXB0VGFnLmFzeW5jID0gdHJ1ZTtcbiAgICAgIGZpcnN0VGFnLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHNjcmlwdFRhZywgZmlyc3RUYWcpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBsb2FkIEdhaW5zaWdodCBQWCcsIGV4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEluc3RhbmNlSWRGcm9tVXJsKCkge1xuICAgIGNvbnN0IGhvc3ROYW1lID0gbG9jYXRpb24uaG9zdG5hbWU7XG4gICAgcmV0dXJuIGhvc3ROYW1lLnN1YnN0cmluZyhob3N0TmFtZS5pbmRleE9mKCcuJykgKyAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXZlcnNlcyB0aGUgdHJhbnNsYXRpb24gb2JqZWN0LlxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiB7IEFkZCB3aWRnZXQ6IFwiV2lkZ2V0IGhpbnp1ZsO8Z2VuXCIgfVxuICAgKlxuICAgKiB3aWxsIGJlIGNoYW5nZWQgdG86XG4gICAqXG4gICAqIHsgV2lkZ2V0IGhpbnp1ZsO8Z2VuOiBcIkFkZCB3aWRnZXRcIiB9XG4gICAqXG4gICAqIEBwYXJhbSBjdXJyZW50TGFuZyBMYW5ndWFnZSB3aG9zZSB0cmFuc2xhdGVkIHZhbHVlcyBhcmUgdG8gYmUgcGxhY2VkIGluIHRoZSBvYmplY3Qga2V5LlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGFuIGludmVydGVkIG9iamVjdCB3aGVyZSB0aGUga2V5cyBoYXZlIGJlZW4gc3dhcHBlZCB3aXRoIHRoZSB2YWx1ZXMuXG4gICAqL1xuICBwcml2YXRlIGdldFJldmVydGVkVHJhbnNsYXRpb25zKGN1cnJlbnRMYW5nOiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICBjb25zdCB0cmFuc2xhdGlvbnMgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RvcmUudHJhbnNsYXRpb25zW2N1cnJlbnRMYW5nXTtcblxuICAgIGNvbnN0IHN3YXBwZWRLZXlzV2l0aFZhbHVlcyA9IHt9O1xuICAgIE9iamVjdC5rZXlzKHRyYW5zbGF0aW9ucykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgc3dhcHBlZEtleXNXaXRoVmFsdWVzW3RyYW5zbGF0aW9uc1trZXldXSA9IGtleTtcbiAgICB9KTtcbiAgICByZXR1cm4gc3dhcHBlZEtleXNXaXRoVmFsdWVzO1xuICB9XG5cbiAgLyoqVHJhbnNsYXRlcyBzdHJpbmcgYmFjayBpbnRvIEVuZ2xpc2guXG4gICAqIElmIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGxhbmd1YWdlIGlzIHNldCB0byBFbmdsaXNoLCB0aGUgc3RyaW5nIHBhc3NlZCBhcyBhbiBhcmd1bWVudCBpcyByZXR1cm5lZC5cbiAgICogQHBhcmFtIHRleHRUb1RyYW5zbGF0ZSBzdHJpbmcgdG8gdHJhbnNsYXRlLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBzdHJpbmcgdHJhbnNsYXRlZCBpbnRvIEVuZ2xpc2guXG4gICAqL1xuICBwcml2YXRlIGdldEVuVHJhbnNsYXRpb24oXG4gICAgdGV4dFRvVHJhbnNsYXRlOiBzdHJpbmcsXG4gICAgdHJhbnNsYXRpb25zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9XG4gICk6IHN0cmluZyB7XG4gICAgbGV0IGVuVHJhbnNsYXRpb24gPSB0cmFuc2xhdGlvbnNbdGV4dFRvVHJhbnNsYXRlXTtcbiAgICBpZiAoIWVuVHJhbnNsYXRpb24pIHtcbiAgICAgIHJldHVybiB0ZXh0VG9UcmFuc2xhdGU7XG4gICAgfVxuICAgIC8qKiByZW1vdmUgdHJhbnNsYXRpb24gY29udGV4dCAqL1xuICAgIGNvbnN0IHJlZ2V4ID0gL1xcYCguKj8pXFxgLztcbiAgICBlblRyYW5zbGF0aW9uID0gZW5UcmFuc2xhdGlvbi5yZXBsYWNlKHJlZ2V4LCAnJyk7XG5cbiAgICByZXR1cm4gZW5UcmFuc2xhdGlvbjtcbiAgfVxufVxuIl19
376
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FpbnNpZ2h0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3Byb2R1Y3QtZXhwZXJpZW5jZS9nYWluc2lnaHQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scURBQXFELENBQUM7Ozs7Ozs7QUF1QjdGOzs7R0FHRztBQUlILE1BQU0sT0FBTyxnQkFBZ0I7SUEyQjNCLFlBQ1UsUUFBeUIsRUFDekIsT0FBdUIsRUFDdkIsbUJBQXdDLEVBQ3hDLHNCQUE4QyxFQUM5QyxnQkFBa0M7UUFKbEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUEvQjVDOztXQUVHO1FBQ0gsaUJBQVksR0FBRyxJ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Q3ZCLFlBQXVDO1FBRXZDLElBQUksYUFBYSxHQUFHLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xCLE9BQU8sZUFBZSxDQUFDO1NBQ3hCO1FBQ0QsaUNBQWlDO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQztRQUMxQixhQUFhLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakQsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQzs7NkdBeFpVLGdCQUFnQjtpSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUN1cnJlbnRUZW5hbnQsIElDdXN0b21Qcm9wZXJ0aWVzLCBJSWRlbnRpZmllZCwgSVVzZXIgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBjYW1lbENhc2UsIGZsYXRNYXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBmaWx0ZXIsIG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvb2tpZUJhbm5lclNlcnZpY2UgfSBmcm9tICcuLi9ib290c3RyYXAvY29va2llLWJhbm5lci9jb29raWUtYmFubmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi91aS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdXNlci1wcmVmZXJlbmNlcy91c2VyLXByZWZlcmVuY2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHhFdmVudERhdGEgfSBmcm9tICcuL3Byb2R1Y3QtZXhwZXJpZW5jZS5tb2RlbCc7XG5cbmludGVyZmFjZSBVc2VyUm9sZSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBAcHJvcGVydHkgdXNlciBUaGUgdXNlciB3aGljaCBpcyBnaXZlbiB0byBHYWluc2lnaHQuXG4gKiBAcHJvcGVydHkgdGVuYW50IFRoZSB0ZW5hbnQgd2hpY2ggaXMgZ2l2ZW4gdG8gR2FpbnNpZ2h0LlxuICogQHByb3BlcnR5IGluc3RhbmNlSWQgRXh0cmFjdGVkIGRvbWFpbiBwYXJ0IG9mIGFuIFVSTC5cbiAqIEBwcm9wZXJ0eSB2ZXJzaW9uVUkgVGhlIFVJIHZlcnNpb24gdXNlZC5cbiAqIEBwcm9wZXJ0eSB2ZXJzaW9uQkUgVGhlIEJFIHZlcnNpb24gdXNlZC5cbiAqL1xuaW50ZXJmYWNlIElkZW50aWZ5RGF0YSB7XG4gIHVzZXI6IElVc2VyO1xuICBjdXJyZW50VGVuYW50OiBJQ3VycmVudFRlbmFudDtcbiAgaW5zdGFuY2VJZDogc3RyaW5nO1xuICB2ZXJzaW9uVUk/OiBzdHJpbmc7XG4gIHZlcnNpb25CRT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHNlcnZpY2UgdG8gbWFuYWdlIHRoZSBHYWluc2lnaHQgaW50ZWdyYXRpb24uIEl0IGFsbG93cyB0byBsb2FkIHRoZVxuICogdGFnIGFuZFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBHYWluc2lnaHRTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEEgc3ViamVjdCB0aGF0IGVtaXRzIHRoZSB0YWcgZnVuY3Rpb24gYXMgc29vbiBhcyBhIG5ldyB0YWcgaXMgc2V0LlxuICAgKi9cbiAgdGFnRnVuY3Rpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgdHJhY2tpbmdMb2FkZWQkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcblxuICAvKipcbiAgICogR2FpbnNpZ2h0IGlzIGFjdGl2YXRlZCBvbmx5IHdoZW4gdGhlIGNvb2tpZSBiYW5uZXIgaXMgcHJlc2VudC4gSWYgZnVuY3Rpb25hbCBjb29raWVzIGFyZSBlbmFibGVkLCBib3RoIHBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlIGluZm9ybWF0aW9uIChQSUkpIGFuZCByZXF1aXJlZCBkYXRhIGFyZSBzZW50LlxuICAgKiBPdGhlcndpc2UsIG9ubHkgdGhlIHJlcXVpcmVkIGRhdGEgaXMgdHJhbnNtaXR0ZWQgZHVyaW5nIHRoZSBpZGVudGl0eSBzdGVwIGV4ZWN1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IFVTRVJfUFJFRkVSRU5DRVNfR0FJTlNJR0hUX0tFWSA9ICdnYWluc2lnaHRFbmFibGVkJztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBrZXkgcmVtYWluZWQgdW5jaGFuZ2VkLCBidXQgYXBwbGllcyB0byBhbGwgZW5nYWdlbWVudHMuXG4gICAqL1xuICByZWFkb25seSBVU0VSX1BSRUZFUkVOQ0VTX0dBSU5TSUdIVF9FTkdBR0VNRU5UU19LRVkgPSAnZ2FpbnNpZ2h0Qm90RW5hYmxlZCc7XG4gIHJlYWRvbmx5IEhJREVfR0FJTlNJR0hUX0JPVF9TVFlMRV9JRCA9ICdoaWRlLWdzLWJvdCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgR0FJTlNJR0hUX1VSTCA9ICd3ZWItc2RrLmFwdHJpbnNpYy5jb20vYXBpL2FwdHJpbnNpYy5qcz9hPSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgR0FJTlNJR0hUX0dMT0JBTF9TQ09QRSA9ICdhcHRyaW5zaWMnO1xuICBwcml2YXRlIHJlYWRvbmx5IFNDUklQVF9FWEVDVVRJT05fV0FJVF9USU1FID0gNTAwO1xuICBwcml2YXRlIHJlYWRvbmx5IE9QVElPTlNfS0VZX0NBVEVHT1JZID0gJ2dhaW5zaWdodCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgT1BUSU9OU19LRVlfTkFNRSA9ICdhcGkua2V5JztcbiAgcHJpdmF0ZSBpc1NjcmlwdExvYWRlZCA9IGZhbHNlO1xuICBwcml2YXRlIGdhaW5zaWdodEtleTogc3RyaW5nO1xuICBwcml2YXRlIGNhY2hlZFJldmVydGVkVHJhbnNsYXRpb25zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICBwcml2YXRlIGNhY2hlZExhbmd1YWdlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3B0aW9uczogT3B0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb29raWVCYW5uZXJTZXJ2aWNlOiBDb29raWVCYW5uZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclByZWZlcmVuY2VzU2VydmljZTogVXNlclByZWZlcmVuY2VzU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBHYWluc2lnaHQgcHJlZmVyZW5jZSBpcyBkaXNhYmxlZCBpbiB1c2VyIHByZWZlcmVuY2VzLlxuICAgKiBAcGFyYW0gcHJlZmVyZW5jZU5hbWUgLSBOYW1lIG9mIHRoZSBHYWluc2lnaHQgcHJlZmVyZW5jZS5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYHRydWVgIGlmIHRoZSBwcmVmZXJlbmNlIGlzIGRpc2FibGVkLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAgICovXG4gIGFzeW5jIGlzR2FpbnNpZ2h0UHJlZmVyZW5jZURpc2FibGVkSW5Vc2VyUHJlZmVyZW5jZXMocHJlZmVyZW5jZU5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHVzZXJHYWluc2lnaHRQcmVmID0gYXdhaXQgdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLmdldChwcmVmZXJlbmNlTmFtZSkudG9Qcm9taXNlKCk7XG5cbiAgICByZXR1cm4gdXNlckdhaW5zaWdodFByZWYgPT09IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXRlIG9mIHRoZSBmdW5jdGlvbmFsIGNvb2tpZS5cbiAgICogQHBhcmFtIHZhbHVlIC0gQSBib29sZWFuIHZhbHVlIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGZ1bmN0aW9uYWwgY29va2llIHNob3VsZCBiZSBlbmFibGVkIChgdHJ1ZWApIG9yIGRpc2FibGVkIChgZmFsc2VgKS5cbiAgICovXG4gIHNldEZ1bmN0aW9uYWxDb29raWUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjb29raWVzID0gdGhpcy5jb29raWVCYW5uZXJTZXJ2aWNlLmdldFVzZXJDb29raWVQcmVmZXJlbmNlcygpO1xuICAgIGlmIChjb29raWVzKSB7XG4gICAgICBPYmplY3Qua2V5cyhjb29raWVzKS5mb3JFYWNoKGNvb2tpZU5hbWUgPT4ge1xuICAgICAgICBpZiAoY29va2llTmFtZSA9PT0gJ2Z1bmN0aW9uYWwnKSB7XG4gICAgICAgICAgY29va2llc1tjb29raWVOYW1lXSA9IHZhbHVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYWNjZXB0Q29va2llTm90aWNlJywgSlNPTi5zdHJpbmdpZnkoY29va2llcykpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldEdhaW5zaWdodEtleSgpIHtcbiAgICB0aGlzLmdhaW5zaWdodEtleSA9XG4gICAgICB0aGlzLm9wdGlvbnMuZ2FpbnNpZ2h0S2V5IHx8XG4gICAgICAoYXdhaXQgdGhpcy5vcHRpb25zLmdldFN5c3RlbU9wdGlvbih0aGlzLk9QVElPTlNfS0VZX0NBVEVHT1JZLCB0aGlzLk9QVElPTlNfS0VZX05BTUUpKTtcbiAgICByZXR1cm4gdGhpcy5nYWluc2lnaHRLZXk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGFnIGdsb2JhbCBmdW5jdGlvbiB3aGljaCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSB1c2VyXG4gICAqIG9yIGFkZCBzcGVjaWFsIGV2ZW50cy5cbiAgICovXG4gIGdldCB0YWdGdW5jdGlvbigpIHtcbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpW3RoaXMuR0FJTlNJR0hUX0dMT0JBTF9TQ09QRV07XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0aGUgc2NyaXB0IHRhZyBhbmQgY2FsbHMgdGhlIGlkZW50aWZ5IGZ1bmN0aW9uIHRvIHN0YXJ0IHRoZSB0cmFja2luZy5cbiAgICogQHBhcmFtIGN1cnJlbnRUZW5hbnQgVGhlIGN1cnJlbnQgdGVuYW50LlxuICAgKiBAcGFyYW0gc2VuZFBpaURhdGEgRmxhZyBmb3Igc2VuZGluZyBwZXJzb25hbGx5IGlkZW50aWZpYWJsZSBpbmZvcm1hdGlvbiAoUElJKSBkdXJpbmcgaWRlbnRpZmljYXRpb24gaW4gR2FpbnNpZ2h0LlxuICAgKi9cbiAgYXN5bmMgbG9hZFRhZyhjdXJyZW50VGVuYW50OiBJQ3VycmVudFRlbmFudCwgc2VuZFBpaURhdGE6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBzY3JpcHRUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmdldEdhaW5zaWdodEtleSgpO1xuXG4gICAgaWYgKGtleSAmJiAhdGhpcy5pc1NjcmlwdExvYWRlZCkge1xuICAgICAgdGhpcy5sb2FkU2NyaXB0VGFnKHNjcmlwdFRhZywga2V5KTtcblxuICAgICAgY29uc3QgY3VycmVudFVzZXJTdHJlYW0gPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyO1xuICAgICAgY29uc3Qgc2NyaXB0TG9hZFN0cmVhbSA9IGZyb21FdmVudChzY3JpcHRUYWcsICdsb2FkJyk7XG4gICAgICBjb25zdCB2ZXJzaW9uU3RyZWFtID0gdGhpcy5hcHBTdGF0ZS5zdGF0ZSQucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IHZlcnNpb25zIH0pID0+IHZlcnNpb25zLmJhY2tlbmQpLFxuICAgICAgICBtYXAoKHsgdmVyc2lvbnMgfSkgPT4gdmVyc2lvbnMpLFxuICAgICAgICB0YWtlKDEpXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzb3VyY2VTdHJlYW1zID0gc2VuZFBpaURhdGFcbiAgICAgICAgPyBbY3VycmVudFVzZXJTdHJlYW0sIHNjcmlwdExvYWRTdHJlYW0sIHZlcnNpb25TdHJlYW1dXG4gICAgICAgIDogW2N1cnJlbnRVc2VyU3RyZWFtLCBzY3JpcHRMb2FkU3RyZWFtXTtcblxuICAgICAgY29tYmluZUxhdGVzdChzb3VyY2VTdHJlYW1zKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBkZWxheSh0aGlzLlNDUklQVF9FWEVDVVRJT05fV0FJVF9USU1FKSxcbiAgICAgICAgICBmaWx0ZXIoKFt1c2VyLCBzY3JpcHRFdmVudF0pID0+ICEhKHNjcmlwdEV2ZW50ICYmIHVzZXIpKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoYXJncyA9PiB7XG4gICAgICAgICAgY29uc3QgW3VzZXIsICwgdmVyc2lvbnNdID0gYXJncztcbiAgICAgICAgICB0aGlzLnNldEdsb2JhbENvbnRleHQoKTtcblxuICAgICAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSB0aGlzLmdldEluc3RhbmNlSWRGcm9tVXJsKCk7XG4gICAgICAgICAgaWYgKHNlbmRQaWlEYXRhKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzaW9uVUk6IHN0cmluZyA9IHZlcnNpb25zLnVpLm5neDtcbiAgICAgICAgICAgIGNvbnN0IHZlcnNpb25CRTogc3RyaW5nID0gdmVyc2lvbnMuYmFja2VuZDtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuZGVkSWRlbnRpZnlEYXRhOiBJZGVudGlmeURhdGEgPSB7XG4gICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgIGN1cnJlbnRUZW5hbnQsXG4gICAgICAgICAgICAgIGluc3RhbmNlSWQsXG4gICAgICAgICAgICAgIHZlcnNpb25VSSxcbiAgICAgICAgICAgICAgdmVyc2lvbkJFXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5pZGVudGlmeShzZW5kUGlpRGF0YSwgZXh0ZW5kZWRJZGVudGlmeURhdGEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXF1aXJlZElkZW50aWZ5RGF0YTogSWRlbnRpZnlEYXRhID0geyB1c2VyLCBjdXJyZW50VGVuYW50LCBpbnN0YW5jZUlkIH07XG4gICAgICAgICAgICB0aGlzLmlkZW50aWZ5KHNlbmRQaWlEYXRhLCByZXF1aXJlZElkZW50aWZ5RGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXNTY3JpcHRMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMudGFnRnVuY3Rpb24kLm5leHQodGhpcy50YWdGdW5jdGlvbik7XG4gICAgICAgICAgdGhpcy50cmFja2luZ0xvYWRlZCQubmV4dCh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElkZW50aWZpZXMgdGhlIHVzZXIvYWNjb3VudCBhdCBHYWluc2lnaHQuXG4gICAqIEBwYXJhbSBzZW5kUGlpRGF0YSBGbGFnIGZvciBzZW5kaW5nIHBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlIGluZm9ybWF0aW9uLlxuICAgKiBAcGFyYW0gaWRlbnRpZnlEYXRhIE9iamVjdCBjb250YWluaW5nIGlkZW50aWZpY2F0aW9uIGRhdGEuXG4gICAqL1xuICBpZGVudGlmeShzZW5kUGlpRGF0YTogYm9vbGVhbiwgaWRlbnRpZnlEYXRhOiBJZGVudGlmeURhdGEpIHtcbiAgICBjb25zdCB3aW5kb3dSZWYgPSB3aW5kb3cgYXMgYW55O1xuICAgIGNvbnN0IHsgaWQ6IHVzZXJJZCwgZW1haWwsIHJvbGVzIH0gPSBpZGVudGlmeURhdGEudXNlcjtcbiAgICBjb25zdCB7IG5hbWU6IHRlbmFudElELCBjdXN0b21Qcm9wZXJ0aWVzLCBkb21haW5OYW1lIH0gPSBpZGVudGlmeURhdGEuY3VycmVudFRlbmFudDtcbiAgICBjb25zdCB7IGluc3RhbmNlSWQsIHZlcnNpb25VSSwgdmVyc2lvbkJFIH0gPSBpZGVudGlmeURhdGE7XG5cbiAgICAvKipcbiAgICAgKiBQYXNzaW5nIElEIGlzIGEgbWluaW11bSByZXF1aXJlZCBkYXRhIHRvIG1ha2UgYW4gaWRlbnRpZnkgY2FsbCB0byBHYWluc2lnaHQuXG4gICAgICogaXNVc2VyQ3JlYXRlZEFmdGVyQW5vbnltaXphdGlvbldhc0FjdGl2YXRlZCBwYXJhbWV0ZXIgaXMgcGFzc2VkIHRvIGxhdGVyIGRpc3Rpbmd1aXNoIGJldHdlZW4gdXNlcnMgY3JlYXRlZCBiZWZvcmUgYW5kIGFmdGVyIGRhdGEgYW5vbnltaXphdGlvbiBkb25lIGJ5IEdhaW5zaWdodC5cbiAgICAgKiB0ZW5hbnRJRCBVc2VkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGVuYW50cyB3aGVuIHNhbWUgZW1haWwgaXMgdXNlZCBmb3IgZGlmZmVyZW50IHRlbmFudHMuXG4gICAgICpcbiAgICAgKiBEdWUgdG8gR1MgbGltaXRhdGlvbnMgKEdTIGRvZXMgbm90IGFsbG93IGNsZWFyaW5nIHVzZXIgYXR0ci9wcmVmZXJlbmNlcyB2aWEgdGhlIEdTIHRhZyEpLFxuICAgICAqIHdlIGFsd2F5cyBuZWVkIHRvIGluaXRpYWxpemUgZmllbGRzIHJlbGF0ZWQgdG8gUElJIHRvIHByZXZlbnQgbGVha2luZyB0aGlzIGRhdGEgdG8gR1Mgd2hlbiB0aGUgdXNlciBoYXMgZGlzYWJsZWQgZnVuY3Rpb25hbCBjb29raWVzLlxuICAgICAqL1xuICAgIGNvbnN0IHJlcXVpcmVkSWRlbnRpZnkgPSB7XG4gICAgICAvKipcbiAgICAgICAqIEVtYWlsIHdhcyBub3QgbWFuZGF0b3J5IGZvcm0gZmllbGQgdW50aWwgMTAuMTRcbiAgICAgICAqL1xuICAgICAgaWQ6IGVtYWlsID8gZW1haWwgOiBgJHt1c2VySWR9XyR7dGVuYW50SUR9XyR7aW5zdGFuY2VJZH1gLFxuICAgICAgaXNVc2VyQ3JlYXRlZEFmdGVyQW5vbnltaXphdGlvbldhc0FjdGl2YXRlZDogdHJ1ZSxcbiAgICAgIHRlbmFudElEOiB0ZW5hbnRJRCxcbiAgICAgIGVtYWlsOiAnLS0nLFxuICAgICAgdXNlck5hbWU6ICctLScsXG4gICAgICBmaXJzdE5hbWU6ICctLScsXG4gICAgICBsYXN0TmFtZTogJy0tJyxcbiAgICAgIGRvbWFpbk5hbWUsXG4gICAgICB2ZXJzaW9uVUksXG4gICAgICB2ZXJzaW9uQkUsXG4gICAgICB1c2VyTGFuZ3VhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyxcbiAgICAgIGluc3RhbmNlSWQsXG4gICAgICBleHRlcm5hbFJlZmVyZW5jZTogY3VzdG9tUHJvcGVydGllcz8uZXh0ZXJuYWxSZWZlcmVuY2UsXG4gICAgICB1c2VyUm9sZXM6IHRoaXMudHJhbnNmb3JtVXNlclJvbGVzVG9TdHIocm9sZXM/LnJlZmVyZW5jZXMpLFxuICAgICAgY3VzdG9tQnJhbmRpbmc6IHRoaXMuaXNDdXN0b21CcmFuZGluZygpLFxuICAgICAgZnVsbFRyYWNraW5nOiBzZW5kUGlpRGF0YVxuICAgIH07XG5cbiAgICBpZiAoc2VuZFBpaURhdGEpIHtcbiAgICAgIGNvbnN0IHsgdXNlck5hbWUsIGZpcnN0TmFtZSwgbGFzdE5hbWUgfSA9IGlkZW50aWZ5RGF0YS51c2VyO1xuXG4gICAgICBjb25zdCBleHRlbmRlZElkZW50aWZ5ID0ge1xuICAgICAgICAuLi5yZXF1aXJlZElkZW50aWZ5LFxuICAgICAgICBlbWFpbCxcbiAgICAgICAgdXNlck5hbWUsXG4gICAgICAgIGZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWVcbiAgICAgIH07XG5cbiAgICAgIHdpbmRvd1JlZlt0aGlzLkdBSU5TSUdIVF9HTE9CQUxfU0NPUEVdKCdpZGVudGlmeScsIGV4dGVuZGVkSWRlbnRpZnksIHtcbiAgICAgICAgaWQ6IGAke3RlbmFudElEfV8ke2luc3RhbmNlSWR9YCxcbiAgICAgICAgaW5zdGFuY2VJZFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgd2luZG93UmVmW3RoaXMuR0FJTlNJR0hUX0dMT0JBTF9TQ09QRV0oJ2lkZW50aWZ5JywgcmVxdWlyZWRJZGVudGlmeSk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcnMgYW4gZXZlbnQgdG8gYmUgcmVjb3JkZWQgYnkgR2FpbnNpZ2h0IFBYLlxuICAgKiBUaGlzIG1ldGhvZCBjYWxscyB0aGUgR2FpbnNpZ2h0IFBYJ3MgdHJhY2tpbmcgbWVjaGFuaXNtIHRvIGxvZyBhIHNwZWNpZmljIGV2ZW50XG4gICAqIGFsb25nIHdpdGggaXRzIGFzc29jaWF0ZWQgcHJvcGVydGllcy5cbiAgICogQHBhcmFtIGV2ZW50TmFtZSAtIE5hbWUgb2YgdGhlIGV2ZW50IHRvIGJlIHRyaWdnZXJlZC5cbiAgICogQHBhcmFtIHByb3BzIC0gT3B0aW9uYWwgcHJvcGVydGllcyBhc3NvY2lhdGVkIHdpdGggdGhlIGV2ZW50LlxuICAgKi9cbiAgdHJpZ2dlckV2ZW50KGV2ZW50TmFtZTogc3RyaW5nLCBwcm9wcz86IFB4RXZlbnREYXRhKSB7XG4gICAgaWYgKHRoaXMudGFnRnVuY3Rpb24gJiYgZXZlbnROYW1lKSB7XG4gICAgICBldmVudE5hbWUgPSB0aGlzLnByZXBhcmVFdmVudE5hbWUoZXZlbnROYW1lKTtcbiAgICAgIHRoaXMudGFnRnVuY3Rpb24oJ3RyYWNrJywgZXZlbnROYW1lLCBwcm9wcyk7XG4gICAgfVxuICB9XG5cbiAgdHJhbnNsYXRlVG9FbmdsaXNoKHRleHRUb1RyYW5zbGF0ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IGN1cnJlbnRMYW5nIH0gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2U7XG5cbiAgICBpZiAoY3VycmVudExhbmcgPT09ICdlbicpIHtcbiAgICAgIHJldHVybiB0ZXh0VG9UcmFuc2xhdGU7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRMYW5nICYmIGN1cnJlbnRMYW5nICE9PSB0aGlzLmNhY2hlZExhbmd1YWdlKSB7XG4gICAgICB0aGlzLmNhY2hlZFJldmVydGVkVHJhbnNsYXRpb25zID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jYWNoZWRSZXZlcnRlZFRyYW5zbGF0aW9ucykge1xuICAgICAgdGhpcy5jYWNoZWRMYW5ndWFnZSA9IGN1cnJlbnRMYW5nO1xuICAgICAgdGhpcy5jYWNoZWRSZXZlcnRlZFRyYW5zbGF0aW9ucyA9IHRoaXMuZ2V0UmV2ZXJ0ZWRUcmFuc2xhdGlvbnMoY3VycmVudExhbmcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldEVuVHJhbnNsYXRpb24odGV4dFRvVHJhbnNsYXRlLCB0aGlzLmNhY2hlZFJldmVydGVkVHJhbnNsYXRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgcGVyc29uYWxseSBpZGVudGlmaWFibGUgaW5mb3JtYXRpb24gKFBJSSkgc2hvdWxkIGJlIHNlbnQgd2hpbGUgbG9hZGluZyBhIHRhZy5cbiAgICogVGhlIGRlY2lzaW9uIHRvIGFjdGl2YXRlIEdhaW5zaWdodCBhbmQgc2VuZCBQSUkgcmVsaWVzIG9uIHdoZXRoZXIgdGhlIGNvb2tpZVByZWZlcmVuY2VzIG9wdGlvbiBpcyBkZWZpbmVkIGluIHRoZSBhcHBsaWNhdGlvbiBzZXR0aW5ncyxcbiAgICogaWYgdGhlIGZ1bmN0aW9uYWwgY29va2llIGlzIGVuYWJsZWQsIGFuZCBpZiB0aGUgdXNlciBncmFudHMgcGVybWlzc2lvbi5cbiAgICovXG4gIGFzeW5jIHNob3VsZFNlbmRQaWlEYXRhKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmNvb2tpZUJhbm5lclNlcnZpY2UuaXNDb25maWdDb29raWVQcmVmZXJlbmNlc0RlZmluZWQoKSAmJlxuICAgICAgdGhpcy5jb29raWVCYW5uZXJTZXJ2aWNlLmlzRnVuY3Rpb25hbENvb2tpZUVuYWJsZWQoKSAmJlxuICAgICAgIShhd2FpdCB0aGlzLmlzR2FpbnNpZ2h0UHJlZmVyZW5jZURpc2FibGVkSW5Vc2VyUHJlZmVyZW5jZXMoXG4gICAgICAgIHRoaXMuVVNFUl9QUkVGRVJFTkNFU19HQUlOU0lHSFRfS0VZXG4gICAgICApKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBhIHNwZWNpZmljIHVzZXIgYXR0cmlidXRlIGluIHRoZSBHYWluc2lnaHQgZ2xvYmFsIHNjb3BlLlxuICAgKiBUaGlzIG1ldGhvZCBpbnRlcmZhY2VzIHdpdGggdGhlIEdhaW5zaWdodCBnbG9iYWwgb2JqZWN0IHRvIHNldCBhIHVzZXIncyBzcGVjaWZpYyBhdHRyaWJ1dGUgd2l0aCBhIHByb3ZpZGVkIHZhbHVlLlxuICAgKiBAcGFyYW0gbmFtZSAtIE5hbWUgb2YgdGhlIHVzZXIgYXR0cmlidXRlIHRvIGJlIHVwZGF0ZWQuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFZhbHVlIHRvIHNldCBmb3IgdGhlIHNwZWNpZmllZCB1c2VyIGF0dHJpYnV0ZS5cbiAgICovXG4gIHVwZGF0ZVVzZXJBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlciB8IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB3aW5kb3dbdGhpcy5HQUlOU0lHSFRfR0xPQkFMX1NDT1BFXT8uKCdzZXQnLCAndXNlcicsIHsgW25hbWVdOiB2YWx1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIHRoZSBjYXBhYmlsaXR5IHRvIG1vZGlmeSBHYWluc2lnaHQgUFggc2V0dGluZ3MuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGNoZWNrcyBtdWx0aXBsZSBjb25kaXRpb25zOlxuICAgKiAxLiBXaGV0aGVyIHRyYWNraW5nIGhhcyBiZWVuIGRpc2FibGVkIGdsb2JhbGx5IHZpYSBhcHBsaWNhdGlvbiBvcHRpb25zLlxuICAgKiAyLiBXaGV0aGVyIEdhaW5zaWdodCBpcyBkaXNhYmxlZCBhdCB0aGUgdGVuYW50IGxldmVsIHRocm91Z2ggY3VzdG9tIHByb3BlcnRpZXMuXG4gICAqIDMuIFdoZXRoZXIgYSBHYWluc2lnaHQga2V5IGlzIGF2YWlsYWJsZSwgZWl0aGVyIGN1cnJlbnRseSBsb2FkZWQgb3IgZmV0Y2hlZCBhc3luY2hyb25vdXNseS5cbiAgICogNC4gV2hldGhlciBjb29raWUgcHJlZmVyZW5jZXMgYXJlIGRlZmluZWQgYW5kIGF2YWlsYWJsZSBmb3IgdGhlIHVzZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4uIFRydWUgaW5kaWNhdGVzIHRoZSB1c2VyIGNhbiBlZGl0IHByb2R1Y3QgZXhwZXJpZW5jZSBzZXR0aW5ncywgYW5kIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGFzeW5jIGNhbkVkaXRQcm9kdWN0RXhwZXJpZW5jZVNldHRpbmdzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGN1cnJlbnRUZW5hbnQgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRUZW5hbnQudmFsdWU7XG4gICAgY29uc3QgeyBjdXN0b21Qcm9wZXJ0aWVzIH0gPSBjdXJyZW50VGVuYW50O1xuICAgIGlmIChcbiAgICAgIHRoaXMuaXNUcmFja2luZ0Rpc2FibGVkKCkgfHxcbiAgICAgIHRoaXMuaXNHYWluc2lnaHREaXNhYmxlZEF0VGVuYW50Q3VzdG9tUHJvcGVydGllcyhjdXN0b21Qcm9wZXJ0aWVzKVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBnYWluc2lnaHRLZXkgPSAhIXRoaXMuZ2FpbnNpZ2h0S2V5IHx8ICEhKGF3YWl0IHRoaXMuZ2V0R2FpbnNpZ2h0S2V5KCkpO1xuICAgIHJldHVybiAoXG4gICAgICBnYWluc2lnaHRLZXkgJiZcbiAgICAgIHRoaXMuY29va2llQmFubmVyU2VydmljZS5pc0NvbmZpZ0Nvb2tpZVByZWZlcmVuY2VzRGVmaW5lZCgpICYmXG4gICAgICAhIXRoaXMuY29va2llQmFubmVyU2VydmljZS5nZXRVc2VyQ29va2llUHJlZmVyZW5jZXMoKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZ2xvYmFsIGNvbnRleHQgZm9yIEdhaW5zaWdodCB3aXRoIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIG5hbWUuXG4gICAqIFRoZSBnbG9iYWwgY29udGV4dCBjYW4gYmUgdXRpbGl6ZWQgYnkgR2FpbnNpZ2h0IGZvciB2YXJpb3VzIHB1cnBvc2VzLCBzdWNoIGFzIHNlZ21lbnRpbmcgdXNlcnMuXG4gICAqL1xuICBzZXRHbG9iYWxDb250ZXh0KCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRBcHBTdGF0ZSA9IHRoaXMuYXBwU3RhdGUuc3RhdGUkLnZhbHVlO1xuICAgIGNvbnN0IGN1cnJlbnRBcHBOYW1lID0gY3VycmVudEFwcFN0YXRlLmFwcC5uYW1lO1xuXG4gICAgd2luZG93W3RoaXMuR0FJTlNJR0hUX0dMT0JBTF9TQ09QRV0/Lignc2V0JywgJ2dsb2JhbENvbnRleHQnLCB7IHByb2plY3ROYW1lOiBjdXJyZW50QXBwTmFtZSB9KTtcbiAgfVxuXG4gIHRyYW5zZm9ybVVzZXJSb2xlc1RvU3RyKHVzZXJSb2xlcz86IElJZGVudGlmaWVkW10pOiBzdHJpbmcge1xuICAgIGlmICghdXNlclJvbGVzKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZsYXRNYXAodXNlclJvbGVzLCAodXNlclJvbGU6IHsgcm9sZTogVXNlclJvbGUgfSkgPT4gdXNlclJvbGUucm9sZS5uYW1lKS5qb2luKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIEdhaW5zaWdodCBpcyBkaXNhYmxlZCBiYXNlZCBvbiB0ZW5hbnQgY3VzdG9tIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSBjdXN0b21Qcm9wZXJ0aWVzIC0gVGhlIGN1c3RvbSBwcm9wZXJ0aWVzIG9mIHRoZSB0ZW5hbnQuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFRydWUgaWYgR2FpbnNpZ2h0IGlzIGRpc2FibGVkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBpc0dhaW5zaWdodERpc2FibGVkQXRUZW5hbnRDdXN0b21Qcm9wZXJ0aWVzKGN1c3RvbVByb3BlcnRpZXM6IElDdXN0b21Qcm9wZXJ0aWVzKSB7XG4gICAgY29uc3QgZ2FpbnNpZ2h0RW5hYmxlZCA9IGN1c3RvbVByb3BlcnRpZXMgJiYgY3VzdG9tUHJvcGVydGllcy5nYWluc2lnaHRFbmFibGVkO1xuICAgIHJldHVybiBnYWluc2lnaHRFbmFibGVkID09PSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGN1c3RvbSBicmFuZGluZyBpcyBlbmFibGVkIGJhc2VkIG9uIHRoZSBwcmVzZW5jZSBvZiBhIGJyYW5kIGxvZ28uXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFRydWUgaWYgY3VzdG9tIGJyYW5kaW5nIGlzIGFwcGxpZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzQ3VzdG9tQnJhbmRpbmcoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYnJhbmRpbmdDc3NWYXJzID0gdGhpcy5vcHRpb25zLmdldCgnYnJhbmRpbmdDc3NWYXJzJykgfHwge307XG4gICAgcmV0dXJuICEhYnJhbmRpbmdDc3NWYXJzWydicmFuZC1sb2dvLWltZyddO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdHJhY2tpbmcgaXMgZGlzYWJsZWQgYmFzZWQgb24gdGhlIGFwcGxpY2F0aW9uIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0cmFja2luZyBpcyBkaXNhYmxlZCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAqL1xuICBpc1RyYWNraW5nRGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5kaXNhYmxlVHJhY2tpbmcgPT09IHRydWU7XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVFdmVudE5hbWUoYmFzZUV2ZW50TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYmFzZUV2ZW50TmFtZVxuICAgICAgLnNwbGl0KCc6JylcbiAgICAgIC5tYXAoZXZlbnROYW1lUGFydCA9PiBjYW1lbENhc2UocmVtb3ZlVHJhbnNsYXRpb25Db250ZXh0KGV2ZW50TmFtZVBhcnQpKSlcbiAgICAgIC5qb2luKCc6Jyk7XG5cbiAgICBmdW5jdGlvbiByZW1vdmVUcmFuc2xhdGlvbkNvbnRleHQoZXZlbnROYW1lUGFydDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBldmVudE5hbWVQYXJ0LnJlcGxhY2UoL2BbXFx3XFxXXSpgL2csICcnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRTY3JpcHRUYWcoc2NyaXB0VGFnOiBIVE1MU2NyaXB0RWxlbWVudCwga2V5OiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgd2luZG93UmVmID0gd2luZG93IGFzIGFueTtcbiAgICAgIGNvbnN0IGZpcnN0VGFnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdO1xuICAgICAgY29uc3QgcHJvdG9jb2wgPSBsb2NhdGlvbi5wcm90b2NvbDtcbiAgICAgIGNvbnN0IGdhaW5zaWdodEdsb2JhbFNjb3BlID0gdGhpcy5HQUlOU0lHSFRfR0xPQkFMX1NDT1BFO1xuICAgICAgc2NyaXB0VGFnLnNyYyA9IGAke3Byb3RvY29sfS8vJHt0aGlzLkdBSU5TSUdIVF9VUkx9JHtrZXl9YDtcbiAgICAgICh3aW5kb3dSZWZbdGhpcy5HQUlOU0lHSFRfR0xPQkFMX1NDT1BFXSA9XG4gICAgICAgIHdpbmRvd1JlZlt0aGlzLkdBSU5TSUdIVF9HTE9CQUxfU0NPUEVdIHx8XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpvbmx5LWFycm93LWZ1bmN0aW9uc1xuICAgICAgICBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgICh3aW5kb3dSZWZbZ2FpbnNpZ2h0R2xvYmFsU2NvcGVdLnEgPSB3aW5kb3dSZWZbZ2FpbnNpZ2h0R2xvYmFsU2NvcGVdLnEgfHwgW10pLnB1c2goYXJncyk7XG4gICAgICAgIH0pLFxuICAgICAgICAod2luZG93UmVmW2dhaW5zaWdodEdsb2JhbFNjb3BlXS5wID0ga2V5KTtcbiAgICAgIHNjcmlwdFRhZy5hc3luYyA9IHRydWU7XG4gICAgICBmaXJzdFRhZy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzY3JpcHRUYWcsIGZpcnN0VGFnKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gbG9hZCBHYWluc2lnaHQgUFgnLCBleCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbnN0YW5jZUlkRnJvbVVybCgpIHtcbiAgICBjb25zdCBob3N0TmFtZSA9IGxvY2F0aW9uLmhvc3RuYW1lO1xuICAgIHJldHVybiBob3N0TmFtZS5zdWJzdHJpbmcoaG9zdE5hbWUuaW5kZXhPZignLicpICsgMSk7XG4gIH1cblxuICAvKipcbiAgICogUmV2ZXJzZXMgdGhlIHRyYW5zbGF0aW9uIG9iamVjdC5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogeyBBZGQgd2lkZ2V0OiBcIldpZGdldCBoaW56dWbDvGdlblwiIH1cbiAgICpcbiAgICogd2lsbCBiZSBjaGFuZ2VkIHRvOlxuICAgKlxuICAgKiB7IFdpZGdldCBoaW56dWbDvGdlbjogXCJBZGQgd2lkZ2V0XCIgfVxuICAgKlxuICAgKiBAcGFyYW0gY3VycmVudExhbmcgTGFuZ3VhZ2Ugd2hvc2UgdHJhbnNsYXRlZCB2YWx1ZXMgYXJlIHRvIGJlIHBsYWNlZCBpbiB0aGUgb2JqZWN0IGtleS5cbiAgICogQHJldHVybnMgUmV0dXJucyBhbiBpbnZlcnRlZCBvYmplY3Qgd2hlcmUgdGhlIGtleXMgaGF2ZSBiZWVuIHN3YXBwZWQgd2l0aCB0aGUgdmFsdWVzLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRSZXZlcnRlZFRyYW5zbGF0aW9ucyhjdXJyZW50TGFuZzogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgY29uc3QgdHJhbnNsYXRpb25zID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0b3JlLnRyYW5zbGF0aW9uc1tjdXJyZW50TGFuZ107XG5cbiAgICBjb25zdCBzd2FwcGVkS2V5c1dpdGhWYWx1ZXMgPSB7fTtcbiAgICBPYmplY3Qua2V5cyh0cmFuc2xhdGlvbnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIHN3YXBwZWRLZXlzV2l0aFZhbHVlc1t0cmFuc2xhdGlvbnNba2V5XV0gPSBrZXk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN3YXBwZWRLZXlzV2l0aFZhbHVlcztcbiAgfVxuXG4gIC8qKlRyYW5zbGF0ZXMgc3RyaW5nIGJhY2sgaW50byBFbmdsaXNoLlxuICAgKiBJZiB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiBsYW5ndWFnZSBpcyBzZXQgdG8gRW5nbGlzaCwgdGhlIHN0cmluZyBwYXNzZWQgYXMgYW4gYXJndW1lbnQgaXMgcmV0dXJuZWQuXG4gICAqIEBwYXJhbSB0ZXh0VG9UcmFuc2xhdGUgc3RyaW5nIHRvIHRyYW5zbGF0ZS5cbiAgICogQHJldHVybnMgUmV0dXJucyB0aGUgc3RyaW5nIHRyYW5zbGF0ZWQgaW50byBFbmdsaXNoLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRFblRyYW5zbGF0aW9uKFxuICAgIHRleHRUb1RyYW5zbGF0ZTogc3RyaW5nLFxuICAgIHRyYW5zbGF0aW9uczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICApOiBzdHJpbmcge1xuICAgIGxldCBlblRyYW5zbGF0aW9uID0gdHJhbnNsYXRpb25zW3RleHRUb1RyYW5zbGF0ZV07XG4gICAgaWYgKCFlblRyYW5zbGF0aW9uKSB7XG4gICAgICByZXR1cm4gdGV4dFRvVHJhbnNsYXRlO1xuICAgIH1cbiAgICAvKiogcmVtb3ZlIHRyYW5zbGF0aW9uIGNvbnRleHQgKi9cbiAgICBjb25zdCByZWdleCA9IC9cXGAoLio/KVxcYC87XG4gICAgZW5UcmFuc2xhdGlvbiA9IGVuVHJhbnNsYXRpb24ucmVwbGFjZShyZWdleCwgJycpO1xuXG4gICAgcmV0dXJuIGVuVHJhbnNsYXRpb247XG4gIH1cbn1cbiJdfQ==
@@ -7519,9 +7519,9 @@ class GainsightService {
7519
7519
  */
7520
7520
  identify(sendPiiData, identifyData) {
7521
7521
  const windowRef = window;
7522
- const { id: userId, email } = identifyData.user;
7523
- const { name: tenantID } = identifyData.currentTenant;
7524
- const { instanceId } = identifyData;
7522
+ const { id: userId, email, roles } = identifyData.user;
7523
+ const { name: tenantID, customProperties, domainName } = identifyData.currentTenant;
7524
+ const { instanceId, versionUI, versionBE } = identifyData;
7525
7525
  /**
7526
7526
  * Passing ID is a minimum required data to make an identify call to Gainsight.
7527
7527
  * isUserCreatedAfterAnonymizationWasActivated parameter is passed to later distinguish between users created before and after data anonymization done by Gainsight.
@@ -7538,30 +7538,25 @@ class GainsightService {
7538
7538
  isUserCreatedAfterAnonymizationWasActivated: true,
7539
7539
  tenantID: tenantID,
7540
7540
  email: '--',
7541
- userName: '',
7542
- firstName: '',
7543
- lastName: '',
7544
- domainName: '',
7545
- versionUI: '',
7546
- versionBE: '',
7547
- userLanguage: '',
7548
- instanceId: '',
7549
- externalReference: '',
7550
- userRoles: '',
7541
+ userName: '--',
7542
+ firstName: '--',
7543
+ lastName: '--',
7544
+ domainName,
7545
+ versionUI,
7546
+ versionBE,
7547
+ userLanguage: this.translateService.currentLang,
7548
+ instanceId,
7549
+ externalReference: customProperties === null || customProperties === void 0 ? void 0 : customProperties.externalReference,
7550
+ userRoles: this.transformUserRolesToStr(roles === null || roles === void 0 ? void 0 : roles.references),
7551
7551
  customBranding: this.isCustomBranding(),
7552
7552
  fullTracking: sendPiiData
7553
7553
  };
7554
7554
  if (sendPiiData) {
7555
- const { userName, firstName, lastName, roles } = identifyData.user;
7556
- const { customProperties, domainName } = identifyData.currentTenant;
7557
- const { versionUI, versionBE } = identifyData;
7555
+ const { userName, firstName, lastName } = identifyData.user;
7558
7556
  const extendedIdentify = Object.assign(Object.assign({}, requiredIdentify), { email,
7559
7557
  userName,
7560
7558
  firstName,
7561
- lastName,
7562
- domainName,
7563
- versionUI,
7564
- versionBE, userLanguage: this.translateService.currentLang, instanceId, externalReference: customProperties === null || customProperties === void 0 ? void 0 : customProperties.externalReference, userRoles: this.transformUserRolesToStr(roles === null || roles === void 0 ? void 0 : roles.references) });
7559
+ lastName });
7565
7560
  windowRef[this.GAINSIGHT_GLOBAL_SCOPE]('identify', extendedIdentify, {
7566
7561
  id: `${tenantID}_${instanceId}`,
7567
7562
  instanceId