@tsi-developpement/tsi-shared-ui 1.10.15 → 1.10.16

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.
@@ -19,4 +19,10 @@ export var StatutActionCRMEnum;
19
19
  StatutActionCRMEnum["Annulee"] = "Annul\u00E9e";
20
20
  StatutActionCRMEnum["EnCours"] = "EnCours";
21
21
  })(StatutActionCRMEnum || (StatutActionCRMEnum = {}));
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uRXJwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL21vZGVscy9hY3Rpb25FcnAvYWN0aW9uRXJwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxTQUFTO0lBQXRCO1FBa0JFLHFCQUFnQixHQUFzQixFQUFFLENBQUM7UUFDekMsMEJBQXFCLEdBQTJCLEVBQUUsQ0FBQztJQUdyRCxDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8sZUFBZTtDQUszQjtBQUVELE1BQU0sT0FBTyxvQkFBb0I7SUFBakM7UUFJSSxnQkFBVyxHQUFZLEtBQUssQ0FBQztJQUNqQyxDQUFDO0NBQUE7QUFFRCxNQUFNLENBQU4sSUFBWSxtQkFNWDtBQU5ELFdBQVksbUJBQW1CO0lBQzNCLCtDQUF3QixDQUFBO0lBQ3hCLGlEQUFxQixDQUFBO0lBQ3JCLHdEQUFpQyxDQUFBO0lBQ2pDLCtDQUFtQixDQUFBO0lBQ25CLDBDQUFtQixDQUFBO0FBQ3ZCLENBQUMsRUFOVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBTTlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUZpbHRlcmVkUmVxdWVzdCwgSVBhZ2VkUmVxdWVzdCwgSVNvcnRCeVByb3ByZXR5IH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25FUlAge1xyXG4gIHVpZDogc3RyaW5nfCB1bmRlZmluZWQ7IFxyXG4gIG51bWVybzogbnVtYmVyfCB1bmRlZmluZWQ7ICAgICAgICAgICAgICBcclxuICBvYmpldDogc3RyaW5nfCB1bmRlZmluZWQ7XHJcbiAgc3RhdHV0OiBzdHJpbmd8IHVuZGVmaW5lZDtcclxuICByZXN1bHRhdD86IHN0cmluZzsgICAgICAgICAgXHJcbiAgcHJpb3JpdGU6IHN0cmluZ3wgdW5kZWZpbmVkO1xyXG4gIGxpZXU/OiBzdHJpbmc7ICAgICAgICAgICAgICBcclxuICBhbGVydGU6IGJvb2xlYW58IHVuZGVmaW5lZDsgICAgICAgICAgIFxyXG4gIGFsZXJ0ZUF2YW50PzogbnVtYmVyOyAgICAgICBcclxuICBkYXRlSGV1cmVEZWJ1dFByZXY6IERhdGV8IHVuZGVmaW5lZDsgXHJcbiAgZGF0ZUhldXJlRmluUHJldjogRGF0ZXwgdW5kZWZpbmVkOyAgXHJcbiAgZGF0ZUhldXJlRGVidXRSZWFsaXNlZT86IERhdGU7XHJcbiAgZGF0ZUhldXJlRmluUmVhbGlzZWU/OiBEYXRlO1xyXG4gIHV0aWxpc2F0ZXVyRGVtYW5kZXVyOiBzdHJpbmd8IHVuZGVmaW5lZDtcclxuICB1dGlsaXNhdGV1ckFzc2lnbmU6IHN0cmluZ3wgdW5kZWZpbmVkO1xyXG4gIG5hdHVyZUFjdGlvbjpzdHJpbmd8IHVuZGVmaW5lZDtcclxuICBhY3Rpb25QcmVjZWRlbnRlOnN0cmluZ3wgdW5kZWZpbmVkO1xyXG4gIGFjdGlvbkVSUERldGFpbHM6IEFjdGlvbkVSUERldGFpbFtdID0gW107XHJcbiAgYWN0aW9uRVJQVXRpbGlzYXRldXJzOiBBY3Rpb25FUlBVdGlsaXNhdGV1cltdID0gW107XHJcbiAgY29kZUFjdGlvblByZWNlZGVudGU6IG51bWJlcnwgdW5kZWZpbmVkO1xyXG4gIHJlY2FwaXR1bGF0aWY/OiBzdHJpbmd8IHVuZGVmaW5lZDtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFjdGlvbkVSUERldGFpbCB7XHJcbiAgICB1aWQ/OiBzdHJpbmc7XHJcbmFjdGlvbkVSUDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gICAgb2NjdXJlbmNlPzogc3RyaW5nO1xyXG4gICAgY2xhc3NlPyA6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFjdGlvbkVSUFV0aWxpc2F0ZXVyIHtcclxuICAgIHVpZD86IHN0cmluZztcclxuICAgIGFjdGlvbkVSUDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gICAgdXRpbGlzYXRldXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgIG9ibGlnYXRvaXJlOiBib29sZWFuID0gZmFsc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFN0YXR1dEFjdGlvbkNSTUVudW0ge1xyXG4gICAgRW5BdHRlbnRlID0gJ0VuIEF0dGVudGUnLFxyXG4gICAgUmVhbGlzZWUgPSAnUmVhbGlzw6llJyxcclxuICAgIE1pc2VFblN1c3BlbnMgPSAnTWlzZSBlbiBTdXNwZW5zJyxcclxuICAgIEFubnVsZWUgPSAnQW5udWzDqWUnLFxyXG4gICAgRW5Db3VycyA9ICdFbkNvdXJzJyxcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIG9jY3VyZW5jZUluZm9zIHtcclxuICAgIGJ1c2luZXNzY2xhc3M6IHN0cmluZztcclxuICAgIG9jY3VyZW5jZTogYW55O1xyXG59Il19
22
+ export var PrioriteActionCRMEnum;
23
+ (function (PrioriteActionCRMEnum) {
24
+ PrioriteActionCRMEnum["Basse"] = "Basse";
25
+ PrioriteActionCRMEnum["Normale"] = "Normale";
26
+ PrioriteActionCRMEnum["Haute"] = "Haute";
27
+ })(PrioriteActionCRMEnum || (PrioriteActionCRMEnum = {}));
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uRXJwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL21vZGVscy9hY3Rpb25FcnAvYWN0aW9uRXJwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxTQUFTO0lBQXRCO1FBa0JFLHFCQUFnQixHQUFzQixFQUFFLENBQUM7UUFDekMsMEJBQXFCLEdBQTJCLEVBQUUsQ0FBQztJQUdyRCxDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8sZUFBZTtDQUszQjtBQUVELE1BQU0sT0FBTyxvQkFBb0I7SUFBakM7UUFJSSxnQkFBVyxHQUFZLEtBQUssQ0FBQztJQUNqQyxDQUFDO0NBQUE7QUFFRCxNQUFNLENBQU4sSUFBWSxtQkFNWDtBQU5ELFdBQVksbUJBQW1CO0lBQzNCLCtDQUF3QixDQUFBO0lBQ3hCLGlEQUFxQixDQUFBO0lBQ3JCLHdEQUFpQyxDQUFBO0lBQ2pDLCtDQUFtQixDQUFBO0lBQ25CLDBDQUFtQixDQUFBO0FBQ3ZCLENBQUMsRUFOVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBTTlCO0FBQ0QsTUFBTSxDQUFOLElBQVkscUJBSVg7QUFKRCxXQUFZLHFCQUFxQjtJQUM3Qix3Q0FBZSxDQUFBO0lBQ2YsNENBQW1CLENBQUE7SUFDbkIsd0NBQWUsQ0FBQTtBQUNuQixDQUFDLEVBSlcscUJBQXFCLEtBQXJCLHFCQUFxQixRQUloQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElGaWx0ZXJlZFJlcXVlc3QsIElQYWdlZFJlcXVlc3QsIElTb3J0QnlQcm9wcmV0eSB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQWN0aW9uRVJQIHtcclxuICB1aWQ6IHN0cmluZ3wgdW5kZWZpbmVkOyBcclxuICBudW1lcm86IG51bWJlcnwgdW5kZWZpbmVkOyAgICAgICAgICAgICAgXHJcbiAgb2JqZXQ6IHN0cmluZ3wgdW5kZWZpbmVkO1xyXG4gIHN0YXR1dDogc3RyaW5nfCB1bmRlZmluZWQ7XHJcbiAgcmVzdWx0YXQ/OiBzdHJpbmc7ICAgICAgICAgIFxyXG4gIHByaW9yaXRlOiBzdHJpbmd8IHVuZGVmaW5lZDtcclxuICBsaWV1Pzogc3RyaW5nOyAgICAgICAgICAgICAgXHJcbiAgYWxlcnRlOiBib29sZWFufCB1bmRlZmluZWQ7ICAgICAgICAgICBcclxuICBhbGVydGVBdmFudD86IG51bWJlcjsgICAgICAgXHJcbiAgZGF0ZUhldXJlRGVidXRQcmV2OiBEYXRlfCB1bmRlZmluZWQ7IFxyXG4gIGRhdGVIZXVyZUZpblByZXY6IERhdGV8IHVuZGVmaW5lZDsgIFxyXG4gIGRhdGVIZXVyZURlYnV0UmVhbGlzZWU/OiBEYXRlO1xyXG4gIGRhdGVIZXVyZUZpblJlYWxpc2VlPzogRGF0ZTtcclxuICB1dGlsaXNhdGV1ckRlbWFuZGV1cjogc3RyaW5nfCB1bmRlZmluZWQ7XHJcbiAgdXRpbGlzYXRldXJBc3NpZ25lOiBzdHJpbmd8IHVuZGVmaW5lZDtcclxuICBuYXR1cmVBY3Rpb246c3RyaW5nfCB1bmRlZmluZWQ7XHJcbiAgYWN0aW9uUHJlY2VkZW50ZTpzdHJpbmd8IHVuZGVmaW5lZDtcclxuICBhY3Rpb25FUlBEZXRhaWxzOiBBY3Rpb25FUlBEZXRhaWxbXSA9IFtdO1xyXG4gIGFjdGlvbkVSUFV0aWxpc2F0ZXVyczogQWN0aW9uRVJQVXRpbGlzYXRldXJbXSA9IFtdO1xyXG4gIGNvZGVBY3Rpb25QcmVjZWRlbnRlOiBudW1iZXJ8IHVuZGVmaW5lZDtcclxuICByZWNhcGl0dWxhdGlmPzogc3RyaW5nfCB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25FUlBEZXRhaWwge1xyXG4gICAgdWlkPzogc3RyaW5nO1xyXG5hY3Rpb25FUlA6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgIG9jY3VyZW5jZT86IHN0cmluZztcclxuICAgIGNsYXNzZT8gOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25FUlBVdGlsaXNhdGV1ciB7XHJcbiAgICB1aWQ/OiBzdHJpbmc7XHJcbiAgICBhY3Rpb25FUlA6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgIHV0aWxpc2F0ZXVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICBvYmxpZ2F0b2lyZTogYm9vbGVhbiA9IGZhbHNlO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBTdGF0dXRBY3Rpb25DUk1FbnVtIHtcclxuICAgIEVuQXR0ZW50ZSA9ICdFbiBBdHRlbnRlJyxcclxuICAgIFJlYWxpc2VlID0gJ1JlYWxpc8OpZScsXHJcbiAgICBNaXNlRW5TdXNwZW5zID0gJ01pc2UgZW4gU3VzcGVucycsXHJcbiAgICBBbm51bGVlID0gJ0FubnVsw6llJyxcclxuICAgIEVuQ291cnMgPSAnRW5Db3VycycsXHJcbn1cclxuZXhwb3J0IGVudW0gUHJpb3JpdGVBY3Rpb25DUk1FbnVtIHtcclxuICAgIEJhc3NlID0gJ0Jhc3NlJyxcclxuICAgIE5vcm1hbGUgPSAnTm9ybWFsZScsXHJcbiAgICBIYXV0ZSA9ICdIYXV0ZScsXHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBvY2N1cmVuY2VJbmZvcyB7XHJcbiAgICBidXNpbmVzc2NsYXNzOiBzdHJpbmc7XHJcbiAgICBvY2N1cmVuY2U6IGFueTtcclxufSJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { Component } from '@angular/core';
2
2
  import { TsiFormComponentBaseComponent } from '../../tsi-base';
3
3
  import { appProviders } from '../../consts/app-providers';
4
- import { ActionERP, StatutActionCRMEnum } from '../../models/actionErp/actionErp';
4
+ import { ActionERP, StatutActionCRMEnum, PrioriteActionCRMEnum } from '../../models/actionErp/actionErp';
5
5
  import { Component_Modes, InputTypes, ModalSizeEnum, Modes } from '../../enums';
6
6
  import { LocalizationKeys } from '../../consts/localization-key';
7
7
  import { AdministrationEndpoints } from '../../end-points';
@@ -123,10 +123,22 @@ export class TsiActionErpCreateOrEditComponent extends TsiFormComponentBaseCompo
123
123
  console.log('customData.item =', this.customData.item);
124
124
  Object.assign(this.action, this.customData.item);
125
125
  }
126
+ if (!this.action.priorite) {
127
+ this.action.priorite = PrioriteActionCRMEnum.Normale;
128
+ }
129
+ if (!this.action.dateHeureDebutPrev) {
130
+ this.action.dateHeureDebutPrev = new Date(new Date().setHours(0, 0, 0, 0));
131
+ }
132
+ if (!this.action.dateHeureFinPrev) {
133
+ this.action.dateHeureFinPrev = new Date(new Date().setHours(0, 0, 0, 0));
134
+ }
126
135
  let token = this._identityManagerService.parseMyAuthToken();
127
136
  if (!token)
128
137
  return;
129
138
  this.action.utilisateurDemandeur = token.primarysid?.toLowerCase();
139
+ if (!this.action.utilisateurAssigne) {
140
+ this.action.utilisateurAssigne = token.primarysid?.toLowerCase();
141
+ }
130
142
  }
131
143
  }
