tango-app-ui-manage-users 3.7.0-alpha.1 → 3.7.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (21) hide show
  1. package/esm2022/lib/components/tango-manage-users/assign-store-popup/assign-store-popup.component.mjs +19 -17
  2. package/esm2022/lib/components/tango-manage-users/brand-user/brand-user.component.mjs +25 -19
  3. package/esm2022/lib/components/tango-manage-users/user-table/alert-popup/alert-popup.component.mjs +23 -12
  4. package/esm2022/lib/components-v2/add-users/add-users.component.mjs +3 -3
  5. package/esm2022/lib/components-v2/chip-select/chip-select.component.mjs +178 -0
  6. package/esm2022/lib/components-v2/teams-creation/teams-creation.component.mjs +21 -9
  7. package/esm2022/lib/components-v2/teams-list/teams-list.component.mjs +37 -26
  8. package/esm2022/lib/components-v2/users-manage/users-manage.component.mjs +12 -9
  9. package/esm2022/lib/services-v2/manage-users.service.mjs +5 -1
  10. package/esm2022/lib/tango-manage-users.module.mjs +6 -3
  11. package/fesm2022/tango-app-ui-manage-users.mjs +314 -95
  12. package/fesm2022/tango-app-ui-manage-users.mjs.map +1 -1
  13. package/lib/components/tango-manage-users/brand-user/brand-user.component.d.ts +4 -1
  14. package/lib/components/tango-manage-users/user-table/alert-popup/alert-popup.component.d.ts +8 -4
  15. package/lib/components-v2/chip-select/chip-select.component.d.ts +36 -0
  16. package/lib/components-v2/teams-creation/teams-creation.component.d.ts +3 -0
  17. package/lib/components-v2/teams-list/teams-list.component.d.ts +2 -0
  18. package/lib/components-v2/users-manage/users-manage.component.d.ts +3 -1
  19. package/lib/services-v2/manage-users.service.d.ts +2 -0
  20. package/lib/tango-manage-users.module.d.ts +8 -7
  21. package/package.json +1 -1
