verben-authentication-ui 1.0.27 → 1.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/src/lib/components/forgot-password/forgot-password.component.mjs +2 -2
- package/esm2022/src/lib/components/reset-password/reset-password.component.mjs +2 -2
- package/esm2022/src/lib/components/role-control/role-control.component.mjs +15 -15
- package/esm2022/src/lib/components/sign-in/sign-in.component.mjs +4 -4
- package/esm2022/src/lib/components/sign-up/sign-up.component.mjs +2 -2
- package/esm2022/src/lib/components/two-factor-auth-otp/two-factor-auth-otp.component.mjs +3 -3
- package/esm2022/src/lib/components/user-management/services/user-management.service.mjs +7 -7
- package/esm2022/src/lib/components/user-management/user-management.component.mjs +10 -6
- package/esm2022/src/lib/components/user-management/user-management.module.mjs +7 -6
- package/esm2022/src/lib/components/user-request/user-request.component.mjs +4 -4
- package/esm2022/src/lib/components/user-request-approval/services/user-access-request.service.mjs +3 -3
- package/fesm2022/verben-authentication-ui-src-lib-components-forgot-password.mjs +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-forgot-password.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-reset-password.mjs +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-reset-password.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-role-control.mjs +14 -14
- package/fesm2022/verben-authentication-ui-src-lib-components-role-control.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-sign-in.mjs +3 -3
- package/fesm2022/verben-authentication-ui-src-lib-components-sign-in.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-sign-up.mjs +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-sign-up.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-two-factor-auth-otp.mjs +2 -2
- package/fesm2022/verben-authentication-ui-src-lib-components-two-factor-auth-otp.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-user-management.mjs +16 -11
- package/fesm2022/verben-authentication-ui-src-lib-components-user-management.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-user-request-approval.mjs +2 -2
- package/fesm2022/verben-authentication-ui-src-lib-components-user-request-approval.mjs.map +1 -1
- package/fesm2022/verben-authentication-ui-src-lib-components-user-request.mjs +3 -3
- package/fesm2022/verben-authentication-ui-src-lib-components-user-request.mjs.map +1 -1
- package/package.json +30 -30
- package/src/lib/components/user-management/user-management.component.d.ts +1 -0
|
@@ -114,7 +114,7 @@ export class UserManagementComponent {
|
|
|
114
114
|
this.dataFit = response;
|
|
115
115
|
this.users = [...this.users, ...response.Result];
|
|
116
116
|
this.cardData = this.formatCardData(this.users);
|
|
117
|
-
this.skip
|
|
117
|
+
this.skip = response.Skip;
|
|
118
118
|
this.hasMore = this.skip < response.Total;
|
|
119
119
|
}
|
|
120
120
|
}
|
|
@@ -399,7 +399,7 @@ export class UserManagementComponent {
|
|
|
399
399
|
}
|
|
400
400
|
async postSearch(payload) {
|
|
401
401
|
this.utilService.sendBI(true);
|
|
402
|
-
const res = await this.server.post(`
|
|
402
|
+
const res = await this.server.post(`SearchUsers/0/10/CreatedAt/asc`, payload);
|
|
403
403
|
this.utilService.sendBI(false);
|
|
404
404
|
if (res instanceof ErrorResponse) {
|
|
405
405
|
this.appliedFilters = false;
|
|
@@ -459,7 +459,7 @@ export class UserManagementComponent {
|
|
|
459
459
|
this.isLoading = true;
|
|
460
460
|
this.utilService.sendBI(true);
|
|
461
461
|
try {
|
|
462
|
-
const res = await this.server.get(`
|
|
462
|
+
const res = await this.server.get(`GetUserWithParam/${this.searchTerm}/${this.skip}/${this.pageSize}/CreatedAt/asc`);
|
|
463
463
|
this.utilService.sendBI(false);
|
|
464
464
|
if (res instanceof ErrorResponse) {
|
|
465
465
|
console.error('Error during search:', res);
|
|
@@ -508,12 +508,16 @@ export class UserManagementComponent {
|
|
|
508
508
|
// }
|
|
509
509
|
}
|
|
510
510
|
}
|
|
511
|
+
getRoleName(roleId) {
|
|
512
|
+
const role = this.Roles.find((role) => role.Code === roleId);
|
|
513
|
+
return role ? role.Name : '';
|
|
514
|
+
}
|
|
511
515
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserManagementComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.UserManagementService }, { token: i3.UserAccessRequestService }, { token: i4.HttpWebRequestService }, { token: i4.UtilService }, { token: i4.EnvironmentService }, { token: i5.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
512
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserManagementComponent, selector: "lib-user-management", inputs: { searchDebounceTime: "searchDebounceTime", pageSize: "pageSize" }, viewQueries: [{ propertyName: "cardDataView", first: true, predicate: ["vdcv"], descendants: true }, { propertyName: "dataView", first: true, predicate: ["vdv"], descendants: true }, { propertyName: "childComponent", first: true, predicate: UserManagementFormComponent, descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col gap-4 message-log-container\">\n <verben-data-view\n #vdv\n [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n\n isToggle: true\n }\"\n [buttonClass]=\"'my-custom-button-class'\"\n [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\"\n [selectedColumnCount]=\"selectedColumnCount\"\n [selectedSortCount]=\"selectedSortCount\"\n [selectedFilterTableCount]=\"selectedFilterTableCount\"\n (onSearchChange)=\"onSearch($event)\"\n [searchValue]=\"searchTerm\"\n [showFilterChild]=\"showFilter\"\n (viewChange)=\"onViewChange($event)\"\n (stateChange)=\"onStateChange($event)\"\n [isTableView]=\"false\"\n >\n <div class=\"mt-2\" table-content>\n <lib-data-table\n [data]=\"users\"\n [columns]=\"filteredColumns\"\n [formGroupConfig]=\"formGroupConfig()\"\n [styleConfig]=\"styles\"\n (selectionChange)=\"onSelectionChange($event)\"\n (rowSave)=\"onDataSave($event)\"\n >\n <ng-container libColumn=\"select\">\n <ng-template\n #cell\n let-isSelected=\"isSelected\"\n let-toggleRowSelection=\"toggleRowSelection\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isSelected\"\n (change)=\"toggleRowSelection()\"\n />\n </ng-template>\n <ng-template\n #header\n let-allRowsSelected=\"allRowsSelected\"\n let-someRowsSelected=\"someRowsSelected\"\n let-toggleAllRows=\"toggleAllRows\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"allRowsSelected()\"\n [indeterminate]=\"someRowsSelected()\"\n (change)=\"toggleAllRows()\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"createdAt\">\n <ng-template #cell let-value>\n {{ value | date }}\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"user\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verbena-input\n name=\"FirstName\"\n type=\"text\"\n [formControl]=\"formControl\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"mail\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verbena-input\n name=\"MailAddress\"\n type=\"email\"\n [formControl]=\"formControl\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"phone\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verbena-input\n name=\"PhoneNumber\"\n type=\"tel\"\n [formControl]=\"formControl\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"address\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verbena-input\n name=\"Address\"\n type=\"text\"\n [formControl]=\"formControl\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"role\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verben-drop-down\n name=\"Role\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [filter]=\"true\"\n [showClear]=\"true\"\n placeholder=\"\"\n [(options)]=\"Roles\"\n id=\"role\"\n optionLabel=\"Name\"\n optionValue=\"Code\"\n [formControl]=\"formControl\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n <ng-template\n #cellEdit\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"toggleRowEdit()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <!-- <verben-svg\n icon=\"cardViewAlt\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n (click)=\"goToCardView(value)\"\n ></verben-svg> -->\n </div>\n </ng-template>\n <ng-template #header>\n <strong>Actions</strong>\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"status\">\n <ng-template\n #cell\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-deleteRow=\"deleteRow\"\n let-value=\"value\"\n >\n <lib-user-status-badge [status]=\"value\"></lib-user-status-badge>\n </ng-template>\n\n <ng-template\n #cellEdit\n let-rowIndex=\"rowIndex\"\n let-formControl=\"formControl\"\n >\n <verben-drop-down\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Set status\"\n [options]=\"statuses\"\n [formControl]=\"formControl\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n <div card-content>\n <verben-card-data-view\n borderRadius=\"12px\"\n (loadMoreClick)=\"loadMore()\"\n #vdcv\n dataId=\"MailAddress\"\n border=\"5px\"\n [cardDataList]=\"cardData\"\n rbgColor=\"#f5f6f9\"\n mg=\"0px\"\n class=\"gap-1\"\n >\n <verben-left-card-data-view class=\"m-0 gap-2\">\n <verben-left-card-data\n #vlcd\n [parent]=\"vdcv\"\n dataId=\"MailAddress\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\"\n [cardDataList]=\"cardData\"\n >\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <verben-svg\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"vlcd.showChildren(item)\"\n [ngClass]=\"vlcd.showToggle(item) ? 'visible' : 'invisible'\"\n class=\"items-center flex cursor-pointer\"\n [icon]=\"item.isChildrenExpanded ? 'minus' : 'plus'\"\n />\n <div\n (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\"\n >\n <div\n class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"\n ></div>\n <div class=\"flex-1 flex items-end gap-y-2 gap-x-4 p-4\">\n <div class=\"flex-1 space-y-2\">\n <span\n class=\"font-semibold text-[#404040] flex-1 truncate\"\n >{{ item.title }}</span\n >\n\n <p class=\"flex items-center my-1\">\n <label for=\"phone\" class=\"text-[10px] font-light\"\n >Role:</label\n >\n <span id=\"phone\" class=\"text-sm truncate\">{{\n item.data.Role?.Name\n }}</span>\n </p>\n </div>\n\n <div class=\"grid gap-y-1\">\n <p class=\"grid\">\n <!-- <label\n for=\"role\"\n class=\"text-[10px] font-light text-[#404040]\"\n >Role</label\n >\n <span id=\"role\" class=\"text-sm font-medium\">{{\n item.data?.Role?.Name\n }}</span> -->\n </p>\n\n <lib-user-status-badge\n [status]=\"item.data.Status\"\n ></lib-user-status-badge>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <div class=\"bg-secondary-100 py-2 flex flex-col gap-20 px-2\">\n <lib-user-request-form\n [roles]=\"Roles\"\n [tags]=\"Tags()\"\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n ></lib-user-request-form>\n <div class=\"flex justify-end bottom-8 left-0 right-0 p-3\">\n <!-- <verbena-button text=\"Delete\" bgColor=\"#999999\" textColor=\"white\"\n border=\"1px solid #999999\" (click)=\"onDelete()\"></verbena-button> -->\n <div class=\"flex gap-3\">\n <verbena-button\n (click)=\"vdv.toggleView()\"\n text=\"Switch To Table\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n <verbena-button\n text=\"Save\"\n bgColor=\"#FFE681\"\n (click)=\"onSave()\"\n textColor=\"#404040\"\n border=\"1px solid #FFE681\"\n >\n <!-- (click)=\"\" -->\n </verbena-button>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div\n [ngClass]=\"{\n 'flex gap-2 items-center': true,\n 'justify-end': true,\n }\"\n >\n <!-- <verbena-button\n *ngIf=\"!vdcv.hasCurrentItem()\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n <div\n class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\"\n >\n <span class=\"paginator-text\"\n >{{ cardData.length }} records loaded</span\n >\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <verben-visible-column\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n [columns]=\"visibleColumns\"\n [displayedColumns]=\"5\"\n ></verben-visible-column>\n </div>\n <div filter-content>\n <verben-table-filter\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"420px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"\n (filtersApplied)=\"onFilterApplied($event)\"\n ></verben-table-filter>\n </div>\n <div sort-content>\n <verben-sort-table\n (selectedOptions)=\"onSortUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [enableDragAndDrop]=\"true\"\n [sortOptions]=\"sortOptions\"\n ></verben-sort-table>\n </div>\n <div export-content>\n <lib-data-xport\n [columns]=\"allColumns\"\n [data]=\"users\"\n >\n </lib-data-xport>\n </div>\n </verben-data-view>\n <div\n *ngIf=\"!vdcv.hasCurrentItem() && this.cardContextHistory.length == 0\"\n class=\"message-log-button-container flex justify-between\"\n ></div>\n\n <div *ngIf=\"vdv.isTableView\" class=\"w-full flex gap-2 justify-end\">\n <!-- <div class=\"message-log-button-container flex justify-between\">\n <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button>\n </div> -->\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData.length }} records loaded</span>\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n</div>\n", styles: ["*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:currentColor}:before,:after{--tw-content: \"\"}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-8{bottom:2rem}.left-0{left:0}.right-0{right:0}.float-right{float:right}.m-0{margin:0}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-0{margin-bottom:0}.mb-2{margin-bottom:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-\\[100\\%\\]{height:100%}.h-\\[max-content\\]{height:-moz-max-content;height:max-content}.h-full{height:100%}.w-3{width:.75rem}.w-full{width:100%}.flex-1{flex:1 1 0%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-20{gap:5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-7>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.75rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-all{word-break:break-all}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-br-none{border-bottom-right-radius:0}.rounded-tr-none{border-top-right-radius:0}.border,.border-\\[1px\\]{border-width:1px}.border-primary{--tw-border-opacity: 1;border-color:rgb(212 160 7 / var(--tw-border-opacity, 1))}.border-secondary-200{border-color:#d7dbe6}.bg-primary{--tw-bg-opacity: 1;background-color:rgb(212 160 7 / var(--tw-bg-opacity, 1))}.bg-secondary{--tw-bg-opacity: 1;background-color:rgb(232 234 241 / var(--tw-bg-opacity, 1))}.bg-secondary-100{--tw-bg-opacity: 1;background-color:rgb(245 246 249 / var(--tw-bg-opacity, 1))}.bg-secondary-200{background-color:#d7dbe6}.p-3{padding:.75rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pr-1{padding-right:.25rem}.\\!text-\\[10px\\]{font-size:10px!important}.text-\\[10px\\]{font-size:10px}.text-\\[12px\\]{font-size:12px}.text-\\[22px\\]{font-size:22px}.text-\\[24px\\]{font-size:24px}.text-\\[2rem\\]{font-size:2rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.lowercase{text-transform:lowercase}.leading-6{line-height:1.5rem}.leading-\\[12\\.1px\\]{line-height:12.1px}.leading-\\[16\\.6px\\]{line-height:16.6px}.leading-\\[19\\.5px\\]{line-height:19.5px}.leading-\\[29\\.05px\\]{line-height:29.05px}.leading-\\[33px\\]{line-height:33px}.leading-\\[48px\\]{line-height:48px}.text-\\[\\#333\\]{--tw-text-opacity: 1;color:rgb(51 51 51 / var(--tw-text-opacity, 1))}.text-\\[\\#3479E9\\]{--tw-text-opacity: 1;color:rgb(52 121 233 / var(--tw-text-opacity, 1))}.text-\\[\\#404040\\]{--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.text-\\[black\\]{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-muted{color:#0009}.underline{text-decoration-line:underline}.outline-none{outline:2px solid transparent;outline-offset:2px}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.master-only-contanier{margin-top:0!important}.scroll-no::-webkit-scrollbar{width:4px}.scroll-no::-webkit-scrollbar-thumb{background:gray}.justify-pp{justify-content:start!important;margin-top:0!important}.toolbar{margin:0!important}@media screen and (max-width: 1024px){.scroll-no{padding:5px}}.view-links{color:#3479e9;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.DataTableComponent, selector: "lib-data-table", inputs: ["data", "columns", "dataKey", "formGroupConfig", "groupBy", "useVirtualScroll", "virtualScrollItemSize", "styleConfig"], outputs: ["rowEdit", "rowSave", "rowRevert", "rowDelete", "selectionChange"] }, { kind: "directive", type: i7.ColumnDirective, selector: "[libColumn]", inputs: ["libColumn"] }, { kind: "component", type: i7.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }, { kind: "component", type: i7.DataViewComponent, selector: "verben-data-view", inputs: ["buttonClass", "iconClass", "activeIconClass", "columnCustomClass", "filterCustomClass", "sortCustomClass", "extendCustomClass", "exportCustomClass", "selectCustomClass", "importCustomClass", "zIndex", "createCustomClass", "tableIcon", "cardIcon", "cardClass", "tableClass", "searchKey", "searchValue", "viewState", "searchTemplate", "importTemplate", "columnTemplate", "extendTemplate", "filterTemplate", "sortTemplate", "children", "exportTemplate", "createTemplate", "selectedColumnCount", "selectedSortCount", "selectedFilterTableCount", "inputWidth", "milliseconds", "showColumnChild", "showSortChild", "showFilterChild", "showImportChild", "showExportChild", "showExtendChild", "create", "showSelected", "isTableView"], outputs: ["viewChange", "stateChange", "onSearchChange"] }, { kind: "component", type: i7.CardDataViewComponent, selector: "verben-card-data-view", inputs: ["pd", "mg", "lHeight", "rHeight", "rWidth", "lWidth", "textColor", "lbgColor", "rbgColor", "border", "display", "borderRadius", "activeCss", "inActiveCss", "displayAsRow", "cardDataList", "dataId", "totalRecords", "footer", "noOfVisibleChildren", "showEditIcon", "onItemClick", "onCardChildClick"], outputs: ["editClicked", "loadMoreClick"] }, { kind: "component", type: i7.LeftCardDataComponent, selector: "verben-left-card-data", inputs: ["pd", "mg", "height", "weight", "activeCss", "inActiveCss", "cardDataList", "iconCollapse", "iconExpanded", "parent", "dataId"] }, { kind: "component", type: i7.LeftCardDataViewComponent, selector: "verben-left-card-data-view", inputs: ["cardDataList"] }, { kind: "component", type: i7.RightCardDataViewComponent, selector: "verben-right-card-data-view", inputs: ["parentData", "chilData", "meth"] }, { kind: "component", type: i7.CardDataViewFooterComponent, selector: "verben-card-data-view-footer" }, { kind: "component", type: i7.SortTableComponent, selector: "verben-sort-table", inputs: ["enableDragAndDrop", "sortOptions", "resetText", "displayedOptions", "propertyText", "showMoreText", "sortButtonText", "pd", "mg", "height", "width", "bgColor", "boxShadow", "textColor", "primaryColor", "secondaryColor", "tertiaryColor", "border", "borderRadius", "selectWidth", "containerHeight"], outputs: ["selectedOptions", "resetSortData"] }, { kind: "component", type: i7.VisibleColumnComponent, selector: "verben-visible-column", inputs: ["columns", "items", "enableDragAndDrop", "displayedColumns", "showMore", "pd", "mg", "height", "width", "bgColor", "boxShadow", "textColor", "primaryColor", "secondaryColor", "tertiaryColor", "border", "borderRadius", "selectWidth", "closeColumn"], outputs: ["columnsUpdated", "resetFilter"] }, { kind: "component", type: i7.TableFilterComponent, selector: "verben-table-filter", inputs: ["filterOptions", "pd", "mg", "height", "width", "bgColor", "boxShadow", "textColor", "primaryColor", "secondaryColor", "tertiaryColor", "border", "borderRadius", "selectWidth", "maxFilterLength", "tooltip"], outputs: ["filtersApplied", "resetSortData"] }, { kind: "component", type: i7.DataXportComponent, selector: "lib-data-xport", inputs: ["data", "columns", "useImportKey", "dataFetchUrl", "dataQueryParameters", "dataQueryFunction"], outputs: ["exportDataEvent", "exportDataRangeEvent"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i7.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i7.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "useIcon", "svgPosition", "iconPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "svgSize", "weight", "variant", "styleType", "svg", "svgWidth", "svgHeight", "iconColor", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }, { kind: "component", type: i7.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "component", type: i8.UserManagementFormComponent, selector: "lib-user-request-form", inputs: ["currentData", "roles", "tags"], outputs: ["switchView", "onFormSave"] }, { kind: "component", type: i9.UserStatusBadgeComponent, selector: "lib-user-status-badge", inputs: ["status"] }, { kind: "pipe", type: i6.DatePipe, name: "date" }] });
|
|
516
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserManagementComponent, selector: "lib-user-management", inputs: { searchDebounceTime: "searchDebounceTime", pageSize: "pageSize" }, viewQueries: [{ propertyName: "cardDataView", first: true, predicate: ["vdcv"], descendants: true }, { propertyName: "dataView", first: true, predicate: ["vdv"], descendants: true }, { propertyName: "childComponent", first: true, predicate: UserManagementFormComponent, descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col gap-4 message-log-container\">\n <verben-data-view\n #vdv\n [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n\n isToggle: true\n }\"\n [buttonClass]=\"'my-custom-button-class'\"\n [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\"\n [selectedColumnCount]=\"selectedColumnCount\"\n [selectedSortCount]=\"selectedSortCount\"\n [selectedFilterTableCount]=\"selectedFilterTableCount\"\n (onSearchChange)=\"onSearch($event)\"\n [searchValue]=\"searchTerm\"\n [showFilterChild]=\"showFilter\"\n (viewChange)=\"onViewChange($event)\"\n (stateChange)=\"onStateChange($event)\"\n [isTableView]=\"false\"\n >\n <div class=\"mt-2\" table-content>\n <lib-data-table\n [data]=\"users\"\n [columns]=\"filteredColumns\"\n [formGroupConfig]=\"formGroupConfig()\"\n [styleConfig]=\"styles\"\n (selectionChange)=\"onSelectionChange($event)\"\n (rowSave)=\"onDataSave($event)\"\n >\n <ng-container libColumn=\"select\">\n <ng-template\n #cell\n let-isSelected=\"isSelected\"\n let-toggleRowSelection=\"toggleRowSelection\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isSelected\"\n (change)=\"toggleRowSelection()\"\n />\n </ng-template>\n <ng-template\n #header\n let-allRowsSelected=\"allRowsSelected\"\n let-someRowsSelected=\"someRowsSelected\"\n let-toggleAllRows=\"toggleAllRows\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"allRowsSelected()\"\n [indeterminate]=\"someRowsSelected()\"\n (change)=\"toggleAllRows()\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"createdAt\">\n <ng-template #cell let-value>\n {{ value | date }}\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"user\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verbena-input\n name=\"FirstName\"\n type=\"text\"\n [formControl]=\"formControl\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"mail\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verbena-input\n name=\"MailAddress\"\n type=\"email\"\n [formControl]=\"formControl\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"phone\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verbena-input\n name=\"PhoneNumber\"\n type=\"tel\"\n [formControl]=\"formControl\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"address\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verbena-input\n name=\"Address\"\n type=\"text\"\n [formControl]=\"formControl\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"role\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verben-drop-down\n name=\"Role\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [filter]=\"true\"\n [showClear]=\"true\"\n placeholder=\"\"\n [(options)]=\"Roles\"\n id=\"role\"\n optionLabel=\"Name\"\n optionValue=\"Code\"\n [formControl]=\"formControl\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n <ng-template\n #cellEdit\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"toggleRowEdit()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <!-- <verben-svg\n icon=\"cardViewAlt\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n (click)=\"goToCardView(value)\"\n ></verben-svg> -->\n </div>\n </ng-template>\n <ng-template #header>\n <strong>Actions</strong>\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"status\">\n <ng-template\n #cell\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-deleteRow=\"deleteRow\"\n let-value=\"value\"\n >\n <lib-user-status-badge [status]=\"value\"></lib-user-status-badge>\n </ng-template>\n\n <ng-template\n #cellEdit\n let-rowIndex=\"rowIndex\"\n let-formControl=\"formControl\"\n >\n <verben-drop-down\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Set status\"\n [options]=\"statuses\"\n [formControl]=\"formControl\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n <div card-content>\n <verben-card-data-view\n borderRadius=\"12px\"\n (loadMoreClick)=\"loadMore()\"\n #vdcv\n dataId=\"MailAddress\"\n border=\"5px\"\n [cardDataList]=\"cardData\"\n rbgColor=\"#f5f6f9\"\n mg=\"0px\"\n class=\"gap-1\"\n >\n <verben-left-card-data-view class=\"m-0 gap-2\">\n <verben-left-card-data\n #vlcd\n [parent]=\"vdcv\"\n dataId=\"MailAddress\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\"\n [cardDataList]=\"cardData\"\n >\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <verben-svg\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"vlcd.showChildren(item)\"\n [ngClass]=\"vlcd.showToggle(item) ? 'visible' : 'invisible'\"\n class=\"items-center flex cursor-pointer\"\n [icon]=\"item.isChildrenExpanded ? 'minus' : 'plus'\"\n />\n <div\n (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\"\n >\n <div\n class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"\n ></div>\n <div class=\"flex-1 flex items-end gap-y-2 gap-x-4 p-4\">\n <div class=\"flex-1 space-y-2\">\n <span\n class=\"font-semibold text-[#404040] flex-1 truncate\"\n >{{ item.title }}</span\n >\n\n <p class=\"flex items-center my-1\">\n <label for=\"phone\" class=\"text-[10px] font-light\"\n >Role:</label\n >\n <span id=\"phone\" class=\"text-sm truncate\">{{\n getRoleName(item.data.RoleID)\n }}</span>\n </p>\n </div>\n\n <div class=\"grid gap-y-1\">\n <p class=\"grid\">\n <!-- <label\n for=\"role\"\n class=\"text-[10px] font-light text-[#404040]\"\n >Role</label\n >\n <span id=\"role\" class=\"text-sm font-medium\">{{\n item.data?.Role?.Name\n }}</span> -->\n </p>\n\n <lib-user-status-badge\n [status]=\"item.data.Status\"\n ></lib-user-status-badge>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <div class=\"bg-secondary-100 py-2 flex flex-col gap-20 px-2\">\n <lib-user-request-form\n [roles]=\"Roles\"\n [tags]=\"Tags()\"\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n ></lib-user-request-form>\n <div class=\"flex justify-end bottom-8 left-0 right-0 p-3\">\n <!-- <verbena-button text=\"Delete\" bgColor=\"#999999\" textColor=\"white\"\n border=\"1px solid #999999\" (click)=\"onDelete()\"></verbena-button> -->\n <div class=\"flex gap-3\">\n <verbena-button\n (click)=\"vdv.toggleView()\"\n text=\"Switch To Table\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n <verbena-button\n text=\"Save\"\n bgColor=\"#FFE681\"\n (click)=\"onSave()\"\n textColor=\"#404040\"\n border=\"1px solid #FFE681\"\n >\n <!-- (click)=\"\" -->\n </verbena-button>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div\n [ngClass]=\"{\n 'flex gap-2 items-center': true,\n 'justify-end': true,\n }\"\n >\n <!-- <verbena-button\n *ngIf=\"!vdcv.hasCurrentItem()\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n <div\n class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\"\n >\n <span class=\"paginator-text\"\n >{{ cardData.length }} records loaded</span\n >\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <verben-visible-column\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n [columns]=\"visibleColumns\"\n [displayedColumns]=\"5\"\n ></verben-visible-column>\n </div>\n <div filter-content>\n <verben-table-filter\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"420px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"\n (filtersApplied)=\"onFilterApplied($event)\"\n ></verben-table-filter>\n </div>\n <div sort-content>\n <verben-sort-table\n (selectedOptions)=\"onSortUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [enableDragAndDrop]=\"true\"\n [sortOptions]=\"sortOptions\"\n ></verben-sort-table>\n </div>\n <div export-content>\n <lib-data-xport\n [columns]=\"allColumns\"\n [data]=\"users\"\n >\n </lib-data-xport>\n </div>\n </verben-data-view>\n <div\n *ngIf=\"!vdcv.hasCurrentItem() && this.cardContextHistory.length == 0\"\n class=\"message-log-button-container flex justify-between\"\n ></div>\n\n <div *ngIf=\"vdv.isTableView\" class=\"w-full flex gap-2 justify-end\">\n <!-- <div class=\"message-log-button-container flex justify-between\">\n <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button>\n </div> -->\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData.length }} records loaded</span>\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n</div>\n", styles: ["*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:currentColor}:before,:after{--tw-content: \"\"}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-8{bottom:2rem}.left-0{left:0}.right-0{right:0}.float-right{float:right}.m-0{margin:0}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-0{margin-bottom:0}.mb-2{margin-bottom:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-\\[100\\%\\]{height:100%}.h-\\[max-content\\]{height:-moz-max-content;height:max-content}.h-full{height:100%}.w-3{width:.75rem}.w-full{width:100%}.flex-1{flex:1 1 0%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-20{gap:5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-7>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.75rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-all{word-break:break-all}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-br-none{border-bottom-right-radius:0}.rounded-tr-none{border-top-right-radius:0}.border,.border-\\[1px\\]{border-width:1px}.border-primary{--tw-border-opacity: 1;border-color:rgb(212 160 7 / var(--tw-border-opacity, 1))}.border-secondary-200{border-color:#d7dbe6}.bg-primary{--tw-bg-opacity: 1;background-color:rgb(212 160 7 / var(--tw-bg-opacity, 1))}.bg-secondary{--tw-bg-opacity: 1;background-color:rgb(232 234 241 / var(--tw-bg-opacity, 1))}.bg-secondary-100{--tw-bg-opacity: 1;background-color:rgb(245 246 249 / var(--tw-bg-opacity, 1))}.bg-secondary-200{background-color:#d7dbe6}.p-3{padding:.75rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pr-1{padding-right:.25rem}.\\!text-\\[10px\\]{font-size:10px!important}.text-\\[10px\\]{font-size:10px}.text-\\[12px\\]{font-size:12px}.text-\\[22px\\]{font-size:22px}.text-\\[24px\\]{font-size:24px}.text-\\[2rem\\]{font-size:2rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.lowercase{text-transform:lowercase}.leading-6{line-height:1.5rem}.leading-\\[12\\.1px\\]{line-height:12.1px}.leading-\\[16\\.6px\\]{line-height:16.6px}.leading-\\[19\\.5px\\]{line-height:19.5px}.leading-\\[29\\.05px\\]{line-height:29.05px}.leading-\\[33px\\]{line-height:33px}.leading-\\[48px\\]{line-height:48px}.text-\\[\\#333\\]{--tw-text-opacity: 1;color:rgb(51 51 51 / var(--tw-text-opacity, 1))}.text-\\[\\#3479E9\\]{--tw-text-opacity: 1;color:rgb(52 121 233 / var(--tw-text-opacity, 1))}.text-\\[\\#404040\\]{--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.text-\\[black\\]{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-muted{color:#0009}.underline{text-decoration-line:underline}.outline-none{outline:2px solid transparent;outline-offset:2px}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.master-only-contanier{margin-top:0!important}.scroll-no::-webkit-scrollbar{width:4px}.scroll-no::-webkit-scrollbar-thumb{background:gray}.justify-pp{justify-content:start!important;margin-top:0!important}.toolbar{margin:0!important}@media screen and (max-width: 1024px){.scroll-no{padding:5px}}.view-links{color:#3479e9;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.DataTableComponent, selector: "lib-data-table", inputs: ["data", "columns", "dataKey", "formGroupConfig", "groupBy", "useVirtualScroll", "virtualScrollItemSize", "styleConfig"], outputs: ["rowEdit", "rowSave", "rowRevert", "rowDelete", "selectionChange"] }, { kind: "directive", type: i7.ColumnDirective, selector: "[libColumn]", inputs: ["libColumn"] }, { kind: "component", type: i7.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }, { kind: "component", type: i7.DataViewComponent, selector: "verben-data-view", inputs: ["buttonClass", "iconClass", "activeIconClass", "columnCustomClass", "filterCustomClass", "sortCustomClass", "extendCustomClass", "exportCustomClass", "selectCustomClass", "importCustomClass", "zIndex", "createCustomClass", "tableIcon", "cardIcon", "cardClass", "tableClass", "searchKey", "searchValue", "viewState", "searchTemplate", "importTemplate", "columnTemplate", "extendTemplate", "filterTemplate", "sortTemplate", "children", "exportTemplate", "createTemplate", "selectedColumnCount", "selectedSortCount", "selectedFilterTableCount", "inputWidth", "milliseconds", "showColumnChild", "showSortChild", "showFilterChild", "showImportChild", "showExportChild", "showExtendChild", "create", "showSelected", "isTableView"], outputs: ["viewChange", "stateChange", "onSearchChange"] }, { kind: "component", type: i7.CardDataViewComponent, selector: "verben-card-data-view", inputs: ["pd", "mg", "lHeight", "rHeight", "rWidth", "lWidth", "textColor", "lbgColor", "rbgColor", "border", "display", "borderRadius", "activeCss", "inActiveCss", "displayAsRow", "cardDataList", "dataId", "totalRecords", "footer", "noOfVisibleChildren", "showEditIcon", "onItemClick", "onCardChildClick"], outputs: ["editClicked", "loadMoreClick"] }, { kind: "component", type: i7.LeftCardDataComponent, selector: "verben-left-card-data", inputs: ["pd", "mg", "height", "weight", "activeCss", "inActiveCss", "cardDataList", "iconCollapse", "iconExpanded", "parent", "dataId"] }, { kind: "component", type: i7.LeftCardDataViewComponent, selector: "verben-left-card-data-view", inputs: ["cardDataList"] }, { kind: "component", type: i7.RightCardDataViewComponent, selector: "verben-right-card-data-view", inputs: ["parentData", "chilData", "meth"] }, { kind: "component", type: i7.CardDataViewFooterComponent, selector: "verben-card-data-view-footer" }, { kind: "component", type: i7.SortTableComponent, selector: "verben-sort-table", inputs: ["enableDragAndDrop", "sortOptions", "resetText", "displayedOptions", "propertyText", "showMoreText", "sortButtonText", "pd", "mg", "height", "width", "bgColor", "boxShadow", "textColor", "primaryColor", "secondaryColor", "tertiaryColor", "border", "borderRadius", "selectWidth", "containerHeight"], outputs: ["selectedOptions", "resetSortData"] }, { kind: "component", type: i7.VisibleColumnComponent, selector: "verben-visible-column", inputs: ["columns", "items", "enableDragAndDrop", "displayedColumns", "showMore", "pd", "mg", "height", "width", "bgColor", "boxShadow", "textColor", "primaryColor", "secondaryColor", "tertiaryColor", "border", "borderRadius", "selectWidth", "closeColumn"], outputs: ["columnsUpdated", "resetFilter"] }, { kind: "component", type: i7.TableFilterComponent, selector: "verben-table-filter", inputs: ["filterOptions", "pd", "mg", "height", "width", "bgColor", "boxShadow", "textColor", "primaryColor", "secondaryColor", "tertiaryColor", "border", "borderRadius", "selectWidth", "maxFilterLength", "tooltip"], outputs: ["filtersApplied", "resetSortData"] }, { kind: "component", type: i7.DataXportComponent, selector: "lib-data-xport", inputs: ["data", "columns", "useImportKey", "dataFetchUrl", "dataQueryParameters", "dataQueryFunction"], outputs: ["exportDataEvent", "exportDataRangeEvent"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i7.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i7.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "useIcon", "svgPosition", "iconPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "svgSize", "weight", "variant", "styleType", "svg", "svgWidth", "svgHeight", "iconColor", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }, { kind: "component", type: i7.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "component", type: i8.UserManagementFormComponent, selector: "lib-user-request-form", inputs: ["currentData", "roles", "tags"], outputs: ["switchView", "onFormSave"] }, { kind: "component", type: i9.UserStatusBadgeComponent, selector: "lib-user-status-badge", inputs: ["status"] }, { kind: "pipe", type: i6.DatePipe, name: "date" }] });
|
|
513
517
|
}
|
|
514
518
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserManagementComponent, decorators: [{
|
|
515
519
|
type: Component,
|
|
516
|
-
args: [{ selector: 'lib-user-management', template: "<div class=\"flex flex-col gap-4 message-log-container\">\n <verben-data-view\n #vdv\n [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n\n isToggle: true\n }\"\n [buttonClass]=\"'my-custom-button-class'\"\n [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\"\n [selectedColumnCount]=\"selectedColumnCount\"\n [selectedSortCount]=\"selectedSortCount\"\n [selectedFilterTableCount]=\"selectedFilterTableCount\"\n (onSearchChange)=\"onSearch($event)\"\n [searchValue]=\"searchTerm\"\n [showFilterChild]=\"showFilter\"\n (viewChange)=\"onViewChange($event)\"\n (stateChange)=\"onStateChange($event)\"\n [isTableView]=\"false\"\n >\n <div class=\"mt-2\" table-content>\n <lib-data-table\n [data]=\"users\"\n [columns]=\"filteredColumns\"\n [formGroupConfig]=\"formGroupConfig()\"\n [styleConfig]=\"styles\"\n (selectionChange)=\"onSelectionChange($event)\"\n (rowSave)=\"onDataSave($event)\"\n >\n <ng-container libColumn=\"select\">\n <ng-template\n #cell\n let-isSelected=\"isSelected\"\n let-toggleRowSelection=\"toggleRowSelection\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isSelected\"\n (change)=\"toggleRowSelection()\"\n />\n </ng-template>\n <ng-template\n #header\n let-allRowsSelected=\"allRowsSelected\"\n let-someRowsSelected=\"someRowsSelected\"\n let-toggleAllRows=\"toggleAllRows\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"allRowsSelected()\"\n [indeterminate]=\"someRowsSelected()\"\n (change)=\"toggleAllRows()\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"createdAt\">\n <ng-template #cell let-value>\n {{ value | date }}\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"user\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verbena-input\n name=\"FirstName\"\n type=\"text\"\n [formControl]=\"formControl\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"mail\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verbena-input\n name=\"MailAddress\"\n type=\"email\"\n [formControl]=\"formControl\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"phone\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verbena-input\n name=\"PhoneNumber\"\n type=\"tel\"\n [formControl]=\"formControl\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"address\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verbena-input\n name=\"Address\"\n type=\"text\"\n [formControl]=\"formControl\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"role\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verben-drop-down\n name=\"Role\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [filter]=\"true\"\n [showClear]=\"true\"\n placeholder=\"\"\n [(options)]=\"Roles\"\n id=\"role\"\n optionLabel=\"Name\"\n optionValue=\"Code\"\n [formControl]=\"formControl\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n <ng-template\n #cellEdit\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"toggleRowEdit()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <!-- <verben-svg\n icon=\"cardViewAlt\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n (click)=\"goToCardView(value)\"\n ></verben-svg> -->\n </div>\n </ng-template>\n <ng-template #header>\n <strong>Actions</strong>\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"status\">\n <ng-template\n #cell\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-deleteRow=\"deleteRow\"\n let-value=\"value\"\n >\n <lib-user-status-badge [status]=\"value\"></lib-user-status-badge>\n </ng-template>\n\n <ng-template\n #cellEdit\n let-rowIndex=\"rowIndex\"\n let-formControl=\"formControl\"\n >\n <verben-drop-down\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Set status\"\n [options]=\"statuses\"\n [formControl]=\"formControl\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n <div card-content>\n <verben-card-data-view\n borderRadius=\"12px\"\n (loadMoreClick)=\"loadMore()\"\n #vdcv\n dataId=\"MailAddress\"\n border=\"5px\"\n [cardDataList]=\"cardData\"\n rbgColor=\"#f5f6f9\"\n mg=\"0px\"\n class=\"gap-1\"\n >\n <verben-left-card-data-view class=\"m-0 gap-2\">\n <verben-left-card-data\n #vlcd\n [parent]=\"vdcv\"\n dataId=\"MailAddress\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\"\n [cardDataList]=\"cardData\"\n >\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <verben-svg\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"vlcd.showChildren(item)\"\n [ngClass]=\"vlcd.showToggle(item) ? 'visible' : 'invisible'\"\n class=\"items-center flex cursor-pointer\"\n [icon]=\"item.isChildrenExpanded ? 'minus' : 'plus'\"\n />\n <div\n (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\"\n >\n <div\n class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"\n ></div>\n <div class=\"flex-1 flex items-end gap-y-2 gap-x-4 p-4\">\n <div class=\"flex-1 space-y-2\">\n <span\n class=\"font-semibold text-[#404040] flex-1 truncate\"\n >{{ item.title }}</span\n >\n\n <p class=\"flex items-center my-1\">\n <label for=\"phone\" class=\"text-[10px] font-light\"\n >Role:</label\n >\n <span id=\"phone\" class=\"text-sm truncate\">{{\n item.data.Role?.Name\n }}</span>\n </p>\n </div>\n\n <div class=\"grid gap-y-1\">\n <p class=\"grid\">\n <!-- <label\n for=\"role\"\n class=\"text-[10px] font-light text-[#404040]\"\n >Role</label\n >\n <span id=\"role\" class=\"text-sm font-medium\">{{\n item.data?.Role?.Name\n }}</span> -->\n </p>\n\n <lib-user-status-badge\n [status]=\"item.data.Status\"\n ></lib-user-status-badge>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <div class=\"bg-secondary-100 py-2 flex flex-col gap-20 px-2\">\n <lib-user-request-form\n [roles]=\"Roles\"\n [tags]=\"Tags()\"\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n ></lib-user-request-form>\n <div class=\"flex justify-end bottom-8 left-0 right-0 p-3\">\n <!-- <verbena-button text=\"Delete\" bgColor=\"#999999\" textColor=\"white\"\n border=\"1px solid #999999\" (click)=\"onDelete()\"></verbena-button> -->\n <div class=\"flex gap-3\">\n <verbena-button\n (click)=\"vdv.toggleView()\"\n text=\"Switch To Table\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n <verbena-button\n text=\"Save\"\n bgColor=\"#FFE681\"\n (click)=\"onSave()\"\n textColor=\"#404040\"\n border=\"1px solid #FFE681\"\n >\n <!-- (click)=\"\" -->\n </verbena-button>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div\n [ngClass]=\"{\n 'flex gap-2 items-center': true,\n 'justify-end': true,\n }\"\n >\n <!-- <verbena-button\n *ngIf=\"!vdcv.hasCurrentItem()\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n <div\n class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\"\n >\n <span class=\"paginator-text\"\n >{{ cardData.length }} records loaded</span\n >\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <verben-visible-column\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n [columns]=\"visibleColumns\"\n [displayedColumns]=\"5\"\n ></verben-visible-column>\n </div>\n <div filter-content>\n <verben-table-filter\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"420px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"\n (filtersApplied)=\"onFilterApplied($event)\"\n ></verben-table-filter>\n </div>\n <div sort-content>\n <verben-sort-table\n (selectedOptions)=\"onSortUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [enableDragAndDrop]=\"true\"\n [sortOptions]=\"sortOptions\"\n ></verben-sort-table>\n </div>\n <div export-content>\n <lib-data-xport\n [columns]=\"allColumns\"\n [data]=\"users\"\n >\n </lib-data-xport>\n </div>\n </verben-data-view>\n <div\n *ngIf=\"!vdcv.hasCurrentItem() && this.cardContextHistory.length == 0\"\n class=\"message-log-button-container flex justify-between\"\n ></div>\n\n <div *ngIf=\"vdv.isTableView\" class=\"w-full flex gap-2 justify-end\">\n <!-- <div class=\"message-log-button-container flex justify-between\">\n <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button>\n </div> -->\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData.length }} records loaded</span>\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n</div>\n", styles: ["*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:currentColor}:before,:after{--tw-content: \"\"}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-8{bottom:2rem}.left-0{left:0}.right-0{right:0}.float-right{float:right}.m-0{margin:0}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-0{margin-bottom:0}.mb-2{margin-bottom:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-\\[100\\%\\]{height:100%}.h-\\[max-content\\]{height:-moz-max-content;height:max-content}.h-full{height:100%}.w-3{width:.75rem}.w-full{width:100%}.flex-1{flex:1 1 0%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-20{gap:5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-7>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.75rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-all{word-break:break-all}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-br-none{border-bottom-right-radius:0}.rounded-tr-none{border-top-right-radius:0}.border,.border-\\[1px\\]{border-width:1px}.border-primary{--tw-border-opacity: 1;border-color:rgb(212 160 7 / var(--tw-border-opacity, 1))}.border-secondary-200{border-color:#d7dbe6}.bg-primary{--tw-bg-opacity: 1;background-color:rgb(212 160 7 / var(--tw-bg-opacity, 1))}.bg-secondary{--tw-bg-opacity: 1;background-color:rgb(232 234 241 / var(--tw-bg-opacity, 1))}.bg-secondary-100{--tw-bg-opacity: 1;background-color:rgb(245 246 249 / var(--tw-bg-opacity, 1))}.bg-secondary-200{background-color:#d7dbe6}.p-3{padding:.75rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pr-1{padding-right:.25rem}.\\!text-\\[10px\\]{font-size:10px!important}.text-\\[10px\\]{font-size:10px}.text-\\[12px\\]{font-size:12px}.text-\\[22px\\]{font-size:22px}.text-\\[24px\\]{font-size:24px}.text-\\[2rem\\]{font-size:2rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.lowercase{text-transform:lowercase}.leading-6{line-height:1.5rem}.leading-\\[12\\.1px\\]{line-height:12.1px}.leading-\\[16\\.6px\\]{line-height:16.6px}.leading-\\[19\\.5px\\]{line-height:19.5px}.leading-\\[29\\.05px\\]{line-height:29.05px}.leading-\\[33px\\]{line-height:33px}.leading-\\[48px\\]{line-height:48px}.text-\\[\\#333\\]{--tw-text-opacity: 1;color:rgb(51 51 51 / var(--tw-text-opacity, 1))}.text-\\[\\#3479E9\\]{--tw-text-opacity: 1;color:rgb(52 121 233 / var(--tw-text-opacity, 1))}.text-\\[\\#404040\\]{--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.text-\\[black\\]{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-muted{color:#0009}.underline{text-decoration-line:underline}.outline-none{outline:2px solid transparent;outline-offset:2px}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.master-only-contanier{margin-top:0!important}.scroll-no::-webkit-scrollbar{width:4px}.scroll-no::-webkit-scrollbar-thumb{background:gray}.justify-pp{justify-content:start!important;margin-top:0!important}.toolbar{margin:0!important}@media screen and (max-width: 1024px){.scroll-no{padding:5px}}.view-links{color:#3479e9;cursor:pointer}\n"] }]
|
|
520
|
+
args: [{ selector: 'lib-user-management', template: "<div class=\"flex flex-col gap-4 message-log-container\">\n <verben-data-view\n #vdv\n [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n\n isToggle: true\n }\"\n [buttonClass]=\"'my-custom-button-class'\"\n [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\"\n [selectedColumnCount]=\"selectedColumnCount\"\n [selectedSortCount]=\"selectedSortCount\"\n [selectedFilterTableCount]=\"selectedFilterTableCount\"\n (onSearchChange)=\"onSearch($event)\"\n [searchValue]=\"searchTerm\"\n [showFilterChild]=\"showFilter\"\n (viewChange)=\"onViewChange($event)\"\n (stateChange)=\"onStateChange($event)\"\n [isTableView]=\"false\"\n >\n <div class=\"mt-2\" table-content>\n <lib-data-table\n [data]=\"users\"\n [columns]=\"filteredColumns\"\n [formGroupConfig]=\"formGroupConfig()\"\n [styleConfig]=\"styles\"\n (selectionChange)=\"onSelectionChange($event)\"\n (rowSave)=\"onDataSave($event)\"\n >\n <ng-container libColumn=\"select\">\n <ng-template\n #cell\n let-isSelected=\"isSelected\"\n let-toggleRowSelection=\"toggleRowSelection\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isSelected\"\n (change)=\"toggleRowSelection()\"\n />\n </ng-template>\n <ng-template\n #header\n let-allRowsSelected=\"allRowsSelected\"\n let-someRowsSelected=\"someRowsSelected\"\n let-toggleAllRows=\"toggleAllRows\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"allRowsSelected()\"\n [indeterminate]=\"someRowsSelected()\"\n (change)=\"toggleAllRows()\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"createdAt\">\n <ng-template #cell let-value>\n {{ value | date }}\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"user\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verbena-input\n name=\"FirstName\"\n type=\"text\"\n [formControl]=\"formControl\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"mail\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verbena-input\n name=\"MailAddress\"\n type=\"email\"\n [formControl]=\"formControl\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"phone\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verbena-input\n name=\"PhoneNumber\"\n type=\"tel\"\n [formControl]=\"formControl\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"address\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verbena-input\n name=\"Address\"\n type=\"text\"\n [formControl]=\"formControl\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"role\">\n <ng-template #cellEdit let-formControl=\"formControl\" let-value>\n <verben-drop-down\n name=\"Role\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [filter]=\"true\"\n [showClear]=\"true\"\n placeholder=\"\"\n [(options)]=\"Roles\"\n id=\"role\"\n optionLabel=\"Name\"\n optionValue=\"Code\"\n [formControl]=\"formControl\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n <ng-template\n #cellEdit\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex gap-6\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"toggleRowEdit()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <!-- <verben-svg\n icon=\"cardViewAlt\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n (click)=\"goToCardView(value)\"\n ></verben-svg> -->\n </div>\n </ng-template>\n <ng-template #header>\n <strong>Actions</strong>\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"status\">\n <ng-template\n #cell\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-deleteRow=\"deleteRow\"\n let-value=\"value\"\n >\n <lib-user-status-badge [status]=\"value\"></lib-user-status-badge>\n </ng-template>\n\n <ng-template\n #cellEdit\n let-rowIndex=\"rowIndex\"\n let-formControl=\"formControl\"\n >\n <verben-drop-down\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n placeholder=\"Set status\"\n [options]=\"statuses\"\n [formControl]=\"formControl\"\n class=\"form-control\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n <div card-content>\n <verben-card-data-view\n borderRadius=\"12px\"\n (loadMoreClick)=\"loadMore()\"\n #vdcv\n dataId=\"MailAddress\"\n border=\"5px\"\n [cardDataList]=\"cardData\"\n rbgColor=\"#f5f6f9\"\n mg=\"0px\"\n class=\"gap-1\"\n >\n <verben-left-card-data-view class=\"m-0 gap-2\">\n <verben-left-card-data\n #vlcd\n [parent]=\"vdcv\"\n dataId=\"MailAddress\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\"\n [cardDataList]=\"cardData\"\n >\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <verben-svg\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"vlcd.showChildren(item)\"\n [ngClass]=\"vlcd.showToggle(item) ? 'visible' : 'invisible'\"\n class=\"items-center flex cursor-pointer\"\n [icon]=\"item.isChildrenExpanded ? 'minus' : 'plus'\"\n />\n <div\n (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\"\n >\n <div\n class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"\n ></div>\n <div class=\"flex-1 flex items-end gap-y-2 gap-x-4 p-4\">\n <div class=\"flex-1 space-y-2\">\n <span\n class=\"font-semibold text-[#404040] flex-1 truncate\"\n >{{ item.title }}</span\n >\n\n <p class=\"flex items-center my-1\">\n <label for=\"phone\" class=\"text-[10px] font-light\"\n >Role:</label\n >\n <span id=\"phone\" class=\"text-sm truncate\">{{\n getRoleName(item.data.RoleID)\n }}</span>\n </p>\n </div>\n\n <div class=\"grid gap-y-1\">\n <p class=\"grid\">\n <!-- <label\n for=\"role\"\n class=\"text-[10px] font-light text-[#404040]\"\n >Role</label\n >\n <span id=\"role\" class=\"text-sm font-medium\">{{\n item.data?.Role?.Name\n }}</span> -->\n </p>\n\n <lib-user-status-badge\n [status]=\"item.data.Status\"\n ></lib-user-status-badge>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <div class=\"bg-secondary-100 py-2 flex flex-col gap-20 px-2\">\n <lib-user-request-form\n [roles]=\"Roles\"\n [tags]=\"Tags()\"\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n ></lib-user-request-form>\n <div class=\"flex justify-end bottom-8 left-0 right-0 p-3\">\n <!-- <verbena-button text=\"Delete\" bgColor=\"#999999\" textColor=\"white\"\n border=\"1px solid #999999\" (click)=\"onDelete()\"></verbena-button> -->\n <div class=\"flex gap-3\">\n <verbena-button\n (click)=\"vdv.toggleView()\"\n text=\"Switch To Table\"\n styleType=\"ylw-outline\"\n ></verbena-button>\n <verbena-button\n text=\"Save\"\n bgColor=\"#FFE681\"\n (click)=\"onSave()\"\n textColor=\"#404040\"\n border=\"1px solid #FFE681\"\n >\n <!-- (click)=\"\" -->\n </verbena-button>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div\n [ngClass]=\"{\n 'flex gap-2 items-center': true,\n 'justify-end': true,\n }\"\n >\n <!-- <verbena-button\n *ngIf=\"!vdcv.hasCurrentItem()\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n <div\n class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\"\n >\n <span class=\"paginator-text\"\n >{{ cardData.length }} records loaded</span\n >\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <verben-visible-column\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n [columns]=\"visibleColumns\"\n [displayedColumns]=\"5\"\n ></verben-visible-column>\n </div>\n <div filter-content>\n <verben-table-filter\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"420px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"\n (filtersApplied)=\"onFilterApplied($event)\"\n ></verben-table-filter>\n </div>\n <div sort-content>\n <verben-sort-table\n (selectedOptions)=\"onSortUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [enableDragAndDrop]=\"true\"\n [sortOptions]=\"sortOptions\"\n ></verben-sort-table>\n </div>\n <div export-content>\n <lib-data-xport\n [columns]=\"allColumns\"\n [data]=\"users\"\n >\n </lib-data-xport>\n </div>\n </verben-data-view>\n <div\n *ngIf=\"!vdcv.hasCurrentItem() && this.cardContextHistory.length == 0\"\n class=\"message-log-button-container flex justify-between\"\n ></div>\n\n <div *ngIf=\"vdv.isTableView\" class=\"w-full flex gap-2 justify-end\">\n <!-- <div class=\"message-log-button-container flex justify-between\">\n <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button>\n </div> -->\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData.length }} records loaded</span>\n <button\n (click)=\"loadMore()\"\n class=\"load-more view-links text-[#3479E9] underline\"\n >\n Load more\n </button>\n </div>\n </div>\n</div>\n", styles: ["*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:currentColor}:before,:after{--tw-content: \"\"}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-8{bottom:2rem}.left-0{left:0}.right-0{right:0}.float-right{float:right}.m-0{margin:0}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-0{margin-bottom:0}.mb-2{margin-bottom:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-\\[100\\%\\]{height:100%}.h-\\[max-content\\]{height:-moz-max-content;height:max-content}.h-full{height:100%}.w-3{width:.75rem}.w-full{width:100%}.flex-1{flex:1 1 0%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-20{gap:5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-7>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.75rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-all{word-break:break-all}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-br-none{border-bottom-right-radius:0}.rounded-tr-none{border-top-right-radius:0}.border,.border-\\[1px\\]{border-width:1px}.border-primary{--tw-border-opacity: 1;border-color:rgb(212 160 7 / var(--tw-border-opacity, 1))}.border-secondary-200{border-color:#d7dbe6}.bg-primary{--tw-bg-opacity: 1;background-color:rgb(212 160 7 / var(--tw-bg-opacity, 1))}.bg-secondary{--tw-bg-opacity: 1;background-color:rgb(232 234 241 / var(--tw-bg-opacity, 1))}.bg-secondary-100{--tw-bg-opacity: 1;background-color:rgb(245 246 249 / var(--tw-bg-opacity, 1))}.bg-secondary-200{background-color:#d7dbe6}.p-3{padding:.75rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pr-1{padding-right:.25rem}.\\!text-\\[10px\\]{font-size:10px!important}.text-\\[10px\\]{font-size:10px}.text-\\[12px\\]{font-size:12px}.text-\\[22px\\]{font-size:22px}.text-\\[24px\\]{font-size:24px}.text-\\[2rem\\]{font-size:2rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.lowercase{text-transform:lowercase}.leading-6{line-height:1.5rem}.leading-\\[12\\.1px\\]{line-height:12.1px}.leading-\\[16\\.6px\\]{line-height:16.6px}.leading-\\[19\\.5px\\]{line-height:19.5px}.leading-\\[29\\.05px\\]{line-height:29.05px}.leading-\\[33px\\]{line-height:33px}.leading-\\[48px\\]{line-height:48px}.text-\\[\\#333\\]{--tw-text-opacity: 1;color:rgb(51 51 51 / var(--tw-text-opacity, 1))}.text-\\[\\#3479E9\\]{--tw-text-opacity: 1;color:rgb(52 121 233 / var(--tw-text-opacity, 1))}.text-\\[\\#404040\\]{--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.text-\\[black\\]{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-muted{color:#0009}.underline{text-decoration-line:underline}.outline-none{outline:2px solid transparent;outline-offset:2px}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.master-only-contanier{margin-top:0!important}.scroll-no::-webkit-scrollbar{width:4px}.scroll-no::-webkit-scrollbar-thumb{background:gray}.justify-pp{justify-content:start!important;margin-top:0!important}.toolbar{margin:0!important}@media screen and (max-width: 1024px){.scroll-no{padding:5px}}.view-links{color:#3479e9;cursor:pointer}\n"] }]
|
|
517
521
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.UserManagementService }, { type: i3.UserAccessRequestService }, { type: i4.HttpWebRequestService }, { type: i4.UtilService }, { type: i4.EnvironmentService }, { type: i5.FormBuilder }], propDecorators: { cardDataView: [{
|
|
518
522
|
type: ViewChild,
|
|
519
523
|
args: ['vdcv']
|
|
@@ -528,4 +532,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
528
532
|
}], pageSize: [{
|
|
529
533
|
type: Input
|
|
530
534
|
}] } });
|
|
531
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1tYW5hZ2VtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1tYW5hZ2VtZW50L3VzZXItbWFuYWdlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3VzZXItbWFuYWdlbWVudC91c2VyLW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFcEQsT0FBTyxFQUFlLGtCQUFrQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFMUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSS9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQVEsTUFBTSxFQUFhLE1BQU0seUNBQXlDLENBQUM7QUFFaEksT0FBTyxFQUlMLGtCQUFrQixFQUNsQixjQUFjLEVBS2YsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7Ozs7Ozs7Ozs7O0FBRXBHLElBQUssZUFJSjtBQUpELFdBQUssZUFBZTtJQUNsQixnQ0FBOEIsQ0FBQTtJQUM5Qiw0QkFBMEIsQ0FBQTtJQUMxQiwrQkFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBSkksZUFBZSxLQUFmLGVBQWUsUUFJbkI7QUFZRCxN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SSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyw2Q0FBNkM7UUFDbEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFlBQVksQ0FBQyxVQUFtQixJQUFVLENBQUM7SUFFM0MsYUFBYSxDQUFDLEtBQXNDO1FBQ2xELE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEtBQUssQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUQsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUU5QixpQ0FBaUM7WUFFakMsdUNBQXVDO1lBQ3ZDLGdDQUFnQztZQUNoQyxrQ0FBa0M7WUFDbEMsc0NBQXNDO1lBQ3RDLDZCQUE2QjtZQUM3QiwyQkFBMkI7WUFDM0Isb0VBQW9FO1lBQ3BFLFFBQVE7WUFDUixRQUFRO1lBRVIsK0RBQStEO1lBRS9ELHdDQUF3QztZQUN4QywrQ0FBK0M7WUFDL0MsSUFBSTtRQUNOLENBQUM7SUFDSCxDQUFDO3dHQXJqQlUsdUJBQXVCOzRGQUF2Qix1QkFBdUIsZ1dBR3ZCLDJCQUEyQixnRENwRHhDLHU2ZUF1Y0E7OzRGRHRaYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UscUJBQXFCO3VSQUtaLFlBQVk7c0JBQTlCLFNBQVM7dUJBQUMsTUFBTTtnQkFDQyxRQUFRO3NCQUF6QixTQUFTO3VCQUFDLEtBQUs7Z0JBRWhCLGNBQWM7c0JBRGIsU0FBUzt1QkFBQywyQkFBMkI7Z0JBUzdCLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgc2lnbmFsLFxuICBWaWV3Q2hpbGQsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbHVtbnMgfSBmcm9tICcuL3VzZXItbWFuYWdlbWVudC5jb2x1bW5zJztcblxuaW1wb3J0IHsgUGFnZWRSZXN1bHQsIFNlYXJjaFByb3BlcnR5U2lnbiB9IGZyb20gJ3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBIdHRwV2ViUmVxdWVzdFNlcnZpY2UsIFV0aWxTZXJ2aWNlIH0gZnJvbSAndmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvc2VydmljZXMnO1xuaW1wb3J0IHsgYmFzZVN0eWxlIH0gZnJvbSAnLi9iYXNlLXRhYmxlLXN0eWxlJztcblxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVc2VyQWNjZXNzUmVxdWVzdFNlcnZpY2UgfSBmcm9tICd2ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3VzZXItcmVxdWVzdC1hcHByb3ZhbCc7XG5pbXBvcnQgeyBDb25kaXRpb25PcHRpb25zLCBFcnJvclJlc3BvbnNlLCBPYmplY3RTdGF0ZSwgUm9sZSwgU3RhdHVzLCBUYWcsIFVzZXIgfSBmcm9tICd2ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAndmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgQ2FyZERhdGEsXG4gIENhcmREYXRhVmlld0NvbXBvbmVudCxcbiAgQ29sdW1uRGVmaW5pdGlvbixcbiAgQ29uZGl0aW9uYWxPcHRpb25zLFxuICBEYXRhRmlsdGVyVHlwZSxcbiAgRGF0YVZpZXdDb21wb25lbnQsXG4gIERyb3Bkb3duQ2hhbmdlRXZlbnQsXG4gIEZvcm1Hcm91cENvbmZpZyxcbiAgSURhdGFGaWx0ZXJcbn0gZnJvbSAndmVyYmVuLW5nLXVpJztcbmltcG9ydCB7IFVzZXJNYW5hZ2VtZW50U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdXNlci1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlck1hbmFnZW1lbnRGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi91c2VyLW1hbmFnZW1lbnQtZm9ybS91c2VyLW1hbmFnZW1lbnQtZm9ybS5jb21wb25lbnQnO1xuXG5lbnVtIERhdGVGaWx0ZXJUeXBlcyB7XG4gIEJlZm9yZSA9IFNlYXJjaFByb3BlcnR5U2lnbi5MVCxcbiAgT24gPSBTZWFyY2hQcm9wZXJ0eVNpZ24uRVEsXG4gIEFmdGVyID0gU2VhcmNoUHJvcGVydHlTaWduLkdULFxufVxuXG5pbnRlcmZhY2UgVGVzdFBhcmVudE9iamVjdCB7XG4gIElkOiBzdHJpbmc7XG4gIE5hbWU6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXVzZXItbWFuYWdlbWVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vdXNlci1tYW5hZ2VtZW50LmNvbXBvbmVudC5jc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBVc2VyTWFuYWdlbWVudENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ3ZkY3YnKSBjYXJkRGF0YVZpZXchOiBDYXJkRGF0YVZpZXdDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3ZkdicpIGRhdGFWaWV3ITogRGF0YVZpZXdDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoVXNlck1hbmFnZW1lbnRGb3JtQ29tcG9uZW50KVxuICBjaGlsZENvbXBvbmVudCE6IFVzZXJNYW5hZ2VtZW50Rm9ybUNvbXBvbmVudDtcbiAgcHJpdmF0ZSBjdXJyZW50U2VhcmNoVGVybTogc3RyaW5nID0gJyc7XG5cbiAgYWxsQ29sdW1uczogQ29sdW1uRGVmaW5pdGlvbjxVc2VyPltdID0gY29sdW1ucztcbiAgZmlsdGVyZWRDb2x1bW5zOiBDb2x1bW5EZWZpbml0aW9uPFVzZXI+W10gPSBjb2x1bW5zO1xuICBza2lwOiBudW1iZXIgPSAwO1xuICB1c2VyczogVXNlcltdID0gW107XG4gIHNlYXJjaFRlcm0kID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBASW5wdXQoKSBzZWFyY2hEZWJvdW5jZVRpbWU6IG51bWJlciA9IDUwMDtcbiAgQElucHV0KCkgcGFnZVNpemU6IG51bWJlciA9IDE7XG4gIHBhZ2VTdGF0ZTogUGFnZWRSZXN1bHQ8VXNlcj4gfCBudWxsID0gbnVsbDtcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgYXBwbGllZEZpbHRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIGhhc01vcmU6IGJvb2xlYW4gPSB0cnVlO1xuICBsaW1pdDogbnVtYmVyID0gMjA7XG4gIHNvcnRQYXJhbTogc3RyaW5nID0gJ25hbWUnO1xuICBzb3J0T3JkZXI6IHN0cmluZyA9ICdhc2MnO1xuICBSb2xlczogUm9sZVtdID0gW107XG4gIFRhZ3M6IFdyaXRhYmxlU2lnbmFsPFRhZ1tdPiA9IHNpZ25hbChbXSk7XG4gIGRhdGFGaXQ6IFBhZ2VkUmVzdWx0PFVzZXI+ID0ge1xuICAgIFBhZ2VTaXplOiAxLFxuICAgIFNraXA6IDAsXG4gICAgVG90YWw6IDAsXG4gICAgUmVzdWx0OiBbXSxcbiAgICBMYXN0SXRlbTogWycnXSxcbiAgICBJc0xvYWRpbmdSZXN1bHRzOiBmYWxzZSxcbiAgfTtcblxuICBjdXJyZW50RmlsdGVyczogSURhdGFGaWx0ZXJbXSA9IFtdO1xuICBjdXJyZW50U29ydHM6IElEYXRhRmlsdGVyW10gPSBbXTtcblxuICByb2xlOiBzdHJpbmcgPSAnJztcblxuICBjYXJkQ29udGV4dEhpc3Rvcnk6IENhcmREYXRhW10gPSBbXTtcbiAgcGFyYW06IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGZvcm1Hcm91cENvbmZpZzogV3JpdGFibGVTaWduYWw8Rm9ybUdyb3VwQ29uZmlnPGFueT4+O1xuICBzdGF0dXNlcyA9IE9iamVjdC52YWx1ZXMoU3RhdHVzKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHVzZXJNYW5hZ2VtZW50U2VydmljZTogVXNlck1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclJvbGU6IFVzZXJBY2Nlc3NSZXF1ZXN0U2VydmljZSxcbiAgICBwcml2YXRlIHNlcnZlcjogSHR0cFdlYlJlcXVlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbFNlcnZpY2U6IFV0aWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW52U3ZjOiBFbnZpcm9ubWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcbiAgKSB7XG4gICAgdGhpcy5mb3JtR3JvdXBDb25maWcgPSBzaWduYWwoe1xuICAgICAgY29udHJvbHM6IHtcbiAgICAgICAgTWFpbEFkZHJlc3M6IHRoaXMuZmIuY29udHJvbCgnJyksXG4gICAgICAgIEZpcnN0TmFtZTogdGhpcy5mYi5jb250cm9sKCcnKSxcbiAgICAgICAgUGhvbmVOdW1iZXI6IHRoaXMuZmIuY29udHJvbCgnJyksXG4gICAgICAgIEFkZHJlc3M6IHRoaXMuZmIuY29udHJvbCgnJyksXG4gICAgICAgIFJvbGVJRDogdGhpcy5mYi5jb250cm9sKCcnKSxcbiAgICAgICAgVGFnczogdGhpcy5mYi5jb250cm9sKFtdKSxcbiAgICAgICAgV2FyZWhvdXNlczogdGhpcy5mYi5jb250cm9sKCcnKSxcbiAgICAgICAgU3RhdHVzOiB0aGlzLmZiLmNvbnRyb2woJycpLFxuICAgICAgfSxcbiAgICAgIC8vIHZhbGlkYXRvck9yT3B0czogbnVsbCxcbiAgICAgIC8vIGFzeW5jVmFsaWRhdG9yOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5nZXRSb2xlcygpO1xuICAgIHRoaXMuZ2V0VGFncygpO1xuICAgIHRoaXMucm91dGUucGFyYW1NYXAuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgIHRoaXMucm9sZSA9IHBhcmFtcy5nZXQoJ3JvbGUnKSB8fCAnJzsgLy8gRGVmYXVsdCB0byBhbiBlbXB0eSBzdHJpbmcgaWYgbm8gcm9sZVxuICAgICAgdGhpcy5mZXRjaFVzZXJzKCk7XG4gICAgfSk7XG4gIH1cblxuICBjYXJkRGF0YTogQ2FyZERhdGFbXSA9IFtdO1xuXG4gIGRhdGE6IGFueVtdID0gW107XG5cbiAgYXN5bmMgZmV0Y2hVc2Vycyhzb3J0VmFsdWU6IHN0cmluZyA9ICdDcmVhdGVkQXQnLCBvcmRlcjogc3RyaW5nID0gJ2FzYycpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkodHJ1ZSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy51c2VyTWFuYWdlbWVudFNlcnZpY2UuZ2V0UmVhbFVzZXJzKFxuICAgICAgICB0aGlzLnJvbGUsXG4gICAgICAgIHRoaXMuc2tpcCxcbiAgICAgICAgdGhpcy5saW1pdCxcbiAgICAgICAgdGhpcy5zb3J0UGFyYW0sXG4gICAgICAgIHRoaXMuc29ydE9yZGVyXG4gICAgICApO1xuICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuXG4gICAgICBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAvLyBIYW5kbGUgZXJyb3IgcmVzcG9uc2VcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgbG9nczonLCByZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSByZXMgYXMgUGFnZWRSZXN1bHQ8VXNlcj47XG4gICAgICAgIHRoaXMuZGF0YUZpdCA9IHJlc3BvbnNlO1xuICAgICAgICB0aGlzLnVzZXJzID0gWy4uLnRoaXMudXNlcnMsIC4uLnJlc3BvbnNlLlJlc3VsdF07XG4gICAgICAgIHRoaXMuY2FyZERhdGEgPSB0aGlzLmZvcm1hdENhcmREYXRhKHRoaXMudXNlcnMpO1xuICAgICAgICB0aGlzLnNraXAgKz0gdGhpcy5wYWdlU2l6ZTtcbiAgICAgICAgdGhpcy5oYXNNb3JlID0gdGhpcy5za2lwIDwgcmVzcG9uc2UuVG90YWw7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOicsIGVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRSb2xlcygpIHtcbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSSh0cnVlKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnVzZXJSb2xlLmdldFJvbGVzKCk7XG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSShmYWxzZSk7XG5cbiAgICAgIGlmIChyZXMgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHJvbGVzOicsIHJlcyk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzIGFzIFBhZ2VkUmVzdWx0PFJvbGU+O1xuICAgICAgdGhpcy5Sb2xlcyA9IHJlc3BvbnNlLlJlc3VsdDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgcm9sZXM6JywgZXJyb3IpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRUYWdzKCkge1xuICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKHRydWUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMudXNlclJvbGUuZ2V0VGFncygpO1xuICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuXG4gICAgICBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyByb2xlczonLCByZXMpO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSByZXMgYXMgUGFnZWRSZXN1bHQ8VGFnPjtcbiAgICAgIHRoaXMuVGFncy5zZXQocmVzcG9uc2UuUmVzdWx0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgcm9sZXM6JywgZXJyb3IpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVSb2xlSWQodmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IG1hdGNoZWRSb2xlID0gdGhpcy5Sb2xlcy5maWx0ZXIoKHJvbGUpID0+IHJvbGUuTmFtZSA9PT0gdmFsdWUpO1xuICAgIHJldHVybiBtYXRjaGVkUm9sZVswXT8uQ29kZTtcbiAgfVxuICAvKipcbiAgICogRm9ybWF0IHVzZXJzIGludG8gQ2FyZERhdGEgZm9yIHRoZSBVSSBsaWJyYXJ5XG4gICAqIEBwYXJhbSB1c2VycyBBcnJheSBvZiB1c2VycyB0byBmb3JtYXRcbiAgICogQHJldHVybnMgQXJyYXkgb2YgQ2FyZERhdGFcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0Q2FyZERhdGEodXNlcnM6IFVzZXJbXSk6IENhcmREYXRhW10ge1xuICAgIHJldHVybiB1c2Vycy5tYXAoKHVzZXIpID0+ICh7XG4gICAgICBzZWxlY3RlZDogZmFsc2UsIC8vIERlZmF1bHQgc2VsZWN0aW9uIHN0YXRlXG4gICAgICB0aXRsZTogYCR7dXNlci5GaXJzdE5hbWV9ICR7dXNlci5MYXN0TmFtZX1gLCAvLyBEaXNwbGF5IHVzZXIncyBuYW1lIGFzIHRpdGxlXG4gICAgICBkYXRhOiB7IC4uLnVzZXIgfSwgLy8gUGFzcyB0aGUgZW50aXJlIHVzZXIgb2JqZWN0XG4gICAgICBib2R5OiBbXG4gICAgICAgIHsgdGl0bGU6ICdOYW1lJywgdmFsdWU6IGAke3VzZXIuRmlyc3ROYW1lfSAke3VzZXIuTGFzdE5hbWV9YCB9LFxuICAgICAgICB7IHRpdGxlOiAnRS1NYWlsIEFkZHJlc3MnLCB2YWx1ZTogdXNlci5NYWlsQWRkcmVzcyB9LFxuICAgICAgICB7IHRpdGxlOiAnUGhvbmUgTnVtYmVyJywgdmFsdWU6IHVzZXIuUGhvbmVOdW1iZXIgfHwgJ04vQScgfSxcbiAgICAgIF0sXG4gICAgICBjaGlsZHJlbjogW10sIC8vIEFkZCBjaGlsZCBkYXRhIGlmIG5lY2Vzc2FyeVxuICAgIH0pKTtcbiAgfVxuXG4gIGNvbHVtbnMgPSBjb2x1bW5zO1xuICBzdHlsZXMgPSBiYXNlU3R5bGU7XG5cbiAgc2VsZWN0ZWRQYXJlbnQ/OiBzdHJpbmc7XG4gIGJhc2ljT3B0aW9uPzogc3RyaW5nO1xuICBzZWxlY3RlZE9wdGlvbjogc3RyaW5nW10gPSBbXTtcbiAgc2VsZWN0ZWRPcHRpb25Ud286IHN0cmluZ1tdID0gW107XG4gIHNlbGVjdGVkT3B0aW9uVGhyZWU/OiBzdHJpbmc7XG4gIG1pc3NpbmdPYmplY3Q6IGFueTtcblxuICAvLyBjbGVhckxvZ3Moc29ydFZhbHVlOiBzdHJpbmcgPSAnQ3JlYXRlZEF0Jywgb3JkZXI6IHN0cmluZyA9ICdhc2MnKSB7XG4gIC8vICAgdGhpcy5Vc2VyID0gW107IC8vIENsZWFyIHRoZSBsb2dzIGFycmF5XG4gIC8vICAgdGhpcy5za2lwID0gMDsgLy8gUmVzZXQgdGhlIHNraXAgdmFsdWVcbiAgLy8gICB0aGlzLmhhc01vcmUgPSB0cnVlOyAvLyBSZXNldCB0aGUgZmxhZyB0byBhbGxvdyBmZXRjaGluZyBtb3JlIGxvZ3NcbiAgLy8gICB0aGlzLmFwcGxpZWRGaWx0ZXJzID0gZmFsc2U7XG4gIC8vICAgdGhpcy5mZXRjaFVzZXJzKCk7XG4gIC8vIH1cblxuICAvLyBHcmlkIHZpZXcgcHJvcGVydGllc1xuICBpc0dyaWRWaWV3OiBib29sZWFuID0gdHJ1ZTtcbiAgY3VycmVudERhdGEhOiBDYXJkRGF0YTtcbiAgc2VsZWN0ZWRDb2x1bW5Db3VudDogbnVtYmVyID0gMDtcbiAgc2VsZWN0ZWRGaWx0ZXJUYWJsZUNvdW50OiBudW1iZXIgPSAwO1xuICBpc09QZW46IGJvb2xlYW4gPSB0cnVlO1xuICBzZWxlY3RlZFNvcnRDb3VudDogbnVtYmVyID0gMDtcbiAgc2hvd0ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBzZWFyY2hUZXJtOiBzdHJpbmcgPSAnJztcbiAgc2hvd0NvbHVtbjogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93U29ydDogYm9vbGVhbiA9IGZhbHNlO1xuICBzZWxlY3RlZEFsbDogYm9vbGVhbiA9IGZhbHNlO1xuICB2aXNpYmxlQ29sdW1uczogSURhdGFGaWx0ZXJbXSA9IGNvbHVtbnMubWFwKChjb2wpID0+ICh7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgbmFtZTogdHlwZW9mIGNvbC5oZWFkZXIgPT09ICdzdHJpbmcnID8gY29sLmhlYWRlciA6IGNvbC5pZCxcbiAgICB0eXBlOiBEYXRhRmlsdGVyVHlwZS5Cb29sLFxuICB9KSk7XG5cbiAgZmlsdGVyQXJyYXk6IElEYXRhRmlsdGVyW10gPSBbXG4gICAgeyBuYW1lOiAnRmlyc3ROYW1lJywgdHlwZTogRGF0YUZpbHRlclR5cGUuU3RyaW5nLCBjaGVja2VkOiBmYWxzZSB9LFxuICAgIHsgbmFtZTogJ0xhc3ROYW1lJywgdHlwZTogRGF0YUZpbHRlclR5cGUuU3RyaW5nLCBjaGVja2VkOiBmYWxzZSB9LFxuICAgIHsgbmFtZTogJ01haWxBZGRyZXNzJywgdHlwZTogRGF0YUZpbHRlclR5cGUuU3RyaW5nLCBjaGVja2VkOiBmYWxzZSB9LFxuICAgIHsgbmFtZTogJ1N0YXR1cycsIHR5cGU6IERhdGFGaWx0ZXJUeXBlLlN0cmluZywgY2hlY2tlZDogZmFsc2UgfSxcbiAgICB7IG5hbWU6ICdQaG9uZU51bWJlcicsIHR5cGU6IERhdGFGaWx0ZXJUeXBlLlN0cmluZywgY2hlY2tlZDogZmFsc2UgfSxcbiAgICB7IG5hbWU6ICdDcmVhdGVkQXQnLCB0eXBlOiBEYXRhRmlsdGVyVHlwZS5EYXRlLCBjaGVja2VkOiBmYWxzZSB9LFxuICAgIHsgbmFtZTogJ1JvbGUnLCB0eXBlOiBEYXRhRmlsdGVyVHlwZS5TdHJpbmcsIGNoZWNrZWQ6IGZhbHNlIH0sXG4gIF07XG5cbiAgc29ydE9wdGlvbnM6IElEYXRhRmlsdGVyW10gPSBbXG4gICAgeyBuYW1lOiAnTmFtZScsIHR5cGU6IERhdGFGaWx0ZXJUeXBlLlN0cmluZywgY2hlY2tlZDogZmFsc2UgfSxcbiAgICB7IG5hbWU6ICdNYWlsQWRkcmVzcycsIHR5cGU6IERhdGFGaWx0ZXJUeXBlLlN0cmluZywgY2hlY2tlZDogZmFsc2UgfSxcbiAgICB7IG5hbWU6ICdQaG9uZU51bWJlcicsIHR5cGU6IERhdGFGaWx0ZXJUeXBlLlN0cmluZywgY2hlY2tlZDogZmFsc2UgfSxcbiAgICB7IG5hbWU6ICdDcmVhdGVkQXQnLCB0eXBlOiBEYXRhRmlsdGVyVHlwZS5EYXRlLCBjaGVja2VkOiBmYWxzZSB9LFxuICBdO1xuXG4gIHRlc3RQYXJlbnRzOiBUZXN0UGFyZW50T2JqZWN0W10gPSBbXG4gICAgeyBJZDogJzEnLCBOYW1lOiAnTWFuYWdlcicgfSxcbiAgICB7IElkOiAnMicsIE5hbWU6ICdBZG1pbmlzdHJhdG9yJyB9LFxuICAgIHsgSWQ6ICczJywgTmFtZTogJ0plbG9tJyB9LFxuICBdO1xuXG4gIGdldFBhcmVudExhYmVsKGNvbnRleHQ6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc29sZS5sb2coeyBNaXNzaW5nT2JqOiB0aGlzLm1pc3NpbmdPYmplY3QgfSk7XG4gICAgcmV0dXJuIHRoaXMubWlzc2luZ09iamVjdC5OYW1lO1xuICB9XG5cbiAgb25TYXZlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNoaWxkQ29tcG9uZW50LmZvcm0udmFsaWQpIHtcbiAgICAgIC8vIGNvbnN0IHVzZXJEYXRhOiBVc2VyID0gdGhpcy5jaGlsZENvbXBvbmVudC5mb3JtLnZhbHVlO1xuICAgICAgLy8gY29uc29sZS5sb2coJ1BheWxvYWQ6JywgW3VzZXJEYXRhXSk7IC8vIExvZyB0aGUgcGF5bG9hZCB0byBjaGVjayBpdHMgc3RydWN0dXJlXG5cbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKHRydWUpO1xuICAgICAgdGhpcy51c2VyTWFuYWdlbWVudFNlcnZpY2VcbiAgICAgICAgLnNhdmVVc2VycyhbXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4udGhpcy5jdXJyZW50RGF0YT8uZGF0YSxcbiAgICAgICAgICAgIC4uLnRoaXMuY2hpbGRDb21wb25lbnQuZm9ybS52YWx1ZSxcbiAgICAgICAgICAgIERhdGFTdGF0ZTpcbiAgICAgICAgICAgICAgdGhpcy5jdXJyZW50RGF0YT8uZGF0YS5EYXRhU3RhdGUgPT09IE9iamVjdFN0YXRlLlVuY2hhbmdlZFxuICAgICAgICAgICAgICAgID8gT2JqZWN0U3RhdGUuQ2hhbmdlZFxuICAgICAgICAgICAgICAgIDogdGhpcy5jdXJyZW50RGF0YT8uZGF0YS5EYXRhU3RhdGUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSlcbiAgICAgICAgLnRoZW4oXG4gICAgICAgICAgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ1VzZXIgc2F2ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuZXhwZWN0ZWQgZXJyb3Igc2F2aW5nIHVzZXI6JywgZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMuY2hpbGRDb21wb25lbnQuZm9ybS52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Zvcm0gaXMgaW52YWxpZCcpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uRGF0YVNhdmUoZXZlbnQ6IHtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIGtleTogbnVtYmVyIHwgc3RyaW5nO1xuICAgIGRhdGE6IFBhcnRpYWw8VXNlcj47XG4gIH0pIHtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgLi4udGhpcy51c2Vyc1tldmVudC5pbmRleF0sXG4gICAgICAuLi5ldmVudC5kYXRhLFxuICAgICAgRGF0YVN0YXRlOlxuICAgICAgICB0aGlzLnVzZXJzW2V2ZW50LmluZGV4XT8uRGF0YVN0YXRlID09PSBPYmplY3RTdGF0ZS5VbmNoYW5nZWRcbiAgICAgICAgICA/IE9iamVjdFN0YXRlLkNoYW5nZWRcbiAgICAgICAgICA6IE9iamVjdFN0YXRlLk5ldyxcbiAgICB9IGFzIFVzZXI7XG5cbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSSh0cnVlKTtcbiAgICB0aGlzLnVzZXJNYW5hZ2VtZW50U2VydmljZVxuICAgICAgLnNhdmVVc2VycyhbcGF5bG9hZF0pXG4gICAgICAudGhlbihcbiAgICAgICAgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChyZXN1bHRbMF0pIHtcbiAgICAgICAgICAgICAgdGhpcy51c2VycyA9IHRoaXMudXNlcnMubWFwKCh1c2VyLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gZXZlbnQuaW5kZXgpIHJldHVybiByZXN1bHRbMF0gYXMgVXNlcjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXNlcjtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNob3dTdWNjZXNzKCdVc2VyIHNhdmVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVW5leHBlY3RlZCBlcnJvciBzYXZpbmcgdXNlcjonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuICAgICAgfSk7XG4gIH1cblxuICBvbkRlbGV0ZSgpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnQ2hpbGQgZm9ybSBkZWxldGUgdHJpZ2dlcmVkJyk7XG4gICAgLy8gUGVyZm9ybSBkZWxldGUgbG9naWMgaGVyZVxuICB9XG4gIG9uRHJvcGRvd25DaGFuZ2UoZXZlbnQ6IERyb3Bkb3duQ2hhbmdlRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBjb25zb2xlLmxvZyh7XG4gICAgLy8gICAnVGVzdCBQYXJlbnQgVmFsdWUnOiB0aGlzLnNlbGVjdGVkUGFyZW50LFxuICAgIC8vICAgLi4uXG4gICAgLy8gfSk7XG4gIH1cblxuICBvblNlbGVjdGlvbkNoYW5nZShzZWxlY3RlZFJvd3M6IFVzZXJbXSkge1xuICAgIGNvbnNvbGUubG9nKCdTZWxlY3Rpb24gY2hhbmdlZDonLCBzZWxlY3RlZFJvd3MpO1xuICAgIC8vIEhhbmRsZSB0aGUgc2VsZWN0aW9uIGNoYW5nZVxuICB9XG5cbiAgaGFuZGxlRXhwb3J0KGV4cG9ydGVkRGF0YTogUGFydGlhbDxhbnk+W10pIHtcbiAgICBjb25zb2xlLmxvZygnRXhwb3J0ZWQgZGF0YTonLCBleHBvcnRlZERhdGEpO1xuICAgIHRoaXMuZG93bmxvYWRDU1YoZXhwb3J0ZWREYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgZG93bmxvYWRDU1YoZGF0YTogUGFydGlhbDxhbnk+W10pIHtcbiAgICBjb25zdCBoZWFkZXJzID0gT2JqZWN0LmtleXMoZGF0YVswXSk7XG4gICAgY29uc3QgY3N2Q29udGVudCA9IFtcbiAgICAgIGhlYWRlcnMuam9pbignLCcpLFxuICAgICAgLi4uZGF0YS5tYXAoKHJvdykgPT4gaGVhZGVycy5tYXAoKGhlYWRlcikgPT4gcm93W2hlYWRlcl0pLmpvaW4oJywnKSksXG4gICAgXS5qb2luKCdcXG4nKTtcblxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbY3N2Q29udGVudF0sIHsgdHlwZTogJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTg7JyB9KTtcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGlmIChsaW5rLmRvd25sb2FkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVybCk7XG4gICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCAnZXhwb3J0LmNzdicpO1xuICAgICAgbGluay5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgbGluay5jbGljaygpO1xuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcbiAgICB9XG4gIH1cblxuICBnZXRDYXJkRGF0YUJ5TWFpbEFkZHJlc3MobWFpbEFkZHJlc3M6IHN0cmluZyk6IENhcmREYXRhIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zb2xlLmxvZygnY2FyZERhdGEgYXJyYXk6JywgdGhpcy5jYXJkRGF0YSk7XG4gICAgY29uc29sZS5sb2cobWFpbEFkZHJlc3MpO1xuXG4gICAgcmV0dXJuIHRoaXMuY2FyZERhdGEuZmluZCgoeyBkYXRhIH0pID0+IGRhdGE/Lk1haWxBZGRyZXNzID09PSBtYWlsQWRkcmVzcyk7XG4gIH1cblxuICBvcGVuRGV0YWlsVmlldyhtYWlsQWRkcmVzczogc3RyaW5nKSB7XG4gICAgY29uc3QgY2FyZEl0ZW0gPSB0aGlzLmdldENhcmREYXRhQnlNYWlsQWRkcmVzcyhtYWlsQWRkcmVzcyk7XG4gICAgY29uc29sZS5sb2coY2FyZEl0ZW0pO1xuXG4gICAgaWYgKGNhcmRJdGVtICYmIHRoaXMuY2FyZERhdGFWaWV3KSB7XG4gICAgICB0aGlzLmRhdGFWaWV3LnRvZ2dsZVZpZXcoKTtcbiAgICAgIC8vIEZpcnN0IHJlc2V0IGFsbCBzZWxlY3Rpb25zXG4gICAgICB0aGlzLmNhcmREYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgICAgIGl0ZW0uY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IChjaGlsZC5zZWxlY3RlZCA9IGZhbHNlKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBTZXQgdGhlIHNlbGVjdGVkIGl0ZW1cbiAgICAgIGNhcmRJdGVtLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuY3VycmVudERhdGEgPSB0aGlzLmNhcmREYXRhVmlldy5vbkl0ZW1DbGljayhjYXJkSXRlbSk7XG5cbiAgICAgIC8vIEZvcmNlIGNoYW5nZSBkZXRlY3Rpb24gaWYgbmVlZGVkXG4gICAgICAvLyB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnNraXAgPSAwO1xuICAgIHRoaXMucGFnZVNpemUgPSAyMDtcbiAgfVxuXG4gIGNsZWFyRGF0YSgpIHtcbiAgICB0aGlzLmN1cnJlbnREYXRhID0ge30gYXMgQ2FyZERhdGE7XG4gIH1cblxuICBsb2FkTW9yZSgpIHtcbiAgICBpZiAodGhpcy5oYXNNb3JlKSB7XG4gICAgICB0aGlzLmZldGNoVXNlcnMoKTtcbiAgICB9XG4gIH1cblxuICBvbkNvbHVtbkNoYW5nZShldmVudDogYm9vbGVhbikge1xuICAgIHRoaXMuc2hvd0NvbHVtbiA9IGV2ZW50O1xuICB9XG5cbiAgb25Tb3J0Q2hhbmdlKGV2ZW50OiBib29sZWFuKSB7XG4gICAgdGhpcy5zaG93U29ydCA9IGV2ZW50O1xuICAgIGNvbnNvbGUubG9nKGV2ZW50KTtcbiAgfVxuXG4gIG9uQ29sdW1uc1VwZGF0ZWQodXBkYXRlZENvbHVtbnM6IElEYXRhRmlsdGVyW10pIHtcbiAgICB0aGlzLm9uQ29sdW1uQ2hhbmdlKGZhbHNlKTtcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1uQ291bnQgPSB1cGRhdGVkQ29sdW1ucy5sZW5ndGg7XG5cbiAgICBpZiAodXBkYXRlZENvbHVtbnMpIHtcbiAgICAgIC8vIEZpbHRlciBjb2x1bW5zIHRvIGluY2x1ZGUgb25seSB2aXNpYmxlIG9uZXNcbiAgICAgIHRoaXMuZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcigoY29sKSA9PlxuICAgICAgICB0aGlzLnZpc2libGVDb2x1bW5zLmZpbmQoXG4gICAgICAgICAgKGZpbHRlcikgPT4gZmlsdGVyLm5hbWUgPT09IGNvbC5oZWFkZXIgJiYgZmlsdGVyLmNoZWNrZWRcbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgICAgLy8gUmVvcmRlciBjb2x1bW5zIGJhc2VkIG9uIHRoZSBvcmRlciBpbiB2aXNpYmxlQ29sdW1uc1xuICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbk9yZGVyID0gdGhpcy52aXNpYmxlQ29sdW1uc1xuICAgICAgICAuZmlsdGVyKChmaWx0ZXIpID0+IGZpbHRlci5jaGVja2VkKVxuICAgICAgICAubWFwKChmaWx0ZXIpID0+IGZpbHRlci5uYW1lKTtcblxuICAgICAgdGhpcy5jb2x1bW5zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXhBID0gdmlzaWJsZUNvbHVtbk9yZGVyLmluZGV4T2YoYS5oZWFkZXIgYXMgc3RyaW5nKTtcbiAgICAgICAgY29uc3QgaW5kZXhCID0gdmlzaWJsZUNvbHVtbk9yZGVyLmluZGV4T2YoYi5oZWFkZXIgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIGluZGV4QSAtIGluZGV4QjtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHBvc3RTZWFyY2gocGF5bG9hZDogYW55KSB7XG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkodHJ1ZSk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZXJ2ZXIucG9zdChcbiAgICAgIGBVc2VyL1NlYXJjaFVzZXJzLzAvMTAvQ3JlYXRlZEF0L2FzY2AsXG4gICAgICBwYXlsb2FkXG4gICAgKTtcblxuICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKGZhbHNlKTtcbiAgICBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgdGhpcy5hcHBsaWVkRmlsdGVycyA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFwcGxpZWRGaWx0ZXJzID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzIGFzIFBhZ2VkUmVzdWx0PFVzZXI+O1xuICAgICAgdGhpcy5kYXRhRml0ID0gcmVzcG9uc2U7XG4gICAgICB0aGlzLnVzZXJzID0gcmVzcG9uc2UuUmVzdWx0O1xuICAgICAgdGhpcy5jYXJkRGF0YSA9IHRoaXMuZm9ybWF0Q2FyZERhdGEodGhpcy51c2Vycyk7XG4gICAgfVxuICB9XG5cbiAgb25GaWx0ZXJBcHBsaWVkKGFwcGxpZWRGaWx0ZXI6IElEYXRhRmlsdGVyW10pIHtcbiAgICB0aGlzLnNob3dGaWx0ZXIgPSBmYWxzZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhcHBsaWVkRmlsdGVyKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlclRhYmxlQ291bnQgPSBhcHBsaWVkRmlsdGVyLmxlbmd0aDtcbiAgICAgIGNvbnNvbGUubG9nKGFwcGxpZWRGaWx0ZXIpO1xuXG4gICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IGFwcGxpZWRGaWx0ZXJcbiAgICAgICAgLmZpbHRlcigoZmlsdGVyKSA9PiBmaWx0ZXIuY2hlY2tlZClcbiAgICAgICAgLm1hcCgoZmlsdGVyKSA9PiAoe1xuICAgICAgICAgIFByb3BlcnR5TmFtZTogZmlsdGVyLm5hbWUsXG4gICAgICAgICAgRW50aXR5VmFsdWU6XG4gICAgICAgICAgICBmaWx0ZXIubmFtZSA9PT0gJ1JvbGUnXG4gICAgICAgICAgICAgID8gdGhpcy5oYW5kbGVSb2xlSWQoZmlsdGVyLnZhbHVlKVxuICAgICAgICAgICAgICA6IGZpbHRlci52YWx1ZSxcbiAgICAgICAgICBUeXBlOiBmaWx0ZXIudHlwZSxcbiAgICAgICAgICBPcGVyYXRvcjogJ0FuZCcsXG4gICAgICAgICAgU2lnbjogdGhpcy5nZXRDb25kaXRpb24oZmlsdGVyLmNvbmRpdGlvbiksXG4gICAgICAgIH0pKTtcblxuICAgICAgdGhpcy5wb3N0U2VhcmNoKHF1ZXJ5UGFyYW1zKTtcbiAgICB9XG4gIH1cblxuICBnZXRDb25kaXRpb24odmFsdWU6IGFueSk6IENvbmRpdGlvbk9wdGlvbnMgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAodmFsdWUpIHtcbiAgICAgIGNhc2UgQ29uZGl0aW9uYWxPcHRpb25zLk9uOlxuICAgICAgICByZXR1cm4gQ29uZGl0aW9uT3B0aW9ucy5PbjtcbiAgICAgIGNhc2UgQ29uZGl0aW9uYWxPcHRpb25zLkFmdGVyOlxuICAgICAgICByZXR1cm4gQ29uZGl0aW9uT3B0aW9ucy5BZnRlcjtcbiAgICAgIGNhc2UgQ29uZGl0aW9uYWxPcHRpb25zLkJlZm9yZTpcbiAgICAgICAgcmV0dXJuIENvbmRpdGlvbk9wdGlvbnMuQmVmb3JlO1xuICAgICAgY2FzZSBDb25kaXRpb25hbE9wdGlvbnMuTm90RXF1YWw6XG4gICAgICAgIHJldHVybiBDb25kaXRpb25PcHRpb25zLk5vdEVxdWFsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsgLy8gRXhwbGljaXRseSByZXR1cm4gdW5kZWZpbmVkIGZvciBpbnZhbGlkIGNhc2VzXG4gICAgfVxuICB9XG5cbiAgb25Tb3J0VXBkYXRlZCh1cGRhdGVkU29ydHM6IElEYXRhRmlsdGVyW10pOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRTb3J0cyA9IHVwZGF0ZWRTb3J0cztcbiAgfVxuXG4gIGFzeW5jIG9uU2VhcmNoKGV2ZW50OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0pIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0gPSBldmVudC52YWx1ZTtcbiAgICB0aGlzLnJlc2V0KCk7XG4gICAgaWYgKCF0aGlzLnNlYXJjaFRlcm0pIHtcbiAgICAgIHRoaXMuY2xlYXJMb2dzKCdDcmVhdGVkQXQnLCAnYXNjJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKHRydWUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuc2VydmVyLmdldChcbiAgICAgICAgYFVzZXIvR2V0VXNlcldpdGhQYXJhbS8ke3RoaXMuc2VhcmNoVGVybX0vJHt0aGlzLnNraXB9LyR7dGhpcy5wYWdlU2l6ZX0vQ3JlYXRlZEF0L2FzY2BcbiAgICAgICk7XG5cbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKGZhbHNlKTtcblxuICAgICAgaWYgKHJlcyBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZHVyaW5nIHNlYXJjaDonLCByZXMpO1xuICAgICAgICB0aGlzLmFwcGxpZWRGaWx0ZXJzID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHJlcyBhcyBQYWdlZFJlc3VsdDxVc2VyPjtcbiAgICAgICAgdGhpcy5kYXRhRml0ID0gcmVzcG9uc2U7XG4gICAgICAgIHRoaXMudXNlcnMgPSByZXNwb25zZS5SZXN1bHQ7XG4gICAgICAgIHRoaXMuY2FyZERhdGEgPSB0aGlzLmZvcm1hdENhcmREYXRhKHRoaXMudXNlcnMpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdTZWFyY2ggZXJyb3I6JywgZXJyb3IpO1xuICAgICAgdGhpcy5hcHBsaWVkRmlsdGVycyA9IGZhbHNlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyTG9ncyhzb3J0VmFsdWU6IHN0cmluZyA9ICdDcmVhdGVkQXQnLCBvcmRlcjogc3RyaW5nID0gJ2FzYycpIHtcbiAgICB0aGlzLnVzZXJzID0gW107IC8vIENsZWFyIHRoZSBsb2dzIGFycmF5XG4gICAgdGhpcy5za2lwID0gMDsgLy8gUmVzZXQgdGhlIHNraXAgdmFsdWVcbiAgICB0aGlzLmhhc01vcmUgPSB0cnVlOyAvLyBSZXNldCB0aGUgZmxhZyB0byBhbGxvdyBmZXRjaGluZyBtb3JlIGxvZ3NcbiAgICB0aGlzLmFwcGxpZWRGaWx0ZXJzID0gZmFsc2U7XG4gICAgdGhpcy5mZXRjaFVzZXJzKHNvcnRWYWx1ZSwgb3JkZXIpO1xuICB9XG5cbiAgb25WaWV3Q2hhbmdlKGlzR3JpZFZpZXc6IGJvb2xlYW4pOiB2b2lkIHsgfVxuXG4gIG9uU3RhdGVDaGFuZ2UoZXZlbnQ6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBib29sZWFuIH0pOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyhgU3RhdGUgY2hhbmdlZCBmb3IgJHtldmVudC5rZXl9OmAsIGV2ZW50LnZhbHVlKTtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnY3JlYXRlJykge1xuICAgICAgY29uc29sZS5sb2coJ3BlYWNlIGlzIGEgYm95Jyk7XG5cbiAgICAgIC8vIGNvbnN0IG5ld1VzZXIgPSB0aGlzLm5ld0l0ZW0oKVxuXG4gICAgICAvLyBpZiAoIG5ld1VzZXIgJiYgdGhpcy5jYXJkRGF0YVZpZXcpIHtcbiAgICAgIC8vICAgdGhpcy5kYXRhVmlldy50b2dnbGVWaWV3KCk7XG4gICAgICAvLyAgIC8vIEZpcnN0IHJlc2V0IGFsbCBzZWxlY3Rpb25zXG4gICAgICAvLyAgIHRoaXMuY2FyZERhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgLy8gICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIC8vICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgLy8gICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4gKGNoaWxkLnNlbGVjdGVkID0gZmFsc2UpKTtcbiAgICAgIC8vICAgICB9XG4gICAgICAvLyAgIH0pO1xuXG4gICAgICAvLyAgIHRoaXMuY3VycmVudERhdGEgPSB0aGlzLmNhcmREYXRhVmlldy5vbkl0ZW1DbGljayhuZXdVc2VyKTtcblxuICAgICAgLy8gICAvLyBGb3JjZSBjaGFuZ2UgZGV0ZWN0aW9uIGlmIG5lZWRlZFxuICAgICAgLy8gICAvLyB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIC8vIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC00IG1lc3NhZ2UtbG9nLWNvbnRhaW5lclwiPlxuICA8dmVyYmVuLWRhdGEtdmlld1xuICAgICN2ZHZcbiAgICBbdmlld1N0YXRlXT1cIntcbiAgICAgIGlzU2VhcmNoOiB0cnVlLFxuICAgICAgaXNDb2x1bW46IHRydWUsXG4gICAgICBpc0ZpbHRlcjogdHJ1ZSxcbiAgICAgIGlzU29ydDogdHJ1ZSxcbiAgICAgIGlzRXhwb3J0OiB0cnVlLFxuICAgICAgaXNTZWxlY3Q6IHRydWUsXG5cbiAgICAgIGlzVG9nZ2xlOiB0cnVlXG4gICAgfVwiXG4gICAgW2J1dHRvbkNsYXNzXT1cIidteS1jdXN0b20tYnV0dG9uLWNsYXNzJ1wiXG4gICAgW2ljb25DbGFzc109XCInbXktaWNvbi1jbGFzcydcIlxuICAgIFthY3RpdmVJY29uQ2xhc3NdPVwiJ215LWFjdGl2ZS1pY29uLWNsYXNzJ1wiXG4gICAgW3NlbGVjdGVkQ29sdW1uQ291bnRdPVwic2VsZWN0ZWRDb2x1bW5Db3VudFwiXG4gICAgW3NlbGVjdGVkU29ydENvdW50XT1cInNlbGVjdGVkU29ydENvdW50XCJcbiAgICBbc2VsZWN0ZWRGaWx0ZXJUYWJsZUNvdW50XT1cInNlbGVjdGVkRmlsdGVyVGFibGVDb3VudFwiXG4gICAgKG9uU2VhcmNoQ2hhbmdlKT1cIm9uU2VhcmNoKCRldmVudClcIlxuICAgIFtzZWFyY2hWYWx1ZV09XCJzZWFyY2hUZXJtXCJcbiAgICBbc2hvd0ZpbHRlckNoaWxkXT1cInNob3dGaWx0ZXJcIlxuICAgICh2aWV3Q2hhbmdlKT1cIm9uVmlld0NoYW5nZSgkZXZlbnQpXCJcbiAgICAoc3RhdGVDaGFuZ2UpPVwib25TdGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICBbaXNUYWJsZVZpZXddPVwiZmFsc2VcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cIm10LTJcIiB0YWJsZS1jb250ZW50PlxuICAgICAgPGxpYi1kYXRhLXRhYmxlXG4gICAgICAgIFtkYXRhXT1cInVzZXJzXCJcbiAgICAgICAgW2NvbHVtbnNdPVwiZmlsdGVyZWRDb2x1bW5zXCJcbiAgICAgICAgW2Zvcm1Hcm91cENvbmZpZ109XCJmb3JtR3JvdXBDb25maWcoKVwiXG4gICAgICAgIFtzdHlsZUNvbmZpZ109XCJzdHlsZXNcIlxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAocm93U2F2ZSk9XCJvbkRhdGFTYXZlKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cInNlbGVjdFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgI2NlbGxcbiAgICAgICAgICAgIGxldC1pc1NlbGVjdGVkPVwiaXNTZWxlY3RlZFwiXG4gICAgICAgICAgICBsZXQtdG9nZ2xlUm93U2VsZWN0aW9uPVwidG9nZ2xlUm93U2VsZWN0aW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZFwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlUm93U2VsZWN0aW9uKClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgI2hlYWRlclxuICAgICAgICAgICAgbGV0LWFsbFJvd3NTZWxlY3RlZD1cImFsbFJvd3NTZWxlY3RlZFwiXG4gICAgICAgICAgICBsZXQtc29tZVJvd3NTZWxlY3RlZD1cInNvbWVSb3dzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgbGV0LXRvZ2dsZUFsbFJvd3M9XCJ0b2dnbGVBbGxSb3dzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiYWxsUm93c1NlbGVjdGVkKClcIlxuICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzb21lUm93c1NlbGVjdGVkKClcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUFsbFJvd3MoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cImNyZWF0ZWRBdFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtdmFsdWU+XG4gICAgICAgICAgICB7eyB2YWx1ZSB8IGRhdGUgfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBsaWJDb2x1bW49XCJ1c2VyXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsRWRpdCBsZXQtZm9ybUNvbnRyb2w9XCJmb3JtQ29udHJvbFwiIGxldC12YWx1ZT5cbiAgICAgICAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgICAgICAgIG5hbWU9XCJGaXJzdE5hbWVcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cIm1haWxcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGxFZGl0IGxldC1mb3JtQ29udHJvbD1cImZvcm1Db250cm9sXCIgbGV0LXZhbHVlPlxuICAgICAgICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgICAgICAgbmFtZT1cIk1haWxBZGRyZXNzXCJcbiAgICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgbGliQ29sdW1uPVwicGhvbmVcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGxFZGl0IGxldC1mb3JtQ29udHJvbD1cImZvcm1Db250cm9sXCIgbGV0LXZhbHVlPlxuICAgICAgICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgICAgICAgbmFtZT1cIlBob25lTnVtYmVyXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRlbFwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cImFkZHJlc3NcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGxFZGl0IGxldC1mb3JtQ29udHJvbD1cImZvcm1Db250cm9sXCIgbGV0LXZhbHVlPlxuICAgICAgICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgICAgICAgbmFtZT1cIkFkZHJlc3NcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cInJvbGVcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGxFZGl0IGxldC1mb3JtQ29udHJvbD1cImZvcm1Db250cm9sXCIgbGV0LXZhbHVlPlxuICAgICAgICAgICAgPHZlcmJlbi1kcm9wLWRvd25cbiAgICAgICAgICAgICAgbmFtZT1cIlJvbGVcIlxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwidy1mdWxsXCJcbiAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgW211bHRpc2VsZWN0XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW2ZpbHRlcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJcIlxuICAgICAgICAgICAgICBbKG9wdGlvbnMpXT1cIlJvbGVzXCJcbiAgICAgICAgICAgICAgaWQ9XCJyb2xlXCJcbiAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJOYW1lXCJcbiAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJDb2RlXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC92ZXJiZW4tZHJvcC1kb3duPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgbGliQ29sdW1uPVwiYWN0aW9uc1wiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgI2NlbGxcbiAgICAgICAgICAgIGxldC12YWx1ZVxuICAgICAgICAgICAgbGV0LWRlbGV0ZVJvdz1cImRlbGV0ZVJvd1wiXG4gICAgICAgICAgICBsZXQtaXNFZGl0aW5nPVwiaXNFZGl0aW5nXCJcbiAgICAgICAgICAgIGxldC10b2dnbGVSb3dFZGl0PVwidG9nZ2xlUm93RWRpdFwiXG4gICAgICAgICAgICBsZXQtcm93PVwicm93XCJcbiAgICAgICAgICAgIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtNlwiPlxuICAgICAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSb3dFZGl0KClcIlxuICAgICAgICAgICAgICAgIGljb249XCJlZGl0XCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuXG4gICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlUm93KClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICNjZWxsRWRpdFxuICAgICAgICAgICAgbGV0LXZhbHVlXG4gICAgICAgICAgICBsZXQtZGVsZXRlUm93PVwiZGVsZXRlUm93XCJcbiAgICAgICAgICAgIGxldC1pc0VkaXRpbmc9XCJpc0VkaXRpbmdcIlxuICAgICAgICAgICAgbGV0LXRvZ2dsZVJvd0VkaXQ9XCJ0b2dnbGVSb3dFZGl0XCJcbiAgICAgICAgICAgIGxldC1yb3c9XCJyb3dcIlxuICAgICAgICAgICAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC02XCI+XG4gICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJvd0VkaXQoKVwiXG4gICAgICAgICAgICAgICAgaWNvbj1cInRpY2tcIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgID48L3ZlcmJlbi1zdmc+XG5cbiAgICAgICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSb3dFZGl0KClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuXG4gICAgICAgICAgICAgIDwhLS0gPHZlcmJlbi1zdmdcbiAgICAgICAgICAgICAgICBpY29uPVwiY2FyZFZpZXdBbHRcIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9DYXJkVmlldyh2YWx1ZSlcIlxuICAgICAgICAgICAgICA+PC92ZXJiZW4tc3ZnPiAtLT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gICAgICAgICAgICA8c3Ryb25nPkFjdGlvbnM8L3N0cm9uZz5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBsaWJDb2x1bW49XCJzdGF0dXNcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICNjZWxsXG4gICAgICAgICAgICBsZXQtaXNFZGl0aW5nPVwiaXNFZGl0aW5nXCJcbiAgICAgICAgICAgIGxldC10b2dnbGVSb3dFZGl0PVwidG9nZ2xlUm93RWRpdFwiXG4gICAgICAgICAgICBsZXQtZGVsZXRlUm93PVwiZGVsZXRlUm93XCJcbiAgICAgICAgICAgIGxldC12YWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bGliLXVzZXItc3RhdHVzLWJhZGdlIFtzdGF0dXNdPVwidmFsdWVcIj48L2xpYi11c2VyLXN0YXR1cy1iYWRnZT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAjY2VsbEVkaXRcbiAgICAgICAgICAgIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCJcbiAgICAgICAgICAgIGxldC1mb3JtQ29udHJvbD1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dmVyYmVuLWRyb3AtZG93blxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwidy1mdWxsXCJcbiAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgW211bHRpc2VsZWN0XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZXQgc3RhdHVzXCJcbiAgICAgICAgICAgICAgW29wdGlvbnNdPVwic3RhdHVzZXNcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3ZlcmJlbi1kcm9wLWRvd24+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2xpYi1kYXRhLXRhYmxlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2FyZC1jb250ZW50PlxuICAgICAgPHZlcmJlbi1jYXJkLWRhdGEtdmlld1xuICAgICAgICBib3JkZXJSYWRpdXM9XCIxMnB4XCJcbiAgICAgICAgKGxvYWRNb3JlQ2xpY2spPVwibG9hZE1vcmUoKVwiXG4gICAgICAgICN2ZGN2XG4gICAgICAgIGRhdGFJZD1cIk1haWxBZGRyZXNzXCJcbiAgICAgICAgYm9yZGVyPVwiNXB4XCJcbiAgICAgICAgW2NhcmREYXRhTGlzdF09XCJjYXJkRGF0YVwiXG4gICAgICAgIHJiZ0NvbG9yPVwiI2Y1ZjZmOVwiXG4gICAgICAgIG1nPVwiMHB4XCJcbiAgICAgICAgY2xhc3M9XCJnYXAtMVwiXG4gICAgICA+XG4gICAgICAgIDx2ZXJiZW4tbGVmdC1jYXJkLWRhdGEtdmlldyBjbGFzcz1cIm0tMCBnYXAtMlwiPlxuICAgICAgICAgIDx2ZXJiZW4tbGVmdC1jYXJkLWRhdGFcbiAgICAgICAgICAgICN2bGNkXG4gICAgICAgICAgICBbcGFyZW50XT1cInZkY3ZcIlxuICAgICAgICAgICAgZGF0YUlkPVwiTWFpbEFkZHJlc3NcIlxuICAgICAgICAgICAgY2xhc3M9XCJiZy1zZWNvbmRhcnktMTAwIHJvdW5kZWQteGwgYm9yZGVyLXByaW1hcnkgYm9yZGVyLVsxcHhdXCJcbiAgICAgICAgICAgIFtjYXJkRGF0YUxpc3RdPVwiY2FyZERhdGFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2FyZCBsZXQtaXRlbT5cbiAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiY3VycmVudERhdGEgPSB2ZGN2Lm9uSXRlbUNsaWNrKGl0ZW0pXCIgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ2bGNkLnNob3dDaGlsZHJlbihpdGVtKVwiXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ2bGNkLnNob3dUb2dnbGUoaXRlbSkgPyAndmlzaWJsZScgOiAnaW52aXNpYmxlJ1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW1zLWNlbnRlciBmbGV4IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgIFtpY29uXT1cIml0ZW0uaXNDaGlsZHJlbkV4cGFuZGVkID8gJ21pbnVzJyA6ICdwbHVzJ1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3VycmVudERhdGEgPSB2ZGN2Lm9uSXRlbUNsaWNrKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBjdXJzb3ItcG9pbnRlciB3LWZ1bGwgYmctc2Vjb25kYXJ5IHJvdW5kZWQteGxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTMgcm91bmRlZC14bCByb3VuZGVkLXRyLW5vbmUgcm91bmRlZC1ici1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgaXRlbS5zZWxlY3RlZCA/ICdiZy1wcmltYXJ5JyA6ICdiZy1zZWNvbmRhcnktMjAwJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMSBmbGV4IGl0ZW1zLWVuZCBnYXAteS0yIGdhcC14LTQgcC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTEgc3BhY2UteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LVsjNDA0MDQwXSBmbGV4LTEgdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGl0ZW0udGl0bGUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG15LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwaG9uZVwiIGNsYXNzPVwidGV4dC1bMTBweF0gZm9udC1saWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5Sb2xlOjwvbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwicGhvbmVcIiBjbGFzcz1cInRleHQtc20gdHJ1bmNhdGVcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmRhdGEuUm9sZT8uTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBnYXAteS0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJncmlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJyb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LVsxMHB4XSBmb250LWxpZ2h0IHRleHQtWyM0MDQwNDBdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlJvbGU8L2xhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD1cInJvbGVcIiBjbGFzcz1cInRleHQtc20gZm9udC1tZWRpdW1cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmRhdGE/LlJvbGU/Lk5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8bGliLXVzZXItc3RhdHVzLWJhZGdlXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cIml0ZW0uZGF0YS5TdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgID48L2xpYi11c2VyLXN0YXR1cy1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdmVyYmVuLWxlZnQtY2FyZC1kYXRhPlxuICAgICAgICA8L3ZlcmJlbi1sZWZ0LWNhcmQtZGF0YS12aWV3PlxuXG4gICAgICAgIDx2ZXJiZW4tcmlnaHQtY2FyZC1kYXRhLXZpZXc+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNwYXJlbnQ+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctc2Vjb25kYXJ5LTEwMCBweS0yIGZsZXggZmxleC1jb2wgZ2FwLTIwIHB4LTJcIj5cbiAgICAgICAgICAgICAgPGxpYi11c2VyLXJlcXVlc3QtZm9ybVxuICAgICAgICAgICAgICAgIFtyb2xlc109XCJSb2xlc1wiXG4gICAgICAgICAgICAgICAgW3RhZ3NdPVwiVGFncygpXCJcbiAgICAgICAgICAgICAgICBbY3VycmVudERhdGFdPVwiY3VycmVudERhdGFcIlxuICAgICAgICAgICAgICAgIChzd2l0Y2hWaWV3KT1cInZkdi50b2dnbGVWaWV3KClcIlxuICAgICAgICAgICAgICA+PC9saWItdXNlci1yZXF1ZXN0LWZvcm0+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIGJvdHRvbS04IGxlZnQtMCByaWdodC0wIHAtM1wiPlxuICAgICAgICAgICAgICAgIDwhLS0gPHZlcmJlbmEtYnV0dG9uIHRleHQ9XCJEZWxldGVcIiBiZ0NvbG9yPVwiIzk5OTk5OVwiIHRleHRDb2xvcj1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICBib3JkZXI9XCIxcHggc29saWQgIzk5OTk5OVwiIChjbGljayk9XCJvbkRlbGV0ZSgpXCI+PC92ZXJiZW5hLWJ1dHRvbj4gLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmR2LnRvZ2dsZVZpZXcoKVwiXG4gICAgICAgICAgICAgICAgICAgIHRleHQ9XCJTd2l0Y2ggVG8gVGFibGVcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZVR5cGU9XCJ5bHctb3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICA+PC92ZXJiZW5hLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0ZXh0PVwiU2F2ZVwiXG4gICAgICAgICAgICAgICAgICAgIGJnQ29sb3I9XCIjRkZFNjgxXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2F2ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPVwiIzQwNDA0MFwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIjFweCBzb2xpZCAjRkZFNjgxXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSAoY2xpY2spPVwiXCIgLS0+XG4gICAgICAgICAgICAgICAgICA8L3ZlcmJlbmEtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdmVyYmVuLXJpZ2h0LWNhcmQtZGF0YS12aWV3PlxuXG4gICAgICAgIDx2ZXJiZW4tY2FyZC1kYXRhLXZpZXctZm9vdGVyIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnZmxleCBnYXAtMiBpdGVtcy1jZW50ZXInOiB0cnVlLFxuICAgICAgICAgICAgICAnanVzdGlmeS1lbmQnOiB0cnVlLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSA8dmVyYmVuYS1idXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCIhdmRjdi5oYXNDdXJyZW50SXRlbSgpXCJcbiAgICAgICAgICAgICAgW2ZvbnRXZWlnaHRdPVwiJ2JvbGQnXCJcbiAgICAgICAgICAgICAgW2JnQ29sb3JdPVwiJyM4RThEODcnXCJcbiAgICAgICAgICAgICAgW2JvcmRlclJhZGl1c109XCInNHB4J1wiXG4gICAgICAgICAgICAgIFt0ZXh0Q29sb3JdPVwiJyNmZmYnXCJcbiAgICAgICAgICAgICAgW3BkXT1cIic5Ljc5cHggMzcuMjhweCdcIlxuICAgICAgICAgICAgICBbdGV4dF09XCInRGVsZXRlJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3ZlcmJlbmEtYnV0dG9uPiAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IHt7XG4gICAgICAgICAgICAgICAgdmRjdi5oYXNDdXJyZW50SXRlbSgpID8gJ2ZsZXgtMScgOiAnJ1xuICAgICAgICAgICAgICB9fSBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXIgZ2FwLTVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhZ2luYXRvci10ZXh0XCJcbiAgICAgICAgICAgICAgICA+e3sgY2FyZERhdGEubGVuZ3RoIH19IHJlY29yZHMgbG9hZGVkPC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJsb2FkTW9yZSgpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImxvYWQtbW9yZSB2aWV3LWxpbmtzIHRleHQtWyMzNDc5RTldIHVuZGVybGluZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBMb2FkIG1vcmVcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC92ZXJiZW4tY2FyZC1kYXRhLXZpZXctZm9vdGVyPlxuICAgICAgPC92ZXJiZW4tY2FyZC1kYXRhLXZpZXc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjb2x1bW4tY29udGVudD5cbiAgICAgIDx2ZXJiZW4tdmlzaWJsZS1jb2x1bW5cbiAgICAgICAgKGNvbHVtbnNVcGRhdGVkKT1cIm9uQ29sdW1uc1VwZGF0ZWQoJGV2ZW50KVwiXG4gICAgICAgIFtib3JkZXJdPVwiJzFweCBzb2xpZCByZ2JhKDIxMiwgMTYwLCA3LCAxKSdcIlxuICAgICAgICBib3JkZXJSYWRpdXM9XCIxMHB4XCJcbiAgICAgICAgYm94U2hhZG93PVwiMnB4IDJweCAycHggMHB4IHNpbHZlclwiXG4gICAgICAgIGJnQ29sb3I9XCJ3aGl0ZVwiXG4gICAgICAgIHdpZHRoPVwiNDAwcHhcIlxuICAgICAgICB0ZXh0Q29sb3I9XCJibGFja1wiXG4gICAgICAgIHBkPVwiMXJlbVwiXG4gICAgICAgIHByaW1hcnlDb2xvcj1cIiNGRkU2ODFcIlxuICAgICAgICBzZWNvbmRhcnlDb2xvcj1cIiMzNDc5RTlcIlxuICAgICAgICBbY29sdW1uc109XCJ2aXNpYmxlQ29sdW1uc1wiXG4gICAgICAgIFtkaXNwbGF5ZWRDb2x1bW5zXT1cIjVcIlxuICAgICAgPjwvdmVyYmVuLXZpc2libGUtY29sdW1uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgZmlsdGVyLWNvbnRlbnQ+XG4gICAgICA8dmVyYmVuLXRhYmxlLWZpbHRlclxuICAgICAgICBbYm9yZGVyXT1cIicxcHggc29saWQgcmdiYSgyMTIsIDE2MCwgNywgMSknXCJcbiAgICAgICAgYm9yZGVyUmFkaXVzPVwiMTBweFwiXG4gICAgICAgIGJveFNoYWRvdz1cIjJweCAycHggMnB4IDBweCBzaWx2ZXJcIlxuICAgICAgICBiZ0NvbG9yPVwid2hpdGVcIlxuICAgICAgICB3aWR0aD1cIjQyMHB4XCJcbiAgICAgICAgdGV4dENvbG9yPVwiYmxhY2tcIlxuICAgICAgICBwZD1cIjFyZW1cIlxuICAgICAgICBwcmltYXJ5Q29sb3I9XCIjRkZFNjgxXCJcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3I9XCIjMzQ3OUU5XCJcbiAgICAgICAgdGVydGlhcnlDb2xvcj1cIiM0MDQwNDBcIlxuICAgICAgICBbZmlsdGVyT3B0aW9uc109XCJmaWx0ZXJBcnJheVwiXG4gICAgICAgIFttYXhGaWx0ZXJMZW5ndGhdPVwiM1wiXG4gICAgICAgIChmaWx0ZXJzQXBwbGllZCk9XCJvbkZpbHRlckFwcGxpZWQoJGV2ZW50KVwiXG4gICAgICA+PC92ZXJiZW4tdGFibGUtZmlsdGVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgc29ydC1jb250ZW50PlxuICAgICAgPHZlcmJlbi1zb3J0LXRhYmxlXG4gICAgICAgIChzZWxlY3RlZE9wdGlvbnMpPVwib25Tb3J0VXBkYXRlZCgkZXZlbnQpXCJcbiAgICAgICAgW2JvcmRlcl09XCInMXB4IHNvbGlkIHJnYmEoMjEyLCAxNjAsIDcsIDEpJ1wiXG4gICAgICAgIGJvcmRlclJhZGl1cz1cIjEwcHhcIlxuICAgICAgICBib3hTaGFkb3c9XCIycHggMnB4IDJweCAwcHggc2lsdmVyXCJcbiAgICAgICAgYmdDb2xvcj1cIndoaXRlXCJcbiAgICAgICAgd2lkdGg9XCI0MDBweFwiXG4gICAgICAgIHRleHRDb2xvcj1cImJsYWNrXCJcbiAgICAgICAgcGQ9XCIxcmVtXCJcbiAgICAgICAgcHJpbWFyeUNvbG9yPVwiI0ZGRTY4MVwiXG4gICAgICAgIHNlY29uZGFyeUNvbG9yPVwiIzM0NzlFOVwiXG4gICAgICAgIHRlcnRpYXJ5Q29sb3I9XCIjNDA0MDQwXCJcbiAgICAgICAgW2VuYWJsZURyYWdBbmREcm9wXT1cInRydWVcIlxuICAgICAgICBbc29ydE9wdGlvbnNdPVwic29ydE9wdGlvbnNcIlxuICAgICAgPjwvdmVyYmVuLXNvcnQtdGFibGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBleHBvcnQtY29udGVudD5cbiAgICAgIDxsaWItZGF0YS14cG9ydFxuICAgICAgW2NvbHVtbnNdPVwiYWxsQ29sdW1uc1wiXG4gICAgICBbZGF0YV09XCJ1c2Vyc1wiXG4gICAgICA+XG4gICAgICA8L2xpYi1kYXRhLXhwb3J0PlxuICAgIDwvZGl2PlxuICA8L3ZlcmJlbi1kYXRhLXZpZXc+XG4gIDxkaXZcbiAgICAqbmdJZj1cIiF2ZGN2Lmhhc0N1cnJlbnRJdGVtKCkgJiYgdGhpcy5jYXJkQ29udGV4dEhpc3RvcnkubGVuZ3RoID09IDBcIlxuICAgIGNsYXNzPVwibWVzc2FnZS1sb2ctYnV0dG9uLWNvbnRhaW5lciBmbGV4IGp1c3RpZnktYmV0d2VlblwiXG4gID48L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwidmR2LmlzVGFibGVWaWV3XCIgY2xhc3M9XCJ3LWZ1bGwgZmxleCBnYXAtMiBqdXN0aWZ5LWVuZFwiPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cIm1lc3NhZ2UtbG9nLWJ1dHRvbi1jb250YWluZXIgZmxleCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgICBbZm9udFdlaWdodF09XCInYm9sZCdcIlxuICAgICAgICBbYmdDb2xvcl09XCInIzhFOEQ4NydcIlxuICAgICAgICBbYm9yZGVyUmFkaXVzXT1cIic0cHgnXCJcbiAgICAgICAgW3RleHRDb2xvcl09XCInI2ZmZidcIlxuICAgICAgICBbcGRdPVwiJzkuNzlweCAzNy4yOHB4J1wiXG4gICAgICAgIFt0ZXh0XT1cIidEZWxldGUnXCJcbiAgICAgID5cbiAgICAgIDwvdmVyYmVuYS1idXR0b24+XG4gICAgPC9kaXY+IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIGl0ZW1zLWNlbnRlciBnYXAtNVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJwYWdpbmF0b3ItdGV4dFwiPnt7IGNhcmREYXRhLmxlbmd0aCB9fSByZWNvcmRzIGxvYWRlZDwvc3Bhbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKGNsaWNrKT1cImxvYWRNb3JlKClcIlxuICAgICAgICBjbGFzcz1cImxvYWQtbW9yZSB2aWV3LWxpbmtzIHRleHQtWyMzNDc5RTldIHVuZGVybGluZVwiXG4gICAgICA+XG4gICAgICAgIExvYWQgbW9yZVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
535
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1tYW5hZ2VtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1tYW5hZ2VtZW50L3VzZXItbWFuYWdlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3VzZXItbWFuYWdlbWVudC91c2VyLW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFcEQsT0FBTyxFQUFlLGtCQUFrQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFMUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSS9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQVEsTUFBTSxFQUFhLE1BQU0seUNBQXlDLENBQUM7QUFFaEksT0FBTyxFQUlMLGtCQUFrQixFQUNsQixjQUFjLEVBS2YsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7Ozs7Ozs7Ozs7O0FBRXBHLElBQUssZUFJSjtBQUpELFdBQUssZUFBZTtJQUNsQixnQ0FBOEIsQ0FBQTtJQUM5Qiw0QkFBMEIsQ0FBQTtJQUMxQiwrQkFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBSkksZUFBZSxLQUFmLGVBQWUsUUFJbkI7QUFZRCxN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TTtnQkFDQyxRQUFRO3NCQUF6QixTQUFTO3VCQUFDLEtBQUs7Z0JBRWhCLGNBQWM7c0JBRGIsU0FBUzt1QkFBQywyQkFBMkI7Z0JBUzdCLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgc2lnbmFsLFxuICBWaWV3Q2hpbGQsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbHVtbnMgfSBmcm9tICcuL3VzZXItbWFuYWdlbWVudC5jb2x1bW5zJztcblxuaW1wb3J0IHsgUGFnZWRSZXN1bHQsIFNlYXJjaFByb3BlcnR5U2lnbiB9IGZyb20gJ3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBIdHRwV2ViUmVxdWVzdFNlcnZpY2UsIFV0aWxTZXJ2aWNlIH0gZnJvbSAndmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvc2VydmljZXMnO1xuaW1wb3J0IHsgYmFzZVN0eWxlIH0gZnJvbSAnLi9iYXNlLXRhYmxlLXN0eWxlJztcblxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVc2VyQWNjZXNzUmVxdWVzdFNlcnZpY2UgfSBmcm9tICd2ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3VzZXItcmVxdWVzdC1hcHByb3ZhbCc7XG5pbXBvcnQgeyBDb25kaXRpb25PcHRpb25zLCBFcnJvclJlc3BvbnNlLCBPYmplY3RTdGF0ZSwgUm9sZSwgU3RhdHVzLCBUYWcsIFVzZXIgfSBmcm9tICd2ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAndmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgQ2FyZERhdGEsXG4gIENhcmREYXRhVmlld0NvbXBvbmVudCxcbiAgQ29sdW1uRGVmaW5pdGlvbixcbiAgQ29uZGl0aW9uYWxPcHRpb25zLFxuICBEYXRhRmlsdGVyVHlwZSxcbiAgRGF0YVZpZXdDb21wb25lbnQsXG4gIERyb3Bkb3duQ2hhbmdlRXZlbnQsXG4gIEZvcm1Hcm91cENvbmZpZyxcbiAgSURhdGFGaWx0ZXJcbn0gZnJvbSAndmVyYmVuLW5nLXVpJztcbmltcG9ydCB7IFVzZXJNYW5hZ2VtZW50U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdXNlci1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlck1hbmFnZW1lbnRGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi91c2VyLW1hbmFnZW1lbnQtZm9ybS91c2VyLW1hbmFnZW1lbnQtZm9ybS5jb21wb25lbnQnO1xuXG5lbnVtIERhdGVGaWx0ZXJUeXBlcyB7XG4gIEJlZm9yZSA9IFNlYXJjaFByb3BlcnR5U2lnbi5MVCxcbiAgT24gPSBTZWFyY2hQcm9wZXJ0eVNpZ24uRVEsXG4gIEFmdGVyID0gU2VhcmNoUHJvcGVydHlTaWduLkdULFxufVxuXG5pbnRlcmZhY2UgVGVzdFBhcmVudE9iamVjdCB7XG4gIElkOiBzdHJpbmc7XG4gIE5hbWU6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXVzZXItbWFuYWdlbWVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vdXNlci1tYW5hZ2VtZW50LmNvbXBvbmVudC5jc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBVc2VyTWFuYWdlbWVudENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ3ZkY3YnKSBjYXJkRGF0YVZpZXchOiBDYXJkRGF0YVZpZXdDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3ZkdicpIGRhdGFWaWV3ITogRGF0YVZpZXdDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoVXNlck1hbmFnZW1lbnRGb3JtQ29tcG9uZW50KVxuICBjaGlsZENvbXBvbmVudCE6IFVzZXJNYW5hZ2VtZW50Rm9ybUNvbXBvbmVudDtcbiAgcHJpdmF0ZSBjdXJyZW50U2VhcmNoVGVybTogc3RyaW5nID0gJyc7XG5cbiAgYWxsQ29sdW1uczogQ29sdW1uRGVmaW5pdGlvbjxVc2VyPltdID0gY29sdW1ucztcbiAgZmlsdGVyZWRDb2x1bW5zOiBDb2x1bW5EZWZpbml0aW9uPFVzZXI+W10gPSBjb2x1bW5zO1xuICBza2lwOiBudW1iZXIgPSAwO1xuICB1c2VyczogVXNlcltdID0gW107XG4gIHNlYXJjaFRlcm0kID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBASW5wdXQoKSBzZWFyY2hEZWJvdW5jZVRpbWU6IG51bWJlciA9IDUwMDtcbiAgQElucHV0KCkgcGFnZVNpemU6IG51bWJlciA9IDE7XG4gIHBhZ2VTdGF0ZTogUGFnZWRSZXN1bHQ8VXNlcj4gfCBudWxsID0gbnVsbDtcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgYXBwbGllZEZpbHRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIGhhc01vcmU6IGJvb2xlYW4gPSB0cnVlO1xuICBsaW1pdDogbnVtYmVyID0gMjA7XG4gIHNvcnRQYXJhbTogc3RyaW5nID0gJ25hbWUnO1xuICBzb3J0T3JkZXI6IHN0cmluZyA9ICdhc2MnO1xuICBSb2xlczogUm9sZVtdID0gW107XG4gIFRhZ3M6IFdyaXRhYmxlU2lnbmFsPFRhZ1tdPiA9IHNpZ25hbChbXSk7XG4gIGRhdGFGaXQ6IFBhZ2VkUmVzdWx0PFVzZXI+ID0ge1xuICAgIFBhZ2VTaXplOiAxLFxuICAgIFNraXA6IDAsXG4gICAgVG90YWw6IDAsXG4gICAgUmVzdWx0OiBbXSxcbiAgICBMYXN0SXRlbTogWycnXSxcbiAgICBJc0xvYWRpbmdSZXN1bHRzOiBmYWxzZSxcbiAgfTtcblxuICBjdXJyZW50RmlsdGVyczogSURhdGFGaWx0ZXJbXSA9IFtdO1xuICBjdXJyZW50U29ydHM6IElEYXRhRmlsdGVyW10gPSBbXTtcblxuICByb2xlOiBzdHJpbmcgPSAnJztcblxuICBjYXJkQ29udGV4dEhpc3Rvcnk6IENhcmREYXRhW10gPSBbXTtcbiAgcGFyYW06IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGZvcm1Hcm91cENvbmZpZzogV3JpdGFibGVTaWduYWw8Rm9ybUdyb3VwQ29uZmlnPGFueT4+O1xuICBzdGF0dXNlcyA9IE9iamVjdC52YWx1ZXMoU3RhdHVzKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHVzZXJNYW5hZ2VtZW50U2VydmljZTogVXNlck1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclJvbGU6IFVzZXJBY2Nlc3NSZXF1ZXN0U2VydmljZSxcbiAgICBwcml2YXRlIHNlcnZlcjogSHR0cFdlYlJlcXVlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbFNlcnZpY2U6IFV0aWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW52U3ZjOiBFbnZpcm9ubWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICkge1xuICAgIHRoaXMuZm9ybUdyb3VwQ29uZmlnID0gc2lnbmFsKHtcbiAgICAgIGNvbnRyb2xzOiB7XG4gICAgICAgIE1haWxBZGRyZXNzOiB0aGlzLmZiLmNvbnRyb2woJycpLFxuICAgICAgICBGaXJzdE5hbWU6IHRoaXMuZmIuY29udHJvbCgnJyksXG4gICAgICAgIFBob25lTnVtYmVyOiB0aGlzLmZiLmNvbnRyb2woJycpLFxuICAgICAgICBBZGRyZXNzOiB0aGlzLmZiLmNvbnRyb2woJycpLFxuICAgICAgICBSb2xlSUQ6IHRoaXMuZmIuY29udHJvbCgnJyksXG4gICAgICAgIFRhZ3M6IHRoaXMuZmIuY29udHJvbChbXSksXG4gICAgICAgIFdhcmVob3VzZXM6IHRoaXMuZmIuY29udHJvbCgnJyksXG4gICAgICAgIFN0YXR1czogdGhpcy5mYi5jb250cm9sKCcnKSxcbiAgICAgIH0sXG4gICAgICAvLyB2YWxpZGF0b3JPck9wdHM6IG51bGwsXG4gICAgICAvLyBhc3luY1ZhbGlkYXRvcjogbnVsbCxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZ2V0Um9sZXMoKTtcbiAgICB0aGlzLmdldFRhZ3MoKTtcbiAgICB0aGlzLnJvdXRlLnBhcmFtTWFwLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLnJvbGUgPSBwYXJhbXMuZ2V0KCdyb2xlJykgfHwgJyc7IC8vIERlZmF1bHQgdG8gYW4gZW1wdHkgc3RyaW5nIGlmIG5vIHJvbGVcbiAgICAgIHRoaXMuZmV0Y2hVc2VycygpO1xuICAgIH0pO1xuICB9XG5cbiAgY2FyZERhdGE6IENhcmREYXRhW10gPSBbXTtcblxuICBkYXRhOiBhbnlbXSA9IFtdO1xuXG4gIGFzeW5jIGZldGNoVXNlcnMoc29ydFZhbHVlOiBzdHJpbmcgPSAnQ3JlYXRlZEF0Jywgb3JkZXI6IHN0cmluZyA9ICdhc2MnKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKHRydWUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMudXNlck1hbmFnZW1lbnRTZXJ2aWNlLmdldFJlYWxVc2VycyhcbiAgICAgICAgdGhpcy5yb2xlLFxuICAgICAgICB0aGlzLnNraXAsXG4gICAgICAgIHRoaXMubGltaXQsXG4gICAgICAgIHRoaXMuc29ydFBhcmFtLFxuICAgICAgICB0aGlzLnNvcnRPcmRlcixcbiAgICAgICk7XG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSShmYWxzZSk7XG5cbiAgICAgIGlmIChyZXMgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgIC8vIEhhbmRsZSBlcnJvciByZXNwb25zZVxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBsb2dzOicsIHJlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHJlcyBhcyBQYWdlZFJlc3VsdDxVc2VyPjtcbiAgICAgICAgdGhpcy5kYXRhRml0ID0gcmVzcG9uc2U7XG4gICAgICAgIHRoaXMudXNlcnMgPSBbLi4udGhpcy51c2VycywgLi4ucmVzcG9uc2UuUmVzdWx0XTtcbiAgICAgICAgdGhpcy5jYXJkRGF0YSA9IHRoaXMuZm9ybWF0Q2FyZERhdGEodGhpcy51c2Vycyk7XG4gICAgICAgIHRoaXMuc2tpcCA9IHJlc3BvbnNlLlNraXA7XG4gICAgICAgIHRoaXMuaGFzTW9yZSA9IHRoaXMuc2tpcCA8IHJlc3BvbnNlLlRvdGFsO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0Um9sZXMoKSB7XG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkodHJ1ZSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy51c2VyUm9sZS5nZXRSb2xlcygpO1xuICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuXG4gICAgICBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyByb2xlczonLCByZXMpO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNwb25zZSA9IHJlcyBhcyBQYWdlZFJlc3VsdDxSb2xlPjtcbiAgICAgIHRoaXMuUm9sZXMgPSByZXNwb25zZS5SZXN1bHQ7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHJvbGVzOicsIGVycm9yKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0VGFncygpIHtcbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSSh0cnVlKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnVzZXJSb2xlLmdldFRhZ3MoKTtcbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKGZhbHNlKTtcblxuICAgICAgaWYgKHJlcyBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgcm9sZXM6JywgcmVzKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzIGFzIFBhZ2VkUmVzdWx0PFRhZz47XG4gICAgICB0aGlzLlRhZ3Muc2V0KHJlc3BvbnNlLlJlc3VsdCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHJvbGVzOicsIGVycm9yKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlUm9sZUlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtYXRjaGVkUm9sZSA9IHRoaXMuUm9sZXMuZmlsdGVyKChyb2xlKSA9PiByb2xlLk5hbWUgPT09IHZhbHVlKTtcbiAgICByZXR1cm4gbWF0Y2hlZFJvbGVbMF0/LkNvZGU7XG4gIH1cbiAgLyoqXG4gICAqIEZvcm1hdCB1c2VycyBpbnRvIENhcmREYXRhIGZvciB0aGUgVUkgbGlicmFyeVxuICAgKiBAcGFyYW0gdXNlcnMgQXJyYXkgb2YgdXNlcnMgdG8gZm9ybWF0XG4gICAqIEByZXR1cm5zIEFycmF5IG9mIENhcmREYXRhXG4gICAqL1xuICBwcml2YXRlIGZvcm1hdENhcmREYXRhKHVzZXJzOiBVc2VyW10pOiBDYXJkRGF0YVtdIHtcbiAgICByZXR1cm4gdXNlcnMubWFwKCh1c2VyKSA9PiAoe1xuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLCAvLyBEZWZhdWx0IHNlbGVjdGlvbiBzdGF0ZVxuICAgICAgdGl0bGU6IGAke3VzZXIuRmlyc3ROYW1lfSAke3VzZXIuTGFzdE5hbWV9YCwgLy8gRGlzcGxheSB1c2VyJ3MgbmFtZSBhcyB0aXRsZVxuICAgICAgZGF0YTogeyAuLi51c2VyIH0sIC8vIFBhc3MgdGhlIGVudGlyZSB1c2VyIG9iamVjdFxuICAgICAgYm9keTogW1xuICAgICAgICB7IHRpdGxlOiAnTmFtZScsIHZhbHVlOiBgJHt1c2VyLkZpcnN0TmFtZX0gJHt1c2VyLkxhc3ROYW1lfWAgfSxcbiAgICAgICAgeyB0aXRsZTogJ0UtTWFpbCBBZGRyZXNzJywgdmFsdWU6IHVzZXIuTWFpbEFkZHJlc3MgfSxcbiAgICAgICAgeyB0aXRsZTogJ1Bob25lIE51bWJlcicsIHZhbHVlOiB1c2VyLlBob25lTnVtYmVyIHx8ICdOL0EnIH0sXG4gICAgICBdLFxuICAgICAgY2hpbGRyZW46IFtdLCAvLyBBZGQgY2hpbGQgZGF0YSBpZiBuZWNlc3NhcnlcbiAgICB9KSk7XG4gIH1cblxuICBjb2x1bW5zID0gY29sdW1ucztcbiAgc3R5bGVzID0gYmFzZVN0eWxlO1xuXG4gIHNlbGVjdGVkUGFyZW50Pzogc3RyaW5nO1xuICBiYXNpY09wdGlvbj86IHN0cmluZztcbiAgc2VsZWN0ZWRPcHRpb246IHN0cmluZ1tdID0gW107XG4gIHNlbGVjdGVkT3B0aW9uVHdvOiBzdHJpbmdbXSA9IFtdO1xuICBzZWxlY3RlZE9wdGlvblRocmVlPzogc3RyaW5nO1xuICBtaXNzaW5nT2JqZWN0OiBhbnk7XG5cbiAgLy8gY2xlYXJMb2dzKHNvcnRWYWx1ZTogc3RyaW5nID0gJ0NyZWF0ZWRBdCcsIG9yZGVyOiBzdHJpbmcgPSAnYXNjJykge1xuICAvLyAgIHRoaXMuVXNlciA9IFtdOyAvLyBDbGVhciB0aGUgbG9ncyBhcnJheVxuICAvLyAgIHRoaXMuc2tpcCA9IDA7IC8vIFJlc2V0IHRoZSBza2lwIHZhbHVlXG4gIC8vICAgdGhpcy5oYXNNb3JlID0gdHJ1ZTsgLy8gUmVzZXQgdGhlIGZsYWcgdG8gYWxsb3cgZmV0Y2hpbmcgbW9yZSBsb2dzXG4gIC8vICAgdGhpcy5hcHBsaWVkRmlsdGVycyA9IGZhbHNlO1xuICAvLyAgIHRoaXMuZmV0Y2hVc2VycygpO1xuICAvLyB9XG5cbiAgLy8gR3JpZCB2aWV3IHByb3BlcnRpZXNcbiAgaXNHcmlkVmlldzogYm9vbGVhbiA9IHRydWU7XG4gIGN1cnJlbnREYXRhITogQ2FyZERhdGE7XG4gIHNlbGVjdGVkQ29sdW1uQ291bnQ6IG51bWJlciA9IDA7XG4gIHNlbGVjdGVkRmlsdGVyVGFibGVDb3VudDogbnVtYmVyID0gMDtcbiAgaXNPUGVuOiBib29sZWFuID0gdHJ1ZTtcbiAgc2VsZWN0ZWRTb3J0Q291bnQ6IG51bWJlciA9IDA7XG4gIHNob3dGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VhcmNoVGVybTogc3RyaW5nID0gJyc7XG4gIHNob3dDb2x1bW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd1NvcnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRBbGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdmlzaWJsZUNvbHVtbnM6IElEYXRhRmlsdGVyW10gPSBjb2x1bW5zLm1hcCgoY29sKSA9PiAoe1xuICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIG5hbWU6IHR5cGVvZiBjb2wuaGVhZGVyID09PSAnc3RyaW5nJyA/IGNvbC5oZWFkZXIgOiBjb2wuaWQsXG4gICAgdHlwZTogRGF0YUZpbHRlclR5cGUuQm9vbCxcbiAgfSkpO1xuXG4gIGZpbHRlckFycmF5OiBJRGF0YUZpbHRlcltdID0gW1xuICAgIHsgbmFtZTogJ0ZpcnN0TmFtZScsIHR5cGU6IERhdGFGaWx0ZXJUeXBlLlN0cmluZywgY2hlY2tlZDogZmFsc2UgfSxcbiAgICB7IG5hbWU6ICdMYXN0TmFtZScsIHR5cGU6IERhdGFGaWx0ZXJUeXBlLlN0cmluZywgY2hlY2tlZDogZmFsc2UgfSxcbiAgICB7IG5hbWU6ICdNYWlsQWRkcmVzcycsIHR5cGU6IERhdGFGaWx0ZXJUeXBlLlN0cmluZywgY2hlY2tlZDogZmFsc2UgfSxcbiAgICB7IG5hbWU6ICdTdGF0dXMnLCB0eXBlOiBEYXRhRmlsdGVyVHlwZS5TdHJpbmcsIGNoZWNrZWQ6IGZhbHNlIH0sXG4gICAgeyBuYW1lOiAnUGhvbmVOdW1iZXInLCB0eXBlOiBEYXRhRmlsdGVyVHlwZS5TdHJpbmcsIGNoZWNrZWQ6IGZhbHNlIH0sXG4gICAgeyBuYW1lOiAnQ3JlYXRlZEF0JywgdHlwZTogRGF0YUZpbHRlclR5cGUuRGF0ZSwgY2hlY2tlZDogZmFsc2UgfSxcbiAgICB7IG5hbWU6ICdSb2xlJywgdHlwZTogRGF0YUZpbHRlclR5cGUuU3RyaW5nLCBjaGVja2VkOiBmYWxzZSB9LFxuICBdO1xuXG4gIHNvcnRPcHRpb25zOiBJRGF0YUZpbHRlcltdID0gW1xuICAgIHsgbmFtZTogJ05hbWUnLCB0eXBlOiBEYXRhRmlsdGVyVHlwZS5TdHJpbmcsIGNoZWNrZWQ6IGZhbHNlIH0sXG4gICAgeyBuYW1lOiAnTWFpbEFkZHJlc3MnLCB0eXBlOiBEYXRhRmlsdGVyVHlwZS5TdHJpbmcsIGNoZWNrZWQ6IGZhbHNlIH0sXG4gICAgeyBuYW1lOiAnUGhvbmVOdW1iZXInLCB0eXBlOiBEYXRhRmlsdGVyVHlwZS5TdHJpbmcsIGNoZWNrZWQ6IGZhbHNlIH0sXG4gICAgeyBuYW1lOiAnQ3JlYXRlZEF0JywgdHlwZTogRGF0YUZpbHRlclR5cGUuRGF0ZSwgY2hlY2tlZDogZmFsc2UgfSxcbiAgXTtcblxuICB0ZXN0UGFyZW50czogVGVzdFBhcmVudE9iamVjdFtdID0gW1xuICAgIHsgSWQ6ICcxJywgTmFtZTogJ01hbmFnZXInIH0sXG4gICAgeyBJZDogJzInLCBOYW1lOiAnQWRtaW5pc3RyYXRvcicgfSxcbiAgICB7IElkOiAnMycsIE5hbWU6ICdKZWxvbScgfSxcbiAgXTtcblxuICBnZXRQYXJlbnRMYWJlbChjb250ZXh0OiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnNvbGUubG9nKHsgTWlzc2luZ09iajogdGhpcy5taXNzaW5nT2JqZWN0IH0pO1xuICAgIHJldHVybiB0aGlzLm1pc3NpbmdPYmplY3QuTmFtZTtcbiAgfVxuXG4gIG9uU2F2ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jaGlsZENvbXBvbmVudC5mb3JtLnZhbGlkKSB7XG4gICAgICAvLyBjb25zdCB1c2VyRGF0YTogVXNlciA9IHRoaXMuY2hpbGRDb21wb25lbnQuZm9ybS52YWx1ZTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdQYXlsb2FkOicsIFt1c2VyRGF0YV0pOyAvLyBMb2cgdGhlIHBheWxvYWQgdG8gY2hlY2sgaXRzIHN0cnVjdHVyZVxuXG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSSh0cnVlKTtcbiAgICAgIHRoaXMudXNlck1hbmFnZW1lbnRTZXJ2aWNlXG4gICAgICAgIC5zYXZlVXNlcnMoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLnRoaXMuY3VycmVudERhdGE/LmRhdGEsXG4gICAgICAgICAgICAuLi50aGlzLmNoaWxkQ29tcG9uZW50LmZvcm0udmFsdWUsXG4gICAgICAgICAgICBEYXRhU3RhdGU6XG4gICAgICAgICAgICAgIHRoaXMuY3VycmVudERhdGE/LmRhdGEuRGF0YVN0YXRlID09PSBPYmplY3RTdGF0ZS5VbmNoYW5nZWRcbiAgICAgICAgICAgICAgICA/IE9iamVjdFN0YXRlLkNoYW5nZWRcbiAgICAgICAgICAgICAgICA6IHRoaXMuY3VycmVudERhdGE/LmRhdGEuRGF0YVN0YXRlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgICAgIC50aGVuKFxuICAgICAgICAgIChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNob3dTdWNjZXNzKCdVc2VyIHNhdmVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdVbmV4cGVjdGVkIGVycm9yIHNhdmluZyB1c2VyOicsIGVycm9yKTtcbiAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSShmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgICAgY29uc29sZS5sb2codGhpcy5jaGlsZENvbXBvbmVudC5mb3JtLnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignRm9ybSBpcyBpbnZhbGlkJyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25EYXRhU2F2ZShldmVudDoge1xuICAgIGluZGV4OiBudW1iZXI7XG4gICAga2V5OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgZGF0YTogUGFydGlhbDxVc2VyPjtcbiAgfSkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAuLi50aGlzLnVzZXJzW2V2ZW50LmluZGV4XSxcbiAgICAgIC4uLmV2ZW50LmRhdGEsXG4gICAgICBEYXRhU3RhdGU6XG4gICAgICAgIHRoaXMudXNlcnNbZXZlbnQuaW5kZXhdPy5EYXRhU3RhdGUgPT09IE9iamVjdFN0YXRlLlVuY2hhbmdlZFxuICAgICAgICAgID8gT2JqZWN0U3RhdGUuQ2hhbmdlZFxuICAgICAgICAgIDogT2JqZWN0U3RhdGUuTmV3LFxuICAgIH0gYXMgVXNlcjtcblxuICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKHRydWUpO1xuICAgIHRoaXMudXNlck1hbmFnZW1lbnRTZXJ2aWNlXG4gICAgICAuc2F2ZVVzZXJzKFtwYXlsb2FkXSlcbiAgICAgIC50aGVuKFxuICAgICAgICAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHJlc3VsdFswXSkge1xuICAgICAgICAgICAgICB0aGlzLnVzZXJzID0gdGhpcy51c2Vycy5tYXAoKHVzZXIsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSBldmVudC5pbmRleCkgcmV0dXJuIHJlc3VsdFswXSBhcyBVc2VyO1xuICAgICAgICAgICAgICAgIHJldHVybiB1c2VyO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ1VzZXIgc2F2ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdVbmV4cGVjdGVkIGVycm9yIHNhdmluZyB1c2VyOicsIGVycm9yKTtcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuICAgICAgfSk7XG4gIH1cblxuICBvbkRlbGV0ZSgpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnQ2hpbGQgZm9ybSBkZWxldGUgdHJpZ2dlcmVkJyk7XG4gICAgLy8gUGVyZm9ybSBkZWxldGUgbG9naWMgaGVyZVxuICB9XG4gIG9uRHJvcGRvd25DaGFuZ2UoZXZlbnQ6IERyb3Bkb3duQ2hhbmdlRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBjb25zb2xlLmxvZyh7XG4gICAgLy8gICAnVGVzdCBQYXJlbnQgVmFsdWUnOiB0aGlzLnNlbGVjdGVkUGFyZW50LFxuICAgIC8vICAgLi4uXG4gICAgLy8gfSk7XG4gIH1cblxuICBvblNlbGVjdGlvbkNoYW5nZShzZWxlY3RlZFJvd3M6IFVzZXJbXSkge1xuICAgIGNvbnNvbGUubG9nKCdTZWxlY3Rpb24gY2hhbmdlZDonLCBzZWxlY3RlZFJvd3MpO1xuICAgIC8vIEhhbmRsZSB0aGUgc2VsZWN0aW9uIGNoYW5nZVxuICB9XG5cbiAgaGFuZGxlRXhwb3J0KGV4cG9ydGVkRGF0YTogUGFydGlhbDxhbnk+W10pIHtcbiAgICBjb25zb2xlLmxvZygnRXhwb3J0ZWQgZGF0YTonLCBleHBvcnRlZERhdGEpO1xuICAgIHRoaXMuZG93bmxvYWRDU1YoZXhwb3J0ZWREYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgZG93bmxvYWRDU1YoZGF0YTogUGFydGlhbDxhbnk+W10pIHtcbiAgICBjb25zdCBoZWFkZXJzID0gT2JqZWN0LmtleXMoZGF0YVswXSk7XG4gICAgY29uc3QgY3N2Q29udGVudCA9IFtcbiAgICAgIGhlYWRlcnMuam9pbignLCcpLFxuICAgICAgLi4uZGF0YS5tYXAoKHJvdykgPT4gaGVhZGVycy5tYXAoKGhlYWRlcikgPT4gcm93W2hlYWRlcl0pLmpvaW4oJywnKSksXG4gICAgXS5qb2luKCdcXG4nKTtcblxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbY3N2Q29udGVudF0sIHsgdHlwZTogJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTg7JyB9KTtcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGlmIChsaW5rLmRvd25sb2FkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVybCk7XG4gICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCAnZXhwb3J0LmNzdicpO1xuICAgICAgbGluay5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgbGluay5jbGljaygpO1xuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcbiAgICB9XG4gIH1cblxuICBnZXRDYXJkRGF0YUJ5TWFpbEFkZHJlc3MobWFpbEFkZHJlc3M6IHN0cmluZyk6IENhcmREYXRhIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zb2xlLmxvZygnY2FyZERhdGEgYXJyYXk6JywgdGhpcy5jYXJkRGF0YSk7XG4gICAgY29uc29sZS5sb2cobWFpbEFkZHJlc3MpO1xuXG4gICAgcmV0dXJuIHRoaXMuY2FyZERhdGEuZmluZCgoeyBkYXRhIH0pID0+IGRhdGE/Lk1haWxBZGRyZXNzID09PSBtYWlsQWRkcmVzcyk7XG4gIH1cblxuICBvcGVuRGV0YWlsVmlldyhtYWlsQWRkcmVzczogc3RyaW5nKSB7XG4gICAgY29uc3QgY2FyZEl0ZW0gPSB0aGlzLmdldENhcmREYXRhQnlNYWlsQWRkcmVzcyhtYWlsQWRkcmVzcyk7XG4gICAgY29uc29sZS5sb2coY2FyZEl0ZW0pO1xuXG4gICAgaWYgKGNhcmRJdGVtICYmIHRoaXMuY2FyZERhdGFWaWV3KSB7XG4gICAgICB0aGlzLmRhdGFWaWV3LnRvZ2dsZVZpZXcoKTtcbiAgICAgIC8vIEZpcnN0IHJlc2V0IGFsbCBzZWxlY3Rpb25zXG4gICAgICB0aGlzLmNhcmREYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgICAgIGl0ZW0uY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IChjaGlsZC5zZWxlY3RlZCA9IGZhbHNlKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBTZXQgdGhlIHNlbGVjdGVkIGl0ZW1cbiAgICAgIGNhcmRJdGVtLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuY3VycmVudERhdGEgPSB0aGlzLmNhcmREYXRhVmlldy5vbkl0ZW1DbGljayhjYXJkSXRlbSk7XG5cbiAgICAgIC8vIEZvcmNlIGNoYW5nZSBkZXRlY3Rpb24gaWYgbmVlZGVkXG4gICAgICAvLyB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnNraXAgPSAwO1xuICAgIHRoaXMucGFnZVNpemUgPSAyMDtcbiAgfVxuXG4gIGNsZWFyRGF0YSgpIHtcbiAgICB0aGlzLmN1cnJlbnREYXRhID0ge30gYXMgQ2FyZERhdGE7XG4gIH1cblxuICBsb2FkTW9yZSgpIHtcbiAgICBpZiAodGhpcy5oYXNNb3JlKSB7XG4gICAgICB0aGlzLmZldGNoVXNlcnMoKTtcbiAgICB9XG4gIH1cblxuICBvbkNvbHVtbkNoYW5nZShldmVudDogYm9vbGVhbikge1xuICAgIHRoaXMuc2hvd0NvbHVtbiA9IGV2ZW50O1xuICB9XG5cbiAgb25Tb3J0Q2hhbmdlKGV2ZW50OiBib29sZWFuKSB7XG4gICAgdGhpcy5zaG93U29ydCA9IGV2ZW50O1xuICAgIGNvbnNvbGUubG9nKGV2ZW50KTtcbiAgfVxuXG4gIG9uQ29sdW1uc1VwZGF0ZWQodXBkYXRlZENvbHVtbnM6IElEYXRhRmlsdGVyW10pIHtcbiAgICB0aGlzLm9uQ29sdW1uQ2hhbmdlKGZhbHNlKTtcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1uQ291bnQgPSB1cGRhdGVkQ29sdW1ucy5sZW5ndGg7XG5cbiAgICBpZiAodXBkYXRlZENvbHVtbnMpIHtcbiAgICAgIC8vIEZpbHRlciBjb2x1bW5zIHRvIGluY2x1ZGUgb25seSB2aXNpYmxlIG9uZXNcbiAgICAgIHRoaXMuZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcigoY29sKSA9PlxuICAgICAgICB0aGlzLnZpc2libGVDb2x1bW5zLmZpbmQoXG4gICAgICAgICAgKGZpbHRlcikgPT4gZmlsdGVyLm5hbWUgPT09IGNvbC5oZWFkZXIgJiYgZmlsdGVyLmNoZWNrZWQsXG4gICAgICAgICksXG4gICAgICApO1xuXG4gICAgICAvLyBSZW9yZGVyIGNvbHVtbnMgYmFzZWQgb24gdGhlIG9yZGVyIGluIHZpc2libGVDb2x1bW5zXG4gICAgICBjb25zdCB2aXNpYmxlQ29sdW1uT3JkZXIgPSB0aGlzLnZpc2libGVDb2x1bW5zXG4gICAgICAgIC5maWx0ZXIoKGZpbHRlcikgPT4gZmlsdGVyLmNoZWNrZWQpXG4gICAgICAgIC5tYXAoKGZpbHRlcikgPT4gZmlsdGVyLm5hbWUpO1xuXG4gICAgICB0aGlzLmNvbHVtbnMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICBjb25zdCBpbmRleEEgPSB2aXNpYmxlQ29sdW1uT3JkZXIuaW5kZXhPZihhLmhlYWRlciBhcyBzdHJpbmcpO1xuICAgICAgICBjb25zdCBpbmRleEIgPSB2aXNpYmxlQ29sdW1uT3JkZXIuaW5kZXhPZihiLmhlYWRlciBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4gaW5kZXhBIC0gaW5kZXhCO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcG9zdFNlYXJjaChwYXlsb2FkOiBhbnkpIHtcbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSSh0cnVlKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnNlcnZlci5wb3N0KFxuICAgICAgYFNlYXJjaFVzZXJzLzAvMTAvQ3JlYXRlZEF0L2FzY2AsXG4gICAgICBwYXlsb2FkLFxuICAgICk7XG5cbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSShmYWxzZSk7XG4gICAgaWYgKHJlcyBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgIHRoaXMuYXBwbGllZEZpbHRlcnMgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hcHBsaWVkRmlsdGVycyA9IHRydWU7XG4gICAgICBjb25zdCByZXNwb25zZSA9IHJlcyBhcyBQYWdlZFJlc3VsdDxVc2VyPjtcbiAgICAgIHRoaXMuZGF0YUZpdCA9IHJlc3BvbnNlO1xuICAgICAgdGhpcy51c2VycyA9IHJlc3BvbnNlLlJlc3VsdDtcbiAgICAgIHRoaXMuY2FyZERhdGEgPSB0aGlzLmZvcm1hdENhcmREYXRhKHRoaXMudXNlcnMpO1xuICAgIH1cbiAgfVxuXG4gIG9uRmlsdGVyQXBwbGllZChhcHBsaWVkRmlsdGVyOiBJRGF0YUZpbHRlcltdKSB7XG4gICAgdGhpcy5zaG93RmlsdGVyID0gZmFsc2U7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYXBwbGllZEZpbHRlcikpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJUYWJsZUNvdW50ID0gYXBwbGllZEZpbHRlci5sZW5ndGg7XG4gICAgICBjb25zb2xlLmxvZyhhcHBsaWVkRmlsdGVyKTtcblxuICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBhcHBsaWVkRmlsdGVyXG4gICAgICAgIC5maWx0ZXIoKGZpbHRlcikgPT4gZmlsdGVyLmNoZWNrZWQpXG4gICAgICAgIC5tYXAoKGZpbHRlcikgPT4gKHtcbiAgICAgICAgICBQcm9wZXJ0eU5hbWU6IGZpbHRlci5uYW1lLFxuICAgICAgICAgIEVudGl0eVZhbHVlOlxuICAgICAgICAgICAgZmlsdGVyLm5hbWUgPT09ICdSb2xlJ1xuICAgICAgICAgICAgICA/IHRoaXMuaGFuZGxlUm9sZUlkKGZpbHRlci52YWx1ZSlcbiAgICAgICAgICAgICAgOiBmaWx0ZXIudmFsdWUsXG4gICAgICAgICAgVHlwZTogZmlsdGVyLnR5cGUsXG4gICAgICAgICAgT3BlcmF0b3I6ICdBbmQnLFxuICAgICAgICAgIFNpZ246IHRoaXMuZ2V0Q29uZGl0aW9uKGZpbHRlci5jb25kaXRpb24pLFxuICAgICAgICB9KSk7XG5cbiAgICAgIHRoaXMucG9zdFNlYXJjaChxdWVyeVBhcmFtcyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q29uZGl0aW9uKHZhbHVlOiBhbnkpOiBDb25kaXRpb25PcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICBjYXNlIENvbmRpdGlvbmFsT3B0aW9ucy5PbjpcbiAgICAgICAgcmV0dXJuIENvbmRpdGlvbk9wdGlvbnMuT247XG4gICAgICBjYXNlIENvbmRpdGlvbmFsT3B0aW9ucy5BZnRlcjpcbiAgICAgICAgcmV0dXJuIENvbmRpdGlvbk9wdGlvbnMuQWZ0ZXI7XG4gICAgICBjYXNlIENvbmRpdGlvbmFsT3B0aW9ucy5CZWZvcmU6XG4gICAgICAgIHJldHVybiBDb25kaXRpb25PcHRpb25zLkJlZm9yZTtcbiAgICAgIGNhc2UgQ29uZGl0aW9uYWxPcHRpb25zLk5vdEVxdWFsOlxuICAgICAgICByZXR1cm4gQ29uZGl0aW9uT3B0aW9ucy5Ob3RFcXVhbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7IC8vIEV4cGxpY2l0bHkgcmV0dXJuIHVuZGVmaW5lZCBmb3IgaW52YWxpZCBjYXNlc1xuICAgIH1cbiAgfVxuXG4gIG9uU29ydFVwZGF0ZWQodXBkYXRlZFNvcnRzOiBJRGF0YUZpbHRlcltdKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50U29ydHMgPSB1cGRhdGVkU29ydHM7XG4gIH1cblxuICBhc3luYyBvblNlYXJjaChldmVudDogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9KSB7XG4gICAgdGhpcy5zZWFyY2hUZXJtID0gZXZlbnQudmFsdWU7XG4gICAgdGhpcy5yZXNldCgpO1xuICAgIGlmICghdGhpcy5zZWFyY2hUZXJtKSB7XG4gICAgICB0aGlzLmNsZWFyTG9ncygnQ3JlYXRlZEF0JywgJ2FzYycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSSh0cnVlKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnNlcnZlci5nZXQoXG4gICAgICAgIGBHZXRVc2VyV2l0aFBhcmFtLyR7dGhpcy5zZWFyY2hUZXJtfS8ke3RoaXMuc2tpcH0vJHt0aGlzLnBhZ2VTaXplfS9DcmVhdGVkQXQvYXNjYCxcbiAgICAgICk7XG5cbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKGZhbHNlKTtcblxuICAgICAgaWYgKHJlcyBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZHVyaW5nIHNlYXJjaDonLCByZXMpO1xuICAgICAgICB0aGlzLmFwcGxpZWRGaWx0ZXJzID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHJlcyBhcyBQYWdlZFJlc3VsdDxVc2VyPjtcbiAgICAgICAgdGhpcy5kYXRhRml0ID0gcmVzcG9uc2U7XG4gICAgICAgIHRoaXMudXNlcnMgPSByZXNwb25zZS5SZXN1bHQ7XG4gICAgICAgIHRoaXMuY2FyZERhdGEgPSB0aGlzLmZvcm1hdENhcmREYXRhKHRoaXMudXNlcnMpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdTZWFyY2ggZXJyb3I6JywgZXJyb3IpO1xuICAgICAgdGhpcy5hcHBsaWVkRmlsdGVycyA9IGZhbHNlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyTG9ncyhzb3J0VmFsdWU6IHN0cmluZyA9ICdDcmVhdGVkQXQnLCBvcmRlcjogc3RyaW5nID0gJ2FzYycpIHtcbiAgICB0aGlzLnVzZXJzID0gW107IC8vIENsZWFyIHRoZSBsb2dzIGFycmF5XG4gICAgdGhpcy5za2lwID0gMDsgLy8gUmVzZXQgdGhlIHNraXAgdmFsdWVcbiAgICB0aGlzLmhhc01vcmUgPSB0cnVlOyAvLyBSZXNldCB0aGUgZmxhZyB0byBhbGxvdyBmZXRjaGluZyBtb3JlIGxvZ3NcbiAgICB0aGlzLmFwcGxpZWRGaWx0ZXJzID0gZmFsc2U7XG4gICAgdGhpcy5mZXRjaFVzZXJzKHNvcnRWYWx1ZSwgb3JkZXIpO1xuICB9XG5cbiAgb25WaWV3Q2hhbmdlKGlzR3JpZFZpZXc6IGJvb2xlYW4pOiB2b2lkIHsgfVxuXG4gIG9uU3RhdGVDaGFuZ2UoZXZlbnQ6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBib29sZWFuIH0pOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyhgU3RhdGUgY2hhbmdlZCBmb3IgJHtldmVudC5rZXl9OmAsIGV2ZW50LnZhbHVlKTtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnY3JlYXRlJykge1xuICAgICAgY29uc29sZS5sb2coJ3BlYWNlIGlzIGEgYm95Jyk7XG5cbiAgICAgIC8vIGNvbnN0IG5ld1VzZXIgPSB0aGlzLm5ld0l0ZW0oKVxuXG4gICAgICAvLyBpZiAoIG5ld1VzZXIgJiYgdGhpcy5jYXJkRGF0YVZpZXcpIHtcbiAgICAgIC8vICAgdGhpcy5kYXRhVmlldy50b2dnbGVWaWV3KCk7XG4gICAgICAvLyAgIC8vIEZpcnN0IHJlc2V0IGFsbCBzZWxlY3Rpb25zXG4gICAgICAvLyAgIHRoaXMuY2FyZERhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgLy8gICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIC8vICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgLy8gICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4gKGNoaWxkLnNlbGVjdGVkID0gZmFsc2UpKTtcbiAgICAgIC8vICAgICB9XG4gICAgICAvLyAgIH0pO1xuXG4gICAgICAvLyAgIHRoaXMuY3VycmVudERhdGEgPSB0aGlzLmNhcmREYXRhVmlldy5vbkl0ZW1DbGljayhuZXdVc2VyKTtcblxuICAgICAgLy8gICAvLyBGb3JjZSBjaGFuZ2UgZGV0ZWN0aW9uIGlmIG5lZWRlZFxuICAgICAgLy8gICAvLyB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIC8vIH1cbiAgICB9XG4gIH1cblxuICBnZXRSb2xlTmFtZShyb2xlSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMuUm9sZXMuZmluZCgocm9sZSkgPT4gcm9sZS5Db2RlID09PSByb2xlSWQpO1xuICAgIHJldHVybiByb2xlID8gcm9sZS5OYW1lIDogJyc7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC00IG1lc3NhZ2UtbG9nLWNvbnRhaW5lclwiPlxuICA8dmVyYmVuLWRhdGEtdmlld1xuICAgICN2ZHZcbiAgICBbdmlld1N0YXRlXT1cIntcbiAgICAgIGlzU2VhcmNoOiB0cnVlLFxuICAgICAgaXNDb2x1bW46IHRydWUsXG4gICAgICBpc0ZpbHRlcjogdHJ1ZSxcbiAgICAgIGlzU29ydDogdHJ1ZSxcbiAgICAgIGlzRXhwb3J0OiB0cnVlLFxuICAgICAgaXNTZWxlY3Q6IHRydWUsXG5cbiAgICAgIGlzVG9nZ2xlOiB0cnVlXG4gICAgfVwiXG4gICAgW2J1dHRvbkNsYXNzXT1cIidteS1jdXN0b20tYnV0dG9uLWNsYXNzJ1wiXG4gICAgW2ljb25DbGFzc109XCInbXktaWNvbi1jbGFzcydcIlxuICAgIFthY3RpdmVJY29uQ2xhc3NdPVwiJ215LWFjdGl2ZS1pY29uLWNsYXNzJ1wiXG4gICAgW3NlbGVjdGVkQ29sdW1uQ291bnRdPVwic2VsZWN0ZWRDb2x1bW5Db3VudFwiXG4gICAgW3NlbGVjdGVkU29ydENvdW50XT1cInNlbGVjdGVkU29ydENvdW50XCJcbiAgICBbc2VsZWN0ZWRGaWx0ZXJUYWJsZUNvdW50XT1cInNlbGVjdGVkRmlsdGVyVGFibGVDb3VudFwiXG4gICAgKG9uU2VhcmNoQ2hhbmdlKT1cIm9uU2VhcmNoKCRldmVudClcIlxuICAgIFtzZWFyY2hWYWx1ZV09XCJzZWFyY2hUZXJtXCJcbiAgICBbc2hvd0ZpbHRlckNoaWxkXT1cInNob3dGaWx0ZXJcIlxuICAgICh2aWV3Q2hhbmdlKT1cIm9uVmlld0NoYW5nZSgkZXZlbnQpXCJcbiAgICAoc3RhdGVDaGFuZ2UpPVwib25TdGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICBbaXNUYWJsZVZpZXddPVwiZmFsc2VcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cIm10LTJcIiB0YWJsZS1jb250ZW50PlxuICAgICAgPGxpYi1kYXRhLXRhYmxlXG4gICAgICAgIFtkYXRhXT1cInVzZXJzXCJcbiAgICAgICAgW2NvbHVtbnNdPVwiZmlsdGVyZWRDb2x1bW5zXCJcbiAgICAgICAgW2Zvcm1Hcm91cENvbmZpZ109XCJmb3JtR3JvdXBDb25maWcoKVwiXG4gICAgICAgIFtzdHlsZUNvbmZpZ109XCJzdHlsZXNcIlxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAocm93U2F2ZSk9XCJvbkRhdGFTYXZlKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cInNlbGVjdFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgI2NlbGxcbiAgICAgICAgICAgIGxldC1pc1NlbGVjdGVkPVwiaXNTZWxlY3RlZFwiXG4gICAgICAgICAgICBsZXQtdG9nZ2xlUm93U2VsZWN0aW9uPVwidG9nZ2xlUm93U2VsZWN0aW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZFwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlUm93U2VsZWN0aW9uKClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgI2hlYWRlclxuICAgICAgICAgICAgbGV0LWFsbFJvd3NTZWxlY3RlZD1cImFsbFJvd3NTZWxlY3RlZFwiXG4gICAgICAgICAgICBsZXQtc29tZVJvd3NTZWxlY3RlZD1cInNvbWVSb3dzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgbGV0LXRvZ2dsZUFsbFJvd3M9XCJ0b2dnbGVBbGxSb3dzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiYWxsUm93c1NlbGVjdGVkKClcIlxuICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzb21lUm93c1NlbGVjdGVkKClcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUFsbFJvd3MoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cImNyZWF0ZWRBdFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtdmFsdWU+XG4gICAgICAgICAgICB7eyB2YWx1ZSB8IGRhdGUgfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBsaWJDb2x1bW49XCJ1c2VyXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsRWRpdCBsZXQtZm9ybUNvbnRyb2w9XCJmb3JtQ29udHJvbFwiIGxldC12YWx1ZT5cbiAgICAgICAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgICAgICAgIG5hbWU9XCJGaXJzdE5hbWVcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cIm1haWxcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGxFZGl0IGxldC1mb3JtQ29udHJvbD1cImZvcm1Db250cm9sXCIgbGV0LXZhbHVlPlxuICAgICAgICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgICAgICAgbmFtZT1cIk1haWxBZGRyZXNzXCJcbiAgICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgbGliQ29sdW1uPVwicGhvbmVcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGxFZGl0IGxldC1mb3JtQ29udHJvbD1cImZvcm1Db250cm9sXCIgbGV0LXZhbHVlPlxuICAgICAgICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgICAgICAgbmFtZT1cIlBob25lTnVtYmVyXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRlbFwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cImFkZHJlc3NcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGxFZGl0IGxldC1mb3JtQ29udHJvbD1cImZvcm1Db250cm9sXCIgbGV0LXZhbHVlPlxuICAgICAgICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgICAgICAgbmFtZT1cIkFkZHJlc3NcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cInJvbGVcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGxFZGl0IGxldC1mb3JtQ29udHJvbD1cImZvcm1Db250cm9sXCIgbGV0LXZhbHVlPlxuICAgICAgICAgICAgPHZlcmJlbi1kcm9wLWRvd25cbiAgICAgICAgICAgICAgbmFtZT1cIlJvbGVcIlxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwidy1mdWxsXCJcbiAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgW211bHRpc2VsZWN0XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW2ZpbHRlcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJcIlxuICAgICAgICAgICAgICBbKG9wdGlvbnMpXT1cIlJvbGVzXCJcbiAgICAgICAgICAgICAgaWQ9XCJyb2xlXCJcbiAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJOYW1lXCJcbiAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJDb2RlXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC92ZXJiZW4tZHJvcC1kb3duPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgbGliQ29sdW1uPVwiYWN0aW9uc1wiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgI2NlbGxcbiAgICAgICAgICAgIGxldC12YWx1ZVxuICAgICAgICAgICAgbGV0LWRlbGV0ZVJvdz1cImRlbGV0ZVJvd1wiXG4gICAgICAgICAgICBsZXQtaXNFZGl0aW5nPVwiaXNFZGl0aW5nXCJcbiAgICAgICAgICAgIGxldC10b2dnbGVSb3dFZGl0PVwidG9nZ2xlUm93RWRpdFwiXG4gICAgICAgICAgICBsZXQtcm93PVwicm93XCJcbiAgICAgICAgICAgIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtNlwiPlxuICAgICAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSb3dFZGl0KClcIlxuICAgICAgICAgICAgICAgIGljb249XCJlZGl0XCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuXG4gICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlUm93KClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICNjZWxsRWRpdFxuICAgICAgICAgICAgbGV0LXZhbHVlXG4gICAgICAgICAgICBsZXQtZGVsZXRlUm93PVwiZGVsZXRlUm93XCJcbiAgICAgICAgICAgIGxldC1pc0VkaXRpbmc9XCJpc0VkaXRpbmdcIlxuICAgICAgICAgICAgbGV0LXRvZ2dsZVJvd0VkaXQ9XCJ0b2dnbGVSb3dFZGl0XCJcbiAgICAgICAgICAgIGxldC1yb3c9XCJyb3dcIlxuICAgICAgICAgICAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC02XCI+XG4gICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJvd0VkaXQoKVwiXG4gICAgICAgICAgICAgICAgaWNvbj1cInRpY2tcIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgID48L3ZlcmJlbi1zdmc+XG5cbiAgICAgICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSb3dFZGl0KClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuXG4gICAgICAgICAgICAgIDwhLS0gPHZlcmJlbi1zdmdcbiAgICAgICAgICAgICAgICBpY29uPVwiY2FyZFZpZXdBbHRcIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9DYXJkVmlldyh2YWx1ZSlcIlxuICAgICAgICAgICAgICA+PC92ZXJiZW4tc3ZnPiAtLT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gICAgICAgICAgICA8c3Ryb25nPkFjdGlvbnM8L3N0cm9uZz5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBsaWJDb2x1bW49XCJzdGF0dXNcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICNjZWxsXG4gICAgICAgICAgICBsZXQtaXNFZGl0aW5nPVwiaXNFZGl0aW5nXCJcbiAgICAgICAgICAgIGxldC10b2dnbGVSb3dFZGl0PVwidG9nZ2xlUm93RWRpdFwiXG4gICAgICAgICAgICBsZXQtZGVsZXRlUm93PVwiZGVsZXRlUm93XCJcbiAgICAgICAgICAgIGxldC12YWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bGliLXVzZXItc3RhdHVzLWJhZGdlIFtzdGF0dXNdPVwidmFsdWVcIj48L2xpYi11c2VyLXN0YXR1cy1iYWRnZT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAjY2VsbEVkaXRcbiAgICAgICAgICAgIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCJcbiAgICAgICAgICAgIGxldC1mb3JtQ29udHJvbD1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dmVyYmVuLWRyb3AtZG93blxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwidy1mdWxsXCJcbiAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgW211bHRpc2VsZWN0XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZXQgc3RhdHVzXCJcbiAgICAgICAgICAgICAgW29wdGlvbnNdPVwic3RhdHVzZXNcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3ZlcmJlbi1kcm9wLWRvd24+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2xpYi1kYXRhLXRhYmxlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2FyZC1jb250ZW50PlxuICAgICAgPHZlcmJlbi1jYXJkLWRhdGEtdmlld1xuICAgICAgICBib3JkZXJSYWRpdXM9XCIxMnB4XCJcbiAgICAgICAgKGxvYWRNb3JlQ2xpY2spPVwibG9hZE1vcmUoKVwiXG4gICAgICAgICN2ZGN2XG4gICAgICAgIGRhdGFJZD1cIk1haWxBZGRyZXNzXCJcbiAgICAgICAgYm9yZGVyPVwiNXB4XCJcbiAgICAgICAgW2NhcmREYXRhTGlzdF09XCJjYXJkRGF0YVwiXG4gICAgICAgIHJiZ0NvbG9yPVwiI2Y1ZjZmOVwiXG4gICAgICAgIG1nPVwiMHB4XCJcbiAgICAgICAgY2xhc3M9XCJnYXAtMVwiXG4gICAgICA+XG4gICAgICAgIDx2ZXJiZW4tbGVmdC1jYXJkLWRhdGEtdmlldyBjbGFzcz1cIm0tMCBnYXAtMlwiPlxuICAgICAgICAgIDx2ZXJiZW4tbGVmdC1jYXJkLWRhdGFcbiAgICAgICAgICAgICN2bGNkXG4gICAgICAgICAgICBbcGFyZW50XT1cInZkY3ZcIlxuICAgICAgICAgICAgZGF0YUlkPVwiTWFpbEFkZHJlc3NcIlxuICAgICAgICAgICAgY2xhc3M9XCJiZy1zZWNvbmRhcnktMTAwIHJvdW5kZWQteGwgYm9yZGVyLXByaW1hcnkgYm9yZGVyLVsxcHhdXCJcbiAgICAgICAgICAgIFtjYXJkRGF0YUxpc3RdPVwiY2FyZERhdGFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2FyZCBsZXQtaXRlbT5cbiAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiY3VycmVudERhdGEgPSB2ZGN2Lm9uSXRlbUNsaWNrKGl0ZW0pXCIgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ2bGNkLnNob3dDaGlsZHJlbihpdGVtKVwiXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ2bGNkLnNob3dUb2dnbGUoaXRlbSkgPyAndmlzaWJsZScgOiAnaW52aXNpYmxlJ1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW1zLWNlbnRlciBmbGV4IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgIFtpY29uXT1cIml0ZW0uaXNDaGlsZHJlbkV4cGFuZGVkID8gJ21pbnVzJyA6ICdwbHVzJ1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3VycmVudERhdGEgPSB2ZGN2Lm9uSXRlbUNsaWNrKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBjdXJzb3ItcG9pbnRlciB3LWZ1bGwgYmctc2Vjb25kYXJ5IHJvdW5kZWQteGxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTMgcm91bmRlZC14bCByb3VuZGVkLXRyLW5vbmUgcm91bmRlZC1ici1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgaXRlbS5zZWxlY3RlZCA/ICdiZy1wcmltYXJ5JyA6ICdiZy1zZWNvbmRhcnktMjAwJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMSBmbGV4IGl0ZW1zLWVuZCBnYXAteS0yIGdhcC14LTQgcC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTEgc3BhY2UteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LVsjNDA0MDQwXSBmbGV4LTEgdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGl0ZW0udGl0bGUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG15LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwaG9uZVwiIGNsYXNzPVwidGV4dC1bMTBweF0gZm9udC1saWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5Sb2xlOjwvbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwicGhvbmVcIiBjbGFzcz1cInRleHQtc20gdHJ1bmNhdGVcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRSb2xlTmFtZShpdGVtLmRhdGEuUm9sZUlEKVxuICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBnYXAteS0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJncmlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJyb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LVsxMHB4XSBmb250LWxpZ2h0IHRleHQtWyM0MDQwNDBdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlJvbGU8L2xhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD1cInJvbGVcIiBjbGFzcz1cInRleHQtc20gZm9udC1tZWRpdW1cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmRhdGE/LlJvbGU/Lk5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8bGliLXVzZXItc3RhdHVzLWJhZGdlXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cIml0ZW0uZGF0YS5TdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgID48L2xpYi11c2VyLXN0YXR1cy1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdmVyYmVuLWxlZnQtY2FyZC1kYXRhPlxuICAgICAgICA8L3ZlcmJlbi1sZWZ0LWNhcmQtZGF0YS12aWV3PlxuXG4gICAgICAgIDx2ZXJiZW4tcmlnaHQtY2FyZC1kYXRhLXZpZXc+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNwYXJlbnQ+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctc2Vjb25kYXJ5LTEwMCBweS0yIGZsZXggZmxleC1jb2wgZ2FwLTIwIHB4LTJcIj5cbiAgICAgICAgICAgICAgPGxpYi11c2VyLXJlcXVlc3QtZm9ybVxuICAgICAgICAgICAgICAgIFtyb2xlc109XCJSb2xlc1wiXG4gICAgICAgICAgICAgICAgW3RhZ3NdPVwiVGFncygpXCJcbiAgICAgICAgICAgICAgICBbY3VycmVudERhdGFdPVwiY3VycmVudERhdGFcIlxuICAgICAgICAgICAgICAgIChzd2l0Y2hWaWV3KT1cInZkdi50b2dnbGVWaWV3KClcIlxuICAgICAgICAgICAgICA+PC9saWItdXNlci1yZXF1ZXN0LWZvcm0+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIGJvdHRvbS04IGxlZnQtMCByaWdodC0wIHAtM1wiPlxuICAgICAgICAgICAgICAgIDwhLS0gPHZlcmJlbmEtYnV0dG9uIHRleHQ9XCJEZWxldGVcIiBiZ0NvbG9yPVwiIzk5OTk5OVwiIHRleHRDb2xvcj1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICBib3JkZXI9XCIxcHggc29saWQgIzk5OTk5OVwiIChjbGljayk9XCJvbkRlbGV0ZSgpXCI+PC92ZXJiZW5hLWJ1dHRvbj4gLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmR2LnRvZ2dsZVZpZXcoKVwiXG4gICAgICAgICAgICAgICAgICAgIHRleHQ9XCJTd2l0Y2ggVG8gVGFibGVcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZVR5cGU9XCJ5bHctb3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICA+PC92ZXJiZW5hLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0ZXh0PVwiU2F2ZVwiXG4gICAgICAgICAgICAgICAgICAgIGJnQ29sb3I9XCIjRkZFNjgxXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2F2ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPVwiIzQwNDA0MFwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIjFweCBzb2xpZCAjRkZFNjgxXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSAoY2xpY2spPVwiXCIgLS0+XG4gICAgICAgICAgICAgICAgICA8L3ZlcmJlbmEtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdmVyYmVuLXJpZ2h0LWNhcmQtZGF0YS12aWV3PlxuXG4gICAgICAgIDx2ZXJiZW4tY2FyZC1kYXRhLXZpZXctZm9vdGVyIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnZmxleCBnYXAtMiBpdGVtcy1jZW50ZXInOiB0cnVlLFxuICAgICAgICAgICAgICAnanVzdGlmeS1lbmQnOiB0cnVlLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSA8dmVyYmVuYS1idXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCIhdmRjdi5oYXNDdXJyZW50SXRlbSgpXCJcbiAgICAgICAgICAgICAgW2ZvbnRXZWlnaHRdPVwiJ2JvbGQnXCJcbiAgICAgICAgICAgICAgW2JnQ29sb3JdPVwiJyM4RThEODcnXCJcbiAgICAgICAgICAgICAgW2JvcmRlclJhZGl1c109XCInNHB4J1wiXG4gICAgICAgICAgICAgIFt0ZXh0Q29sb3JdPVwiJyNmZmYnXCJcbiAgICAgICAgICAgICAgW3BkXT1cIic5Ljc5cHggMzcuMjhweCdcIlxuICAgICAgICAgICAgICBbdGV4dF09XCInRGVsZXRlJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3ZlcmJlbmEtYnV0dG9uPiAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IHt7XG4gICAgICAgICAgICAgICAgdmRjdi5oYXNDdXJyZW50SXRlbSgpID8gJ2ZsZXgtMScgOiAnJ1xuICAgICAgICAgICAgICB9fSBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXIgZ2FwLTVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhZ2luYXRvci10ZXh0XCJcbiAgICAgICAgICAgICAgICA+e3sgY2FyZERhdGEubGVuZ3RoIH19IHJlY29yZHMgbG9hZGVkPC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJsb2FkTW9yZSgpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImxvYWQtbW9yZSB2aWV3LWxpbmtzIHRleHQtWyMzNDc5RTldIHVuZGVybGluZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBMb2FkIG1vcmVcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC92ZXJiZW4tY2FyZC1kYXRhLXZpZXctZm9vdGVyPlxuICAgICAgPC92ZXJiZW4tY2FyZC1kYXRhLXZpZXc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjb2x1bW4tY29udGVudD5cbiAgICAgIDx2ZXJiZW4tdmlzaWJsZS1jb2x1bW5cbiAgICAgICAgKGNvbHVtbnNVcGRhdGVkKT1cIm9uQ29sdW1uc1VwZGF0ZWQoJGV2ZW50KVwiXG4gICAgICAgIFtib3JkZXJdPVwiJzFweCBzb2xpZCByZ2JhKDIxMiwgMTYwLCA3LCAxKSdcIlxuICAgICAgICBib3JkZXJSYWRpdXM9XCIxMHB4XCJcbiAgICAgICAgYm94U2hhZG93PVwiMnB4IDJweCAycHggMHB4IHNpbHZlclwiXG4gICAgICAgIGJnQ29sb3I9XCJ3aGl0ZVwiXG4gICAgICAgIHdpZHRoPVwiNDAwcHhcIlxuICAgICAgICB0ZXh0Q29sb3I9XCJibGFja1wiXG4gICAgICAgIHBkPVwiMXJlbVwiXG4gICAgICAgIHByaW1hcnlDb2xvcj1cIiNGRkU2ODFcIlxuICAgICAgICBzZWNvbmRhcnlDb2xvcj1cIiMzNDc5RTlcIlxuICAgICAgICBbY29sdW1uc109XCJ2aXNpYmxlQ29sdW1uc1wiXG4gICAgICAgIFtkaXNwbGF5ZWRDb2x1bW5zXT1cIjVcIlxuICAgICAgPjwvdmVyYmVuLXZpc2libGUtY29sdW1uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgZmlsdGVyLWNvbnRlbnQ+XG4gICAgICA8dmVyYmVuLXRhYmxlLWZpbHRlclxuICAgICAgICBbYm9yZGVyXT1cIicxcHggc29saWQgcmdiYSgyMTIsIDE2MCwgNywgMSknXCJcbiAgICAgICAgYm9yZGVyUmFkaXVzPVwiMTBweFwiXG4gICAgICAgIGJveFNoYWRvdz1cIjJweCAycHggMnB4IDBweCBzaWx2ZXJcIlxuICAgICAgICBiZ0NvbG9yPVwid2hpdGVcIlxuICAgICAgICB3aWR0aD1cIjQyMHB4XCJcbiAgICAgICAgdGV4dENvbG9yPVwiYmxhY2tcIlxuICAgICAgICBwZD1cIjFyZW1cIlxuICAgICAgICBwcmltYXJ5Q29sb3I9XCIjRkZFNjgxXCJcbiAgICAgICAgc2Vjb25kYXJ5Q29sb3I9XCIjMzQ3OUU5XCJcbiAgICAgICAgdGVydGlhcnlDb2xvcj1cIiM0MDQwNDBcIlxuICAgICAgICBbZmlsdGVyT3B0aW9uc109XCJmaWx0ZXJBcnJheVwiXG4gICAgICAgIFttYXhGaWx0ZXJMZW5ndGhdPVwiM1wiXG4gICAgICAgIChmaWx0ZXJzQXBwbGllZCk9XCJvbkZpbHRlckFwcGxpZWQoJGV2ZW50KVwiXG4gICAgICA+PC92ZXJiZW4tdGFibGUtZmlsdGVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgc29ydC1jb250ZW50PlxuICAgICAgPHZlcmJlbi1zb3J0LXRhYmxlXG4gICAgICAgIChzZWxlY3RlZE9wdGlvbnMpPVwib25Tb3J0VXBkYXRlZCgkZXZlbnQpXCJcbiAgICAgICAgW2JvcmRlcl09XCInMXB4IHNvbGlkIHJnYmEoMjEyLCAxNjAsIDcsIDEpJ1wiXG4gICAgICAgIGJvcmRlclJhZGl1cz1cIjEwcHhcIlxuICAgICAgICBib3hTaGFkb3c9XCIycHggMnB4IDJweCAwcHggc2lsdmVyXCJcbiAgICAgICAgYmdDb2xvcj1cIndoaXRlXCJcbiAgICAgICAgd2lkdGg9XCI0MDBweFwiXG4gICAgICAgIHRleHRDb2xvcj1cImJsYWNrXCJcbiAgICAgICAgcGQ9XCIxcmVtXCJcbiAgICAgICAgcHJpbWFyeUNvbG9yPVwiI0ZGRTY4MVwiXG4gICAgICAgIHNlY29uZGFyeUNvbG9yPVwiIzM0NzlFOVwiXG4gICAgICAgIHRlcnRpYXJ5Q29sb3I9XCIjNDA0MDQwXCJcbiAgICAgICAgW2VuYWJsZURyYWdBbmREcm9wXT1cInRydWVcIlxuICAgICAgICBbc29ydE9wdGlvbnNdPVwic29ydE9wdGlvbnNcIlxuICAgICAgPjwvdmVyYmVuLXNvcnQtdGFibGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBleHBvcnQtY29udGVudD5cbiAgICAgIDxsaWItZGF0YS14cG9ydFxuICAgICAgW2NvbHVtbnNdPVwiYWxsQ29sdW1uc1wiXG4gICAgICBbZGF0YV09XCJ1c2Vyc1wiXG4gICAgICA+XG4gICAgICA8L2xpYi1kYXRhLXhwb3J0PlxuICAgIDwvZGl2PlxuICA8L3ZlcmJlbi1kYXRhLXZpZXc+XG4gIDxkaXZcbiAgICAqbmdJZj1cIiF2ZGN2Lmhhc0N1cnJlbnRJdGVtKCkgJiYgdGhpcy5jYXJkQ29udGV4dEhpc3RvcnkubGVuZ3RoID09IDBcIlxuICAgIGNsYXNzPVwibWVzc2FnZS1sb2ctYnV0dG9uLWNvbnRhaW5lciBmbGV4IGp1c3RpZnktYmV0d2VlblwiXG4gID48L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwidmR2LmlzVGFibGVWaWV3XCIgY2xhc3M9XCJ3LWZ1bGwgZmxleCBnYXAtMiBqdXN0aWZ5LWVuZFwiPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cIm1lc3NhZ2UtbG9nLWJ1dHRvbi1jb250YWluZXIgZmxleCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgICBbZm9udFdlaWdodF09XCInYm9sZCdcIlxuICAgICAgICBbYmdDb2xvcl09XCInIzhFOEQ4NydcIlxuICAgICAgICBbYm9yZGVyUmFkaXVzXT1cIic0cHgnXCJcbiAgICAgICAgW3RleHRDb2xvcl09XCInI2ZmZidcIlxuICAgICAgICBbcGRdPVwiJzkuNzlweCAzNy4yOHB4J1wiXG4gICAgICAgIFt0ZXh0XT1cIidEZWxldGUnXCJcbiAgICAgID5cbiAgICAgIDwvdmVyYmVuYS1idXR0b24+XG4gICAgPC9kaXY+IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIGl0ZW1zLWNlbnRlciBnYXAtNVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJwYWdpbmF0b3ItdGV4dFwiPnt7IGNhcmREYXRhLmxlbmd0aCB9fSByZWNvcmRzIGxvYWRlZDwvc3Bhbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKGNsaWNrKT1cImxvYWRNb3JlKClcIlxuICAgICAgICBjbGFzcz1cImxvYWQtbW9yZSB2aWV3LWxpbmtzIHRleHQtWyMzNDc5RTldIHVuZGVybGluZVwiXG4gICAgICA+XG4gICAgICAgIExvYWQgbW9yZVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|