132
144
  toggleFrequent() {
@@ -377,7 +389,7 @@ export class TsiActionErpCreateOrEditComponent extends TsiFormComponentBaseCompo
377
389
  return;
378
390
  this._natureActionservice.getById(natureActionId).subscribe({
379
391
  next: (natureAction) => {
380
- if (natureAction?.realisateur) {
392
+ if (!this.action.utilisateurAssigne && natureAction?.realisateur) {
381
393
  this.action.utilisateurAssigne = natureAction.realisateur;
382
394
  }
383
395
  },
@@ -408,10 +420,10 @@ export class TsiActionErpCreateOrEditComponent extends TsiFormComponentBaseCompo
408
420
  });
409
421
  }
410
422
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiActionErpCreateOrEditComponent, deps: [{ token: i1.ActionErpService }, { token: i2.NatureActionService }, { token: i1.ErrorResponseManagerService }, { token: i1.TsiNotificationService }, { token: i1.TsiConfirmationService }, { token: i1.EntityConfigurationService }, { token: i3.DialogService }, { token: i1.IdentityManagerService }, { token: i4.LocalizePipe }, { token: i3.DynamicDialogConfig }, { token: i3.DynamicDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
411
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiActionErpCreateOrEditComponent, selector: "lib-tsi-action-erp-create-or-edit", providers: [...appProviders, DialogService], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel :mode:'shared_action_add_action'\" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"col-12\">\r\n <div class=\"grid row-gap-2\">\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_Nature_Action'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getNatureActionMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllNatureActionMinimal()\"\r\n [(bind)]=\"action.natureAction\" id-field=\"uid\" label-field=\"libelle\" [isFiltered]=\"true\"\r\n [inputName]=\"'NatureAction'\" [businessClass]=\"businessClassNames.NatureAction\"\r\n (bindChange)=\"onNatureActionChange($event)\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_numero'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Integer [inputName]=\"'Numero'\" [(inputField)]=\"action.numero\"\r\n [disabled]=\"true\"></Tsi-Integer></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_utilisateurDemandeur'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurDemandeur\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [isFiltered]=\"true\" [inputName]=\"'utilisateurDemandeur'\"\r\n [businessClass]=\"businessClassNames.Utilisateur\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_objet'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Objet'\" [(inputField)]=\"action.objet\"\r\n [rows]=\"3\"></Tsi-Text-Area></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_lieu'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Lieu'\"\r\n [(inputField)]=\"action.lieu\"></Tsi-Text-Area></div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_priorite'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allPrioriteActionCRMEnum\"\r\n [(bind)]=\"action.priorite\" id-field=\"key\" label-field=\"value\" [inputName]=\"'Priorite'\"\r\n [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_utilisateurAssigne'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurAssigne\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [inputName]=\"'UtilisateurAssigne'\" [isFiltered]=\"true\"\r\n [businessClass]=\"businessClassNames.Utilisateur\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_resultat'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allResultatActionCRMEnum\"\r\n [(bind)]=\"action.resultat\" id-field=\"key\" label-field=\"value\" [inputName]=\"'Resultat'\"\r\n [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_Recapitulatif'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Recapitulatif'\" [(inputField)]=\"action.recapitulatif\"\r\n [rows]=\"3\"></Tsi-Text-Area></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_ActionPrecedente'\"></Tsi-Label></div>\r\n <div class=\"col-7\"><Tsi-Integer [inputName]=\"'ActionPrecedente'\"\r\n [(inputField)]=\"action.codeActionPrecedente\" [disabled]=\"true\"></Tsi-Integer>\r\n </div>\r\n <div class=\"col-1\">\r\n <Tsi-Button [icon]=\"'pi pi-eye'\" [disabled]=\"!action.actionPrecedente\"\r\n (onClick)=\"openActionPrecedentePopup()\">\r\n </Tsi-Button>\r\n \r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'anglais_echeance'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"form-group border p-2\">\r\n <div class=\"grid mb-1\">\r\n <div class=\"col-4\"></div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Debut' | localize }}</b>\r\n </div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Fin' | localize }}</b>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action_dateHeure_Prev'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutPrev'\"\r\n [(inputField)]=\"action.dateHeureDebutPrev\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinPrev'\"\r\n [(inputField)]=\"action.dateHeureFinPrev\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action.dateHeuree_Realisee'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutRealisee'\"[showTime]=\"true\"\r\n [(inputField)]=\"action.dateHeureDebutRealisee\"\r\n ></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinRealisee'\"[showTime]=\"true\"\r\n [(inputField)]=\"action.dateHeureFinRealisee\"\r\n ></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <p-fieldset [legend]=\"'action_Fieldset_alerte' | localize\">\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'action_alerte'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-4\"><Tsi-CheckBox [inputName]=\"'Alerte'\" [isBinary]=\"true\"\r\n [(inputField)]=\"action.alerte\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center \">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'action_alerteAvant'\"></Tsi-Label>\r\n </div>\r\n\r\n <div class=\"col-3 flex align-items-center gap-2\"><Tsi-Integer\r\n [inputName]=\"'AlerteAvant'\" [(inputField)]=\"action.alerteAvant\">\r\n </Tsi-Integer>\r\n <span class=\"text-nowrap\">{{'jours'| localize}}</span>\r\n </div>\r\n </div>\r\n </p-fieldset>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'Liste_des_action_details'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n <div class=\"grid align-items-center justify-content-start w-full gap-8 mb-3\">\r\n <div class=\"flex\">\r\n <div class=\"flex align-items-center gap-3\"><Tsi-Label [labelValue]=\"'shared_actionErp_Frequent_classe'\"></Tsi-Label>\r\n <Tsi-Button class=\"ml-3\" (onClick)=\"toggleFrequent()\" [text]=\"onlyFrequent ? 'ON' : 'OFF'\"\r\n [icon]=\"onlyFrequent ? 'pi pi-check' : 'pi pi-times'\">\r\n </Tsi-Button>\r\n </div>\r\n </div>\r\n <div presentationDesigner=\"action_Generer\" class=\" flex align-items-center gap-6\">\r\n <Tsi-Label [labelValue]=\"'action_Generer'\"></Tsi-Label>\r\n <Tsi-Search-Combo style=\"width: 280px;\" inputName=\"className\" id-field=\"className\"\r\n label-field=\"className\" [listSourceUrl]=\"entityListUrl\"\r\n [elementSourceUrl]=\"this.administrationEndpoints.getEntityInfoElementSource()\"\r\n [isFiltered]=\"true\" [(bind)]=\"classename\" [businessClass]=\"businessClass\"\r\n (bindChange)=\"onClasseSelected($event)\"> ></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <Tsi-Generic-Editable-Grid (onConsultClicked)=\"consultElement($event)\"\r\n [showConsultButton]=\"true\" [columns]=\"actiondetailcolom\"\r\n [gridData]=\"action.actionERPDetails\" [parent]=\"this\"></Tsi-Generic-Editable-Grid>\r\n </ng-template>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'shared_action_participants'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n <Tsi-Generic-Editable-Grid [columns]=\"participantColumns\"\r\n [gridData]=\"action.actionERPUtilisateurs\" [parent]=\"this\" [showAddButton]=\"true\"\r\n [showDeleteButton]=\"true\"></Tsi-Generic-Editable-Grid>\r\n </ng-template>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </div>\r\n </fieldset>\r\n\r\n <div *ngIf=\"mode !== modeRef.create\" class=\"grid mt-2\" presentationDesigner=\"actionnouvelle_actionERP\">\r\n <div class=\"col-8\">\r\n <Tsi-Button class=\"w-full\" (onClick)=\"openActionERPPopUp()\"\r\n [text]=\"'actionnouvelle_actionERP'\"></Tsi-Button>\r\n </div>\r\n </div>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i7.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i8.Fieldset, selector: "p-fieldset", inputs: ["legend", "toggleable", "collapsed", "style", "styleClass", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "component", type: i9.EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: ["selectedItems", "configuration", "key", "items", "saveEvent", "showGlobalSearch", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "sizingMode", "rowPerPage", "pageSize", "entityPrimaryKeyName", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "showDuplicateButton", "id"], outputs: ["refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked", "rowDuplicatedEventEmitter"] }, { kind: "component", type: i10.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: i11.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i12.TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: ["required", "showTime", "showButtonBar"], outputs: ["inputFieldChange"] }, { kind: "component", type: i13.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i14.TsiTextAreaComponent, selector: "Tsi-Text-Area", inputs: ["rows", "cols"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i15.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i16.TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton", "showSaveAndCloseButton", "mode"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: i17.TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: i18.TsiButtonComponent, selector: "Tsi-Button", inputs: ["disabled", "text", "style", "tooltipText", "tooltipPosition", "buttonType", "icon", "styleClass", "iconSrc", "id", "iconWidth", "iconClass"], outputs: ["onClick", "rightClick"] }, { kind: "component", type: i19.TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "showManageWorkflowButton", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly", "statusInputDisabled"], outputs: ["onSave", "openWorkflow", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "directive", type: i20.PresentationDesignerDirective, selector: "[presentationDesigner]:not(tsi-tab-panel)" }, { kind: "pipe", type: i21.LocalizePipe, name: "localize" }, { kind: "pipe", type: i22.ModalLabelPipe, name: "modalLabel" }] }); }
423
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiActionErpCreateOrEditComponent, selector: "lib-tsi-action-erp-create-or-edit", providers: [...appProviders, DialogService], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel :mode:'shared_action_add_action'\" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"col-12\">\r\n <div class=\"grid row-gap-2\">\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_Nature_Action'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getNatureActionMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllNatureActionMinimal()\"\r\n [(bind)]=\"action.natureAction\" id-field=\"uid\" label-field=\"libelle\" [isFiltered]=\"true\"\r\n [inputName]=\"'NatureAction'\" [businessClass]=\"businessClassNames.NatureAction\"\r\n (bindChange)=\"onNatureActionChange($event)\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_numero'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Integer [inputName]=\"'Numero'\" [(inputField)]=\"action.numero\"\r\n [disabled]=\"true\"></Tsi-Integer></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_utilisateurDemandeur'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurDemandeur\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [isFiltered]=\"true\" [inputName]=\"'utilisateurDemandeur'\"\r\n [businessClass]=\"businessClassNames.Utilisateur\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_objet'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Objet'\" [(inputField)]=\"action.objet\"\r\n [rows]=\"3\"></Tsi-Text-Area></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_lieu'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Lieu'\"\r\n [(inputField)]=\"action.lieu\"></Tsi-Text-Area></div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_priorite'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allPrioriteActionCRMEnum\"\r\n [(bind)]=\"action.priorite\" id-field=\"key\" label-field=\"value\" [inputName]=\"'Priorite'\"\r\n [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_utilisateurAssigne'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurAssigne\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [inputName]=\"'UtilisateurAssigne'\" [isFiltered]=\"true\"\r\n [businessClass]=\"businessClassNames.Utilisateur\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_resultat'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allResultatActionCRMEnum\"\r\n [(bind)]=\"action.resultat\" id-field=\"key\" label-field=\"value\" [inputName]=\"'Resultat'\"\r\n [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_Recapitulatif'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Recapitulatif'\" [(inputField)]=\"action.recapitulatif\"\r\n [rows]=\"3\"></Tsi-Text-Area></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_ActionPrecedente'\"></Tsi-Label></div>\r\n <div class=\"col-7\"><Tsi-Integer [inputName]=\"'ActionPrecedente'\"\r\n [(inputField)]=\"action.codeActionPrecedente\" [disabled]=\"true\"></Tsi-Integer>\r\n </div>\r\n <div class=\"col-1\">\r\n <Tsi-Button [icon]=\"'pi pi-eye'\" [disabled]=\"!action.actionPrecedente\"\r\n (onClick)=\"openActionPrecedentePopup()\">\r\n </Tsi-Button>\r\n \r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'anglais_echeance'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"form-group border p-2\">\r\n <div class=\"grid mb-1\">\r\n <div class=\"col-4\"></div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Debut' | localize }}</b>\r\n </div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Fin' | localize }}</b>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action_dateHeure_Prev'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutPrev'\"\r\n [(inputField)]=\"action.dateHeureDebutPrev\"\r\n [showTime]=\"false\"></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinPrev'\"\r\n [(inputField)]=\"action.dateHeureFinPrev\"\r\n [showTime]=\"false\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action.dateHeuree_Realisee'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutRealisee'\"[showTime]=\"true\"\r\n [(inputField)]=\"action.dateHeureDebutRealisee\"\r\n ></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinRealisee'\"[showTime]=\"true\"\r\n [(inputField)]=\"action.dateHeureFinRealisee\"\r\n ></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <p-fieldset [legend]=\"'action_Fieldset_alerte' | localize\">\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'action_alerte'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-4\"><Tsi-CheckBox [inputName]=\"'Alerte'\" [isBinary]=\"true\"\r\n [(inputField)]=\"action.alerte\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center \">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'action_alerteAvant'\"></Tsi-Label>\r\n </div>\r\n\r\n <div class=\"col-9 flex align-items-center gap-2\"><Tsi-Integer\r\n [inputName]=\"'AlerteAvant'\" [(inputField)]=\"action.alerteAvant\">\r\n </Tsi-Integer>\r\n <span class=\"text-nowrap\">{{'jours'| localize}}</span>\r\n </div>\r\n </div>\r\n </p-fieldset>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'Liste_des_action_details'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n <div class=\"grid align-items-center justify-content-start w-full gap-8 mb-3\">\r\n <div class=\"flex\">\r\n <div class=\"flex align-items-center gap-3\"><Tsi-Label [labelValue]=\"'shared_actionErp_Frequent_classe'\"></Tsi-Label>\r\n <Tsi-Button class=\"ml-3\" (onClick)=\"toggleFrequent()\" [text]=\"onlyFrequent ? 'ON' : 'OFF'\"\r\n [icon]=\"onlyFrequent ? 'pi pi-check' : 'pi pi-times'\">\r\n </Tsi-Button>\r\n </div>\r\n </div>\r\n <div presentationDesigner=\"action_Generer\" class=\" flex align-items-center gap-6\">\r\n <Tsi-Label [labelValue]=\"'action_Generer'\"></Tsi-Label>\r\n <Tsi-Search-Combo style=\"width: 280px;\" inputName=\"className\" id-field=\"className\"\r\n label-field=\"className\" [listSourceUrl]=\"entityListUrl\"\r\n [elementSourceUrl]=\"this.administrationEndpoints.getEntityInfoElementSource()\"\r\n [isFiltered]=\"true\" [(bind)]=\"classename\" [businessClass]=\"businessClass\"\r\n (bindChange)=\"onClasseSelected($event)\"> ></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <Tsi-Generic-Editable-Grid (onConsultClicked)=\"consultElement($event)\"\r\n [showConsultButton]=\"true\" [columns]=\"actiondetailcolom\"\r\n [gridData]=\"action.actionERPDetails\" [parent]=\"this\"></Tsi-Generic-Editable-Grid>\r\n </ng-template>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'shared_action_participants'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n <Tsi-Generic-Editable-Grid [columns]=\"participantColumns\"\r\n [gridData]=\"action.actionERPUtilisateurs\" [parent]=\"this\" [showAddButton]=\"true\"\r\n [showDeleteButton]=\"true\"></Tsi-Generic-Editable-Grid>\r\n </ng-template>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </div>\r\n </fieldset>\r\n\r\n <div *ngIf=\"mode !== modeRef.create\" class=\"grid mt-2\" presentationDesigner=\"actionnouvelle_actionERP\">\r\n <div class=\"col-8\">\r\n <Tsi-Button class=\"w-full\" (onClick)=\"openActionERPPopUp()\"\r\n [text]=\"'actionnouvelle_actionERP'\"></Tsi-Button>\r\n </div>\r\n </div>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i7.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i8.Fieldset, selector: "p-fieldset", inputs: ["legend", "toggleable", "collapsed", "style", "styleClass", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "component", type: i9.EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: ["selectedItems", "configuration", "key", "items", "saveEvent", "showGlobalSearch", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "sizingMode", "rowPerPage", "pageSize", "entityPrimaryKeyName", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "showDuplicateButton", "id"], outputs: ["refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked", "rowDuplicatedEventEmitter"] }, { kind: "component", type: i10.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "listSourceParams", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "searchDebounceTime", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "maxSelectedLabels", "tooltipMaxDisplayedItems", "bindMode", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick", "selectionChange"] }, { kind: "component", type: i11.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i12.TsiDatePickerComponent, selector: "Tsi-Date-Picker", inputs: ["required", "showTime", "showButtonBar"], outputs: ["inputFieldChange"] }, { kind: "component", type: i13.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i14.TsiTextAreaComponent, selector: "Tsi-Text-Area", inputs: ["rows", "cols"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i15.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i16.TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton", "showSaveAndCloseButton", "mode"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: i17.TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: i18.TsiButtonComponent, selector: "Tsi-Button", inputs: ["disabled", "text", "style", "tooltipText", "tooltipPosition", "buttonType", "icon", "styleClass", "iconSrc", "id", "iconWidth", "iconClass"], outputs: ["onClick", "rightClick"] }, { kind: "component", type: i19.TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "showManageWorkflowButton", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly", "statusInputDisabled"], outputs: ["onSave", "openWorkflow", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "directive", type: i20.PresentationDesignerDirective, selector: "[presentationDesigner]:not(tsi-tab-panel)" }, { kind: "pipe", type: i21.LocalizePipe, name: "localize" }, { kind: "pipe", type: i22.ModalLabelPipe, name: "modalLabel" }] }); }
412
424
  }