@@ -0,0 +1,178 @@
1
+ import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../services-v2/manage-users.service";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "@angular/forms";
6
+ export class ChipSelectComponent {
7
+ cd;
8
+ authService;
9
+ onClick(event) {
10
+ const target = event.target;
11
+ if (!target.closest('.dropdown')) {
12
+ this.showDropdown = false;
13
+ }
14
+ }
15
+ items;
16
+ searchField;
17
+ multi;
18
+ idField;
19
+ selectedValues = [];
20
+ disabled;
21
+ label;
22
+ badgeValue;
23
+ searchKey;
24
+ selected = new EventEmitter();
25
+ filteredValues = [];
26
+ showDropdown;
27
+ searchValue;
28
+ instanceId;
29
+ constructor(cd, authService) {
30
+ this.cd = cd;
31
+ this.authService = authService;
32
+ }
33
+ ngOnInit() {
34
+ this.instanceId = crypto.randomUUID();
35
+ this.authService.dropDownTrigger.subscribe((e) => {
36
+ if (e !== this.instanceId) {
37
+ this.showDropdown = false;
38
+ this.cd.detectChanges();
39
+ }
40
+ });
41
+ }
42
+ ngOnChanges(changes) {
43
+ if (changes['items'] && this.items?.length) {
44
+ this.initializeItems();
45
+ }
46
+ if (changes['selectedValues'] && Array.isArray(changes['selectedValues']?.currentValue)) {
47
+ this.updateSelectedValues();
48
+ }
49
+ }
50
+ initializeItems() {
51
+ this.filteredValues = this.items.map((item) => ({ ...item }));
52
+ this.updateSelectedValues();
53
+ }
54
+ updateSelectedValues() {
55
+ this.filteredValues?.forEach((filteredItem) => {
56
+ filteredItem.isSelected = false;
57
+ });
58
+ this.selectedValues?.forEach((selectedItem) => {
59
+ const item = this.filteredValues?.find((filteredItem) => filteredItem?.[this.idField] === selectedItem?.[this.idField]);
60
+ if (item) {
61
+ item.isSelected = true;
62
+ }
63
+ });
64
+ }
65
+ openDropdown(event) {
66
+ this.authService.dropDownTrigger.next(this.instanceId);
67
+ event.stopPropagation();
68
+ this.showDropdown = !this.showDropdown;
69
+ }
70
+ onInput(event) {
71
+ if (!event.target.value) {
72
+ this.filteredValues = [...this.items];
73
+ }
74
+ else {
75
+ const searchTerm = event?.target?.value.toLowerCase();
76
+ this.filteredValues = this.items?.filter((item) => this.searchField.some(field => item[field]?.toLowerCase().includes(searchTerm.toLowerCase())));
77
+ // this.filteredValues = this.items?.filter((item: any) =>
78
+ // item[this.searchField]?.toLowerCase().includes(searchTerm)
79
+ // );
80
+ }
81
+ this.updateSelectedValues();
82
+ this.cd.detectChanges();
83
+ }
84
+ onSelect(event, item) {
85
+ if (this.multi) {
86
+ if (event.currentTarget.checked) {
87
+ this.selectedValues.push(item);
88
+ }
89
+ else {
90
+ this.selectedValues = this.selectedValues.filter((elem) => elem[this.idField] !== item[this.idField]);
91
+ }
92
+ }
93
+ else {
94
+ this.selectedValues = [{ ...item }];
95
+ this.filteredValues.forEach((element) => {
96
+ if (element[this.idField] !== item[this.idField]) {
97
+ element.isSelected = false;
98
+ }
99
+ });
100
+ this.showDropdown = false;
101
+ }
102
+ const valuesToEmit = this.selectedValues.map((value) => {
103
+ const selectedItem = { ...value };
104
+ delete selectedItem.isSelected;
105
+ return selectedItem;
106
+ });
107
+ this.cd.detectChanges();
108
+ this.emitSelectedValues(valuesToEmit);
109
+ }
110
+ onSelectAll(event) {
111
+ const selectAll = event.currentTarget.checked;
112
+ this.filteredValues.forEach((item) => item.isSelected = selectAll);
113
+ if (selectAll) {
114
+ this.selectedValues = [...this.filteredValues];
115
+ }
116
+ else {
117
+ this.selectedValues = [];
118
+ }
119
+ const valuesToEmit = this.selectedValues.map((value) => {
120
+ const { isSelected, ...selectedItem } = value;
121
+ return selectedItem;
122
+ });
123
+ this.cd.detectChanges();
124
+ this.emitSelectedValues(valuesToEmit);
125
+ }
126
+ emitSelectedValues(values) {
127
+ if (this.multi) {
128
+ this.selected.emit(values);
129
+ }
130
+ else {
131
+ this.selected.emit(values[0]);
132
+ }
133
+ }
134
+ checkIfAllSelected() {
135
+ return this.filteredValues.every((item) => item.isSelected);
136
+ }
137
+ removeBadge(data, index) {
138
+ // this.removed.emit([data._id])
139
+ this.selectedValues = this.selectedValues.reduce((acc, item) => {
140
+ if (item._id !== data._id) {
141
+ acc.push(item);
142
+ }
143
+ return acc;
144
+ }, []);
145
+ this.emitSelectedValues(this.selectedValues);
146
+ this.updateSelectedValues();
147
+ }
148
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChipSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ManageUsersService }], target: i0.ɵɵFactoryTarget.Component });
149
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ChipSelectComponent, selector: "lib-chip-select", inputs: { items: "items", searchField: "searchField", multi: "multi", idField: "idField", selectedValues: "selectedValues", disabled: "disabled", label: "label", badgeValue: "badgeValue", searchKey: "searchKey" }, outputs: { selected: "selected" }, host: { listeners: { "document:click": "onClick($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"chip-box\">\r\n <div class=\"outer-container d-flex align-items-center position-relative w-100\">\r\n <div class=\"input-container form-control\">\r\n <ng-container *ngFor=\"let item of selectedValues;let i=index\">\r\n <span *ngIf=\"i <= 9\" class=\"chip\">\r\n <span class=\"me-3\">{{item?.[searchKey[0]] || item?.[searchKey[1]]}}</span>\r\n <span (click)=\"removeBadge(item,i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <span *ngIf=\"selectedValues?.length > 9\" class=\"chip\"> +{{selectedValues?.length - 9}}</span>\r\n <input style=\"min-height: 44px;\" type=\"text\" class=\"form-control dropdown-input ps-3 me-3\" [(ngModel)]=\"searchValue\" (click)=\"openDropdown($event)\" (input)=\"onInput($event)\" id=\"searchInput\">\r\n </div>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-chip dropdown\" >\r\n <!-- <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div> -->\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" for=\"selectAll\">\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n id=\"selectAll\">\r\n <span class=\"form-check-label\">\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n <!-- {{item[searchKey[0]] || item?.[searchKey[1]]}} -->\r\n {{item[searchField[0] || item?.[searchField[1]]]}}\r\n </span> <span class=\"badge-value ms-5\">\r\n {{item[badgeValue]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>", styles: [":host{width:100%;height:100%}.chip-box{position:relative;background-color:#fff}.chip-box .form-select{font-size:1.1rem;font-weight:600;border-radius:8px!important;color:var(--Gray-500, #344054);border:1px solid var(--Gray-300, #D0D5DD)!important;min-height:42.5px;max-height:300px!important}.chip-box .disable-input{pointer-events:none;background-color:#f9fafb!important}.chip-box .input-chip{position:absolute;width:100%;z-index:1}.chip-box .input-chip .input-wrapper{padding:8px 10px;background-color:#fff;border-top-right-radius:8px;border-top-left-radius:8px;border-top:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.chip-box .input-chip .input-wrapper input{width:100%;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;padding:10px 14px 10px 30px;outline:none}.chip-box .input-chip .input-wrapper input ::placeholder{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.chip-box .input-chip .input-wrapper .search-icon{position:absolute;left:20px;top:20px}.chip-box .input-chip ul{position:relative;background-color:#fff;margin:0;padding:0;max-height:200px;min-height:auto;overflow-y:auto;border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-bottom:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.chip-box .input-chip ul .selected{background:#f9fafb}.chip-box .input-chip ul li{list-style:none;padding:10px 16px;cursor:pointer}.chip-box .input-chip ul li label{cursor:pointer}.chip-box .input-chip ul li:hover{background:#f9fafb}.outer-container{position:relative}.outer-container .form-control{padding-top:0;padding-bottom:0}.outer-container .input-container{min-height:auto;max-height:100px!important;overflow:auto;width:100%;display:flex;flex-wrap:wrap}.outer-container .input-container input{all:unset;flex:1;min-width:50px}.outer-container .input-container .chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .chip:nth-child(1){margin-left:0}.form-check{display:flex;align-items:center}.form-check-input{height:16px;width:16px;border-radius:4px;border:1px solid var(--Primary-600, #00A3FF)}.form-check-input:checked{--bs-form-check-bg-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAB4SURBVHgBhY7NDUBQEIRnqcJNKXTg6qYTStCB+Isy6IQSNMDa9SLh5eWZZPcw+81kCX/quABhD73QyKXsGoyIvNCJSto2hEhNtY4N9cwYeMXEsVqB1GaSauRQOpty2tSmO3FgloAmF5nEhgyoesMO6CuFW66fn2xdFyA3ZzcRLrMAAAAASUVORK5CYII=);background-color:#eaf8ff;border-color:#00a3ff}.form-check-label{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.badge-value{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
150
+ }
151
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChipSelectComponent, decorators: [{
152
+ type: Component,
153
+ args: [{ selector: 'lib-chip-select', template: "<div class=\"chip-box\">\r\n <div class=\"outer-container d-flex align-items-center position-relative w-100\">\r\n <div class=\"input-container form-control\">\r\n <ng-container *ngFor=\"let item of selectedValues;let i=index\">\r\n <span *ngIf=\"i <= 9\" class=\"chip\">\r\n <span class=\"me-3\">{{item?.[searchKey[0]] || item?.[searchKey[1]]}}</span>\r\n <span (click)=\"removeBadge(item,i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <span *ngIf=\"selectedValues?.length > 9\" class=\"chip\"> +{{selectedValues?.length - 9}}</span>\r\n <input style=\"min-height: 44px;\" type=\"text\" class=\"form-control dropdown-input ps-3 me-3\" [(ngModel)]=\"searchValue\" (click)=\"openDropdown($event)\" (input)=\"onInput($event)\" id=\"searchInput\">\r\n </div>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-chip dropdown\" >\r\n <!-- <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div> -->\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" for=\"selectAll\">\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n id=\"selectAll\">\r\n <span class=\"form-check-label\">\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n <!-- {{item[searchKey[0]] || item?.[searchKey[1]]}} -->\r\n {{item[searchField[0] || item?.[searchField[1]]]}}\r\n </span> <span class=\"badge-value ms-5\">\r\n {{item[badgeValue]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>", styles: [":host{width:100%;height:100%}.chip-box{position:relative;background-color:#fff}.chip-box .form-select{font-size:1.1rem;font-weight:600;border-radius:8px!important;color:var(--Gray-500, #344054);border:1px solid var(--Gray-300, #D0D5DD)!important;min-height:42.5px;max-height:300px!important}.chip-box .disable-input{pointer-events:none;background-color:#f9fafb!important}.chip-box .input-chip{position:absolute;width:100%;z-index:1}.chip-box .input-chip .input-wrapper{padding:8px 10px;background-color:#fff;border-top-right-radius:8px;border-top-left-radius:8px;border-top:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.chip-box .input-chip .input-wrapper input{width:100%;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;padding:10px 14px 10px 30px;outline:none}.chip-box .input-chip .input-wrapper input ::placeholder{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.chip-box .input-chip .input-wrapper .search-icon{position:absolute;left:20px;top:20px}.chip-box .input-chip ul{position:relative;background-color:#fff;margin:0;padding:0;max-height:200px;min-height:auto;overflow-y:auto;border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-bottom:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.chip-box .input-chip ul .selected{background:#f9fafb}.chip-box .input-chip ul li{list-style:none;padding:10px 16px;cursor:pointer}.chip-box .input-chip ul li label{cursor:pointer}.chip-box .input-chip ul li:hover{background:#f9fafb}.outer-container{position:relative}.outer-container .form-control{padding-top:0;padding-bottom:0}.outer-container .input-container{min-height:auto;max-height:100px!important;overflow:auto;width:100%;display:flex;flex-wrap:wrap}.outer-container .input-container input{all:unset;flex:1;min-width:50px}.outer-container .input-container .chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .chip:nth-child(1){margin-left:0}.form-check{display:flex;align-items:center}.form-check-input{height:16px;width:16px;border-radius:4px;border:1px solid var(--Primary-600, #00A3FF)}.form-check-input:checked{--bs-form-check-bg-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAB4SURBVHgBhY7NDUBQEIRnqcJNKXTg6qYTStCB+Isy6IQSNMDa9SLh5eWZZPcw+81kCX/quABhD73QyKXsGoyIvNCJSto2hEhNtY4N9cwYeMXEsVqB1GaSauRQOpty2tSmO3FgloAmF5nEhgyoesMO6CuFW66fn2xdFyA3ZzcRLrMAAAAASUVORK5CYII=);background-color:#eaf8ff;border-color:#00a3ff}.form-check-label{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.badge-value{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}\n"] }]
154
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ManageUsersService }], propDecorators: { onClick: [{
155
+ type: HostListener,
156
+ args: ['document:click', ['$event']]
157
+ }], items: [{
158
+ type: Input
159
+ }], searchField: [{
160
+ type: Input
161
+ }], multi: [{
162
+ type: Input
163
+ }], idField: [{
164
+ type: Input
165
+ }], selectedValues: [{
166
+ type: Input
167
+ }], disabled: [{
168
+ type: Input
169
+ }], label: [{
170
+ type: Input
171
+ }], badgeValue: [{
172
+ type: Input
173
+ }], searchKey: [{
174
+ type: Input
175
+ }], selected: [{
176
+ type: Output
177
+ }] } });
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXVzZXJzL3NyYy9saWIvY29tcG9uZW50cy12Mi9jaGlwLXNlbGVjdC9jaGlwLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2UtdXNlcnMvc3JjL2xpYi9jb21wb25lbnRzLXYyL2NoaXAtc2VsZWN0L2NoaXAtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBOEMsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7OztBQVFuSyxNQUFNLE9BQU8sbUJBQW1CO0lBMkJSO0lBQStCO0lBeEJuRCxPQUFPLENBQUMsS0FBaUI7UUFDdkIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRVEsS0FBSyxDQUFLO0lBQ1YsV0FBVyxDQUFNO0lBQ2pCLEtBQUssQ0FBUztJQUNkLE9BQU8sQ0FBUTtJQUNmLGNBQWMsR0FBUSxFQUFFLENBQUE7SUFDeEIsUUFBUSxDQUFxQjtJQUM3QixLQUFLLENBQVE7SUFDYixVQUFVLENBQVE7SUFDbEIsU0FBUyxDQUFNO0lBRWQsUUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUE7SUFDNUMsY0FBYyxHQUFRLEVBQUUsQ0FBQTtJQUN4QixZQUFZLENBQVM7SUFDckIsV0FBVyxDQUFRO0lBQ25CLFVBQVUsQ0FBTTtJQUdoQixZQUFvQixFQUFxQixFQUFVLFdBQStCO1FBQTlELE9B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Q29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hbmFnZVVzZXJzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzLXYyL21hbmFnZS11c2Vycy5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNoaXAtc2VsZWN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hpcC1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jaGlwLXNlbGVjdC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENoaXBTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICAgIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcuZHJvcGRvd24nKSkge1xyXG4gICAgICAgIHRoaXMuc2hvd0Ryb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgXHJcbiAgICBASW5wdXQoKSBpdGVtczogYW55XHJcbiAgICBASW5wdXQoKSBzZWFyY2hGaWVsZDphbnlbXVxyXG4gICAgQElucHV0KCkgbXVsdGk6IGJvb2xlYW5cclxuICAgIEBJbnB1dCgpIGlkRmllbGQ6IHN0cmluZ1xyXG4gICAgQElucHV0KCkgc2VsZWN0ZWRWYWx1ZXM6IGFueSA9IFtdXHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZFxyXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZ1xyXG4gICAgQElucHV0KCkgYmFkZ2VWYWx1ZTogc3RyaW5nXHJcbiAgICBASW5wdXQoKSBzZWFyY2hLZXk6IGFueTtcclxuICAgXHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxyXG4gICAgZmlsdGVyZWRWYWx1ZXM6IGFueSA9IFtdXHJcbiAgICBzaG93RHJvcGRvd246IGJvb2xlYW5cclxuICAgIHNlYXJjaFZhbHVlOiBzdHJpbmdcclxuICAgIGluc3RhbmNlSWQ6IGFueTtcclxuICAgXHJcbiAgIFxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgYXV0aFNlcnZpY2U6IE1hbmFnZVVzZXJzU2VydmljZSkgeyB9XHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgdGhpcy5pbnN0YW5jZUlkID0gY3J5cHRvLnJhbmRvbVVVSUQoKTtcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5kcm9wRG93blRyaWdnZXIuc3Vic2NyaWJlKChlKT0+eyAgICAgICAgICAgXHJcbiAgICAgICAgaWYoZSAhPT0gdGhpcy5pbnN0YW5jZUlkKXsgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5zaG93RHJvcGRvd24gPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgIFxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICBcclxuICAgICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10gJiYgdGhpcy5pdGVtcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplSXRlbXMoKTtcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICBpZiAoY2hhbmdlc1snc2VsZWN0ZWRWYWx1ZXMnXSAmJiBBcnJheS5pc0FycmF5KGNoYW5nZXNbJ3NlbGVjdGVkVmFsdWVzJ10/LmN1cnJlbnRWYWx1ZSkpIHsgICAgICAgICAgICBcclxuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWVzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgXHJcbiAgICBpbml0aWFsaXplSXRlbXMoKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMgPSB0aGlzLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoeyAuLi5pdGVtIH0pKTtcclxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlcygpXHJcbiAgICB9XHJcbiAgIFxyXG4gICAgdXBkYXRlU2VsZWN0ZWRWYWx1ZXMoKSB7IFxyXG4gICAgICB0aGlzLmZpbHRlcmVkVmFsdWVzPy5mb3JFYWNoKChmaWx0ZXJlZEl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGZpbHRlcmVkSXRlbS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gIFxyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzPy5mb3JFYWNoKChzZWxlY3RlZEl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbHRlcmVkVmFsdWVzPy5maW5kKChmaWx0ZXJlZEl0ZW06IGFueSkgPT4gZmlsdGVyZWRJdGVtPy5bdGhpcy5pZEZpZWxkXSA9PT0gc2VsZWN0ZWRJdGVtPy5bdGhpcy5pZEZpZWxkXSk7XHJcbiAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgXHJcbiAgICBvcGVuRHJvcGRvd24oZXZlbnQ6IGFueSkge1xyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmRyb3BEb3duVHJpZ2dlci5uZXh0KHRoaXMuaW5zdGFuY2VJZClcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIHRoaXMuc2hvd0Ryb3Bkb3duID0gIXRoaXMuc2hvd0Ryb3Bkb3duO1xyXG4gICAgfVxyXG4gICBcclxuICAgIG9uSW5wdXQoZXZlbnQ6IGFueSkge1xyXG4gICAgICBpZiAoIWV2ZW50LnRhcmdldC52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMgPSBbLi4udGhpcy5pdGVtc107XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgc2VhcmNoVGVybSA9IGV2ZW50Py50YXJnZXQ/LnZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlcyA9IHRoaXMuaXRlbXM/LmZpbHRlcigoaXRlbTogYW55KSA9PiBcclxuICAgICAgICAgIHRoaXMuc2VhcmNoRmllbGQuc29tZShmaWVsZCA9PiBpdGVtW2ZpZWxkXT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gdGhpcy5maWx0ZXJlZFZhbHVlcyA9IHRoaXMuaXRlbXM/LmZpbHRlcigoaXRlbTogYW55KSA9PlxyXG4gICAgICAgIC8vICAgaXRlbVt0aGlzLnNlYXJjaEZpZWxkXT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtKVxyXG4gICAgICAgIC8vICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlcygpO1xyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgXHJcbiAgICBvblNlbGVjdChldmVudDogYW55LCBpdGVtOiBhbnkpIHsgICAgXHJcbiAgICAgIGlmICh0aGlzLm11bHRpKSB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmN1cnJlbnRUYXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcy5wdXNoKGl0ZW0gKTsgICAgICAgIFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gdGhpcy5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoKGVsZW06IGFueSkgPT4gZWxlbVt0aGlzLmlkRmllbGRdICE9PSBpdGVtW3RoaXMuaWRGaWVsZF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gW3sgLi4uaXRlbSB9XTtcclxuICAgICAgICB0aGlzLmZpbHRlcmVkVmFsdWVzLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XHJcbiAgICAgICAgICBpZihlbGVtZW50W3RoaXMuaWRGaWVsZF0gIT09IGl0ZW1bdGhpcy5pZEZpZWxkXSl7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuaXNTZWxlY3RlZCA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zaG93RHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB2YWx1ZXNUb0VtaXQgPSB0aGlzLnNlbGVjdGVkVmFsdWVzLm1hcCgodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHsgLi4udmFsdWUgfTtcclxuICAgICAgICBkZWxldGUgc2VsZWN0ZWRJdGVtLmlzU2VsZWN0ZWQ7XHJcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkSXRlbTtcclxuICAgICAgfSk7XHJcbiAgIFxyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5lbWl0U2VsZWN0ZWRWYWx1ZXModmFsdWVzVG9FbWl0KTtcclxuICAgXHJcbiAgICB9XHJcbiAgIFxyXG4gICAgb25TZWxlY3RBbGwoZXZlbnQ6IGFueSkge1xyXG4gICAgICBjb25zdCBzZWxlY3RBbGwgPSBldmVudC5jdXJyZW50VGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiBpdGVtLmlzU2VsZWN0ZWQgPSBzZWxlY3RBbGwpO1xyXG4gICBcclxuICAgICAgaWYgKHNlbGVjdEFsbCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbLi4udGhpcy5maWx0ZXJlZFZhbHVlc107XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IFtdO1xyXG4gICAgICB9XHJcbiAgIFxyXG4gICAgICBjb25zdCB2YWx1ZXNUb0VtaXQgPSB0aGlzLnNlbGVjdGVkVmFsdWVzLm1hcCgodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgaXNTZWxlY3RlZCwgLi4uc2VsZWN0ZWRJdGVtIH0gPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRJdGVtO1xyXG4gICAgICB9KTtcclxuICAgXHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmVtaXRTZWxlY3RlZFZhbHVlcyh2YWx1ZXNUb0VtaXQpO1xyXG4gICAgfVxyXG4gICBcclxuICAgXHJcbiAgICBlbWl0U2VsZWN0ZWRWYWx1ZXModmFsdWVzOiBhbnlbXSkge1xyXG4gICAgICBpZiAodGhpcy5tdWx0aSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh2YWx1ZXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh2YWx1ZXNbMF0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgIFxyXG4gICAgY2hlY2tJZkFsbFNlbGVjdGVkKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFZhbHVlcy5ldmVyeSgoaXRlbTogYW55KSA9PiBpdGVtLmlzU2VsZWN0ZWQpO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgcmVtb3ZlQmFkZ2UoZGF0YTphbnksIGluZGV4OmFueSkge1xyXG4gICAgICAvLyB0aGlzLnJlbW92ZWQuZW1pdChbZGF0YS5faWRdKVxyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gdGhpcy5zZWxlY3RlZFZhbHVlcy5yZWR1Y2UoKGFjYzogYW55W10sIGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLl9pZCAhPT0gZGF0YS5faWQpIHtcclxuICAgICAgICAgICAgYWNjLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhY2M7XHJcbiAgICB9LCBbXSk7XHJcbiAgICAgIHRoaXMuZW1pdFNlbGVjdGVkVmFsdWVzKHRoaXMuc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWVzKCk7XHJcbiAgICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjaGlwLWJveFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm91dGVyLWNvbnRhaW5lciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIHctMTAwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lciBmb3JtLWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZFZhbHVlcztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpIDw9IDlcIiBjbGFzcz1cImNoaXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTNcIj57e2l0ZW0/LltzZWFyY2hLZXlbMF1dIHx8IGl0ZW0/LltzZWFyY2hLZXlbMV1dfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInJlbW92ZUJhZGdlKGl0ZW0saSlcIj48c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgM0wzIDlNMyAzTDkgOVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRWYWx1ZXM/Lmxlbmd0aCA+IDlcIiBjbGFzcz1cImNoaXBcIj4gK3t7c2VsZWN0ZWRWYWx1ZXM/Lmxlbmd0aCAtIDl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwibWluLWhlaWdodDogNDRweDtcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGRyb3Bkb3duLWlucHV0IHBzLTMgbWUtM1wiIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiAoY2xpY2spPVwib3BlbkRyb3Bkb3duKCRldmVudClcIiAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCIgaWQ9XCJzZWFyY2hJbnB1dFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInNob3dEcm9wZG93biA/ICcnIDogJ2Qtbm9uZSdcIiBjbGFzcz1cImlucHV0LWNoaXAgZHJvcGRvd25cIiA+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInctMTAwIGlucHV0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCIgdHlwZT1cInRleHRcIj4gIFxyXG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwic2VhcmNoLWljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE3XCIgdmlld0JveD1cIjAgMCAxNiAxN1wiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0IDE0LjVMMTEuMSAxMS42TTEyLjY2NjcgNy44MzMzM0MxMi42NjY3IDEwLjc3ODkgMTAuMjc4OSAxMy4xNjY3IDcuMzMzMzMgMTMuMTY2N0M0LjM4NzgxIDEzLjE2NjcgMiAxMC43Nzg5IDIgNy44MzMzM0MyIDQuODg3ODEgNC4zODc4MSAyLjUgNy4zMzMzMyAyLjVDMTAuMjc4OSAyLjUgMTIuNjY2NyA0Ljg4NzgxIDEyLjY2NjcgNy44MzMzM1pcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICA8L3N2Zz4gIFxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICA8bGkgKm5nSWY9XCJtdWx0aSAmJiBmaWx0ZXJlZFZhbHVlcz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrXCIgZm9yPVwic2VsZWN0QWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IChjaGFuZ2UpPVwib25TZWxlY3RBbGwoJGV2ZW50KVwiIFtjaGVja2VkXT1cImNoZWNrSWZBbGxTZWxlY3RlZCgpXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTNcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInNlbGVjdEFsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgQWxsXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbHRlcmVkVmFsdWVzXCIgW25nQ2xhc3NdPVwiaXRlbS5pc1NlbGVjdGVkICYmICFtdWx0aSA/ICdzZWxlY3RlZCcgOiAnJ1wiID5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIml0ZW1baWRGaWVsZF0gKyBpbnN0YW5jZUlkXCIgW25nQ2xhc3NdPVwibXVsdGkgID8gJyc6ICdwcy0wJ1wiIGNsYXNzPVwiZm9ybS1jaGVja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbbmdDbGFzc109XCJtdWx0aSAgPyAnJzogJ2Qtbm9uZSdcIiAoY2hhbmdlKT1cIm9uU2VsZWN0KCRldmVudCwgaXRlbSlcIiBbKG5nTW9kZWwpXT1cIml0ZW0uaXNTZWxlY3RlZFwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0zXCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaXRlbVtpZEZpZWxkXSArIGluc3RhbmNlSWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0ge3tpdGVtW3NlYXJjaEtleVswXV0gfHwgaXRlbT8uW3NlYXJjaEtleVsxXV19fSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbVtzZWFyY2hGaWVsZFswXSB8fCBpdGVtPy5bc2VhcmNoRmllbGRbMV1dXX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiAgPHNwYW4gY2xhc3M9XCJiYWRnZS12YWx1ZSBtcy01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbVtiYWRnZVZhbHVlXX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPGxpICpuZ0lmPVwiIWZpbHRlcmVkVmFsdWVzPy5sZW5ndGhcIiA+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiID5ObyBkYXRhIGZvdW5kPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+ICBcclxuICAgIDwvZGl2PiAgXHJcbiAgIFxyXG48L2Rpdj4iXX0=