ca-components 1.7.83 → 1.7.85

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.
@@ -23,7 +23,7 @@ export class CaStatusChangeDropdownComponent {
23
23
  // Modules
24
24
  AngularSvgIconModule }, { kind: "component", type: i1.SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "applyCss", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "component", type:
25
25
  // Components
26
- CaLoadStatusComponent, selector: "app-ca-load-status", inputs: ["status", "time", "isNoStyle", "fontSize", "width", "height", "isTitleCardDropdown", "isDark", "isMarked", "isDropdownStatusChange", "isDefaultHoverFocus", "isNoStatesColor"] }] }); }
26
+ CaLoadStatusComponent, selector: "app-ca-load-status", inputs: ["status", "time", "isNoStyle", "fontSize", "width", "height", "isTitleCardDropdown", "isDark", "isMarked", "isDropdownStatusChange", "isDefaultHoverFocus", "isNoStatesColor", "isStatusCard"] }] }); }
27
27
  }
28
28
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaStatusChangeDropdownComponent, decorators: [{
29
29
  type: Component,
@@ -26,6 +26,10 @@ export class CaTableCardViewComponent {
26
26
  //This is WIP will be changed later...
27
27
  this._backSide = value;
28
28
  }
29
+ set titleIcon(value) {
30
+ //This is WIP will be changed later...
31
+ this._titleIcon = value;
32
+ }
29
33
  set viewData(value) {
30
34
  //This is WIP will be changed later...
31
35
  this._viewData = value;
@@ -40,6 +44,8 @@ export class CaTableCardViewComponent {
40
44
  this.showMore = new EventEmitter();
41
45
  // select
42
46
  this.selectCard = new EventEmitter();
47
+ // title click
48
+ this.cardTitleClick = new EventEmitter();
43
49
  this.dropdownOptionEmitter = new EventEmitter();
44
50
  // flip cards
45
51
  this.isCardFlippedCheckInCards = [];
@@ -65,11 +71,14 @@ export class CaTableCardViewComponent {
65
71
  onCheckboxSelect(id) {
66
72
  this.selectCard.emit(id);
67
73
  }
74
+ cardTitleClicked(id) {
75
+ this.cardTitleClick.emit(id);
76
+ }
68
77
  onShowMoreClick() {
69
78
  this.showMore.emit();
70
79
  }
71
80
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaTableCardViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
72
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CaTableCardViewComponent, isStandalone: true, selector: "ca-table-card-view", inputs: { frontSide: "frontSide", backSide: "backSide", viewData: "viewData", cardTitle: "cardTitle", totalDataCount: "totalDataCount", cardsFlipType: "cardsFlipType", isDropdownMenuHidden: "isDropdownMenuHidden", isSelectHidden: "isSelectHidden" }, outputs: { showMore: "showMore", selectCard: "selectCard", dropdownOptionEmitter: "dropdownOptionEmitter" }, ngImport: i0, template: "@let displayedDataCount = _viewData.length;\n\n<div class=\"cards-container d-grid gap-1 margin-r-15\">\n @for (card of _viewData; let i = $index; track $index) {\n <div class=\"custom-card br-3 bg-white\">\n <div\n class=\"card-body m-1 d-flex justify-content-between\"\n [ngClass]=\"{\n 'background-gray background-hover-gray': card.isSelected,\n 'background-hover-bw2': !card.isSelected,\n }\"\n >\n <!-- Left side of the card -->\n\n <div class=\"card-body-left p-1\">\n <!-- Head of the card -->\n\n <div\n class=\"card-header d-flex align-items-center\"\n [class.select-hidden]=\"isSelectHidden\"\n >\n <div class=\"checkbox-holder d-flex align-items-center\">\n <!-- Checkbox -->\n <span\n class=\"checkbox-tooltip\"\n type=\"button\"\n ngbTooltip\n tooltipBackground=\"#424242\"\n position=\"bottom\"\n [ngClass]=\"{\n 'rotate-svg':\n isCardFlippedCheckInCards?.includes(i),\n 'svg-position':\n !isCardFlippedCheckInCards?.includes(i),\n }\"\n [ngStyle]=\"{\n '--svg-fill-color':\n isCardFlippedCheckInCards?.includes(i)\n ? '#3b73ed'\n : '',\n }\"\n >\n <!-- ca-checkbox doesn't work as expected, leave this input for now -->\n @if (!isSelectHidden) {\n <input\n class=\"table-checkbox d-none\"\n type=\"checkbox\"\n id=\"checkbox{{ i }}\"\n [checked]=\"card.isSelected\"\n (change)=\"onCheckboxSelect(card.id)\"\n />\n <label\n class=\"table-checkbox-label d-flex bg-light-gray-6\"\n for=\"checkbox{{ i }}\"\n ></label>\n }\n </span>\n </div>\n <div class=\"name d-flex ta-font-bold\">\n <span class=\"title text-black\">\n {{ card[_cardTitle] ?? '/' }}\n </span>\n </div>\n </div>\n\n <!-- Card body front-->\n\n <div class=\"card-body-content d-flex flex-column gap-2\">\n <ng-container\n *ngTemplateOutlet=\"\n (i\n | isCardFlipped\n : isCardFlippedCheckInCards) ||\n cardsFlipType === tableCardTypes.BACK\n ? _backSide\n : _frontSide;\n context: { data: card }\n \"\n ></ng-container>\n </div>\n </div>\n\n <!-- Right side of card -->\n\n <div class=\"card-body-right d-flex flex-column\">\n <div class=\"top-side d-flex flex-column gap-1\">\n <!-- Dropdown Menu-->\n\n @if (!isDropdownMenuHidden) {\n <ca-dropdown-menu\n [type]=\"'dots-menu-type'\"\n [placement]=\"\n ePosition.TABLE_CARDS_DROPDOWN_MENU\n \"\n [options]=\"card.tableDropdownContent\"\n (dropdownOptionEmitter)=\"\n handleToggleDropdownMenuActions(\n $event,\n card\n )\n \"\n >\n </ca-dropdown-menu>\n }\n\n <!-- Note element -->\n\n <div\n class=\"note-container right-side-svg br-2 position-relative d-flex align-items-center justify-content-center flex-column\"\n ></div>\n\n <!-- Expand element -->\n\n <div\n class=\"bottom-side d-flex justify-content-center\"\n (click)=\"flipCard(i)\"\n >\n <span\n class=\"expand-card\"\n type=\"button\"\n ngbTooltip\n mainTooltip=\"Flip Card\"\n position=\"bottom\"\n [ngClass]=\"{\n 'rotate-svg':\n isCardFlippedCheckInCards?.includes(\n i\n ) ||\n cardsFlipType === tableCardTypes.BACK,\n 'svg-position':\n !isCardFlippedCheckInCards?.includes(i),\n }\"\n >\n <svg-icon\n [src]=\"\n tableCardViewSvgRoutes.flipArrowRoute\n \"\n ></svg-icon>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n@if (displayedDataCount) {\n <app-ca-show-more\n [displayedDataCount]=\"displayedDataCount\"\n [totalDataCount]=\"totalDataCount\"\n (onShowMore)=\"onShowMoreClick()\"\n ></app-ca-show-more>\n}\n", styles: ["@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.cards-container{margin-top:11px;grid-template-columns:repeat(auto-fill,minmax(302px,1fr))}.cards-container .custom-card .card-body{border-radius:2px;height:calc(100% - 8px)}.cards-container .custom-card .card-body .card-body-left{width:calc(100% - 30px)}.cards-container .custom-card .card-body .card-body-left .card-header{gap:10px;position:relative;padding-left:28px;padding-top:4px}.cards-container .custom-card .card-body .card-body-left .card-header.select-hidden{padding-left:4px!important}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder{position:absolute;left:5px;top:6px}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder .table-checkbox-label{width:14px;height:14px;margin-bottom:0;cursor:pointer;transition:background .3s,transform .3s}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder .table-checkbox-label:hover{background:#919191;transform:scale(1.3)}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder .table-checkbox:checked+.table-checkbox-label{background-color:#3b73ed;background-repeat:no-repeat;background-position:center;transition:background-color .25s}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder .table-checkbox:checked+.table-checkbox-label:hover{background-color:#0b49d1}.cards-container .custom-card .card-body .card-body-left .card-header .name{font-size:14px;line-height:18px;width:100%}.cards-container .custom-card .card-body .card-body-left .card-header .name .title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.cards-container .custom-card .card-body .card-body-left .card-header .name .finish-order-holder{width:100%}.cards-container .custom-card .card-body .card-body-left .card-body-content{margin-top:8px}.cards-container .custom-card .card-body .card-body-left .card-body-content .one-row .item-body{height:fit-content}.cards-container .custom-card .card-body .card-body-right{height:100%;padding:4px 4px 0 0;position:relative}.cards-container .custom-card .card-body .card-body-right .top-side{height:100%}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg{width:26px;height:26px;top:2px}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg:hover{background:transparent!important}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg .note-tooltip{height:30px}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg .dots svg{width:18px;position:relative;bottom:1px}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg .rotate-dropdown-svg svg{transform:rotate(90deg);transition:all .3s}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg .dropdown-svg-back svg{transform:rotate(0);transition:all .3s}.cards-container .custom-card .card-body .card-body-right .bottom-side{width:26px;height:26px;cursor:pointer;position:absolute;bottom:5px}.cards-container .custom-card .card-body .card-body-right .bottom-side .svg-position{rotate:0deg}.cards-container .custom-card .card-body .card-body-right .bottom-side .expand-card:hover svg path{fill:#424242}.cards-container .custom-card .card-body .card-body-right .bottom-side .rotate-svg{rotate:180deg}.cards-container .custom-card .card-body .card-body-right .bottom-side .rotate-svg svg:hover path{fill:#6692f1}.cards-container .custom-card .card-body:hover .finish-order-action{background:#3b73ed;color:#fff!important;transition:color .25s,background .25s}\n"], dependencies: [{ kind: "ngmodule", type:
81
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CaTableCardViewComponent, isStandalone: true, selector: "ca-table-card-view", inputs: { frontSide: "frontSide", backSide: "backSide", titleIcon: "titleIcon", viewData: "viewData", cardTitle: "cardTitle", totalDataCount: "totalDataCount", cardsFlipType: "cardsFlipType", isDropdownMenuHidden: "isDropdownMenuHidden", isSelectHidden: "isSelectHidden" }, outputs: { showMore: "showMore", selectCard: "selectCard", cardTitleClick: "cardTitleClick", dropdownOptionEmitter: "dropdownOptionEmitter" }, ngImport: i0, template: "@let displayedDataCount = _viewData.length;\n\n<div class=\"cards-container d-grid gap-1 margin-r-15\">\n @for (card of _viewData; let i = $index; track $index) {\n <div class=\"custom-card br-3 bg-white\">\n <div\n class=\"card-body m-1 d-flex justify-content-between\"\n [ngClass]=\"{\n 'background-gray background-hover-gray': card.isSelected,\n 'background-hover-bw2': !card.isSelected,\n }\"\n >\n <!-- Left side of the card -->\n\n <div class=\"card-body-left p-1\">\n <!-- Head of the card -->\n\n <div\n class=\"card-header d-flex align-items-center\"\n [class.select-hidden]=\"isSelectHidden\"\n >\n <div class=\"checkbox-holder d-flex align-items-center\">\n <!-- Checkbox -->\n <span\n class=\"checkbox-tooltip\"\n type=\"button\"\n ngbTooltip\n tooltipBackground=\"#424242\"\n position=\"bottom\"\n [ngClass]=\"{\n 'rotate-svg':\n isCardFlippedCheckInCards?.includes(i),\n 'svg-position':\n !isCardFlippedCheckInCards?.includes(i),\n }\"\n [ngStyle]=\"{\n '--svg-fill-color':\n isCardFlippedCheckInCards?.includes(i)\n ? '#3b73ed'\n : '',\n }\"\n >\n <!-- ca-checkbox doesn't work as expected, leave this input for now -->\n @if (!isSelectHidden) {\n <input\n class=\"table-checkbox d-none\"\n type=\"checkbox\"\n id=\"checkbox{{ i }}\"\n [checked]=\"card.isSelected\"\n (change)=\"onCheckboxSelect(card.id)\"\n />\n <label\n class=\"table-checkbox-label d-flex bg-light-gray-6\"\n for=\"checkbox{{ i }}\"\n ></label>\n }\n </span>\n </div>\n <div\n class=\"name d-flex gap-1 title text-black ta-font-bold\"\n >\n @if (_titleIcon) {\n <ng-container\n *ngTemplateOutlet=\"\n _titleIcon;\n context: { data: card }\n \"\n ></ng-container>\n }\n\n <div\n class=\"c-pointer text-hover-blue-15\"\n (click)=\"cardTitleClicked(card.id)\"\n >\n {{ card[_cardTitle] ?? '/' }}\n </div>\n </div>\n </div>\n\n <!-- Card body front-->\n\n <div class=\"card-body-content d-flex flex-column gap-2\">\n <ng-container\n *ngTemplateOutlet=\"\n (i\n | isCardFlipped\n : isCardFlippedCheckInCards) ||\n cardsFlipType === tableCardTypes.BACK\n ? _backSide\n : _frontSide;\n context: { data: card }\n \"\n ></ng-container>\n </div>\n </div>\n\n <!-- Right side of card -->\n\n <div class=\"card-body-right d-flex flex-column\">\n <div class=\"top-side d-flex flex-column gap-1\">\n <!-- Dropdown Menu-->\n\n @if (!isDropdownMenuHidden) {\n <ca-dropdown-menu\n [type]=\"'dots-menu-type'\"\n [placement]=\"\n ePosition.TABLE_CARDS_DROPDOWN_MENU\n \"\n [options]=\"card.tableDropdownContent\"\n (dropdownOptionEmitter)=\"\n handleToggleDropdownMenuActions(\n $event,\n card\n )\n \"\n >\n </ca-dropdown-menu>\n }\n\n <!-- Note element -->\n\n <div\n class=\"note-container right-side-svg br-2 position-relative d-flex align-items-center justify-content-center flex-column\"\n ></div>\n\n <!-- Expand element -->\n\n <div\n class=\"bottom-side d-flex justify-content-center\"\n (click)=\"flipCard(i)\"\n >\n <span\n class=\"expand-card\"\n type=\"button\"\n ngbTooltip\n mainTooltip=\"Flip Card\"\n position=\"bottom\"\n [ngClass]=\"{\n 'rotate-svg':\n isCardFlippedCheckInCards?.includes(\n i\n ) ||\n cardsFlipType === tableCardTypes.BACK,\n 'svg-position':\n !isCardFlippedCheckInCards?.includes(i),\n }\"\n >\n <svg-icon\n [src]=\"\n tableCardViewSvgRoutes.flipArrowRoute\n \"\n ></svg-icon>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n@if (displayedDataCount) {\n <app-ca-show-more\n [displayedDataCount]=\"displayedDataCount\"\n [totalDataCount]=\"totalDataCount\"\n (onShowMore)=\"onShowMoreClick()\"\n ></app-ca-show-more>\n}\n", styles: ["@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.cards-container{margin-top:11px;grid-template-columns:repeat(auto-fill,minmax(302px,1fr))}.cards-container .custom-card .card-body{border-radius:2px;height:calc(100% - 8px)}.cards-container .custom-card .card-body .card-body-left{width:calc(100% - 30px)}.cards-container .custom-card .card-body .card-body-left .card-header{gap:10px;position:relative;padding-left:28px;padding-top:4px}.cards-container .custom-card .card-body .card-body-left .card-header.select-hidden{padding-left:4px!important}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder{position:absolute;left:5px;top:6px}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder .table-checkbox-label{width:14px;height:14px;margin-bottom:0;cursor:pointer;transition:background .3s,transform .3s}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder .table-checkbox-label:hover{background:#919191;transform:scale(1.3)}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder .table-checkbox:checked+.table-checkbox-label{background-color:#3b73ed;background-repeat:no-repeat;background-position:center;transition:background-color .25s}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder .table-checkbox:checked+.table-checkbox-label:hover{background-color:#0b49d1}.cards-container .custom-card .card-body .card-body-left .card-header .name{font-size:14px;line-height:18px;width:100%}.cards-container .custom-card .card-body .card-body-left .card-header .name .title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.cards-container .custom-card .card-body .card-body-left .card-header .name .finish-order-holder{width:100%}.cards-container .custom-card .card-body .card-body-left .card-body-content{margin-top:8px}.cards-container .custom-card .card-body .card-body-left .card-body-content .one-row .item-body{height:fit-content}.cards-container .custom-card .card-body .card-body-right{height:100%;padding:4px 4px 0 0;position:relative}.cards-container .custom-card .card-body .card-body-right .top-side{height:100%}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg{width:26px;height:26px;top:2px}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg:hover{background:transparent!important}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg .note-tooltip{height:30px}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg .dots svg{width:18px;position:relative;bottom:1px}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg .rotate-dropdown-svg svg{transform:rotate(90deg);transition:all .3s}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg .dropdown-svg-back svg{transform:rotate(0);transition:all .3s}.cards-container .custom-card .card-body .card-body-right .bottom-side{width:26px;height:26px;cursor:pointer;position:absolute;bottom:5px}.cards-container .custom-card .card-body .card-body-right .bottom-side .svg-position{rotate:0deg}.cards-container .custom-card .card-body .card-body-right .bottom-side .expand-card:hover svg path{fill:#424242}.cards-container .custom-card .card-body .card-body-right .bottom-side .rotate-svg{rotate:180deg}.cards-container .custom-card .card-body .card-body-right .bottom-side .rotate-svg svg:hover path{fill:#6692f1}.cards-container .custom-card .card-body:hover .finish-order-action{background:#3b73ed;color:#fff!important;transition:color .25s,background .25s}\n"], dependencies: [{ kind: "ngmodule", type:
73
82
  // modules
74
83
  AngularSvgIconModule }, { kind: "component", type: i1.SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "applyCss", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type:
75
84
  // components
@@ -88,11 +97,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
88
97
  CaShowMoreComponent,
89
98
  // pipes
90
99
  IsCardFlippedPipe,
91
- ], template: "@let displayedDataCount = _viewData.length;\n\n<div class=\"cards-container d-grid gap-1 margin-r-15\">\n @for (card of _viewData; let i = $index; track $index) {\n <div class=\"custom-card br-3 bg-white\">\n <div\n class=\"card-body m-1 d-flex justify-content-between\"\n [ngClass]=\"{\n 'background-gray background-hover-gray': card.isSelected,\n 'background-hover-bw2': !card.isSelected,\n }\"\n >\n <!-- Left side of the card -->\n\n <div class=\"card-body-left p-1\">\n <!-- Head of the card -->\n\n <div\n class=\"card-header d-flex align-items-center\"\n [class.select-hidden]=\"isSelectHidden\"\n >\n <div class=\"checkbox-holder d-flex align-items-center\">\n <!-- Checkbox -->\n <span\n class=\"checkbox-tooltip\"\n type=\"button\"\n ngbTooltip\n tooltipBackground=\"#424242\"\n position=\"bottom\"\n [ngClass]=\"{\n 'rotate-svg':\n isCardFlippedCheckInCards?.includes(i),\n 'svg-position':\n !isCardFlippedCheckInCards?.includes(i),\n }\"\n [ngStyle]=\"{\n '--svg-fill-color':\n isCardFlippedCheckInCards?.includes(i)\n ? '#3b73ed'\n : '',\n }\"\n >\n <!-- ca-checkbox doesn't work as expected, leave this input for now -->\n @if (!isSelectHidden) {\n <input\n class=\"table-checkbox d-none\"\n type=\"checkbox\"\n id=\"checkbox{{ i }}\"\n [checked]=\"card.isSelected\"\n (change)=\"onCheckboxSelect(card.id)\"\n />\n <label\n class=\"table-checkbox-label d-flex bg-light-gray-6\"\n for=\"checkbox{{ i }}\"\n ></label>\n }\n </span>\n </div>\n <div class=\"name d-flex ta-font-bold\">\n <span class=\"title text-black\">\n {{ card[_cardTitle] ?? '/' }}\n </span>\n </div>\n </div>\n\n <!-- Card body front-->\n\n <div class=\"card-body-content d-flex flex-column gap-2\">\n <ng-container\n *ngTemplateOutlet=\"\n (i\n | isCardFlipped\n : isCardFlippedCheckInCards) ||\n cardsFlipType === tableCardTypes.BACK\n ? _backSide\n : _frontSide;\n context: { data: card }\n \"\n ></ng-container>\n </div>\n </div>\n\n <!-- Right side of card -->\n\n <div class=\"card-body-right d-flex flex-column\">\n <div class=\"top-side d-flex flex-column gap-1\">\n <!-- Dropdown Menu-->\n\n @if (!isDropdownMenuHidden) {\n <ca-dropdown-menu\n [type]=\"'dots-menu-type'\"\n [placement]=\"\n ePosition.TABLE_CARDS_DROPDOWN_MENU\n \"\n [options]=\"card.tableDropdownContent\"\n (dropdownOptionEmitter)=\"\n handleToggleDropdownMenuActions(\n $event,\n card\n )\n \"\n >\n </ca-dropdown-menu>\n }\n\n <!-- Note element -->\n\n <div\n class=\"note-container right-side-svg br-2 position-relative d-flex align-items-center justify-content-center flex-column\"\n ></div>\n\n <!-- Expand element -->\n\n <div\n class=\"bottom-side d-flex justify-content-center\"\n (click)=\"flipCard(i)\"\n >\n <span\n class=\"expand-card\"\n type=\"button\"\n ngbTooltip\n mainTooltip=\"Flip Card\"\n position=\"bottom\"\n [ngClass]=\"{\n 'rotate-svg':\n isCardFlippedCheckInCards?.includes(\n i\n ) ||\n cardsFlipType === tableCardTypes.BACK,\n 'svg-position':\n !isCardFlippedCheckInCards?.includes(i),\n }\"\n >\n <svg-icon\n [src]=\"\n tableCardViewSvgRoutes.flipArrowRoute\n \"\n ></svg-icon>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n@if (displayedDataCount) {\n <app-ca-show-more\n [displayedDataCount]=\"displayedDataCount\"\n [totalDataCount]=\"totalDataCount\"\n (onShowMore)=\"onShowMoreClick()\"\n ></app-ca-show-more>\n}\n", styles: ["@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.cards-container{margin-top:11px;grid-template-columns:repeat(auto-fill,minmax(302px,1fr))}.cards-container .custom-card .card-body{border-radius:2px;height:calc(100% - 8px)}.cards-container .custom-card .card-body .card-body-left{width:calc(100% - 30px)}.cards-container .custom-card .card-body .card-body-left .card-header{gap:10px;position:relative;padding-left:28px;padding-top:4px}.cards-container .custom-card .card-body .card-body-left .card-header.select-hidden{padding-left:4px!important}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder{position:absolute;left:5px;top:6px}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder .table-checkbox-label{width:14px;height:14px;margin-bottom:0;cursor:pointer;transition:background .3s,transform .3s}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder .table-checkbox-label:hover{background:#919191;transform:scale(1.3)}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder .table-checkbox:checked+.table-checkbox-label{background-color:#3b73ed;background-repeat:no-repeat;background-position:center;transition:background-color .25s}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder .table-checkbox:checked+.table-checkbox-label:hover{background-color:#0b49d1}.cards-container .custom-card .card-body .card-body-left .card-header .name{font-size:14px;line-height:18px;width:100%}.cards-container .custom-card .card-body .card-body-left .card-header .name .title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.cards-container .custom-card .card-body .card-body-left .card-header .name .finish-order-holder{width:100%}.cards-container .custom-card .card-body .card-body-left .card-body-content{margin-top:8px}.cards-container .custom-card .card-body .card-body-left .card-body-content .one-row .item-body{height:fit-content}.cards-container .custom-card .card-body .card-body-right{height:100%;padding:4px 4px 0 0;position:relative}.cards-container .custom-card .card-body .card-body-right .top-side{height:100%}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg{width:26px;height:26px;top:2px}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg:hover{background:transparent!important}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg .note-tooltip{height:30px}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg .dots svg{width:18px;position:relative;bottom:1px}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg .rotate-dropdown-svg svg{transform:rotate(90deg);transition:all .3s}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg .dropdown-svg-back svg{transform:rotate(0);transition:all .3s}.cards-container .custom-card .card-body .card-body-right .bottom-side{width:26px;height:26px;cursor:pointer;position:absolute;bottom:5px}.cards-container .custom-card .card-body .card-body-right .bottom-side .svg-position{rotate:0deg}.cards-container .custom-card .card-body .card-body-right .bottom-side .expand-card:hover svg path{fill:#424242}.cards-container .custom-card .card-body .card-body-right .bottom-side .rotate-svg{rotate:180deg}.cards-container .custom-card .card-body .card-body-right .bottom-side .rotate-svg svg:hover path{fill:#6692f1}.cards-container .custom-card .card-body:hover .finish-order-action{background:#3b73ed;color:#fff!important;transition:color .25s,background .25s}\n"] }]
100
+ ], template: "@let displayedDataCount = _viewData.length;\n\n<div class=\"cards-container d-grid gap-1 margin-r-15\">\n @for (card of _viewData; let i = $index; track $index) {\n <div class=\"custom-card br-3 bg-white\">\n <div\n class=\"card-body m-1 d-flex justify-content-between\"\n [ngClass]=\"{\n 'background-gray background-hover-gray': card.isSelected,\n 'background-hover-bw2': !card.isSelected,\n }\"\n >\n <!-- Left side of the card -->\n\n <div class=\"card-body-left p-1\">\n <!-- Head of the card -->\n\n <div\n class=\"card-header d-flex align-items-center\"\n [class.select-hidden]=\"isSelectHidden\"\n >\n <div class=\"checkbox-holder d-flex align-items-center\">\n <!-- Checkbox -->\n <span\n class=\"checkbox-tooltip\"\n type=\"button\"\n ngbTooltip\n tooltipBackground=\"#424242\"\n position=\"bottom\"\n [ngClass]=\"{\n 'rotate-svg':\n isCardFlippedCheckInCards?.includes(i),\n 'svg-position':\n !isCardFlippedCheckInCards?.includes(i),\n }\"\n [ngStyle]=\"{\n '--svg-fill-color':\n isCardFlippedCheckInCards?.includes(i)\n ? '#3b73ed'\n : '',\n }\"\n >\n <!-- ca-checkbox doesn't work as expected, leave this input for now -->\n @if (!isSelectHidden) {\n <input\n class=\"table-checkbox d-none\"\n type=\"checkbox\"\n id=\"checkbox{{ i }}\"\n [checked]=\"card.isSelected\"\n (change)=\"onCheckboxSelect(card.id)\"\n />\n <label\n class=\"table-checkbox-label d-flex bg-light-gray-6\"\n for=\"checkbox{{ i }}\"\n ></label>\n }\n </span>\n </div>\n <div\n class=\"name d-flex gap-1 title text-black ta-font-bold\"\n >\n @if (_titleIcon) {\n <ng-container\n *ngTemplateOutlet=\"\n _titleIcon;\n context: { data: card }\n \"\n ></ng-container>\n }\n\n <div\n class=\"c-pointer text-hover-blue-15\"\n (click)=\"cardTitleClicked(card.id)\"\n >\n {{ card[_cardTitle] ?? '/' }}\n </div>\n </div>\n </div>\n\n <!-- Card body front-->\n\n <div class=\"card-body-content d-flex flex-column gap-2\">\n <ng-container\n *ngTemplateOutlet=\"\n (i\n | isCardFlipped\n : isCardFlippedCheckInCards) ||\n cardsFlipType === tableCardTypes.BACK\n ? _backSide\n : _frontSide;\n context: { data: card }\n \"\n ></ng-container>\n </div>\n </div>\n\n <!-- Right side of card -->\n\n <div class=\"card-body-right d-flex flex-column\">\n <div class=\"top-side d-flex flex-column gap-1\">\n <!-- Dropdown Menu-->\n\n @if (!isDropdownMenuHidden) {\n <ca-dropdown-menu\n [type]=\"'dots-menu-type'\"\n [placement]=\"\n ePosition.TABLE_CARDS_DROPDOWN_MENU\n \"\n [options]=\"card.tableDropdownContent\"\n (dropdownOptionEmitter)=\"\n handleToggleDropdownMenuActions(\n $event,\n card\n )\n \"\n >\n </ca-dropdown-menu>\n }\n\n <!-- Note element -->\n\n <div\n class=\"note-container right-side-svg br-2 position-relative d-flex align-items-center justify-content-center flex-column\"\n ></div>\n\n <!-- Expand element -->\n\n <div\n class=\"bottom-side d-flex justify-content-center\"\n (click)=\"flipCard(i)\"\n >\n <span\n class=\"expand-card\"\n type=\"button\"\n ngbTooltip\n mainTooltip=\"Flip Card\"\n position=\"bottom\"\n [ngClass]=\"{\n 'rotate-svg':\n isCardFlippedCheckInCards?.includes(\n i\n ) ||\n cardsFlipType === tableCardTypes.BACK,\n 'svg-position':\n !isCardFlippedCheckInCards?.includes(i),\n }\"\n >\n <svg-icon\n [src]=\"\n tableCardViewSvgRoutes.flipArrowRoute\n \"\n ></svg-icon>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n@if (displayedDataCount) {\n <app-ca-show-more\n [displayedDataCount]=\"displayedDataCount\"\n [totalDataCount]=\"totalDataCount\"\n (onShowMore)=\"onShowMoreClick()\"\n ></app-ca-show-more>\n}\n", styles: ["@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.cards-container{margin-top:11px;grid-template-columns:repeat(auto-fill,minmax(302px,1fr))}.cards-container .custom-card .card-body{border-radius:2px;height:calc(100% - 8px)}.cards-container .custom-card .card-body .card-body-left{width:calc(100% - 30px)}.cards-container .custom-card .card-body .card-body-left .card-header{gap:10px;position:relative;padding-left:28px;padding-top:4px}.cards-container .custom-card .card-body .card-body-left .card-header.select-hidden{padding-left:4px!important}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder{position:absolute;left:5px;top:6px}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder .table-checkbox-label{width:14px;height:14px;margin-bottom:0;cursor:pointer;transition:background .3s,transform .3s}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder .table-checkbox-label:hover{background:#919191;transform:scale(1.3)}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder .table-checkbox:checked+.table-checkbox-label{background-color:#3b73ed;background-repeat:no-repeat;background-position:center;transition:background-color .25s}.cards-container .custom-card .card-body .card-body-left .card-header .checkbox-holder .table-checkbox:checked+.table-checkbox-label:hover{background-color:#0b49d1}.cards-container .custom-card .card-body .card-body-left .card-header .name{font-size:14px;line-height:18px;width:100%}.cards-container .custom-card .card-body .card-body-left .card-header .name .title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.cards-container .custom-card .card-body .card-body-left .card-header .name .finish-order-holder{width:100%}.cards-container .custom-card .card-body .card-body-left .card-body-content{margin-top:8px}.cards-container .custom-card .card-body .card-body-left .card-body-content .one-row .item-body{height:fit-content}.cards-container .custom-card .card-body .card-body-right{height:100%;padding:4px 4px 0 0;position:relative}.cards-container .custom-card .card-body .card-body-right .top-side{height:100%}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg{width:26px;height:26px;top:2px}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg:hover{background:transparent!important}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg .note-tooltip{height:30px}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg .dots svg{width:18px;position:relative;bottom:1px}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg .rotate-dropdown-svg svg{transform:rotate(90deg);transition:all .3s}.cards-container .custom-card .card-body .card-body-right .top-side .right-side-svg .dropdown-svg-back svg{transform:rotate(0);transition:all .3s}.cards-container .custom-card .card-body .card-body-right .bottom-side{width:26px;height:26px;cursor:pointer;position:absolute;bottom:5px}.cards-container .custom-card .card-body .card-body-right .bottom-side .svg-position{rotate:0deg}.cards-container .custom-card .card-body .card-body-right .bottom-side .expand-card:hover svg path{fill:#424242}.cards-container .custom-card .card-body .card-body-right .bottom-side .rotate-svg{rotate:180deg}.cards-container .custom-card .card-body .card-body-right .bottom-side .rotate-svg svg:hover path{fill:#6692f1}.cards-container .custom-card .card-body:hover .finish-order-action{background:#3b73ed;color:#fff!important;transition:color .25s,background .25s}\n"] }]
92
101
  }], ctorParameters: () => [], propDecorators: { frontSide: [{
93
102
  type: Input
94
103
  }], backSide: [{
95
104
  type: Input
105
+ }], titleIcon: [{
106
+ type: Input
96
107
  }], viewData: [{
97
108
  type: Input
98
109
  }], cardTitle: [{
@@ -109,7 +120,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
109
120
  type: Output
110
121
  }], selectCard: [{
111
122
  type: Output
123
+ }], cardTitleClick: [{
124
+ type: Output
112
125
  }], dropdownOptionEmitter: [{
113
126
  type: Output
114
127
  }] } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtdGFibGUtY2FyZC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLXRhYmxlLWNhcmQtdmlldy9jYS10YWJsZS1jYXJkLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtdGFibGUtY2FyZC12aWV3L2NhLXRhYmxlLWNhcmQtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxhQUFhO0FBQ2IsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFTN0UsVUFBVTtBQUNWLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhELGFBQWE7QUFDYixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RCxVQUFVO0FBQ1YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFN0UsUUFBUTtBQUNSLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWpFLFFBQVE7QUFDUixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7QUFvQnhDLE1BQU0sT0FBTyx3QkFBd0I7SUFDakMsSUFBYSxTQUFTLENBQUMsS0FBVTtRQUM3QixzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQWEsUUFBUSxDQUFDLEtBQVU7UUFDNUIsc0NBQXNDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFhLFFBQVEsQ0FBQyxLQUFZO1FBQzlCLHNDQUFzQztRQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBYSxTQUFTLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBZ0NEO1FBNUJTLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQUN0QyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUV6QyxZQUFZO1FBQ0YsYUFBUSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWxFLFNBQVM7UUFDQyxlQUFVLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFFOUQsMEJBQXFCLEdBRTNCLElBQUksWUFBWSxFQUFxQyxDQUFDO1FBTzFELGFBQWE7UUFDTiw4QkFBeUIsR0FBYSxFQUFFLENBQUM7UUFFaEQsYUFBYTtRQUNOLDJCQUFzQixHQUFHLHNCQUFzQixDQUFDO1FBRXZELFFBQVE7UUFDRCxtQkFBYyxHQUFHLGVBQWUsQ0FBQztRQUNqQyxjQUFTLEdBQUcsU0FBUyxDQUFDO0lBRWQsQ0FBQztJQUVULCtCQUErQixDQUNsQyxLQUE4QixFQUM5QixJQUFpQjtRQUVqQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFcEIsTUFBTSxVQUFVLEdBQUc7WUFDZixJQUFJO1lBQ0osRUFBRTtZQUNGLElBQUksRUFBRSxJQUFJO1NBQ2IsQ0FBQztRQUVGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEVBQVU7UUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDOytHQTlFUSx3QkFBd0I7bUdBQXhCLHdCQUF3QixxYkNoRHJDLHkyTkF5SkE7Z0JEckhRLFVBQVU7Z0JBQ1Ysb0JBQW9CLGdPQUNwQixZQUFZO2dCQUVaLGFBQWE7Z0JBQ2IsdUJBQXVCLHFOQUN2QixtQkFBbUI7Z0JBRW5CLFFBQVE7Z0JBQ1IsaUJBQWlCOzs0RkFHWix3QkFBd0I7a0JBbEJwQyxTQUFTOytCQUNJLG9CQUFvQixjQUdsQixJQUFJLFdBQ1A7d0JBQ0wsVUFBVTt3QkFDVixvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBRVosYUFBYTt3QkFDYix1QkFBdUI7d0JBQ3ZCLG1CQUFtQjt3QkFFbkIsUUFBUTt3QkFDUixpQkFBaUI7cUJBQ3BCO3dEQUdZLFNBQVM7c0JBQXJCLEtBQUs7Z0JBS08sUUFBUTtzQkFBcEIsS0FBSztnQkFLTyxRQUFRO3NCQUFwQixLQUFLO2dCQUtPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSUcsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdJLFFBQVE7c0JBQWpCLE1BQU07Z0JBR0csVUFBVTtzQkFBbkIsTUFBTTtnQkFFRyxxQkFBcUI7c0JBQTlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLy8gY29tcG9uZW50c1xuaW1wb3J0IHsgQ2FEcm9wZG93bk1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9jYS1kcm9wZG93bi1tZW51L2NhLWRyb3Bkb3duLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IENhU2hvd01vcmVDb21wb25lbnQgfSBmcm9tICcuLi9jYS1zaG93LW1vcmUvY2Etc2hvdy1tb3JlLmNvbXBvbmVudCc7XG5cbi8vIG1vZGVsc1xuaW1wb3J0IHsgQ2FyZERldGFpbHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2FyZC1tb2RlbHMvY2FyZC10YWJsZS1kYXRhLm1vZGVsJztcblxuLy8gaW50ZXJmYWNlc1xuaW1wb3J0IHsgSURyb3Bkb3duTWVudU9wdGlvbkVtaXQgfSBmcm9tICcuLi9jYS1kcm9wZG93bi1tZW51L2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVGFibGVDYXJkQm9keUFjdGlvbnMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuLy8gbW9kdWxlc1xuaW1wb3J0IHsgQW5ndWxhclN2Z0ljb25Nb2R1bGUgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcblxuLy8gc3ZnLXJvdXRlc1xuaW1wb3J0IHsgVGFibGVDYXJkVmlld1N2Z1JvdXRlcyB9IGZyb20gJy4vdXRpbHMvc3ZnLXJvdXRlcyc7XG5cbi8vIGhlbHBlcnNcbmltcG9ydCB7IFRhYmxlQ2FyZFZpZXdIZWxwZXIgfSBmcm9tICcuL3V0aWxzL2hlbHBlcnMvdGFibGUtY2FyZC12aWV3LWhlbHBlcic7XG5cbi8vIHBpcGVzXG5pbXBvcnQgeyBJc0NhcmRGbGlwcGVkUGlwZSB9IGZyb20gJy4vcGlwZXMvaXMtY2FyZC1mbGlwcGVkLnBpcGUnO1xuXG4vLyBlbnVtc1xuaW1wb3J0IHsgZVRhYmxlQ2FyZFR5cGVzIH0gZnJvbSAnLi9lbnVtcyc7XG5pbXBvcnQgeyBlUG9zaXRpb24gfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY2EtdGFibGUtY2FyZC12aWV3JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtdGFibGUtY2FyZC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vY2EtdGFibGUtY2FyZC12aWV3LmNvbXBvbmVudC5zY3NzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgLy8gbW9kdWxlc1xuICAgICAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuXG4gICAgICAgIC8vIGNvbXBvbmVudHNcbiAgICAgICAgQ2FEcm9wZG93bk1lbnVDb21wb25lbnQsXG4gICAgICAgIENhU2hvd01vcmVDb21wb25lbnQsXG5cbiAgICAgICAgLy8gcGlwZXNcbiAgICAgICAgSXNDYXJkRmxpcHBlZFBpcGUsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FUYWJsZUNhcmRWaWV3Q29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBzZXQgZnJvbnRTaWRlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgLy9UaGlzIGlzIFdJUCB3aWxsIGJlIGNoYW5nZWQgbGF0ZXIuLi5cbiAgICAgICAgdGhpcy5fZnJvbnRTaWRlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGJhY2tTaWRlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgLy9UaGlzIGlzIFdJUCB3aWxsIGJlIGNoYW5nZWQgbGF0ZXIuLi5cbiAgICAgICAgdGhpcy5fYmFja1NpZGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgdmlld0RhdGEodmFsdWU6IGFueVtdKSB7XG4gICAgICAgIC8vVGhpcyBpcyBXSVAgd2lsbCBiZSBjaGFuZ2VkIGxhdGVyLi4uXG4gICAgICAgIHRoaXMuX3ZpZXdEYXRhID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGNhcmRUaXRsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2NhcmRUaXRsZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHRvdGFsRGF0YUNvdW50ITogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGNhcmRzRmxpcFR5cGUhOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaXNEcm9wZG93bk1lbnVIaWRkZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBpc1NlbGVjdEhpZGRlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gc2hvdyBtb3JlXG4gICAgQE91dHB1dCgpIHNob3dNb3JlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvLyBzZWxlY3RcbiAgICBAT3V0cHV0KCkgc2VsZWN0Q2FyZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIEBPdXRwdXQoKSBkcm9wZG93bk9wdGlvbkVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxcbiAgICAgICAgVGFibGVDYXJkQm9keUFjdGlvbnM8Q2FyZERldGFpbHM+XG4gICAgPiA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVDYXJkQm9keUFjdGlvbnM8Q2FyZERldGFpbHM+PigpO1xuXG4gICAgcHVibGljIF9jYXJkVGl0bGUhOiBzdHJpbmc7XG4gICAgcHVibGljIF92aWV3RGF0YSE6IGFueVtdOyAvL1RoaXMgaXMgV0lQIHdpbGwgYmUgY2hhbmdlZCBsYXRlci4uLlxuICAgIHB1YmxpYyBfZnJvbnRTaWRlOiBhbnk7IC8vVGhpcyBpcyBXSVAgd2lsbCBiZSBjaGFuZ2VkIGxhdGVyLi4uXG4gICAgcHVibGljIF9iYWNrU2lkZTogYW55OyAvL1RoaXMgaXMgV0lQIHdpbGwgYmUgY2hhbmdlZCBsYXRlci4uLlxuXG4gICAgLy8gZmxpcCBjYXJkc1xuICAgIHB1YmxpYyBpc0NhcmRGbGlwcGVkQ2hlY2tJbkNhcmRzOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgLy8gc3ZnLXJvdXRlc1xuICAgIHB1YmxpYyB0YWJsZUNhcmRWaWV3U3ZnUm91dGVzID0gVGFibGVDYXJkVmlld1N2Z1JvdXRlcztcblxuICAgIC8vIGVudW1zXG4gICAgcHVibGljIHRhYmxlQ2FyZFR5cGVzID0gZVRhYmxlQ2FyZFR5cGVzO1xuICAgIHB1YmxpYyBlUG9zaXRpb24gPSBlUG9zaXRpb247XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBwdWJsaWMgaGFuZGxlVG9nZ2xlRHJvcGRvd25NZW51QWN0aW9ucyhcbiAgICAgICAgZXZlbnQ6IElEcm9wZG93bk1lbnVPcHRpb25FbWl0LFxuICAgICAgICBjYXJkOiBDYXJkRGV0YWlsc1xuICAgICkge1xuICAgICAgICBjb25zdCB7IHR5cGUgfSA9IGV2ZW50O1xuICAgICAgICBjb25zdCB7IGlkIH0gPSBjYXJkO1xuXG4gICAgICAgIGNvbnN0IGVtaXRBY3Rpb24gPSB7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBkYXRhOiBjYXJkLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZHJvcGRvd25PcHRpb25FbWl0dGVyLmVtaXQoZW1pdEFjdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIGZsaXBDYXJkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0NhcmRGbGlwcGVkQ2hlY2tJbkNhcmRzID0gVGFibGVDYXJkVmlld0hlbHBlci5mbGlwQ2FyZChpbmRleCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2hlY2tib3hTZWxlY3QoaWQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdENhcmQuZW1pdChpZCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2hvd01vcmVDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93TW9yZS5lbWl0KCk7XG4gICAgfVxufVxuIiwiQGxldCBkaXNwbGF5ZWREYXRhQ291bnQgPSBfdmlld0RhdGEubGVuZ3RoO1xuXG48ZGl2IGNsYXNzPVwiY2FyZHMtY29udGFpbmVyIGQtZ3JpZCBnYXAtMSBtYXJnaW4tci0xNVwiPlxuICAgIEBmb3IgKGNhcmQgb2YgX3ZpZXdEYXRhOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tY2FyZCBici0zIGJnLXdoaXRlXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkLWJvZHkgbS0xIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1ncmF5IGJhY2tncm91bmQtaG92ZXItZ3JheSc6IGNhcmQuaXNTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtaG92ZXItYncyJzogIWNhcmQuaXNTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8IS0tIExlZnQgc2lkZSBvZiB0aGUgY2FyZCAtLT5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHktbGVmdCBwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBIZWFkIG9mIHRoZSBjYXJkIC0tPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZC1oZWFkZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0LWhpZGRlbl09XCJpc1NlbGVjdEhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1ob2xkZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ2hlY2tib3ggLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja2JveC10b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCIjNDI0MjQyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncm90YXRlLXN2Zyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDYXJkRmxpcHBlZENoZWNrSW5DYXJkcz8uaW5jbHVkZXMoaSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3ZnLXBvc2l0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNDYXJkRmxpcHBlZENoZWNrSW5DYXJkcz8uaW5jbHVkZXMoaSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1zdmctZmlsbC1jb2xvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDYXJkRmxpcHBlZENoZWNrSW5DYXJkcz8uaW5jbHVkZXMoaSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnIzNiNzNlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGNhLWNoZWNrYm94IGRvZXNuJ3Qgd29yayBhcyBleHBlY3RlZCwgbGVhdmUgdGhpcyBpbnB1dCBmb3Igbm93IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFpc1NlbGVjdEhpZGRlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jaGVja2JveCBkLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjaGVja2JveHt7IGkgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNhcmQuaXNTZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoZWNrYm94U2VsZWN0KGNhcmQuaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNoZWNrYm94LWxhYmVsIGQtZmxleCBiZy1saWdodC1ncmF5LTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImNoZWNrYm94e3sgaSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUgZC1mbGV4IHRhLWZvbnQtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUgdGV4dC1ibGFja1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjYXJkW19jYXJkVGl0bGVdID8/ICcvJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIENhcmQgYm9keSBmcm9udC0tPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHktY29udGVudCBkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpc0NhcmRGbGlwcGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpc0NhcmRGbGlwcGVkQ2hlY2tJbkNhcmRzKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkc0ZsaXBUeXBlID09PSB0YWJsZUNhcmRUeXBlcy5CQUNLXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9iYWNrU2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfZnJvbnRTaWRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7IGRhdGE6IGNhcmQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBSaWdodCBzaWRlIG9mIGNhcmQgLS0+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5LXJpZ2h0IGQtZmxleCBmbGV4LWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9wLXNpZGUgZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIERyb3Bkb3duIE1lbnUtLT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghaXNEcm9wZG93bk1lbnVIaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2EtZHJvcGRvd24tbWVudVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCInZG90cy1tZW51LXR5cGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlbWVudF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVQb3NpdGlvbi5UQUJMRV9DQVJEU19EUk9QRE9XTl9NRU5VXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImNhcmQudGFibGVEcm9wZG93bkNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJvcGRvd25PcHRpb25FbWl0dGVyKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlRHJvcGRvd25NZW51QWN0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NhLWRyb3Bkb3duLW1lbnU+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTm90ZSBlbGVtZW50IC0tPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJub3RlLWNvbnRhaW5lciByaWdodC1zaWRlLXN2ZyBici0yIHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LWNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRXhwYW5kIGVsZW1lbnQgLS0+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvdHRvbS1zaWRlIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmxpcENhcmQoaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXhwYW5kLWNhcmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluVG9vbHRpcD1cIkZsaXAgQ2FyZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JvdGF0ZS1zdmcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ2FyZEZsaXBwZWRDaGVja0luQ2FyZHM/LmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRzRmxpcFR5cGUgPT09IHRhYmxlQ2FyZFR5cGVzLkJBQ0ssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3ZnLXBvc2l0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNDYXJkRmxpcHBlZENoZWNrSW5DYXJkcz8uaW5jbHVkZXMoaSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlQ2FyZFZpZXdTdmdSb3V0ZXMuZmxpcEFycm93Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L2Rpdj5cbkBpZiAoZGlzcGxheWVkRGF0YUNvdW50KSB7XG4gICAgPGFwcC1jYS1zaG93LW1vcmVcbiAgICAgICAgW2Rpc3BsYXllZERhdGFDb3VudF09XCJkaXNwbGF5ZWREYXRhQ291bnRcIlxuICAgICAgICBbdG90YWxEYXRhQ291bnRdPVwidG90YWxEYXRhQ291bnRcIlxuICAgICAgICAob25TaG93TW9yZSk9XCJvblNob3dNb3JlQ2xpY2soKVwiXG4gICAgPjwvYXBwLWNhLXNob3ctbW9yZT5cbn1cbiJdfQ==
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtdGFibGUtY2FyZC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLXRhYmxlLWNhcmQtdmlldy9jYS10YWJsZS1jYXJkLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtdGFibGUtY2FyZC12aWV3L2NhLXRhYmxlLWNhcmQtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxhQUFhO0FBQ2IsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFTN0UsVUFBVTtBQUNWLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhELGFBQWE7QUFDYixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RCxVQUFVO0FBQ1YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFN0UsUUFBUTtBQUNSLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWpFLFFBQVE7QUFDUixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7QUFvQnhDLE1BQU0sT0FBTyx3QkFBd0I7SUFDakMsSUFBYSxTQUFTLENBQUMsS0FBVTtRQUM3QixzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQWEsUUFBUSxDQUFDLEtBQVU7UUFDNUIsc0NBQXNDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFhLFNBQVMsQ0FBQyxLQUFVO1FBQzdCLHNDQUFzQztRQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBYSxRQUFRLENBQUMsS0FBWTtRQUM5QixzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQWEsU0FBUyxDQUFDLEtBQWE7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQXNDRDtRQWxDUyx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFFekMsWUFBWTtRQUNGLGFBQVEsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVsRSxTQUFTO1FBQ0MsZUFBVSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXhFLGNBQWM7UUFDSixtQkFBYyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRWxFLDBCQUFxQixHQUUzQixJQUFJLFlBQVksRUFBcUMsQ0FBQztRQU8xRCxhQUFhO1FBQ04sOEJBQXlCLEdBQWEsRUFBRSxDQUFDO1FBRWhELGFBQWE7UUFDTiwyQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztRQUV2RCxRQUFRO1FBQ0QsbUJBQWMsR0FBRyxlQUFlLENBQUM7UUFDakMsY0FBUyxHQUFHLFNBQVMsQ0FBQztJQUtkLENBQUM7SUFFVCwrQkFBK0IsQ0FDbEMsS0FBOEIsRUFDOUIsSUFBaUI7UUFFakIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztRQUN2QixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBRXBCLE1BQU0sVUFBVSxHQUFHO1lBQ2YsSUFBSTtZQUNKLEVBQUU7WUFDRixJQUFJLEVBQUUsSUFBSTtTQUNiLENBQUM7UUFFRixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTSxRQUFRLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMseUJBQXlCLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxFQUFVO1FBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxFQUFVO1FBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxlQUFlO1FBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQzsrR0E3RlEsd0JBQXdCO21HQUF4Qix3QkFBd0IsK2VDaERyQyxpOU9BdUtBO2dCRG5JUSxVQUFVO2dCQUNWLG9CQUFvQixnT0FDcEIsWUFBWTtnQkFFWixhQUFhO2dCQUNiLHVCQUF1QixxTkFDdkIsbUJBQW1CO2dCQUVuQixRQUFRO2dCQUNSLGlCQUFpQjs7NEZBR1osd0JBQXdCO2tCQWxCcEMsU0FBUzsrQkFDSSxvQkFBb0IsY0FHbEIsSUFBSSxXQUNQO3dCQUNMLFVBQVU7d0JBQ1Ysb0JBQW9CO3dCQUNwQixZQUFZO3dCQUVaLGFBQWE7d0JBQ2IsdUJBQXVCO3dCQUN2QixtQkFBbUI7d0JBRW5CLFFBQVE7d0JBQ1IsaUJBQWlCO3FCQUNwQjt3REFHWSxTQUFTO3NCQUFyQixLQUFLO2dCQUtPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBS08sU0FBUztzQkFBckIsS0FBSztnQkFLTyxRQUFRO3NCQUFwQixLQUFLO2dCQUtPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSUcsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdJLFFBQVE7c0JBQWpCLE1BQU07Z0JBR0csVUFBVTtzQkFBbkIsTUFBTTtnQkFHRyxjQUFjO3NCQUF2QixNQUFNO2dCQUVHLHFCQUFxQjtzQkFBOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgeyBDYURyb3Bkb3duTWVudUNvbXBvbmVudCB9IGZyb20gJy4uL2NhLWRyb3Bkb3duLW1lbnUvY2EtZHJvcGRvd24tbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FTaG93TW9yZUNvbXBvbmVudCB9IGZyb20gJy4uL2NhLXNob3ctbW9yZS9jYS1zaG93LW1vcmUuY29tcG9uZW50JztcblxuLy8gbW9kZWxzXG5pbXBvcnQgeyBDYXJkRGV0YWlscyB9IGZyb20gJy4uLy4uL21vZGVscy9jYXJkLW1vZGVscy9jYXJkLXRhYmxlLWRhdGEubW9kZWwnO1xuXG4vLyBpbnRlcmZhY2VzXG5pbXBvcnQgeyBJRHJvcGRvd25NZW51T3B0aW9uRW1pdCB9IGZyb20gJy4uL2NhLWRyb3Bkb3duLW1lbnUvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUYWJsZUNhcmRCb2R5QWN0aW9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG4vLyBtb2R1bGVzXG5pbXBvcnQgeyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuXG4vLyBzdmctcm91dGVzXG5pbXBvcnQgeyBUYWJsZUNhcmRWaWV3U3ZnUm91dGVzIH0gZnJvbSAnLi91dGlscy9zdmctcm91dGVzJztcblxuLy8gaGVscGVyc1xuaW1wb3J0IHsgVGFibGVDYXJkVmlld0hlbHBlciB9IGZyb20gJy4vdXRpbHMvaGVscGVycy90YWJsZS1jYXJkLXZpZXctaGVscGVyJztcblxuLy8gcGlwZXNcbmltcG9ydCB7IElzQ2FyZEZsaXBwZWRQaXBlIH0gZnJvbSAnLi9waXBlcy9pcy1jYXJkLWZsaXBwZWQucGlwZSc7XG5cbi8vIGVudW1zXG5pbXBvcnQgeyBlVGFibGVDYXJkVHlwZXMgfSBmcm9tICcuL2VudW1zJztcbmltcG9ydCB7IGVQb3NpdGlvbiB9IGZyb20gJy4uLy4uL2VudW1zJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjYS10YWJsZS1jYXJkLXZpZXcnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYS10YWJsZS1jYXJkLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9jYS10YWJsZS1jYXJkLXZpZXcuY29tcG9uZW50LnNjc3MnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICAvLyBtb2R1bGVzXG4gICAgICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgICAgICBDb21tb25Nb2R1bGUsXG5cbiAgICAgICAgLy8gY29tcG9uZW50c1xuICAgICAgICBDYURyb3Bkb3duTWVudUNvbXBvbmVudCxcbiAgICAgICAgQ2FTaG93TW9yZUNvbXBvbmVudCxcblxuICAgICAgICAvLyBwaXBlc1xuICAgICAgICBJc0NhcmRGbGlwcGVkUGlwZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDYVRhYmxlQ2FyZFZpZXdDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIHNldCBmcm9udFNpZGUodmFsdWU6IGFueSkge1xuICAgICAgICAvL1RoaXMgaXMgV0lQIHdpbGwgYmUgY2hhbmdlZCBsYXRlci4uLlxuICAgICAgICB0aGlzLl9mcm9udFNpZGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgYmFja1NpZGUodmFsdWU6IGFueSkge1xuICAgICAgICAvL1RoaXMgaXMgV0lQIHdpbGwgYmUgY2hhbmdlZCBsYXRlci4uLlxuICAgICAgICB0aGlzLl9iYWNrU2lkZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCB0aXRsZUljb24odmFsdWU6IGFueSkge1xuICAgICAgICAvL1RoaXMgaXMgV0lQIHdpbGwgYmUgY2hhbmdlZCBsYXRlci4uLlxuICAgICAgICB0aGlzLl90aXRsZUljb24gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgdmlld0RhdGEodmFsdWU6IGFueVtdKSB7XG4gICAgICAgIC8vVGhpcyBpcyBXSVAgd2lsbCBiZSBjaGFuZ2VkIGxhdGVyLi4uXG4gICAgICAgIHRoaXMuX3ZpZXdEYXRhID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGNhcmRUaXRsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2NhcmRUaXRsZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHRvdGFsRGF0YUNvdW50ITogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGNhcmRzRmxpcFR5cGUhOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaXNEcm9wZG93bk1lbnVIaWRkZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBpc1NlbGVjdEhpZGRlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gc2hvdyBtb3JlXG4gICAgQE91dHB1dCgpIHNob3dNb3JlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvLyBzZWxlY3RcbiAgICBAT3V0cHV0KCkgc2VsZWN0Q2FyZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8vIHRpdGxlIGNsaWNrXG4gICAgQE91dHB1dCgpIGNhcmRUaXRsZUNsaWNrOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgQE91dHB1dCgpIGRyb3Bkb3duT3B0aW9uRW1pdHRlcjogRXZlbnRFbWl0dGVyPFxuICAgICAgICBUYWJsZUNhcmRCb2R5QWN0aW9uczxDYXJkRGV0YWlscz5cbiAgICA+ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZUNhcmRCb2R5QWN0aW9uczxDYXJkRGV0YWlscz4+KCk7XG5cbiAgICBwdWJsaWMgX2NhcmRUaXRsZSE6IHN0cmluZztcbiAgICBwdWJsaWMgX3ZpZXdEYXRhITogYW55W107IC8vVGhpcyBpcyBXSVAgd2lsbCBiZSBjaGFuZ2VkIGxhdGVyLi4uXG4gICAgcHVibGljIF9mcm9udFNpZGU6IGFueTsgLy9UaGlzIGlzIFdJUCB3aWxsIGJlIGNoYW5nZWQgbGF0ZXIuLi5cbiAgICBwdWJsaWMgX2JhY2tTaWRlOiBhbnk7IC8vVGhpcyBpcyBXSVAgd2lsbCBiZSBjaGFuZ2VkIGxhdGVyLi4uXG5cbiAgICAvLyBmbGlwIGNhcmRzXG4gICAgcHVibGljIGlzQ2FyZEZsaXBwZWRDaGVja0luQ2FyZHM6IG51bWJlcltdID0gW107XG5cbiAgICAvLyBzdmctcm91dGVzXG4gICAgcHVibGljIHRhYmxlQ2FyZFZpZXdTdmdSb3V0ZXMgPSBUYWJsZUNhcmRWaWV3U3ZnUm91dGVzO1xuXG4gICAgLy8gZW51bXNcbiAgICBwdWJsaWMgdGFibGVDYXJkVHlwZXMgPSBlVGFibGVDYXJkVHlwZXM7XG4gICAgcHVibGljIGVQb3NpdGlvbiA9IGVQb3NpdGlvbjtcblxuICAgIC8vIGljb24gdGVtcGxhdGVcbiAgICBwdWJsaWMgX3RpdGxlSWNvbjogYW55OyAvL1RoaXMgaXMgV0lQIHdpbGwgYmUgY2hhbmdlZCBsYXRlci4uLlxuICAgIFxuICAgIGNvbnN0cnVjdG9yKCkge31cblxuICAgIHB1YmxpYyBoYW5kbGVUb2dnbGVEcm9wZG93bk1lbnVBY3Rpb25zKFxuICAgICAgICBldmVudDogSURyb3Bkb3duTWVudU9wdGlvbkVtaXQsXG4gICAgICAgIGNhcmQ6IENhcmREZXRhaWxzXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IHsgdHlwZSB9ID0gZXZlbnQ7XG4gICAgICAgIGNvbnN0IHsgaWQgfSA9IGNhcmQ7XG5cbiAgICAgICAgY29uc3QgZW1pdEFjdGlvbiA9IHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIGRhdGE6IGNhcmQsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5kcm9wZG93bk9wdGlvbkVtaXR0ZXIuZW1pdChlbWl0QWN0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmxpcENhcmQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmlzQ2FyZEZsaXBwZWRDaGVja0luQ2FyZHMgPSBUYWJsZUNhcmRWaWV3SGVscGVyLmZsaXBDYXJkKGluZGV4KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGVja2JveFNlbGVjdChpZDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0Q2FyZC5lbWl0KGlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FyZFRpdGxlQ2xpY2tlZChpZDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FyZFRpdGxlQ2xpY2suZW1pdChpZCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2hvd01vcmVDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93TW9yZS5lbWl0KCk7XG4gICAgfVxufVxuIiwiQGxldCBkaXNwbGF5ZWREYXRhQ291bnQgPSBfdmlld0RhdGEubGVuZ3RoO1xuXG48ZGl2IGNsYXNzPVwiY2FyZHMtY29udGFpbmVyIGQtZ3JpZCBnYXAtMSBtYXJnaW4tci0xNVwiPlxuICAgIEBmb3IgKGNhcmQgb2YgX3ZpZXdEYXRhOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tY2FyZCBici0zIGJnLXdoaXRlXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkLWJvZHkgbS0xIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1ncmF5IGJhY2tncm91bmQtaG92ZXItZ3JheSc6IGNhcmQuaXNTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtaG92ZXItYncyJzogIWNhcmQuaXNTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8IS0tIExlZnQgc2lkZSBvZiB0aGUgY2FyZCAtLT5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHktbGVmdCBwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBIZWFkIG9mIHRoZSBjYXJkIC0tPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZC1oZWFkZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0LWhpZGRlbl09XCJpc1NlbGVjdEhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1ob2xkZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ2hlY2tib3ggLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja2JveC10b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCIjNDI0MjQyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncm90YXRlLXN2Zyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDYXJkRmxpcHBlZENoZWNrSW5DYXJkcz8uaW5jbHVkZXMoaSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3ZnLXBvc2l0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNDYXJkRmxpcHBlZENoZWNrSW5DYXJkcz8uaW5jbHVkZXMoaSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1zdmctZmlsbC1jb2xvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDYXJkRmxpcHBlZENoZWNrSW5DYXJkcz8uaW5jbHVkZXMoaSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnIzNiNzNlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGNhLWNoZWNrYm94IGRvZXNuJ3Qgd29yayBhcyBleHBlY3RlZCwgbGVhdmUgdGhpcyBpbnB1dCBmb3Igbm93IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFpc1NlbGVjdEhpZGRlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jaGVja2JveCBkLW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjaGVja2JveHt7IGkgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNhcmQuaXNTZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoZWNrYm94U2VsZWN0KGNhcmQuaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNoZWNrYm94LWxhYmVsIGQtZmxleCBiZy1saWdodC1ncmF5LTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImNoZWNrYm94e3sgaSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmFtZSBkLWZsZXggZ2FwLTEgdGl0bGUgdGV4dC1ibGFjayB0YS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoX3RpdGxlSWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aXRsZUljb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyBkYXRhOiBjYXJkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYy1wb2ludGVyIHRleHQtaG92ZXItYmx1ZS0xNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjYXJkVGl0bGVDbGlja2VkKGNhcmQuaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNhcmRbX2NhcmRUaXRsZV0gPz8gJy8nIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBDYXJkIGJvZHkgZnJvbnQtLT5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5LWNvbnRlbnQgZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXNDYXJkRmxpcHBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXNDYXJkRmxpcHBlZENoZWNrSW5DYXJkcykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZHNGbGlwVHlwZSA9PT0gdGFibGVDYXJkVHlwZXMuQkFDS1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYmFja1NpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX2Zyb250U2lkZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyBkYXRhOiBjYXJkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0gUmlnaHQgc2lkZSBvZiBjYXJkIC0tPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keS1yaWdodCBkLWZsZXggZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvcC1zaWRlIGQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEcm9wZG93biBNZW51LS0+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWlzRHJvcGRvd25NZW51SGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNhLWRyb3Bkb3duLW1lbnVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiJ2RvdHMtbWVudS10eXBlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZW1lbnRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlUG9zaXRpb24uVEFCTEVfQ0FSRFNfRFJPUERPV05fTUVOVVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJjYXJkLnRhYmxlRHJvcGRvd25Db250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyb3Bkb3duT3B0aW9uRW1pdHRlcik9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVRvZ2dsZURyb3Bkb3duTWVudUFjdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jYS1kcm9wZG93bi1tZW51PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE5vdGUgZWxlbWVudCAtLT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibm90ZS1jb250YWluZXIgcmlnaHQtc2lkZS1zdmcgYnItMiBwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEV4cGFuZCBlbGVtZW50IC0tPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3R0b20tc2lkZSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZsaXBDYXJkKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV4cGFuZC1jYXJkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpblRvb2x0aXA9XCJGbGlwIENhcmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb3RhdGUtc3ZnJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0NhcmRGbGlwcGVkQ2hlY2tJbkNhcmRzPy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkc0ZsaXBUeXBlID09PSB0YWJsZUNhcmRUeXBlcy5CQUNLLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N2Zy1wb3NpdGlvbic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzQ2FyZEZsaXBwZWRDaGVja0luQ2FyZHM/LmluY2x1ZGVzKGkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZUNhcmRWaWV3U3ZnUm91dGVzLmZsaXBBcnJvd1JvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9kaXY+XG5AaWYgKGRpc3BsYXllZERhdGFDb3VudCkge1xuICAgIDxhcHAtY2Etc2hvdy1tb3JlXG4gICAgICAgIFtkaXNwbGF5ZWREYXRhQ291bnRdPVwiZGlzcGxheWVkRGF0YUNvdW50XCJcbiAgICAgICAgW3RvdGFsRGF0YUNvdW50XT1cInRvdGFsRGF0YUNvdW50XCJcbiAgICAgICAgKG9uU2hvd01vcmUpPVwib25TaG93TW9yZUNsaWNrKClcIlxuICAgID48L2FwcC1jYS1zaG93LW1vcmU+XG59XG4iXX0=