413
425
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiActionErpCreateOrEditComponent, decorators: [{
414
426
  type: Component,
415
- args: [{ selector: 'lib-tsi-action-erp-create-or-edit', providers: [...appProviders, DialogService], template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel :mode:'shared_action_add_action'\" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"col-12\">\r\n <div class=\"grid row-gap-2\">\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_Nature_Action'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getNatureActionMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllNatureActionMinimal()\"\r\n [(bind)]=\"action.natureAction\" id-field=\"uid\" label-field=\"libelle\" [isFiltered]=\"true\"\r\n [inputName]=\"'NatureAction'\" [businessClass]=\"businessClassNames.NatureAction\"\r\n (bindChange)=\"onNatureActionChange($event)\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_numero'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Integer [inputName]=\"'Numero'\" [(inputField)]=\"action.numero\"\r\n [disabled]=\"true\"></Tsi-Integer></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_utilisateurDemandeur'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurDemandeur\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [isFiltered]=\"true\" [inputName]=\"'utilisateurDemandeur'\"\r\n [businessClass]=\"businessClassNames.Utilisateur\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_objet'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Objet'\" [(inputField)]=\"action.objet\"\r\n [rows]=\"3\"></Tsi-Text-Area></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_lieu'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Lieu'\"\r\n [(inputField)]=\"action.lieu\"></Tsi-Text-Area></div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_priorite'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allPrioriteActionCRMEnum\"\r\n [(bind)]=\"action.priorite\" id-field=\"key\" label-field=\"value\" [inputName]=\"'Priorite'\"\r\n [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_utilisateurAssigne'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurAssigne\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [inputName]=\"'UtilisateurAssigne'\" [isFiltered]=\"true\"\r\n [businessClass]=\"businessClassNames.Utilisateur\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_resultat'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allResultatActionCRMEnum\"\r\n [(bind)]=\"action.resultat\" id-field=\"key\" label-field=\"value\" [inputName]=\"'Resultat'\"\r\n [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_Recapitulatif'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Recapitulatif'\" [(inputField)]=\"action.recapitulatif\"\r\n [rows]=\"3\"></Tsi-Text-Area></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_ActionPrecedente'\"></Tsi-Label></div>\r\n <div class=\"col-7\"><Tsi-Integer [inputName]=\"'ActionPrecedente'\"\r\n [(inputField)]=\"action.codeActionPrecedente\" [disabled]=\"true\"></Tsi-Integer>\r\n </div>\r\n <div class=\"col-1\">\r\n <Tsi-Button [icon]=\"'pi pi-eye'\" [disabled]=\"!action.actionPrecedente\"\r\n (onClick)=\"openActionPrecedentePopup()\">\r\n </Tsi-Button>\r\n \r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'anglais_echeance'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"form-group border p-2\">\r\n <div class=\"grid mb-1\">\r\n <div class=\"col-4\"></div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Debut' | localize }}</b>\r\n </div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Fin' | localize }}</b>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action_dateHeure_Prev'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutPrev'\"\r\n [(inputField)]=\"action.dateHeureDebutPrev\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinPrev'\"\r\n [(inputField)]=\"action.dateHeureFinPrev\"\r\n [showTime]=\"true\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action.dateHeuree_Realisee'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutRealisee'\"[showTime]=\"true\"\r\n [(inputField)]=\"action.dateHeureDebutRealisee\"\r\n ></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinRealisee'\"[showTime]=\"true\"\r\n [(inputField)]=\"action.dateHeureFinRealisee\"\r\n ></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <p-fieldset [legend]=\"'action_Fieldset_alerte' | localize\">\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'action_alerte'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-4\"><Tsi-CheckBox [inputName]=\"'Alerte'\" [isBinary]=\"true\"\r\n [(inputField)]=\"action.alerte\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center \">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'action_alerteAvant'\"></Tsi-Label>\r\n </div>\r\n\r\n <div class=\"col-3 flex align-items-center gap-2\"><Tsi-Integer\r\n [inputName]=\"'AlerteAvant'\" [(inputField)]=\"action.alerteAvant\">\r\n </Tsi-Integer>\r\n <span class=\"text-nowrap\">{{'jours'| localize}}</span>\r\n </div>\r\n </div>\r\n </p-fieldset>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'Liste_des_action_details'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n <div class=\"grid align-items-center justify-content-start w-full gap-8 mb-3\">\r\n <div class=\"flex\">\r\n <div class=\"flex align-items-center gap-3\"><Tsi-Label [labelValue]=\"'shared_actionErp_Frequent_classe'\"></Tsi-Label>\r\n <Tsi-Button class=\"ml-3\" (onClick)=\"toggleFrequent()\" [text]=\"onlyFrequent ? 'ON' : 'OFF'\"\r\n [icon]=\"onlyFrequent ? 'pi pi-check' : 'pi pi-times'\">\r\n </Tsi-Button>\r\n </div>\r\n </div>\r\n <div presentationDesigner=\"action_Generer\" class=\" flex align-items-center gap-6\">\r\n <Tsi-Label [labelValue]=\"'action_Generer'\"></Tsi-Label>\r\n <Tsi-Search-Combo style=\"width: 280px;\" inputName=\"className\" id-field=\"className\"\r\n label-field=\"className\" [listSourceUrl]=\"entityListUrl\"\r\n [elementSourceUrl]=\"this.administrationEndpoints.getEntityInfoElementSource()\"\r\n [isFiltered]=\"true\" [(bind)]=\"classename\" [businessClass]=\"businessClass\"\r\n (bindChange)=\"onClasseSelected($event)\"> ></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <Tsi-Generic-Editable-Grid (onConsultClicked)=\"consultElement($event)\"\r\n [showConsultButton]=\"true\" [columns]=\"actiondetailcolom\"\r\n [gridData]=\"action.actionERPDetails\" [parent]=\"this\"></Tsi-Generic-Editable-Grid>\r\n </ng-template>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'shared_action_participants'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n <Tsi-Generic-Editable-Grid [columns]=\"participantColumns\"\r\n [gridData]=\"action.actionERPUtilisateurs\" [parent]=\"this\" [showAddButton]=\"true\"\r\n [showDeleteButton]=\"true\"></Tsi-Generic-Editable-Grid>\r\n </ng-template>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </div>\r\n </fieldset>\r\n\r\n <div *ngIf=\"mode !== modeRef.create\" class=\"grid mt-2\" presentationDesigner=\"actionnouvelle_actionERP\">\r\n <div class=\"col-8\">\r\n <Tsi-Button class=\"w-full\" (onClick)=\"openActionERPPopUp()\"\r\n [text]=\"'actionnouvelle_actionERP'\"></Tsi-Button>\r\n </div>\r\n </div>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>" }]
427
+ args: [{ selector: 'lib-tsi-action-erp-create-or-edit', providers: [...appProviders, DialogService], template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel :mode:'shared_action_add_action'\" (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"col-12\">\r\n <div class=\"grid row-gap-2\">\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_Nature_Action'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getNatureActionMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllNatureActionMinimal()\"\r\n [(bind)]=\"action.natureAction\" id-field=\"uid\" label-field=\"libelle\" [isFiltered]=\"true\"\r\n [inputName]=\"'NatureAction'\" [businessClass]=\"businessClassNames.NatureAction\"\r\n (bindChange)=\"onNatureActionChange($event)\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_numero'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Integer [inputName]=\"'Numero'\" [(inputField)]=\"action.numero\"\r\n [disabled]=\"true\"></Tsi-Integer></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_utilisateurDemandeur'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurDemandeur\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [isFiltered]=\"true\" [inputName]=\"'utilisateurDemandeur'\"\r\n [businessClass]=\"businessClassNames.Utilisateur\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_objet'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Objet'\" [(inputField)]=\"action.objet\"\r\n [rows]=\"3\"></Tsi-Text-Area></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_lieu'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Lieu'\"\r\n [(inputField)]=\"action.lieu\"></Tsi-Text-Area></div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_priorite'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allPrioriteActionCRMEnum\"\r\n [(bind)]=\"action.priorite\" id-field=\"key\" label-field=\"value\" [inputName]=\"'Priorite'\"\r\n [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_utilisateurAssigne'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [elementSourceUrl]=\"administrationEndpoints.getUtilisateurMinimal()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllUtilisateurMinimal()\"\r\n [(bind)]=\"action.utilisateurAssigne\" id-field=\"uid\" label-field=\"nomPrenom\"\r\n [inputName]=\"'UtilisateurAssigne'\" [isFiltered]=\"true\"\r\n [businessClass]=\"businessClassNames.Utilisateur\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_resultat'\"></Tsi-Label></div>\r\n <div class=\"col-8\">\r\n <Tsi-Search-Combo [listSourceUrl]=\"administrationEndpoints.allResultatActionCRMEnum\"\r\n [(bind)]=\"action.resultat\" id-field=\"key\" label-field=\"value\" [inputName]=\"'Resultat'\"\r\n [showSearchButton]=\"false\"></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_Recapitulatif'\"></Tsi-Label></div>\r\n <div class=\"col-8\"><Tsi-Text-Area [inputName]=\"'Recapitulatif'\" [(inputField)]=\"action.recapitulatif\"\r\n [rows]=\"3\"></Tsi-Text-Area></div>\r\n </div>\r\n <div class=\"grid align-items-center\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'shared_action_ActionPrecedente'\"></Tsi-Label></div>\r\n <div class=\"col-7\"><Tsi-Integer [inputName]=\"'ActionPrecedente'\"\r\n [(inputField)]=\"action.codeActionPrecedente\" [disabled]=\"true\"></Tsi-Integer>\r\n </div>\r\n <div class=\"col-1\">\r\n <Tsi-Button [icon]=\"'pi pi-eye'\" [disabled]=\"!action.actionPrecedente\"\r\n (onClick)=\"openActionPrecedentePopup()\">\r\n </Tsi-Button>\r\n \r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'anglais_echeance'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"form-group border p-2\">\r\n <div class=\"grid mb-1\">\r\n <div class=\"col-4\"></div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Debut' | localize }}</b>\r\n </div>\r\n <div class=\"col-4 text-center\"><b>{{ 'action_Fin' | localize }}</b>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action_dateHeure_Prev'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutPrev'\"\r\n [(inputField)]=\"action.dateHeureDebutPrev\"\r\n [showTime]=\"false\"></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinPrev'\"\r\n [(inputField)]=\"action.dateHeureFinPrev\"\r\n [showTime]=\"false\"></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center\">\r\n <div class=\"col-4\"><Tsi-Label\r\n [labelValue]=\"'action.dateHeuree_Realisee'\"></Tsi-Label></div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureDebutRealisee'\"[showTime]=\"true\"\r\n [(inputField)]=\"action.dateHeureDebutRealisee\"\r\n ></Tsi-Date-Picker>\r\n </div>\r\n <div class=\"col-4\"><Tsi-Date-Picker [inputName]=\"'DateHeureFinRealisee'\"[showTime]=\"true\"\r\n [(inputField)]=\"action.dateHeureFinRealisee\"\r\n ></Tsi-Date-Picker>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <p-fieldset [legend]=\"'action_Fieldset_alerte' | localize\">\r\n <div class=\"grid flex align-items-center mb-2\">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'action_alerte'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-4\"><Tsi-CheckBox [inputName]=\"'Alerte'\" [isBinary]=\"true\"\r\n [(inputField)]=\"action.alerte\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"grid flex align-items-center \">\r\n <div class=\"col-3\"><Tsi-Label [labelValue]=\"'action_alerteAvant'\"></Tsi-Label>\r\n </div>\r\n\r\n <div class=\"col-9 flex align-items-center gap-2\"><Tsi-Integer\r\n [inputName]=\"'AlerteAvant'\" [(inputField)]=\"action.alerteAvant\">\r\n </Tsi-Integer>\r\n <span class=\"text-nowrap\">{{'jours'| localize}}</span>\r\n </div>\r\n </div>\r\n </p-fieldset>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'Liste_des_action_details'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n <div class=\"grid align-items-center justify-content-start w-full gap-8 mb-3\">\r\n <div class=\"flex\">\r\n <div class=\"flex align-items-center gap-3\"><Tsi-Label [labelValue]=\"'shared_actionErp_Frequent_classe'\"></Tsi-Label>\r\n <Tsi-Button class=\"ml-3\" (onClick)=\"toggleFrequent()\" [text]=\"onlyFrequent ? 'ON' : 'OFF'\"\r\n [icon]=\"onlyFrequent ? 'pi pi-check' : 'pi pi-times'\">\r\n </Tsi-Button>\r\n </div>\r\n </div>\r\n <div presentationDesigner=\"action_Generer\" class=\" flex align-items-center gap-6\">\r\n <Tsi-Label [labelValue]=\"'action_Generer'\"></Tsi-Label>\r\n <Tsi-Search-Combo style=\"width: 280px;\" inputName=\"className\" id-field=\"className\"\r\n label-field=\"className\" [listSourceUrl]=\"entityListUrl\"\r\n [elementSourceUrl]=\"this.administrationEndpoints.getEntityInfoElementSource()\"\r\n [isFiltered]=\"true\" [(bind)]=\"classename\" [businessClass]=\"businessClass\"\r\n (bindChange)=\"onClasseSelected($event)\"> ></Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <Tsi-Generic-Editable-Grid (onConsultClicked)=\"consultElement($event)\"\r\n [showConsultButton]=\"true\" [columns]=\"actiondetailcolom\"\r\n [gridData]=\"action.actionERPDetails\" [parent]=\"this\"></Tsi-Generic-Editable-Grid>\r\n </ng-template>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'shared_action_participants'| localize\">\r\n <ng-template pTemplate=\"content\">\r\n <Tsi-Generic-Editable-Grid [columns]=\"participantColumns\"\r\n [gridData]=\"action.actionERPUtilisateurs\" [parent]=\"this\" [showAddButton]=\"true\"\r\n [showDeleteButton]=\"true\"></Tsi-Generic-Editable-Grid>\r\n </ng-template>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </div>\r\n </fieldset>\r\n\r\n <div *ngIf=\"mode !== modeRef.create\" class=\"grid mt-2\" presentationDesigner=\"actionnouvelle_actionERP\">\r\n <div class=\"col-8\">\r\n <Tsi-Button class=\"w-full\" (onClick)=\"openActionERPPopUp()\"\r\n [text]=\"'actionnouvelle_actionERP'\"></Tsi-Button>\r\n </div>\r\n </div>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>" }]
416
428
  }], ctorParameters: () => [{ type: i1.ActionErpService }, { type: i2.NatureActionService }, { type: i1.ErrorResponseManagerService }, { type: i1.TsiNotificationService }, { type: i1.TsiConfirmationService }, { type: i1.EntityConfigurationService }, { type: i3.DialogService }, { type: i1.IdentityManagerService }, { type: i4.LocalizePipe }, { type: i3.DynamicDialogConfig }, { type: i3.DynamicDialogRef }] });
417
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWFjdGlvbi1lcnAtY3JlYXRlLW9yLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL3RzaS1hY3Rpb24tZXJwLWNyZWF0ZS1vci1lZGl0L3RzaS1hY3Rpb24tZXJwLWNyZWF0ZS1vci1lZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktYWN0aW9uLWVycC1jcmVhdGUtb3ItZWRpdC90c2ktYWN0aW9uLWVycC1jcmVhdGUtb3ItZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFtQyxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25ILE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGFBQWEsRUFBeUMsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUV2RSxPQUFPLEVBQUUsY0FBYyxFQUFF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LGlDQUFpQztrQkFON0MsU0FBUzsrQkFDRSxtQ0FBbUMsYUFHbEMsQ0FBQyxHQUFHLFlBQVksRUFBRSxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgVHNpRm9ybUNvbXBvbmVudEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi90c2ktYmFzZSc7XHJcbmltcG9ydCB7IGFwcFByb3ZpZGVycyB9IGZyb20gJy4uLy4uL2NvbnN0cy9hcHAtcHJvdmlkZXJzJztcclxuaW1wb3J0IHsgQWN0aW9uRVJQLCBBY3Rpb25FUlBEZXRhaWwsIG9jY3VyZW5jZUluZm9zLCBTdGF0dXRBY3Rpb25DUk1FbnVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjdGlvbkVycC9hY3Rpb25FcnAnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRfTW9kZXMsIElucHV0VHlwZXMsIE1vZGFsU2l6ZUVudW0sIE1vZGVzIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25LZXlzIH0gZnJvbSAnLi4vLi4vY29uc3RzL2xvY2FsaXphdGlvbi1rZXknO1xyXG5pbXBvcnQgeyBBY3Rpb25FcnBTZXJ2aWNlLCBFcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2UsIFRzaU5vdGlmaWNhdGlvblNlcnZpY2UsIFRzaUNvbmZpcm1hdGlvblNlcnZpY2UsIEVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlLCBUc2lNb2RhbFNlcnZpY2UsIEN1cnJlbnRVc2VyU2VydmljZSwgSWRlbnRpdHlNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgQWRtaW5pc3RyYXRpb25FbmRwb2ludHMgfSBmcm9tICcuLi8uLi9lbmQtcG9pbnRzJztcclxuaW1wb3J0IHsgR3JpZENvbHVtbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlLCBEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgVHlwZVJlZ2lzdHJ5SGVscGVyIH0gZnJvbSAnLi4vLi4vdHNpLWhlbHBlcnMvdHlwZS1yZWdpc3RyeS5oZWxwZXInO1xyXG5pbXBvcnQgeyBCdXNpbmVzc0NsYXNzTmFtZXMgfSBmcm9tICcuLi8uLi9jb25zdHMvYnVzaW5lc3MtY2xhc3MtbmFtZXMnO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcyc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE5hdHVyZUFjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hY3Rpb25FcnAvbmF0dXJlLWFjdGlvbi1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10c2ktYWN0aW9uLWVycC1jcmVhdGUtb3ItZWRpdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS1hY3Rpb24tZXJwLWNyZWF0ZS1vci1lZGl0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdHNpLWFjdGlvbi1lcnAtY3JlYXRlLW9yLWVkaXQuY29tcG9uZW50LmNzcycsXHJcbiAgcHJvdmlkZXJzOiBbLi4uYXBwUHJvdmlkZXJzLCBEaWFsb2dTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHNpQWN0aW9uRXJwQ3JlYXRlT3JFZGl0Q29tcG9uZW50IGV4dGVuZHMgVHNpRm9ybUNvbXBvbmVudEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGFjdGlvbiA9IG5ldyBBY3Rpb25FUlAoKTtcclxuICBhZG1pbmlzdHJhdGlvbkVuZHBvaW50cyA9IEFkbWluaXN0cmF0aW9uRW5kcG9pbnRzO1xyXG4gIGJ1c2lubmVzc0NsYXNzTmFtZTogc3RyaW5nID0gXCJcIlxyXG4gIG9jY3VyZW5jZUluZm9zOiBvY2N1cmVuY2VJbmZvcyB8IG51bGwgPSBudWxsO1xyXG4gIGNsYXNzZW5hbWU6IGFueSA9IG51bGw7XHJcbiAgbW9kZVJlZiA9IE1vZGVzO1xyXG4gIGJ1c2luZXNzQ2xhc3NOYW1lcyA9IEJ1c2luZXNzQ2xhc3NOYW1lcztcclxuICBhY3Rpb25QcmVjZWRlbnRlQ29kZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gIGVudGl0eUxpc3RVcmw6IHN0cmluZyA9ICcnO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIF9hY3Rpb25zZXJ2aWNlOiBBY3Rpb25FcnBTZXJ2aWNlLFxyXG4gICAgcHVibGljIF9uYXR1cmVBY3Rpb25zZXJ2aWNlOiBOYXR1cmVBY3Rpb25TZXJ2aWNlLFxyXG5cclxuICAgIHByaXZhdGUgX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZTogRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uU2VydmljZTogVHNpTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NvbmZpcm1hdGlvblNlcnZpY2U6IFRzaUNvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZW50aXR5Q29uZmlndXJhdGlvblNlcnZpY2U6IEVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgX2lkZW50aXR5TWFuYWdlclNlcnZpY2U6IElkZW50aXR5TWFuYWdlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9sb2NhbGl6ZTogTG9jYWxpemVQaXBlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZywgcHVibGljIG92ZXJyaWRlIHJlZj86IER5bmFtaWNEaWFsb2dSZWYsXHJcblxyXG5cclxuICApIHtcclxuICAgIHN1cGVyKHJlZiwgY29uZmlnKVxyXG4gICAgdGhpcy5idXNpbm5lc3NDbGFzc05hbWUgPSBjb25maWc/LmRhdGE/LmN1c3RvbURhdGE/Lm9jY3VyZW5jZUluZm9zPy5idXNpbmVzc2NsYXNzID8/ICcnO1xyXG4gICAgdGhpcy5idXNpbmVzc0NsYXNzID0gQnVzaW5lc3NDbGFzc05hbWVzLkFjdGlvbkVSUDtcclxuXHJcbiAgICBpZiAoY29uZmlnPy5kYXRhPy5jdXN0b21EYXRhPy5vY2N1cmVuY2VJbmZvcykge1xyXG4gICAgICB0aGlzLm9jY3VyZW5jZUluZm9zID0gY29uZmlnLmRhdGEuY3VzdG9tRGF0YS5vY2N1cmVuY2VJbmZvcyBhcyBvY2N1cmVuY2VJbmZvcztcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgdGhpcy5yZWZyZXNoRW50aXR5TGlzdCgpO1xyXG4gICAgaWYgKHRoaXMuY29uZmlnPy5kYXRhPy5hY3Rpb25TdWl2YW50ZSAhPSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uLm5hdHVyZUFjdGlvbiA9IHRoaXMuY3VzdG9tRGF0YT8ubmF0dXJlQWN0aW9uXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuYWN0aW9uLmFjdGlvbkVSUERldGFpbHMubGVuZ3RoID09PSAwICYmIHRoaXMub2NjdXJlbmNlSW5mb3M/LmJ1c2luZXNzY2xhc3MpIHtcclxuXHJcbiAgICAgIGNvbnN0IG5vdXZlYXVEZXRhaWw6IEFjdGlvbkVSUERldGFpbCA9IHtcclxuICAgICAgICBjbGFzc2U6IHRoaXMub2NjdXJlbmNlSW5mb3M/LmJ1c2luZXNzY2xhc3MsXHJcbiAgICAgICAgb2NjdXJlbmNlOiB0aGlzLm9jY3VyZW5jZUluZm9zPy5vY2N1cmVuY2U/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgYWN0aW9uRVJQOiB1bmRlZmluZWRcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMuYWN0aW9uLmFjdGlvbkVSUERldGFpbHMucHVzaChub3V2ZWF1RGV0YWlsKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGlvbi5hY3Rpb25FUlBEZXRhaWxzPy5maW5kKGQgPT4gZC5jbGFzc2UpXHJcblxyXG4gICAgaWYgKFxyXG4gICAgICAodGhpcy5tb2RlID09PSBNb2Rlcy5lZGl0IHx8IHRoaXMubW9kZSA9PT0gTW9kZXMuZGVsZXRlIHx8IHRoaXMubW9kZSA9PT0gTW9kZXMuY29uc3VsdCkgJiZcclxuICAgICAgdGhpcy5pZCAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIHRoaXMuaWQgIT09IG51bGxcclxuICAgICkge1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuX2FjdGlvbnNlcnZpY2UuZ2V0QnlJZCh0aGlzLmlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFjdGlvbiA9IGRhdGE7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuYnVzaW5uZXNzQ2xhc3NOYW1lICYmIHRoaXMuYWN0aW9uLmFjdGlvbkVSUERldGFpbHM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5idXNpbm5lc3NDbGFzc05hbWUgPSB0aGlzLmFjdGlvbi5hY3Rpb25FUlBEZXRhaWxzWzBdLmNsYXNzZSA/PyAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc3RhdHVzID0gdGhpcy5hY3Rpb24uc3RhdHV0O1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5tb2RlID09IE1vZGVzLmNyZWF0ZSkge1xyXG4gICAgICAgaWYgKHRoaXMuY3VzdG9tRGF0YT8uaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2N1c3RvbURhdGEuaXRlbSA9JywgdGhpcy5jdXN0b21EYXRhLml0ZW0pO1xyXG5cclxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5hY3Rpb24sIHRoaXMuY3VzdG9tRGF0YS5pdGVtKTtcclxuICB9XHJcbiAgICAgIGxldCB0b2tlbiA9IHRoaXMuX2lkZW50aXR5TWFuYWdlclNlcnZpY2UucGFyc2VNeUF1dGhUb2tlbigpO1xyXG5cclxuICAgICAgaWYgKCF0b2tlbikgcmV0dXJuO1xyXG5cclxuICAgICAgdGhpcy5hY3Rpb24udXRpbGlzYXRldXJEZW1hbmRldXIgPSB0b2tlbi5wcmltYXJ5c2lkPy50b0xvd2VyQ2FzZSgpOyAgICBcclxuICAgIH1cclxuICB9XHJcbmFjdGlvbmRldGFpbGNvbG9tOiBBcnJheTxHcmlkQ29sdW1uPiA9IFtdO1xyXG50b2dnbGVGcmVxdWVudCgpIHtcclxuICBjb25zb2xlLmxvZygnQmVmb3JlIHRvZ2dsZTonLCB0aGlzLm9ubHlGcmVxdWVudCk7XHJcblxyXG4gIHRoaXMub25seUZyZXF1ZW50ID0gIXRoaXMub25seUZyZXF1ZW50O1xyXG5cclxuICBjb25zb2xlLmxvZygnQWZ0ZXIgdG9nZ2xlOicsIHRoaXMub25seUZyZXF1ZW50KTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIHRoaXMucmVmcmVzaEVudGl0eUxpc3QoKTtcclxuICB9KTtcclxufVxyXG5vbmx5RnJlcXVlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxucmVmcmVzaEVudGl0eUxpc3QoKSB7XHJcblxyXG4gIHRoaXMuZW50aXR5TGlzdFVybCA9XHJcbiAgICB0aGlzLmFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLkdldEFsbEVudGl0aWVzSW5mb3JtYXRpb25zKHRoaXMub25seUZyZXF1ZW50KTtcclxuICB0aGlzLmFjdGlvbmRldGFpbGNvbG9tID0gW1xyXG4gICAge1xyXG4gICAgICBmaWVsZDogXCJjbGFzc2VcIixcclxuICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbl9jbGFzc2VOYW1lJyxcclxuICAgICAgdHlwZTogSW5wdXRUeXBlcy5TRUFSQ0hfQ09NQk8sXHJcbiAgICAgIGxpc3RTb3VyY2VVcmw6IHRoaXMuZW50aXR5TGlzdFVybCxcclxuICAgICAgZWxlbWVudFNvdXJjZVVybDogdGhpcy5hZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRFbnRpdHlJbmZvRWxlbWVudFNvdXJjZSgpLFxyXG4gICAgICBpZEZpZWxkOiBcImNsYXNzTmFtZVwiLFxyXG4gICAgICBsYWJlbEZpZWxkOiBcImNsYXNzTmFtZVwiLFxyXG4gICAgICBpbnB1dE5hbWU6IFwiY2xhc3NlXCIsXHJcbiAgICAgIGlzRmlsdGVyZWQ6IHRydWUsXHJcbiAgICAgIHdhdGNoRm9yQ2hhbmdlczogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiBcIm9jY3VyZW5jZVwiLFxyXG4gICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uX29jY3VyZW5jZScsXHJcbiAgICAgIHR5cGU6IElucHV0VHlwZXMuU0VBUkNIX0NPTUJPLFxyXG4gICAgICBsaXN0U291cmNlVXJsOiAocm93OiBhbnkpID0+IHRoaXMuZ2V0T2NjdXJlbmNlTGlzdFVybChyb3cpLFxyXG4gICAgICBlbGVtZW50U291cmNlVXJsOiAocm93OiBhbnkpID0+IHRoaXMuZ2V0T2NjdXJlbmNlVXJsKHJvdyksXHJcbiAgICAgIGlkRmllbGQ6IFwiaWRcIixcclxuICAgICAgbGFiZWxGaWVsZDogXCJkaXNwbGF5TmFtZVwiLFxyXG4gICAgICBpbnB1dE5hbWU6IFwib2NjdXJlbmNlXCIsXHJcbiAgICAgIGlzRmlsdGVyZWQ6IHRydWUsXHJcbiAgICB9LFxyXG4gIF07XHJcbn1cclxuICBwYXJ0aWNpcGFudENvbHVtbnM6IEFycmF5PEdyaWRDb2x1bW4+ID0gW1xyXG4gICAge1xyXG4gICAgICBmaWVsZDogXCJ1dGlsaXNhdGV1clwiLFxyXG4gICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uX3BhcnRpY2lwYW50X3V0aWxpc2F0ZXVyJyxcclxuICAgICAgdHlwZTogSW5wdXRUeXBlcy5TRUFSQ0hfQ09NQk8sXHJcbiAgICAgIGVsZW1lbnRTb3VyY2VVcmw6IHRoaXMuYWRtaW5pc3RyYXRpb25FbmRwb2ludHMuZ2V0VXRpbGlzYXRldXJNaW5pbWFsKCksXHJcbiAgICAgIGxpc3RTb3VyY2VVcmw6IHRoaXMuYWRtaW5pc3RyYXRpb25FbmRwb2ludHMuZ2V0QWxsVXRpbGlzYXRldXJNaW5pbWFsKCksXHJcbiAgICAgIGlkRmllbGQ6IFwidWlkXCIsXHJcbiAgICAgIGxhYmVsRmllbGQ6IFwibm9tUHJlbm9tXCIsXHJcbiAgICAgIGlucHV0TmFtZTogXCJ1dGlsaXNhdGV1clwiLFxyXG4gICAgICBpc0ZpbHRlcmVkOiB0cnVlLFxyXG4gICAgICBidXNpbmVzc0NsYXNzOiBCdXNpbmVzc0NsYXNzTmFtZXMuVXRpbGlzYXRldXIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogXCJvYmxpZ2F0b2lyZVwiLFxyXG4gICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uX3BhcnRpY2lwYW50X29ibGlnYXRvaXJlJyxcclxuICAgICAgdHlwZTogSW5wdXRUeXBlcy5DSEVDS0JPWCxcclxuICAgICAgaW5wdXROYW1lOiBcIm9ibGlnYXRvaXJlXCIsXHJcbiAgICAgIGlzQmluYXJ5OiB0cnVlLFxyXG4gICAgfSxcclxuICBdO1xyXG5cclxuICBnZXRPY2N1cmVuY2VMaXN0VXJsKHJvdzogYW55KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGtleSA9IHJvdz8uY2xhc3NlO1xyXG4gICAgaWYgKCFrZXkpIHJldHVybiAnJztcclxuICAgIHJldHVybiBBZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRFbnRpdHlEYXRhKGtleSk7XHJcbiAgfVxyXG5cclxuICBnZXRPY2N1cmVuY2VVcmwocm93OiBhbnkpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qga2V5ID0gcm93Py5jbGFzc2U7XHJcbiAgICBpZiAoIWtleSkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIEFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldEVudGl0eURhdGFCeUlkKGtleSk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBzYXZlKCk6IHZvaWQge1xyXG4gICAgc3VwZXIuc2F2ZSgpXHJcbiAgICB0aGlzLnNhdmluZyA9IHRydWU7XHJcbiAgICB0aGlzLmlzbG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmFjdGlvbi5zdGF0dXQgPSB0aGlzLnN0YXR1c1xyXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gTW9kZXMuY3JlYXRlKSB7XHJcbiAgICAgIHRoaXMuX2FjdGlvbnNlcnZpY2UuY3JlYXRlKHRoaXMuYWN0aW9uKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5pbmZvKHRoaXMubChMb2NhbGl6YXRpb25LZXlzLnNhdmVkU3VjY2Vzc2Z1bGx5KSk7XHJcbiAgICAgICAgICB0aGlzLnJlc29sdmVGaWNoZSh0cnVlLHJlc3BvbnNlKTtcclxuICAgICAgICAgIHRoaXMub25TYXZlLmVtaXQoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZS5zaG93RXJyb3JNZXNzYWdlKHJlc3BvbnNlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMubW9kZSA9PT0gTW9kZXMuZWRpdCAmJlxyXG4gICAgICB0aGlzLmlkXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5fYWN0aW9uc2VydmljZS51cGRhdGUodGhpcy5hY3Rpb24sIHRoaXMuaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5pbmZvKHRoaXMubChMb2NhbGl6YXRpb25LZXlzLnVwZGF0ZWRTdWNjZXNzZnVsbHkpKTtcclxuICAgICAgICAgIHRoaXMucmVzb2x2ZUZpY2hlKHRydWUpO1xyXG4gICAgICAgICAgdGhpcy5vblNhdmUuZW1pdCgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UocmVzcG9uc2UpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmICh0aGlzLm1vZGUgPT09IE1vZGVzLmRlbGV0ZSkge1xyXG4gICAgICB0aGlzLl9jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oXHJcbiAgICAgICAgTG9jYWxpemF0aW9uS2V5cy5jb25maXJtRGVsZXRlLFxyXG4gICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHJlc3VsdCAmJlxyXG4gICAgICAgICAgICB0aGlzLmlkXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5fYWN0aW9uc2VydmljZS5kZWxldGUodGhpcy5pZCkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3ModGhpcy5sKExvY2FsaXphdGlvbktleXMuZGVsZXRlZFN1Y2Nlc3NmdWxseSkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlRmljaGUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2F2ZS5lbWl0KCk7XHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN1bHRFbGVtZW50KGl0ZW06IGFueSkge1xyXG4gICAgaWYgKCFpdGVtIHx8ICFpdGVtLmNsYXNzZSkge1xyXG4gICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKFwic2VhcmNoX2NvbWJvX2NvbXBvbmVudF9uYW1lRW50aXR5XCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0ub2NjdXJlbmNlKSB7XHJcbiAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IodGhpcy5fbG9jYWxpemUudHJhbnNmb3JtKCdhY3Rpb25fbm9fc2VsZWN0ZWRfaXRlbV9mb3JfY29uc3VsdGF0aW9uJykpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lbnRpdHlDb25maWd1cmF0aW9uU2VydmljZS5nZXRFbnRpdHlJbmZvKGl0ZW0uY2xhc3NlKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoZW50aXR5OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoIWVudGl0eSB8fCAhZW50aXR5LmZvcm1OYW1lKSB7XHJcbiAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlPy5lcnJvcih0aGlzLl9sb2NhbGl6ZS50cmFuc2Zvcm0oJ3NlYXJjaF9jb21ib19jb21wb25lbnRfZm9ybV9uYW1lX25mJykpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY29uZjogRHluYW1pY0RpYWxvZ0NvbmZpZyA9IHtcclxuICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgbW9kZTogQ29tcG9uZW50X01vZGVzLkNPTlNVTFQsXHJcbiAgICAgICAgICAgIGN1c3RvbURhdGE6IGVudGl0eSxcclxuICAgICAgICAgICAgaWQ6IGl0ZW0ub2NjdXJlbmNlXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgICAgICB3aWR0aDogTW9kYWxTaXplRW51bS5NZWRpdW0ud2lkdGgsXHJcbiAgICAgICAgICBoZWlnaHQ6IE1vZGFsU2l6ZUVudW0uTWVkaXVtLmhlaWdodCxcclxuICAgICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGxldCBkaWFsb2dSZWZlcmVuY2UgPSB0aGlzLl9kaWFsb2dTZXJ2aWNlPy5vcGVuKFxyXG4gICAgICAgICAgVHlwZVJlZ2lzdHJ5SGVscGVyLmdldFR5cGUoZW50aXR5LmZvcm1OYW1lKSxcclxuICAgICAgICAgIGNvbmZcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBkaWFsb2dSZWZlcmVuY2U/Lm9uQ2xvc2Uuc3Vic2NyaWJlKChfKSA9PiB7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkVycmV1ciBsb3JzIGRlIGxhIHLDqWN1cMOpcmF0aW9uIGRlcyBpbmZvcyBkJ2VudGl0w6kgOlwiLCBlcnIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBjcmVhdGVFbGVtZW50KGNsYXNzZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoIWNsYXNzZSkge1xyXG4gICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgIHRoaXMuX2xvY2FsaXplLnRyYW5zZm9ybSgnc2VhcmNoX2NvbWJvX2NvbXBvbmVudF9uYW1lRW50aXR5JylcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZW50aXR5Q29uZmlndXJhdGlvblNlcnZpY2UuZ2V0RW50aXR5SW5mbyhjbGFzc2UpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChlbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghZW50aXR5IHx8ICFlbnRpdHkuZm9ybU5hbWUpIHtcclxuICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2U/LmVycm9yKFxyXG4gICAgICAgICAgICB0aGlzLl9sb2NhbGl6ZS50cmFuc2Zvcm0oJ3NlYXJjaF9jb21ib19jb21wb25lbnRfZm9ybV9uYW1lX25mJylcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBjb25mOiBEeW5hbWljRGlhbG9nQ29uZmlnID0ge1xyXG4gICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBtb2RlOiBDb21wb25lbnRfTW9kZXMuQ1JFQVRFLFxyXG4gICAgICAgICAgICBjdXN0b21EYXRhOiBlbnRpdHksXHJcbiAgICAgICAgICAgIGlkOiBudWxsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgICAgICB3aWR0aDogTW9kYWxTaXplRW51bS5NZWRpdW0ud2lkdGgsXHJcbiAgICAgICAgICBoZWlnaHQ6IE1vZGFsU2l6ZUVudW0uTWVkaXVtLmhlaWdodCxcclxuICAgICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFR5cGUgPSBUeXBlUmVnaXN0cnlIZWxwZXIuZ2V0VHlwZShlbnRpdHkuZm9ybU5hbWUpO1xyXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZmVyZW5jZSA9IHRoaXMuX2RpYWxvZ1NlcnZpY2U/Lm9wZW4oY29tcG9uZW50VHlwZSwgY29uZik7XHJcblxyXG4gICAgICAgIGlmICghZGlhbG9nUmVmZXJlbmNlKSByZXR1cm47XHJcblxyXG4gICAgICAgIGRpYWxvZ1JlZmVyZW5jZS5vbkNsb3NlLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmICghcmVzdWx0KSByZXR1cm47XHJcblxyXG4gICAgICAgICAgY29uc3QgdWlkID0gcmVzdWx0Py51aWQgPz8gcmVzdWx0Py5pZCA/PyByZXN1bHQ7XHJcblxyXG4gICAgICAgICAgaWYgKHVpZCkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdEZXRhaWw6IEFjdGlvbkVSUERldGFpbCA9IHtcclxuICAgICAgICAgICAgICBjbGFzc2U6IGNsYXNzZSxcclxuICAgICAgICAgICAgICBvY2N1cmVuY2U6IHVpZC50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgIGFjdGlvbkVSUDogdW5kZWZpbmVkXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB0aGlzLmFjdGlvbi5hY3Rpb25FUlBEZXRhaWxzID0gWy4uLnRoaXMuYWN0aW9uLmFjdGlvbkVSUERldGFpbHMsIG5ld0RldGFpbF07XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmluZm8oXHJcbiAgICAgICAgICAgICAgdGhpcy5fbG9jYWxpemUudHJhbnNmb3JtKCdzYXZlZFN1Y2Nlc3NmdWxseScpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZT8uZXJyb3IoXHJcbiAgICAgICAgICB0aGlzLl9sb2NhbGl6ZS50cmFuc2Zvcm0oJ3NlYXJjaF9jb21ib19jb21wb25lbnRfZm9ybV9uYW1lX25mJylcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgb25DbGFzc2VTZWxlY3RlZChzZWxlY3RlZDogYW55KSB7XHJcbiAgICBjb25zdCBjbGFzc2UgPSB0eXBlb2Ygc2VsZWN0ZWQgPT09ICdzdHJpbmcnXHJcbiAgICAgID8gc2VsZWN0ZWRcclxuICAgICAgOiBzZWxlY3RlZD8uY2xhc3NOYW1lO1xyXG4gICAgaWYgKCFjbGFzc2UpIHJldHVybjtcclxuICAgIHRoaXMuY3JlYXRlRWxlbWVudChjbGFzc2UpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb3BlbkFjdGlvbkVSUFBvcFVwKCkge1xyXG5cclxuICAgICBsZXQgbmF0dXJlQWN0aW9uU3VpdmFudGUgPSB1bmRlZmluZWQ7XHJcblxyXG4gIHRyeSB7XHJcbiAgICBuYXR1cmVBY3Rpb25TdWl2YW50ZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxyXG4gICAgICB0aGlzLl9uYXR1cmVBY3Rpb25zZXJ2aWNlLkdldE5hdHVyZUFjdGlvblN1aXZhbnRlQnlPcmRyZSh0aGlzLmFjdGlvbi5uYXR1cmVBY3Rpb24pXHJcbiAgICApO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcblxyXG4gICAgbmF0dXJlQWN0aW9uU3VpdmFudGUgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG4gICAgY29uc3Qgbm91dmVsbGVBY3Rpb24gPSB7XHJcbiAgICAgIGFjdGlvblByZWNlZGVudGU6IHRoaXMuYWN0aW9uLnVpZCxcclxuICAgICAgY29kZUFjdGlvblByZWNlZGVudGU6IHRoaXMuYWN0aW9uLm51bWVybyxcclxuICAgICAgZGF0ZUhldXJlRGVidXRQcmV2OiB0aGlzLmFjdGlvbi5kYXRlSGV1cmVEZWJ1dFByZXYsXHJcbiAgICAgIGRhdGVIZXVyZUZpblByZXY6IHRoaXMuYWN0aW9uLmRhdGVIZXVyZUZpblByZXYsXHJcbiAgICAgIHV0aWxpc2F0ZXVyRGVtYW5kZXVyOiB0aGlzLmFjdGlvbi51dGlsaXNhdGV1ckRlbWFuZGV1cixcclxuICAgICAgbmF0dXJlQWN0aW9uOiBuYXR1cmVBY3Rpb25TdWl2YW50ZT8udWlkLFxyXG4gICAgICB1dGlsaXNhdGV1ckFzc2lnbmU6IG5hdHVyZUFjdGlvblN1aXZhbnRlPy5yZWFsaXNhdGV1cixcclxuICAgICAgc3RhdHV0OiBTdGF0dXRBY3Rpb25DUk1FbnVtLkVuQXR0ZW50ZSxcclxuICAgICAgYWN0aW9uRVJQRGV0YWlsczogdGhpcy5hY3Rpb24uYWN0aW9uRVJQRGV0YWlscz8ubWFwKGRldGFpbCA9PiAoe1xyXG4gICAgICAgIGNsYXNzZTogZGV0YWlsLmNsYXNzZSxcclxuICAgICAgICBvY2N1cmVuY2U6IGRldGFpbC5vY2N1cmVuY2UsXHJcbiAgICAgICAgYWN0aW9uRVJQOiB1bmRlZmluZWRcclxuICAgICAgfSkpID8/IFtdLFxyXG4gICAgICBhY3Rpb25FUlBVdGlsaXNhdGV1cnM6IFtdXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGNvbmY6IER5bmFtaWNEaWFsb2dDb25maWcgPSB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBtb2RlOiBNb2Rlcy5jcmVhdGUsXHJcbiAgICAgICAgYWN0aW9uOiBub3V2ZWxsZUFjdGlvbixcclxuICAgICAgICBhY3Rpb25TdWl2YW50ZTogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAgd2lkdGg6IE1vZGFsU2l6ZUVudW0uTWVkaXVtLndpZHRoLFxyXG4gICAgICBoZWlnaHQ6IE1vZGFsU2l6ZUVudW0uTGFyZ2UuaGVpZ2h0LFxyXG4gICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgY2xvc2FibGU6IHRydWVcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlZiA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3BlbihUc2lBY3Rpb25FcnBDcmVhdGVPckVkaXRDb21wb25lbnQsIGNvbmYpO1xyXG5cclxuICAgIHRoaXMucmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIHRoaXMuYWN0aW9uLnVpZCA9IHJlc3VsdDtcclxuXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25OYXR1cmVBY3Rpb25DaGFuZ2UobmF0dXJlQWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKCFuYXR1cmVBY3Rpb25JZCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuX25hdHVyZUFjdGlvbnNlcnZpY2UuZ2V0QnlJZChuYXR1cmVBY3Rpb25JZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKG5hdHVyZUFjdGlvbikgPT4ge1xyXG4gICAgICAgIGlmIChuYXR1cmVBY3Rpb24/LnJlYWxpc2F0ZXVyKSB7XHJcbiAgICAgICAgICB0aGlzLmFjdGlvbi51dGlsaXNhdGV1ckFzc2lnbmUgPSBuYXR1cmVBY3Rpb24ucmVhbGlzYXRldXI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBvcGVuQWN0aW9uUHJlY2VkZW50ZVBvcHVwKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmFjdGlvbi5hY3Rpb25QcmVjZWRlbnRlKSB7XHJcbiAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgdGhpcy5fbG9jYWxpemUudHJhbnNmb3JtKCdzaGFyZWRfYWN0aW9uX0FjdGlvblByZWNlZGVudGVfbm90X2ZvdW5kJylcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbmY6IER5bmFtaWNEaWFsb2dDb25maWcgPSB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBtb2RlOiBNb2Rlcy5lZGl0LFxyXG4gICAgICAgIGlkOiB0aGlzLmFjdGlvbi5hY3Rpb25QcmVjZWRlbnRlLFxyXG5cclxuICAgICAgfSxcclxuICAgICAgd2lkdGg6IE1vZGFsU2l6ZUVudW0uTWVkaXVtLndpZHRoLFxyXG4gICAgICBoZWlnaHQ6IE1vZGFsU2l6ZUVudW0uTGFyZ2UuaGVpZ2h0LFxyXG4gICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgY2xvc2FibGU6IHRydWUsXHJcblxyXG4gICAgfTtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3BlbihcclxuICAgICAgVHNpQWN0aW9uRXJwQ3JlYXRlT3JFZGl0Q29tcG9uZW50LFxyXG4gICAgICBjb25mXHJcbiAgICApO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8dHNpLWZvcm0gY2xhc3M9XCJmb3JtLWhvcml6b250YWxcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAob25TdWJtaXQpPVwic2F2ZSgpXCIgW2lzTG9hZGluZ109XCJpc2xvYWRpbmdcIj5cclxuICAgIDxUc2ktTW9kYWwtSGVhZGVyIFtpbnB1dFRpdGxlXT1cImhlYWRlciB8IG1vZGFsTGFiZWwgOm1vZGU6J3NoYXJlZF9hY3Rpb25fYWRkX2FjdGlvbidcIiAob25DbG9zZUNsaWNrKT1cImhpZGUoKVwiPlxyXG4gICAgPC9Uc2ktTW9kYWwtSGVhZGVyPlxyXG5cclxuICAgIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwiaXNEZWxldGVNb2RlKCkgfHwgaXNDb25zdWx0TW9kZSgpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCByb3ctZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWQ6Y29sLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+PFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInc2hhcmVkX2FjdGlvbl9OYXR1cmVfQWN0aW9uJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBbZWxlbWVudFNvdXJjZVVybF09XCJhZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXROYXR1cmVBY3Rpb25NaW5pbWFsKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaXN0U291cmNlVXJsXT1cImFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldEFsbE5hdHVyZUFjdGlvbk1pbmltYWwoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhiaW5kKV09XCJhY3Rpb24ubmF0dXJlQWN0aW9uXCIgaWQtZmllbGQ9XCJ1aWRcIiBsYWJlbC1maWVsZD1cImxpYmVsbGVcIiBbaXNGaWx0ZXJlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cIidOYXR1cmVBY3Rpb24nXCIgW2J1c2luZXNzQ2xhc3NdPVwiYnVzaW5lc3NDbGFzc05hbWVzLk5hdHVyZUFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJpbmRDaGFuZ2UpPVwib25OYXR1cmVBY3Rpb25DaGFuZ2UoJGV2ZW50KVwiPjwvVHNpLVNlYXJjaC1Db21ibz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPjxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ3NoYXJlZF9hY3Rpb25fbnVtZXJvJ1wiPjwvVHNpLUxhYmVsPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj48VHNpLUludGVnZXIgW2lucHV0TmFtZV09XCInTnVtZXJvJ1wiIFsoaW5wdXRGaWVsZCldPVwiYWN0aW9uLm51bWVyb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIj48L1RzaS1JbnRlZ2VyPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj48VHNpLUxhYmVsIFtsYWJlbFZhbHVlXT1cIidzaGFyZWRfYWN0aW9uX3V0aWxpc2F0ZXVyRGVtYW5kZXVyJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBbZWxlbWVudFNvdXJjZVVybF09XCJhZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRVdGlsaXNhdGV1ck1pbmltYWwoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpc3RTb3VyY2VVcmxdPVwiYWRtaW5pc3RyYXRpb25FbmRwb2ludHMuZ2V0QWxsVXRpbGlzYXRldXJNaW5pbWFsKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoYmluZCldPVwiYWN0aW9uLnV0aWxpc2F0ZXVyRGVtYW5kZXVyXCIgaWQtZmllbGQ9XCJ1aWRcIiBsYWJlbC1maWVsZD1cIm5vbVByZW5vbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRmlsdGVyZWRdPVwidHJ1ZVwiIFtpbnB1dE5hbWVdPVwiJ3V0aWxpc2F0ZXVyRGVtYW5kZXVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1c2luZXNzQ2xhc3NdPVwiYnVzaW5lc3NDbGFzc05hbWVzLlV0aWxpc2F0ZXVyXCI+PC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+PFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInc2hhcmVkX2FjdGlvbl9vYmpldCdcIj48L1RzaS1MYWJlbD48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+PFRzaS1UZXh0LUFyZWEgW2lucHV0TmFtZV09XCInT2JqZXQnXCIgWyhpbnB1dEZpZWxkKV09XCJhY3Rpb24ub2JqZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dzXT1cIjNcIj48L1RzaS1UZXh0LUFyZWE+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPjxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ3NoYXJlZF9hY3Rpb25fbGlldSdcIj48L1RzaS1MYWJlbD48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+PFRzaS1UZXh0LUFyZWEgW2lucHV0TmFtZV09XCInTGlldSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiYWN0aW9uLmxpZXVcIj48L1RzaS1UZXh0LUFyZWE+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1kOmNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPjxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ3NoYXJlZF9hY3Rpb25fcHJpb3JpdGUnXCI+PC9Uc2ktTGFiZWw+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2xpc3RTb3VyY2VVcmxdPVwiYWRtaW5pc3RyYXRpb25FbmRwb2ludHMuYWxsUHJpb3JpdGVBY3Rpb25DUk1FbnVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGJpbmQpXT1cImFjdGlvbi5wcmlvcml0ZVwiIGlkLWZpZWxkPVwia2V5XCIgbGFiZWwtZmllbGQ9XCJ2YWx1ZVwiIFtpbnB1dE5hbWVdPVwiJ1ByaW9yaXRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dTZWFyY2hCdXR0b25dPVwiZmFsc2VcIj48L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+PFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInc2hhcmVkX2FjdGlvbl91dGlsaXNhdGV1ckFzc2lnbmUnXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvIFtlbGVtZW50U291cmNlVXJsXT1cImFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldFV0aWxpc2F0ZXVyTWluaW1hbCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlzdFNvdXJjZVVybF09XCJhZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRBbGxVdGlsaXNhdGV1ck1pbmltYWwoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhiaW5kKV09XCJhY3Rpb24udXRpbGlzYXRldXJBc3NpZ25lXCIgaWQtZmllbGQ9XCJ1aWRcIiBsYWJlbC1maWVsZD1cIm5vbVByZW5vbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0TmFtZV09XCInVXRpbGlzYXRldXJBc3NpZ25lJ1wiIFtpc0ZpbHRlcmVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXNpbmVzc0NsYXNzXT1cImJ1c2luZXNzQ2xhc3NOYW1lcy5VdGlsaXNhdGV1clwiPjwvVHNpLVNlYXJjaC1Db21ibz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPjxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ3NoYXJlZF9hY3Rpb25fcmVzdWx0YXQnXCI+PC9Uc2ktTGFiZWw+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2xpc3RTb3VyY2VVcmxdPVwiYWRtaW5pc3RyYXRpb25FbmRwb2ludHMuYWxsUmVzdWx0YXRBY3Rpb25DUk1FbnVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGJpbmQpXT1cImFjdGlvbi5yZXN1bHRhdFwiIGlkLWZpZWxkPVwia2V5XCIgbGFiZWwtZmllbGQ9XCJ2YWx1ZVwiIFtpbnB1dE5hbWVdPVwiJ1Jlc3VsdGF0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dTZWFyY2hCdXR0b25dPVwiZmFsc2VcIj48L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj48VHNpLUxhYmVsIFtsYWJlbFZhbHVlXT1cIidzaGFyZWRfYWN0aW9uX1JlY2FwaXR1bGF0aWYnXCI+PC9Uc2ktTGFiZWw+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPjxUc2ktVGV4dC1BcmVhIFtpbnB1dE5hbWVdPVwiJ1JlY2FwaXR1bGF0aWYnXCIgWyhpbnB1dEZpZWxkKV09XCJhY3Rpb24ucmVjYXBpdHVsYXRpZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd3NdPVwiM1wiPjwvVHNpLVRleHQtQXJlYT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+PFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInc2hhcmVkX2FjdGlvbl9BY3Rpb25QcmVjZWRlbnRlJ1wiPjwvVHNpLUxhYmVsPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTdcIj48VHNpLUludGVnZXIgW2lucHV0TmFtZV09XCInQWN0aW9uUHJlY2VkZW50ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiYWN0aW9uLmNvZGVBY3Rpb25QcmVjZWRlbnRlXCIgW2Rpc2FibGVkXT1cInRydWVcIj48L1RzaS1JbnRlZ2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHNpLUJ1dHRvbiBbaWNvbl09XCIncGkgcGktZXllJ1wiIFtkaXNhYmxlZF09XCIhYWN0aW9uLmFjdGlvblByZWNlZGVudGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9wZW5BY3Rpb25QcmVjZWRlbnRlUG9wdXAoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8cC10YWJWaWV3PlxyXG4gICAgICAgICAgICAgICAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInYW5nbGFpc19lY2hlYW5jZSd8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBib3JkZXIgcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIG1iLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IHRleHQtY2VudGVyXCI+PGI+e3sgJ2FjdGlvbl9EZWJ1dCcgfCBsb2NhbGl6ZSB9fTwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IHRleHQtY2VudGVyXCI+PGI+e3sgJ2FjdGlvbl9GaW4nIHwgbG9jYWxpemUgfX08L2I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPjxUc2ktTGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsVmFsdWVdPVwiJ2FjdGlvbl9kYXRlSGV1cmVfUHJldidcIj48L1RzaS1MYWJlbD48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPjxUc2ktRGF0ZS1QaWNrZXIgW2lucHV0TmFtZV09XCInRGF0ZUhldXJlRGVidXRQcmV2J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiYWN0aW9uLmRhdGVIZXVyZURlYnV0UHJldlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VGltZV09XCJ0cnVlXCI+PC9Uc2ktRGF0ZS1QaWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPjxUc2ktRGF0ZS1QaWNrZXIgW2lucHV0TmFtZV09XCInRGF0ZUhldXJlRmluUHJldidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImFjdGlvbi5kYXRlSGV1cmVGaW5QcmV2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUaW1lXT1cInRydWVcIj48L1RzaS1EYXRlLVBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPjxUc2ktTGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsVmFsdWVdPVwiJ2FjdGlvbi5kYXRlSGV1cmVlX1JlYWxpc2VlJ1wiPjwvVHNpLUxhYmVsPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+PFRzaS1EYXRlLVBpY2tlciBbaW5wdXROYW1lXT1cIidEYXRlSGV1cmVEZWJ1dFJlYWxpc2VlJ1wiW3Nob3dUaW1lXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImFjdGlvbi5kYXRlSGV1cmVEZWJ1dFJlYWxpc2VlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvVHNpLURhdGUtUGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj48VHNpLURhdGUtUGlja2VyIFtpbnB1dE5hbWVdPVwiJ0RhdGVIZXVyZUZpblJlYWxpc2VlJ1wiW3Nob3dUaW1lXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImFjdGlvbi5kYXRlSGV1cmVGaW5SZWFsaXNlZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L1RzaS1EYXRlLVBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWZpZWxkc2V0IFtsZWdlbmRdPVwiJ2FjdGlvbl9GaWVsZHNldF9hbGVydGUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+PFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInYWN0aW9uX2FsZXJ0ZSdcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+PFRzaS1DaGVja0JveCBbaW5wdXROYW1lXT1cIidBbGVydGUnXCIgW2lzQmluYXJ5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImFjdGlvbi5hbGVydGVcIj48L1RzaS1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj48VHNpLUxhYmVsIFtsYWJlbFZhbHVlXT1cIidhY3Rpb25fYWxlcnRlQXZhbnQnXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj48VHNpLUludGVnZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0TmFtZV09XCInQWxlcnRlQXZhbnQnXCIgWyhpbnB1dEZpZWxkKV09XCJhY3Rpb24uYWxlcnRlQXZhbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RzaS1JbnRlZ2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ub3dyYXBcIj57eydqb3Vycyd8IGxvY2FsaXplfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWZpZWxkc2V0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3AtdGFiUGFuZWw+XHJcbiAgICAgICAgICAgICAgICA8cC10YWJQYW5lbCBbaGVhZGVyXT1cIidMaXN0ZV9kZXNfYWN0aW9uX2RldGFpbHMnfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgdy1mdWxsIGdhcC04IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPjxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ3NoYXJlZF9hY3Rpb25FcnBfRnJlcXVlbnRfY2xhc3NlJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktQnV0dG9uIGNsYXNzPVwibWwtM1wiIChvbkNsaWNrKT1cInRvZ2dsZUZyZXF1ZW50KClcIiAgW3RleHRdPVwib25seUZyZXF1ZW50ID8gJ09OJyA6ICdPRkYnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwib25seUZyZXF1ZW50ID8gJ3BpIHBpLWNoZWNrJyA6ICdwaSBwaS10aW1lcydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RzaS1CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcHJlc2VudGF0aW9uRGVzaWduZXI9XCJhY3Rpb25fR2VuZXJlclwiIGNsYXNzPVwiIGZsZXggYWxpZ24taXRlbXMtY2VudGVyICBnYXAtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ2FjdGlvbl9HZW5lcmVyJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvIHN0eWxlPVwid2lkdGg6IDI4MHB4O1wiIGlucHV0TmFtZT1cImNsYXNzTmFtZVwiIGlkLWZpZWxkPVwiY2xhc3NOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwtZmllbGQ9XCJjbGFzc05hbWVcIiBbbGlzdFNvdXJjZVVybF09XCJlbnRpdHlMaXN0VXJsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VsZW1lbnRTb3VyY2VVcmxdPVwidGhpcy5hZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRFbnRpdHlJbmZvRWxlbWVudFNvdXJjZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRmlsdGVyZWRdPVwidHJ1ZVwiIFsoYmluZCldPVwiY2xhc3NlbmFtZVwiIFtidXNpbmVzc0NsYXNzXT1cImJ1c2luZXNzQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmluZENoYW5nZSk9XCJvbkNsYXNzZVNlbGVjdGVkKCRldmVudClcIj4gPjwvVHNpLVNlYXJjaC1Db21ibz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1HZW5lcmljLUVkaXRhYmxlLUdyaWQgKG9uQ29uc3VsdENsaWNrZWQpPVwiY29uc3VsdEVsZW1lbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NvbnN1bHRCdXR0b25dPVwidHJ1ZVwiIFtjb2x1bW5zXT1cImFjdGlvbmRldGFpbGNvbG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncmlkRGF0YV09XCJhY3Rpb24uYWN0aW9uRVJQRGV0YWlsc1wiIFtwYXJlbnRdPVwidGhpc1wiPjwvVHNpLUdlbmVyaWMtRWRpdGFibGUtR3JpZD5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9wLXRhYlBhbmVsPlxyXG4gICAgICAgICAgICAgICAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInc2hhcmVkX2FjdGlvbl9wYXJ0aWNpcGFudHMnfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktR2VuZXJpYy1FZGl0YWJsZS1HcmlkIFtjb2x1bW5zXT1cInBhcnRpY2lwYW50Q29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JpZERhdGFdPVwiYWN0aW9uLmFjdGlvbkVSUFV0aWxpc2F0ZXVyc1wiIFtwYXJlbnRdPVwidGhpc1wiIFtzaG93QWRkQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dEZWxldGVCdXR0b25dPVwidHJ1ZVwiPjwvVHNpLUdlbmVyaWMtRWRpdGFibGUtR3JpZD5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9wLXRhYlBhbmVsPlxyXG4gICAgICAgICAgICA8L3AtdGFiVmlldz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZmllbGRzZXQ+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIm1vZGUgIT09IG1vZGVSZWYuY3JlYXRlXCIgY2xhc3M9XCJncmlkIG10LTJcIiBwcmVzZW50YXRpb25EZXNpZ25lcj1cImFjdGlvbm5vdXZlbGxlX2FjdGlvbkVSUFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICA8VHNpLUJ1dHRvbiBjbGFzcz1cInctZnVsbFwiIChvbkNsaWNrKT1cIm9wZW5BY3Rpb25FUlBQb3BVcCgpXCJcclxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidhY3Rpb25ub3V2ZWxsZV9hY3Rpb25FUlAnXCI+PC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPFRzaS1Nb2RhbC1Gb290ZXIgW2NhbmNlbERpc2FibGVkXT1cInNhdmluZ1wiIFtzYXZlRGlzYWJsZWRdPVwiaXNTdWJtaXREaXNhYmxlZCgpXCJcclxuICAgICAgICAob25DYW5jZWxDbGljayk9XCJoaWRlKClcIj48L1RzaS1Nb2RhbC1Gb290ZXI+XHJcbjwvdHNpLWZvcm0+Il19
429
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWFjdGlvbi1lcnAtY3JlYXRlLW9yLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL3RzaS1hY3Rpb24tZXJwLWNyZWF0ZS1vci1lZGl0L3RzaS1hY3Rpb24tZXJwLWNyZWF0ZS1vci1lZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktYWN0aW9uLWVycC1jcmVhdGUtb3ItZWRpdC90c2ktYWN0aW9uLWVycC1jcmVhdGUtb3ItZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFtQyxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFJLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGFBQWEsRUFBeUMsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUV2RSxPQUFPLEVB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QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLDBDQUEwQyxDQUFDLENBQ3JFLENBQUM7WUFDRixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUF3QjtZQUNoQyxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUNoQixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0I7YUFFakM7WUFDRCxLQUFLLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLO1lBQ2pDLE1BQU0sRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU07WUFDbEMsV0FBVyxFQUFFLElBQUk7WUFDakIsUUFBUSxFQUFFLElBQUk7U0FFZixDQUFDO1FBQ0YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3hDLGlDQUFpQyxFQUNqQyxJQUFJLENBQ0wsQ0FBQztRQUVGLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNiLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBamRVLGlDQUFpQzttR0FBakMsaUNBQWlDLDREQUZqQyxDQUFDLEdBQUcsWUFBWSxFQUFFLGFBQWEsQ0FBQyxpREN2QjdDLDI1Y0ErTVc7OzRGRHRMRSxpQ0FBaUM7a0JBTjdDLFNBQVM7K0JBQ0UsbUNBQW1DLGFBR2xDLENBQUMsR0FBRyxZQUFZLEVBQUUsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFRzaUZvcm1Db21wb25lbnRCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdHNpLWJhc2UnO1xyXG5pbXBvcnQgeyBhcHBQcm92aWRlcnMgfSBmcm9tICcuLi8uLi9jb25zdHMvYXBwLXByb3ZpZGVycyc7XHJcbmltcG9ydCB7IEFjdGlvbkVSUCwgQWN0aW9uRVJQRGV0YWlsLCBvY2N1cmVuY2VJbmZvcywgU3RhdHV0QWN0aW9uQ1JNRW51bSwgUHJpb3JpdGVBY3Rpb25DUk1FbnVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjdGlvbkVycC9hY3Rpb25FcnAnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRfTW9kZXMsIElucHV0VHlwZXMsIE1vZGFsU2l6ZUVudW0sIE1vZGVzIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25LZXlzIH0gZnJvbSAnLi4vLi4vY29uc3RzL2xvY2FsaXphdGlvbi1rZXknO1xyXG5pbXBvcnQgeyBBY3Rpb25FcnBTZXJ2aWNlLCBFcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2UsIFRzaU5vdGlmaWNhdGlvblNlcnZpY2UsIFRzaUNvbmZpcm1hdGlvblNlcnZpY2UsIEVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlLCBUc2lNb2RhbFNlcnZpY2UsIEN1cnJlbnRVc2VyU2VydmljZSwgSWRlbnRpdHlNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgQWRtaW5pc3RyYXRpb25FbmRwb2ludHMgfSBmcm9tICcuLi8uLi9lbmQtcG9pbnRzJztcclxuaW1wb3J0IHsgR3JpZENvbHVtbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlLCBEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgVHlwZVJlZ2lzdHJ5SGVscGVyIH0gZnJvbSAnLi4vLi4vdHNpLWhlbHBlcnMvdHlwZS1yZWdpc3RyeS5oZWxwZXInO1xyXG5pbXBvcnQgeyBCdXNpbmVzc0NsYXNzTmFtZXMgfSBmcm9tICcuLi8uLi9jb25zdHMvYnVzaW5lc3MtY2xhc3MtbmFtZXMnO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcyc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE5hdHVyZUFjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hY3Rpb25FcnAvbmF0dXJlLWFjdGlvbi1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10c2ktYWN0aW9uLWVycC1jcmVhdGUtb3ItZWRpdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS1hY3Rpb24tZXJwLWNyZWF0ZS1vci1lZGl0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdHNpLWFjdGlvbi1lcnAtY3JlYXRlLW9yLWVkaXQuY29tcG9uZW50LmNzcycsXHJcbiAgcHJvdmlkZXJzOiBbLi4uYXBwUHJvdmlkZXJzLCBEaWFsb2dTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHNpQWN0aW9uRXJwQ3JlYXRlT3JFZGl0Q29tcG9uZW50IGV4dGVuZHMgVHNpRm9ybUNvbXBvbmVudEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGFjdGlvbiA9IG5ldyBBY3Rpb25FUlAoKTtcclxuICBhZG1pbmlzdHJhdGlvbkVuZHBvaW50cyA9IEFkbWluaXN0cmF0aW9uRW5kcG9pbnRzO1xyXG4gIGJ1c2lubmVzc0NsYXNzTmFtZTogc3RyaW5nID0gXCJcIlxyXG4gIG9jY3VyZW5jZUluZm9zOiBvY2N1cmVuY2VJbmZvcyB8IG51bGwgPSBudWxsO1xyXG4gIGNsYXNzZW5hbWU6IGFueSA9IG51bGw7XHJcbiAgbW9kZVJlZiA9IE1vZGVzO1xyXG4gIGJ1c2luZXNzQ2xhc3NOYW1lcyA9IEJ1c2luZXNzQ2xhc3NOYW1lcztcclxuICBhY3Rpb25QcmVjZWRlbnRlQ29kZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gIGVudGl0eUxpc3RVcmw6IHN0cmluZyA9ICcnO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIF9hY3Rpb25zZXJ2aWNlOiBBY3Rpb25FcnBTZXJ2aWNlLFxyXG4gICAgcHVibGljIF9uYXR1cmVBY3Rpb25zZXJ2aWNlOiBOYXR1cmVBY3Rpb25TZXJ2aWNlLFxyXG5cclxuICAgIHByaXZhdGUgX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZTogRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uU2VydmljZTogVHNpTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NvbmZpcm1hdGlvblNlcnZpY2U6IFRzaUNvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZW50aXR5Q29uZmlndXJhdGlvblNlcnZpY2U6IEVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgX2lkZW50aXR5TWFuYWdlclNlcnZpY2U6IElkZW50aXR5TWFuYWdlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9sb2NhbGl6ZTogTG9jYWxpemVQaXBlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZywgcHVibGljIG92ZXJyaWRlIHJlZj86IER5bmFtaWNEaWFsb2dSZWYsXHJcblxyXG5cclxuICApIHtcclxuICAgIHN1cGVyKHJlZiwgY29uZmlnKVxyXG4gICAgdGhpcy5idXNpbm5lc3NDbGFzc05hbWUgPSBjb25maWc/LmRhdGE/LmN1c3RvbURhdGE/Lm9jY3VyZW5jZUluZm9zPy5idXNpbmVzc2NsYXNzID8/ICcnO1xyXG4gICAgdGhpcy5idXNpbmVzc0NsYXNzID0gQnVzaW5lc3NDbGFzc05hbWVzLkFjdGlvbkVSUDtcclxuXHJcbiAgICBpZiAoY29uZmlnPy5kYXRhPy5jdXN0b21EYXRhPy5vY2N1cmVuY2VJbmZvcykge1xyXG4gICAgICB0aGlzLm9jY3VyZW5jZUluZm9zID0gY29uZmlnLmRhdGEuY3VzdG9tRGF0YS5vY2N1cmVuY2VJbmZvcyBhcyBvY2N1cmVuY2VJbmZvcztcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgdGhpcy5yZWZyZXNoRW50aXR5TGlzdCgpO1xyXG4gICAgaWYgKHRoaXMuY29uZmlnPy5kYXRhPy5hY3Rpb25TdWl2YW50ZSAhPSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uLm5hdHVyZUFjdGlvbiA9IHRoaXMuY3VzdG9tRGF0YT8ubmF0dXJlQWN0aW9uXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuYWN0aW9uLmFjdGlvbkVSUERldGFpbHMubGVuZ3RoID09PSAwICYmIHRoaXMub2NjdXJlbmNlSW5mb3M/LmJ1c2luZXNzY2xhc3MpIHtcclxuXHJcbiAgICAgIGNvbnN0IG5vdXZlYXVEZXRhaWw6IEFjdGlvbkVSUERldGFpbCA9IHtcclxuICAgICAgICBjbGFzc2U6IHRoaXMub2NjdXJlbmNlSW5mb3M/LmJ1c2luZXNzY2xhc3MsXHJcbiAgICAgICAgb2NjdXJlbmNlOiB0aGlzLm9jY3VyZW5jZUluZm9zPy5vY2N1cmVuY2U/LnRvU3RyaW5nKCksXHJcbiAgICAgICAgYWN0aW9uRVJQOiB1bmRlZmluZWRcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMuYWN0aW9uLmFjdGlvbkVSUERldGFpbHMucHVzaChub3V2ZWF1RGV0YWlsKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGlvbi5hY3Rpb25FUlBEZXRhaWxzPy5maW5kKGQgPT4gZC5jbGFzc2UpXHJcblxyXG4gICAgaWYgKFxyXG4gICAgICAodGhpcy5tb2RlID09PSBNb2Rlcy5lZGl0IHx8IHRoaXMubW9kZSA9PT0gTW9kZXMuZGVsZXRlIHx8IHRoaXMubW9kZSA9PT0gTW9kZXMuY29uc3VsdCkgJiZcclxuICAgICAgdGhpcy5pZCAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIHRoaXMuaWQgIT09IG51bGxcclxuICAgICkge1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuX2FjdGlvbnNlcnZpY2UuZ2V0QnlJZCh0aGlzLmlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFjdGlvbiA9IGRhdGE7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuYnVzaW5uZXNzQ2xhc3NOYW1lICYmIHRoaXMuYWN0aW9uLmFjdGlvbkVSUERldGFpbHM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5idXNpbm5lc3NDbGFzc05hbWUgPSB0aGlzLmFjdGlvbi5hY3Rpb25FUlBEZXRhaWxzWzBdLmNsYXNzZSA/PyAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc3RhdHVzID0gdGhpcy5hY3Rpb24uc3RhdHV0O1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5tb2RlID09IE1vZGVzLmNyZWF0ZSkge1xyXG4gICAgICAgaWYgKHRoaXMuY3VzdG9tRGF0YT8uaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2N1c3RvbURhdGEuaXRlbSA9JywgdGhpcy5jdXN0b21EYXRhLml0ZW0pO1xyXG5cclxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5hY3Rpb24sIHRoaXMuY3VzdG9tRGF0YS5pdGVtKTtcclxuICB9XHJcblxyXG4gICAgICBpZiAoIXRoaXMuYWN0aW9uLnByaW9yaXRlKSB7XHJcbiAgICAgICAgdGhpcy5hY3Rpb24ucHJpb3JpdGUgPSBQcmlvcml0ZUFjdGlvbkNSTUVudW0uTm9ybWFsZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuYWN0aW9uLmRhdGVIZXVyZURlYnV0UHJldikge1xyXG4gICAgICAgIHRoaXMuYWN0aW9uLmRhdGVIZXVyZURlYnV0UHJldiA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0SG91cnMoMCwgMCwgMCwgMCkpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5hY3Rpb24uZGF0ZUhldXJlRmluUHJldikge1xyXG4gICAgICAgIHRoaXMuYWN0aW9uLmRhdGVIZXVyZUZpblByZXYgPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldEhvdXJzKDAsIDAsIDAsIDApKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IHRva2VuID0gdGhpcy5faWRlbnRpdHlNYW5hZ2VyU2VydmljZS5wYXJzZU15QXV0aFRva2VuKCk7XHJcblxyXG4gICAgICBpZiAoIXRva2VuKSByZXR1cm47XHJcblxyXG4gICAgICB0aGlzLmFjdGlvbi51dGlsaXNhdGV1ckRlbWFuZGV1ciA9IHRva2VuLnByaW1hcnlzaWQ/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGlmICghdGhpcy5hY3Rpb24udXRpbGlzYXRldXJBc3NpZ25lKSB7XHJcbiAgICAgICAgdGhpcy5hY3Rpb24udXRpbGlzYXRldXJBc3NpZ25lID0gdG9rZW4ucHJpbWFyeXNpZD8udG9Mb3dlckNhc2UoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuYWN0aW9uZGV0YWlsY29sb206IEFycmF5PEdyaWRDb2x1bW4+ID0gW107XHJcbnRvZ2dsZUZyZXF1ZW50KCkge1xyXG4gIGNvbnNvbGUubG9nKCdCZWZvcmUgdG9nZ2xlOicsIHRoaXMub25seUZyZXF1ZW50KTtcclxuXHJcbiAgdGhpcy5vbmx5RnJlcXVlbnQgPSAhdGhpcy5vbmx5RnJlcXVlbnQ7XHJcblxyXG4gIGNvbnNvbGUubG9nKCdBZnRlciB0b2dnbGU6JywgdGhpcy5vbmx5RnJlcXVlbnQpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgdGhpcy5yZWZyZXNoRW50aXR5TGlzdCgpO1xyXG4gIH0pO1xyXG59XHJcbm9ubHlGcmVxdWVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG5yZWZyZXNoRW50aXR5TGlzdCgpIHtcclxuXHJcbiAgdGhpcy5lbnRpdHlMaXN0VXJsID1cclxuICAgIHRoaXMuYWRtaW5pc3RyYXRpb25FbmRwb2ludHMuR2V0QWxsRW50aXRpZXNJbmZvcm1hdGlvbnModGhpcy5vbmx5RnJlcXVlbnQpO1xyXG4gIHRoaXMuYWN0aW9uZGV0YWlsY29sb20gPSBbXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiBcImNsYXNzZVwiLFxyXG4gICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uX2NsYXNzZU5hbWUnLFxyXG4gICAgICB0eXBlOiBJbnB1dFR5cGVzLlNFQVJDSF9DT01CTyxcclxuICAgICAgbGlzdFNvdXJjZVVybDogdGhpcy5lbnRpdHlMaXN0VXJsLFxyXG4gICAgICBlbGVtZW50U291cmNlVXJsOiB0aGlzLmFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldEVudGl0eUluZm9FbGVtZW50U291cmNlKCksXHJcbiAgICAgIGlkRmllbGQ6IFwiY2xhc3NOYW1lXCIsXHJcbiAgICAgIGxhYmVsRmllbGQ6IFwiY2xhc3NOYW1lXCIsXHJcbiAgICAgIGlucHV0TmFtZTogXCJjbGFzc2VcIixcclxuICAgICAgaXNGaWx0ZXJlZDogdHJ1ZSxcclxuICAgICAgd2F0Y2hGb3JDaGFuZ2VzOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6IFwib2NjdXJlbmNlXCIsXHJcbiAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25fb2NjdXJlbmNlJyxcclxuICAgICAgdHlwZTogSW5wdXRUeXBlcy5TRUFSQ0hfQ09NQk8sXHJcbiAgICAgIGxpc3RTb3VyY2VVcmw6IChyb3c6IGFueSkgPT4gdGhpcy5nZXRPY2N1cmVuY2VMaXN0VXJsKHJvdyksXHJcbiAgICAgIGVsZW1lbnRTb3VyY2VVcmw6IChyb3c6IGFueSkgPT4gdGhpcy5nZXRPY2N1cmVuY2VVcmwocm93KSxcclxuICAgICAgaWRGaWVsZDogXCJpZFwiLFxyXG4gICAgICBsYWJlbEZpZWxkOiBcImRpc3BsYXlOYW1lXCIsXHJcbiAgICAgIGlucHV0TmFtZTogXCJvY2N1cmVuY2VcIixcclxuICAgICAgaXNGaWx0ZXJlZDogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXTtcclxufVxyXG4gIHBhcnRpY2lwYW50Q29sdW1uczogQXJyYXk8R3JpZENvbHVtbj4gPSBbXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiBcInV0aWxpc2F0ZXVyXCIsXHJcbiAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25fcGFydGljaXBhbnRfdXRpbGlzYXRldXInLFxyXG4gICAgICB0eXBlOiBJbnB1dFR5cGVzLlNFQVJDSF9DT01CTyxcclxuICAgICAgZWxlbWVudFNvdXJjZVVybDogdGhpcy5hZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRVdGlsaXNhdGV1ck1pbmltYWwoKSxcclxuICAgICAgbGlzdFNvdXJjZVVybDogdGhpcy5hZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRBbGxVdGlsaXNhdGV1ck1pbmltYWwoKSxcclxuICAgICAgaWRGaWVsZDogXCJ1aWRcIixcclxuICAgICAgbGFiZWxGaWVsZDogXCJub21QcmVub21cIixcclxuICAgICAgaW5wdXROYW1lOiBcInV0aWxpc2F0ZXVyXCIsXHJcbiAgICAgIGlzRmlsdGVyZWQ6IHRydWUsXHJcbiAgICAgIGJ1c2luZXNzQ2xhc3M6IEJ1c2luZXNzQ2xhc3NOYW1lcy5VdGlsaXNhdGV1cixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiBcIm9ibGlnYXRvaXJlXCIsXHJcbiAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25fcGFydGljaXBhbnRfb2JsaWdhdG9pcmUnLFxyXG4gICAgICB0eXBlOiBJbnB1dFR5cGVzLkNIRUNLQk9YLFxyXG4gICAgICBpbnB1dE5hbWU6IFwib2JsaWdhdG9pcmVcIixcclxuICAgICAgaXNCaW5hcnk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF07XHJcblxyXG4gIGdldE9jY3VyZW5jZUxpc3RVcmwocm93OiBhbnkpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qga2V5ID0gcm93Py5jbGFzc2U7XHJcbiAgICBpZiAoIWtleSkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIEFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldEVudGl0eURhdGEoa2V5KTtcclxuICB9XHJcblxyXG4gIGdldE9jY3VyZW5jZVVybChyb3c6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBrZXkgPSByb3c/LmNsYXNzZTtcclxuICAgIGlmICgha2V5KSByZXR1cm4gJyc7XHJcbiAgICByZXR1cm4gQWRtaW5pc3RyYXRpb25FbmRwb2ludHMuZ2V0RW50aXR5RGF0YUJ5SWQoa2V5KTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHNhdmUoKTogdm9pZCB7XHJcbiAgICBzdXBlci5zYXZlKClcclxuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNsb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuYWN0aW9uLnN0YXR1dCA9IHRoaXMuc3RhdHVzXHJcbiAgICBpZiAodGhpcy5tb2RlID09PSBNb2Rlcy5jcmVhdGUpIHtcclxuICAgICAgdGhpcy5fYWN0aW9uc2VydmljZS5jcmVhdGUodGhpcy5hY3Rpb24pLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmluZm8odGhpcy5sKExvY2FsaXphdGlvbktleXMuc2F2ZWRTdWNjZXNzZnVsbHkpKTtcclxuICAgICAgICAgIHRoaXMucmVzb2x2ZUZpY2hlKHRydWUscmVzcG9uc2UpO1xyXG4gICAgICAgICAgdGhpcy5vblNhdmUuZW1pdCgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UocmVzcG9uc2UpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmIChcclxuICAgICAgdGhpcy5tb2RlID09PSBNb2Rlcy5lZGl0ICYmXHJcbiAgICAgIHRoaXMuaWRcclxuICAgICkge1xyXG4gICAgICB0aGlzLl9hY3Rpb25zZXJ2aWNlLnVwZGF0ZSh0aGlzLmFjdGlvbiwgdGhpcy5pZCkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmluZm8odGhpcy5sKExvY2FsaXphdGlvbktleXMudXBkYXRlZFN1Y2Nlc3NmdWxseSkpO1xyXG4gICAgICAgICAgdGhpcy5yZXNvbHZlRmljaGUodHJ1ZSk7XHJcbiAgICAgICAgICB0aGlzLm9uU2F2ZS5lbWl0KCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZShyZXNwb25zZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gTW9kZXMuZGVsZXRlKSB7XHJcbiAgICAgIHRoaXMuX2NvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybShcclxuICAgICAgICBMb2NhbGl6YXRpb25LZXlzLmNvbmZpcm1EZWxldGUsXHJcbiAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgIChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgcmVzdWx0ICYmXHJcbiAgICAgICAgICAgIHRoaXMuaWRcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLl9hY3Rpb25zZXJ2aWNlLmRlbGV0ZSh0aGlzLmlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2Vzcyh0aGlzLmwoTG9jYWxpemF0aW9uS2V5cy5kZWxldGVkU3VjY2Vzc2Z1bGx5KSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVGaWNoZSh0cnVlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25TYXZlLmVtaXQoKTtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGVycm9yOiAocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZShyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3VsdEVsZW1lbnQoaXRlbTogYW55KSB7XHJcbiAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uY2xhc3NlKSB7XHJcbiAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoXCJzZWFyY2hfY29tYm9fY29tcG9uZW50X25hbWVFbnRpdHlcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghaXRlbSB8fCAhaXRlbS5vY2N1cmVuY2UpIHtcclxuICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5lcnJvcih0aGlzLl9sb2NhbGl6ZS50cmFuc2Zvcm0oJ2FjdGlvbl9ub19zZWxlY3RlZF9pdGVtX2Zvcl9jb25zdWx0YXRpb24nKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldEVudGl0eUluZm8oaXRlbS5jbGFzc2UpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChlbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghZW50aXR5IHx8ICFlbnRpdHkuZm9ybU5hbWUpIHtcclxuICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2U/LmVycm9yKHRoaXMuX2xvY2FsaXplLnRyYW5zZm9ybSgnc2VhcmNoX2NvbWJvX2NvbXBvbmVudF9mb3JtX25hbWVfbmYnKSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBjb25mOiBEeW5hbWljRGlhbG9nQ29uZmlnID0ge1xyXG4gICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBtb2RlOiBDb21wb25lbnRfTW9kZXMuQ09OU1VMVCxcclxuICAgICAgICAgICAgY3VzdG9tRGF0YTogZW50aXR5LFxyXG4gICAgICAgICAgICBpZDogaXRlbS5vY2N1cmVuY2VcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAnJyxcclxuICAgICAgICAgIHdpZHRoOiBNb2RhbFNpemVFbnVtLk1lZGl1bS53aWR0aCxcclxuICAgICAgICAgIGhlaWdodDogTW9kYWxTaXplRW51bS5NZWRpdW0uaGVpZ2h0LFxyXG4gICAgICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgbGV0IGRpYWxvZ1JlZmVyZW5jZSA9IHRoaXMuX2RpYWxvZ1NlcnZpY2U/Lm9wZW4oXHJcbiAgICAgICAgICBUeXBlUmVnaXN0cnlIZWxwZXIuZ2V0VHlwZShlbnRpdHkuZm9ybU5hbWUpLFxyXG4gICAgICAgICAgY29uZlxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGRpYWxvZ1JlZmVyZW5jZT8ub25DbG9zZS5zdWJzY3JpYmUoKF8pID0+IHtcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyZXVyIGxvcnMgZGUgbGEgcsOpY3Vww6lyYXRpb24gZGVzIGluZm9zIGQnZW50aXTDqSA6XCIsIGVycik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGNyZWF0ZUVsZW1lbnQoY2xhc3NlOiBzdHJpbmcpIHtcclxuICAgIGlmICghY2xhc3NlKSB7XHJcbiAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgdGhpcy5fbG9jYWxpemUudHJhbnNmb3JtKCdzZWFyY2hfY29tYm9fY29tcG9uZW50X25hbWVFbnRpdHknKVxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lbnRpdHlDb25maWd1cmF0aW9uU2VydmljZS5nZXRFbnRpdHlJbmZvKGNsYXNzZSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGVudGl0eTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKCFlbnRpdHkgfHwgIWVudGl0eS5mb3JtTmFtZSkge1xyXG4gICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZT8uZXJyb3IoXHJcbiAgICAgICAgICAgIHRoaXMuX2xvY2FsaXplLnRyYW5zZm9ybSgnc2VhcmNoX2NvbWJvX2NvbXBvbmVudF9mb3JtX25hbWVfbmYnKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGNvbmY6IER5bmFtaWNEaWFsb2dDb25maWcgPSB7XHJcbiAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIG1vZGU6IENvbXBvbmVudF9Nb2Rlcy5DUkVBVEUsXHJcbiAgICAgICAgICAgIGN1c3RvbURhdGE6IGVudGl0eSxcclxuICAgICAgICAgICAgaWQ6IG51bGxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAnJyxcclxuICAgICAgICAgIHdpZHRoOiBNb2RhbFNpemVFbnVtLk1lZGl1bS53aWR0aCxcclxuICAgICAgICAgIGhlaWdodDogTW9kYWxTaXplRW51bS5NZWRpdW0uaGVpZ2h0LFxyXG4gICAgICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3QgY29tcG9uZW50VHlwZSA9IFR5cGVSZWdpc3RyeUhlbHBlci5nZXRUeXBlKGVudGl0eS5mb3JtTmFtZSk7XHJcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmZXJlbmNlID0gdGhpcy5fZGlhbG9nU2VydmljZT8ub3Blbihjb21wb25lbnRUeXBlLCBjb25mKTtcclxuXHJcbiAgICAgICAgaWYgKCFkaWFsb2dSZWZlcmVuY2UpIHJldHVybjtcclxuXHJcbiAgICAgICAgZGlhbG9nUmVmZXJlbmNlLm9uQ2xvc2Uuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFyZXN1bHQpIHJldHVybjtcclxuXHJcbiAgICAgICAgICBjb25zdCB1aWQgPSByZXN1bHQ/LnVpZCA/PyByZXN1bHQ/LmlkID8/IHJlc3VsdDtcclxuXHJcbiAgICAgICAgICBpZiAodWlkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld0RldGFpbDogQWN0aW9uRVJQRGV0YWlsID0ge1xyXG4gICAgICAgICAgICAgIGNsYXNzZTogY2xhc3NlLFxyXG4gICAgICAgICAgICAgIG9jY3VyZW5jZTogdWlkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgYWN0aW9uRVJQOiB1bmRlZmluZWRcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuYWN0aW9uLmFjdGlvbkVSUERldGFpbHMgPSBbLi4udGhpcy5hY3Rpb24uYWN0aW9uRVJQRGV0YWlscywgbmV3RGV0YWlsXTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2UuaW5mbyhcclxuICAgICAgICAgICAgICB0aGlzLl9sb2NhbGl6ZS50cmFuc2Zvcm0oJ3NhdmVkU3VjY2Vzc2Z1bGx5JylcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlPy5lcnJvcihcclxuICAgICAgICAgIHRoaXMuX2xvY2FsaXplLnRyYW5zZm9ybSgnc2VhcmNoX2NvbWJvX2NvbXBvbmVudF9mb3JtX25hbWVfbmYnKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBvbkNsYXNzZVNlbGVjdGVkKHNlbGVjdGVkOiBhbnkpIHtcclxuICAgIGNvbnN0IGNsYXNzZSA9IHR5cGVvZiBzZWxlY3RlZCA9PT0gJ3N0cmluZydcclxuICAgICAgPyBzZWxlY3RlZFxyXG4gICAgICA6IHNlbGVjdGVkPy5jbGFzc05hbWU7XHJcbiAgICBpZiAoIWNsYXNzZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5jcmVhdGVFbGVtZW50KGNsYXNzZSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvcGVuQWN0aW9uRVJQUG9wVXAoKSB7XHJcblxyXG4gICAgIGxldCBuYXR1cmVBY3Rpb25TdWl2YW50ZSA9IHVuZGVmaW5lZDtcclxuXHJcbiAgdHJ5IHtcclxuICAgIG5hdHVyZUFjdGlvblN1aXZhbnRlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXHJcbiAgICAgIHRoaXMuX25hdHVyZUFjdGlvbnNlcnZpY2UuR2V0TmF0dXJlQWN0aW9uU3VpdmFudGVCeU9yZHJlKHRoaXMuYWN0aW9uLm5hdHVyZUFjdGlvbilcclxuICAgICk7XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuXHJcbiAgICBuYXR1cmVBY3Rpb25TdWl2YW50ZSA9IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgICBjb25zdCBub3V2ZWxsZUFjdGlvbiA9IHtcclxuICAgICAgYWN0aW9uUHJlY2VkZW50ZTogdGhpcy5hY3Rpb24udWlkLFxyXG4gICAgICBjb2RlQWN0aW9uUHJlY2VkZW50ZTogdGhpcy5hY3Rpb24ubnVtZXJvLFxyXG4gICAgICBkYXRlSGV1cmVEZWJ1dFByZXY6IHRoaXMuYWN0aW9uLmRhdGVIZXVyZURlYnV0UHJldixcclxuICAgICAgZGF0ZUhldXJlRmluUHJldjogdGhpcy5hY3Rpb24uZGF0ZUhldXJlRmluUHJldixcclxuICAgICAgdXRpbGlzYXRldXJEZW1hbmRldXI6IHRoaXMuYWN0aW9uLnV0aWxpc2F0ZXVyRGVtYW5kZXVyLFxyXG4gICAgICBuYXR1cmVBY3Rpb246IG5hdHVyZUFjdGlvblN1aXZhbnRlPy51aWQsXHJcbiAgICAgIHV0aWxpc2F0ZXVyQXNzaWduZTogbmF0dXJlQWN0aW9uU3VpdmFudGU/LnJlYWxpc2F0ZXVyLFxyXG4gICAgICBzdGF0dXQ6IFN0YXR1dEFjdGlvbkNSTUVudW0uRW5BdHRlbnRlLFxyXG4gICAgICBhY3Rpb25FUlBEZXRhaWxzOiB0aGlzLmFjdGlvbi5hY3Rpb25FUlBEZXRhaWxzPy5tYXAoZGV0YWlsID0+ICh7XHJcbiAgICAgICAgY2xhc3NlOiBkZXRhaWwuY2xhc3NlLFxyXG4gICAgICAgIG9jY3VyZW5jZTogZGV0YWlsLm9jY3VyZW5jZSxcclxuICAgICAgICBhY3Rpb25FUlA6IHVuZGVmaW5lZFxyXG4gICAgICB9KSkgPz8gW10sXHJcbiAgICAgIGFjdGlvbkVSUFV0aWxpc2F0ZXVyczogW11cclxuICAgIH1cclxuXHJcbiAgICBsZXQgY29uZjogRHluYW1pY0RpYWxvZ0NvbmZpZyA9IHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIG1vZGU6IE1vZGVzLmNyZWF0ZSxcclxuICAgICAgICBhY3Rpb246IG5vdXZlbGxlQWN0aW9uLFxyXG4gICAgICAgIGFjdGlvblN1aXZhbnRlOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgICB3aWR0aDogTW9kYWxTaXplRW51bS5NZWRpdW0ud2lkdGgsXHJcbiAgICAgIGhlaWdodDogTW9kYWxTaXplRW51bS5MYXJnZS5oZWlnaHQsXHJcbiAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICBjbG9zYWJsZTogdHJ1ZVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVmID0gdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKFRzaUFjdGlvbkVycENyZWF0ZU9yRWRpdENvbXBvbmVudCwgY29uZik7XHJcblxyXG4gICAgdGhpcy5yZWYub25DbG9zZS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgdGhpcy5hY3Rpb24udWlkID0gcmVzdWx0O1xyXG5cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbk5hdHVyZUFjdGlvbkNoYW5nZShuYXR1cmVBY3Rpb25JZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoIW5hdHVyZUFjdGlvbklkKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5fbmF0dXJlQWN0aW9uc2VydmljZS5nZXRCeUlkKG5hdHVyZUFjdGlvbklkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAobmF0dXJlQWN0aW9uKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmFjdGlvbi51dGlsaXNhdGV1ckFzc2lnbmUgJiYgbmF0dXJlQWN0aW9uPy5yZWFsaXNhdGV1cikge1xyXG4gICAgICAgICAgdGhpcy5hY3Rpb24udXRpbGlzYXRldXJBc3NpZ25lID0gbmF0dXJlQWN0aW9uLnJlYWxpc2F0ZXVyO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMuX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZS5zaG93RXJyb3JNZXNzYWdlKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb3BlbkFjdGlvblByZWNlZGVudGVQb3B1cCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5hY3Rpb24uYWN0aW9uUHJlY2VkZW50ZSkge1xyXG4gICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgIHRoaXMuX2xvY2FsaXplLnRyYW5zZm9ybSgnc2hhcmVkX2FjdGlvbl9BY3Rpb25QcmVjZWRlbnRlX25vdF9mb3VuZCcpXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb25mOiBEeW5hbWljRGlhbG9nQ29uZmlnID0ge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbW9kZTogTW9kZXMuZWRpdCxcclxuICAgICAgICBpZDogdGhpcy5hY3Rpb24uYWN0aW9uUHJlY2VkZW50ZSxcclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIHdpZHRoOiBNb2RhbFNpemVFbnVtLk1lZGl1bS53aWR0aCxcclxuICAgICAgaGVpZ2h0OiBNb2RhbFNpemVFbnVtLkxhcmdlLmhlaWdodCxcclxuICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgIGNsb3NhYmxlOiB0cnVlLFxyXG5cclxuICAgIH07XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2dTZXJ2aWNlLm9wZW4oXHJcbiAgICAgIFRzaUFjdGlvbkVycENyZWF0ZU9yRWRpdENvbXBvbmVudCxcclxuICAgICAgY29uZlxyXG4gICAgKTtcclxuXHJcbiAgICBkaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPHRzaS1mb3JtIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKG9uU3VibWl0KT1cInNhdmUoKVwiIFtpc0xvYWRpbmddPVwiaXNsb2FkaW5nXCI+XHJcbiAgICA8VHNpLU1vZGFsLUhlYWRlciBbaW5wdXRUaXRsZV09XCJoZWFkZXIgfCBtb2RhbExhYmVsIDptb2RlOidzaGFyZWRfYWN0aW9uX2FkZF9hY3Rpb24nXCIgKG9uQ2xvc2VDbGljayk9XCJoaWRlKClcIj5cclxuICAgIDwvVHNpLU1vZGFsLUhlYWRlcj5cclxuXHJcbiAgICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cImlzRGVsZXRlTW9kZSgpIHx8IGlzQ29uc3VsdE1vZGUoKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgcm93LWdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1kOmNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPjxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ3NoYXJlZF9hY3Rpb25fTmF0dXJlX0FjdGlvbidcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2VsZW1lbnRTb3VyY2VVcmxdPVwiYWRtaW5pc3RyYXRpb25FbmRwb2ludHMuZ2V0TmF0dXJlQWN0aW9uTWluaW1hbCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlzdFNvdXJjZVVybF09XCJhZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRBbGxOYXR1cmVBY3Rpb25NaW5pbWFsKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoYmluZCldPVwiYWN0aW9uLm5hdHVyZUFjdGlvblwiIGlkLWZpZWxkPVwidWlkXCIgbGFiZWwtZmllbGQ9XCJsaWJlbGxlXCIgW2lzRmlsdGVyZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0TmFtZV09XCInTmF0dXJlQWN0aW9uJ1wiIFtidXNpbmVzc0NsYXNzXT1cImJ1c2luZXNzQ2xhc3NOYW1lcy5OYXR1cmVBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiaW5kQ2hhbmdlKT1cIm9uTmF0dXJlQWN0aW9uQ2hhbmdlKCRldmVudClcIj48L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj48VHNpLUxhYmVsIFtsYWJlbFZhbHVlXT1cIidzaGFyZWRfYWN0aW9uX251bWVybydcIj48L1RzaS1MYWJlbD48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+PFRzaS1JbnRlZ2VyIFtpbnB1dE5hbWVdPVwiJ051bWVybydcIiBbKGlucHV0RmllbGQpXT1cImFjdGlvbi5udW1lcm9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+PC9Uc2ktSW50ZWdlcj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+PFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInc2hhcmVkX2FjdGlvbl91dGlsaXNhdGV1ckRlbWFuZGV1cidcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2VsZW1lbnRTb3VyY2VVcmxdPVwiYWRtaW5pc3RyYXRpb25FbmRwb2ludHMuZ2V0VXRpbGlzYXRldXJNaW5pbWFsKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaXN0U291cmNlVXJsXT1cImFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldEFsbFV0aWxpc2F0ZXVyTWluaW1hbCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGJpbmQpXT1cImFjdGlvbi51dGlsaXNhdGV1ckRlbWFuZGV1clwiIGlkLWZpZWxkPVwidWlkXCIgbGFiZWwtZmllbGQ9XCJub21QcmVub21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0ZpbHRlcmVkXT1cInRydWVcIiBbaW5wdXROYW1lXT1cIid1dGlsaXNhdGV1ckRlbWFuZGV1cidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXNpbmVzc0NsYXNzXT1cImJ1c2luZXNzQ2xhc3NOYW1lcy5VdGlsaXNhdGV1clwiPjwvVHNpLVNlYXJjaC1Db21ibz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPjxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ3NoYXJlZF9hY3Rpb25fb2JqZXQnXCI+PC9Uc2ktTGFiZWw+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPjxUc2ktVGV4dC1BcmVhIFtpbnB1dE5hbWVdPVwiJ09iamV0J1wiIFsoaW5wdXRGaWVsZCldPVwiYWN0aW9uLm9iamV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm93c109XCIzXCI+PC9Uc2ktVGV4dC1BcmVhPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj48VHNpLUxhYmVsIFtsYWJlbFZhbHVlXT1cIidzaGFyZWRfYWN0aW9uX2xpZXUnXCI+PC9Uc2ktTGFiZWw+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPjxUc2ktVGV4dC1BcmVhIFtpbnB1dE5hbWVdPVwiJ0xpZXUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImFjdGlvbi5saWV1XCI+PC9Uc2ktVGV4dC1BcmVhPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtZDpjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj48VHNpLUxhYmVsIFtsYWJlbFZhbHVlXT1cIidzaGFyZWRfYWN0aW9uX3ByaW9yaXRlJ1wiPjwvVHNpLUxhYmVsPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvIFtsaXN0U291cmNlVXJsXT1cImFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmFsbFByaW9yaXRlQWN0aW9uQ1JNRW51bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhiaW5kKV09XCJhY3Rpb24ucHJpb3JpdGVcIiBpZC1maWVsZD1cImtleVwiIGxhYmVsLWZpZWxkPVwidmFsdWVcIiBbaW5wdXROYW1lXT1cIidQcmlvcml0ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93U2VhcmNoQnV0dG9uXT1cImZhbHNlXCI+PC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPjxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ3NoYXJlZF9hY3Rpb25fdXRpbGlzYXRldXJBc3NpZ25lJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBbZWxlbWVudFNvdXJjZVVybF09XCJhZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRVdGlsaXNhdGV1ck1pbmltYWwoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpc3RTb3VyY2VVcmxdPVwiYWRtaW5pc3RyYXRpb25FbmRwb2ludHMuZ2V0QWxsVXRpbGlzYXRldXJNaW5pbWFsKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoYmluZCldPVwiYWN0aW9uLnV0aWxpc2F0ZXVyQXNzaWduZVwiIGlkLWZpZWxkPVwidWlkXCIgbGFiZWwtZmllbGQ9XCJub21QcmVub21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dE5hbWVdPVwiJ1V0aWxpc2F0ZXVyQXNzaWduZSdcIiBbaXNGaWx0ZXJlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVzaW5lc3NDbGFzc109XCJidXNpbmVzc0NsYXNzTmFtZXMuVXRpbGlzYXRldXJcIj48L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj48VHNpLUxhYmVsIFtsYWJlbFZhbHVlXT1cIidzaGFyZWRfYWN0aW9uX3Jlc3VsdGF0J1wiPjwvVHNpLUxhYmVsPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvIFtsaXN0U291cmNlVXJsXT1cImFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmFsbFJlc3VsdGF0QWN0aW9uQ1JNRW51bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhiaW5kKV09XCJhY3Rpb24ucmVzdWx0YXRcIiBpZC1maWVsZD1cImtleVwiIGxhYmVsLWZpZWxkPVwidmFsdWVcIiBbaW5wdXROYW1lXT1cIidSZXN1bHRhdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93U2VhcmNoQnV0dG9uXT1cImZhbHNlXCI+PC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+PFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInc2hhcmVkX2FjdGlvbl9SZWNhcGl0dWxhdGlmJ1wiPjwvVHNpLUxhYmVsPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj48VHNpLVRleHQtQXJlYSBbaW5wdXROYW1lXT1cIidSZWNhcGl0dWxhdGlmJ1wiIFsoaW5wdXRGaWVsZCldPVwiYWN0aW9uLnJlY2FwaXR1bGF0aWZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dzXT1cIjNcIj48L1RzaS1UZXh0LUFyZWE+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPjxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ3NoYXJlZF9hY3Rpb25fQWN0aW9uUHJlY2VkZW50ZSdcIj48L1RzaS1MYWJlbD48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03XCI+PFRzaS1JbnRlZ2VyIFtpbnB1dE5hbWVdPVwiJ0FjdGlvblByZWNlZGVudGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImFjdGlvbi5jb2RlQWN0aW9uUHJlY2VkZW50ZVwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+PC9Uc2ktSW50ZWdlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1CdXR0b24gW2ljb25dPVwiJ3BpIHBpLWV5ZSdcIiBbZGlzYWJsZWRdPVwiIWFjdGlvbi5hY3Rpb25QcmVjZWRlbnRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJvcGVuQWN0aW9uUHJlY2VkZW50ZVBvcHVwKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHNpLUJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPHAtdGFiVmlldz5cclxuICAgICAgICAgICAgICAgIDxwLXRhYlBhbmVsIFtoZWFkZXJdPVwiJ2FuZ2xhaXNfZWNoZWFuY2UnfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb250ZW50XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgYm9yZGVyIHAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBtYi0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCB0ZXh0LWNlbnRlclwiPjxiPnt7ICdhY3Rpb25fRGVidXQnIHwgbG9jYWxpemUgfX08L2I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCB0ZXh0LWNlbnRlclwiPjxiPnt7ICdhY3Rpb25fRmluJyB8IGxvY2FsaXplIH19PC9iPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj48VHNpLUxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbFZhbHVlXT1cIidhY3Rpb25fZGF0ZUhldXJlX1ByZXYnXCI+PC9Uc2ktTGFiZWw+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj48VHNpLURhdGUtUGlja2VyIFtpbnB1dE5hbWVdPVwiJ0RhdGVIZXVyZURlYnV0UHJldidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImFjdGlvbi5kYXRlSGV1cmVEZWJ1dFByZXZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RpbWVdPVwiZmFsc2VcIj48L1RzaS1EYXRlLVBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+PFRzaS1EYXRlLVBpY2tlciBbaW5wdXROYW1lXT1cIidEYXRlSGV1cmVGaW5QcmV2J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiYWN0aW9uLmRhdGVIZXVyZUZpblByZXZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RpbWVdPVwiZmFsc2VcIj48L1RzaS1EYXRlLVBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPjxUc2ktTGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsVmFsdWVdPVwiJ2FjdGlvbi5kYXRlSGV1cmVlX1JlYWxpc2VlJ1wiPjwvVHNpLUxhYmVsPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+PFRzaS1EYXRlLVBpY2tlciBbaW5wdXROYW1lXT1cIidEYXRlSGV1cmVEZWJ1dFJlYWxpc2VlJ1wiW3Nob3dUaW1lXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImFjdGlvbi5kYXRlSGV1cmVEZWJ1dFJlYWxpc2VlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvVHNpLURhdGUtUGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj48VHNpLURhdGUtUGlja2VyIFtpbnB1dE5hbWVdPVwiJ0RhdGVIZXVyZUZpblJlYWxpc2VlJ1wiW3Nob3dUaW1lXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImFjdGlvbi5kYXRlSGV1cmVGaW5SZWFsaXNlZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L1RzaS1EYXRlLVBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWZpZWxkc2V0IFtsZWdlbmRdPVwiJ2FjdGlvbl9GaWVsZHNldF9hbGVydGUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+PFRzaS1MYWJlbCBbbGFiZWxWYWx1ZV09XCInYWN0aW9uX2FsZXJ0ZSdcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+PFRzaS1DaGVja0JveCBbaW5wdXROYW1lXT1cIidBbGVydGUnXCIgW2lzQmluYXJ5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImFjdGlvbi5hbGVydGVcIj48L1RzaS1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj48VHNpLUxhYmVsIFtsYWJlbFZhbHVlXT1cIidhY3Rpb25fYWxlcnRlQXZhbnQnXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTkgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj48VHNpLUludGVnZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0TmFtZV09XCInQWxlcnRlQXZhbnQnXCIgWyhpbnB1dEZpZWxkKV09XCJhY3Rpb24uYWxlcnRlQXZhbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RzaS1JbnRlZ2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ub3dyYXBcIj57eydqb3Vycyd8IGxvY2FsaXplfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWZpZWxkc2V0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3AtdGFiUGFuZWw+XHJcbiAgICAgICAgICAgICAgICA8cC10YWJQYW5lbCBbaGVhZGVyXT1cIidMaXN0ZV9kZXNfYWN0aW9uX2RldGFpbHMnfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgdy1mdWxsIGdhcC04IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPjxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ3NoYXJlZF9hY3Rpb25FcnBfRnJlcXVlbnRfY2xhc3NlJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktQnV0dG9uIGNsYXNzPVwibWwtM1wiIChvbkNsaWNrKT1cInRvZ2dsZUZyZXF1ZW50KClcIiAgW3RleHRdPVwib25seUZyZXF1ZW50ID8gJ09OJyA6ICdPRkYnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwib25seUZyZXF1ZW50ID8gJ3BpIHBpLWNoZWNrJyA6ICdwaSBwaS10aW1lcydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RzaS1CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcHJlc2VudGF0aW9uRGVzaWduZXI9XCJhY3Rpb25fR2VuZXJlclwiIGNsYXNzPVwiIGZsZXggYWxpZ24taXRlbXMtY2VudGVyICBnYXAtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgW2xhYmVsVmFsdWVdPVwiJ2FjdGlvbl9HZW5lcmVyJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvIHN0eWxlPVwid2lkdGg6IDI4MHB4O1wiIGlucHV0TmFtZT1cImNsYXNzTmFtZVwiIGlkLWZpZWxkPVwiY2xhc3NOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwtZmllbGQ9XCJjbGFzc05hbWVcIiBbbGlzdFNvdXJjZVVybF09XCJlbnRpdHlMaXN0VXJsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VsZW1lbnRTb3VyY2VVcmxdPVwidGhpcy5hZG1pbmlzdHJhdGlvbkVuZHBvaW50cy5nZXRFbnRpdHlJbmZvRWxlbWVudFNvdXJjZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRmlsdGVyZWRdPVwidHJ1ZVwiIFsoYmluZCldPVwiY2xhc3NlbmFtZVwiIFtidXNpbmVzc0NsYXNzXT1cImJ1c2luZXNzQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmluZENoYW5nZSk9XCJvbkNsYXNzZVNlbGVjdGVkKCRldmVudClcIj4gPjwvVHNpLVNlYXJjaC1Db21ibz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFRzaS1HZW5lcmljLUVkaXRhYmxlLUdyaWQgKG9uQ29uc3VsdENsaWNrZWQpPVwiY29uc3VsdEVsZW1lbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NvbnN1bHRCdXR0b25dPVwidHJ1ZVwiIFtjb2x1bW5zXT1cImFjdGlvbmRldGFpbGNvbG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncmlkRGF0YV09XCJhY3Rpb24uYWN0aW9uRVJQRGV0YWlsc1wiIFtwYXJlbnRdPVwidGhpc1wiPjwvVHNpLUdlbmVyaWMtRWRpdGFibGUtR3JpZD5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9wLXRhYlBhbmVsPlxyXG4gICAgICAgICAgICAgICAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInc2hhcmVkX2FjdGlvbl9wYXJ0aWNpcGFudHMnfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUc2ktR2VuZXJpYy1FZGl0YWJsZS1HcmlkIFtjb2x1bW5zXT1cInBhcnRpY2lwYW50Q29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JpZERhdGFdPVwiYWN0aW9uLmFjdGlvbkVSUFV0aWxpc2F0ZXVyc1wiIFtwYXJlbnRdPVwidGhpc1wiIFtzaG93QWRkQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dEZWxldGVCdXR0b25dPVwidHJ1ZVwiPjwvVHNpLUdlbmVyaWMtRWRpdGFibGUtR3JpZD5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9wLXRhYlBhbmVsPlxyXG4gICAgICAgICAgICA8L3AtdGFiVmlldz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZmllbGRzZXQ+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIm1vZGUgIT09IG1vZGVSZWYuY3JlYXRlXCIgY2xhc3M9XCJncmlkIG10LTJcIiBwcmVzZW50YXRpb25EZXNpZ25lcj1cImFjdGlvbm5vdXZlbGxlX2FjdGlvbkVSUFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICA8VHNpLUJ1dHRvbiBjbGFzcz1cInctZnVsbFwiIChvbkNsaWNrKT1cIm9wZW5BY3Rpb25FUlBQb3BVcCgpXCJcclxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidhY3Rpb25ub3V2ZWxsZV9hY3Rpb25FUlAnXCI+PC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPFRzaS1Nb2RhbC1Gb290ZXIgW2NhbmNlbERpc2FibGVkXT1cInNhdmluZ1wiIFtzYXZlRGlzYWJsZWRdPVwiaXNTdWJtaXREaXNhYmxlZCgpXCJcclxuICAgICAgICAob25DYW5jZWxDbGljayk9XCJoaWRlKClcIj48L1RzaS1Nb2RhbC1Gb290ZXI+XHJcbjwvdHNpLWZvcm0+Il19