ngx-histaff-alpha 4.2.8 → 4.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (18) hide show
  1. package/esm2022/lib/app/libraries/core-date-picker/core-date-picker/core-date-picker.component.mjs +3 -3
  2. package/esm2022/lib/app/libraries/core-month-selector/core-month-selector/core-month-selector.component.mjs +3 -3
  3. package/esm2022/lib/app/libraries/core-root-menu-item-picker/core-root-menu-item-picker.component.mjs +29 -12
  4. package/esm2022/lib/app/libraries/core-root-menu-item-picker/core-root-menu-item-picker.service.mjs +14 -0
  5. package/esm2022/lib/app/libraries/core-root-menu-item-picker/module-item/module-item.component.mjs +16 -3
  6. package/esm2022/lib/app/libraries/core-salary-policy-picker/core-salary-policy-picker.component.mjs +52 -0
  7. package/esm2022/lib/app/libraries/core-year-selector/core-year-selector.component.mjs +28 -4
  8. package/esm2022/lib/app/libraries/navigator/navigator/menu-item-svg-edit/menu-item-svg-edit.component.mjs +2 -2
  9. package/esm2022/public-api.mjs +3 -1
  10. package/fesm2022/ngx-histaff-alpha.mjs +133 -22
  11. package/fesm2022/ngx-histaff-alpha.mjs.map +1 -1
  12. package/lib/app/libraries/core-root-menu-item-picker/core-root-menu-item-picker.component.d.ts +5 -1
  13. package/lib/app/libraries/core-root-menu-item-picker/core-root-menu-item-picker.service.d.ts +6 -0
  14. package/lib/app/libraries/core-root-menu-item-picker/module-item/module-item.component.d.ts +4 -1
  15. package/lib/app/libraries/core-salary-policy-picker/core-salary-policy-picker.component.d.ts +24 -0
  16. package/lib/app/libraries/core-year-selector/core-year-selector.component.d.ts +2 -0
  17. package/package.json +1 -1
  18. package/public-api.d.ts +2 -0
@@ -395,7 +395,7 @@ export class CoreDatePickerComponent extends CoreFormControlBaseComponent {
395
395
  multi: true,
396
396
  useExisting: CoreDatePickerComponent
397
397
  }
398
- ], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "backward", first: true, predicate: ["backward"], descendants: true }, { propertyName: "calendarBody", first: true, predicate: ["calendarBody"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"core-date-picker-container\">\r\n <input type=\"checkbox\" [(ngModel)]=\"openState\">\r\n <input type=\"checkbox\" [(ngModel)]=\"monthPickerActive\">\r\n <input type=\"checkbox\" [(ngModel)]=\"yearPickerActive\">\r\n <input #backward type=\"checkbox\" class=\"tl-datepicker-direction\">\r\n <input #input type=\"text\" class=\"form-control\" [placeholder]=\"showPlaceholder ? 'dd/mm/yyyy' : ''\"\r\n maxlength=\"10\" [(ngModel)]=\"textValue\" [class.form-control-disabled]=\"disabled\" [disabled]=\"disabled\"><label class=\"icon\" (click)=\"toggleOpen()\"></label>\r\n <div class=\"tl-date-picker-popup\" [class.open]=\"openState\" [ngStyle]=\"{\r\n left: (!popupAlign || popupAlign === 'left') ? '0px' : 'auto',\r\n right: (popupAlign === 'right') ? '0px' : 'auto',\r\n }\">\r\n <div class=\"date-picker-session\" [class.d-none]=\"monthPickerActive || yearPickerActive\">\r\n <div class=\"navigator\">\r\n <label class=\"month-dropdown\" (click)=\"toggleMonthPickerActive()\">{{ currentMonthText }} {{\r\n currentMonthObject$.value.year }}</label>\r\n <div class=\"arrows\">\r\n <div class=\"go-up\" (click)=\"goBackward()\"></div>\r\n <div class=\"go-down\" (click)=\"goForeward()\"></div>\r\n </div>\r\n </div>\r\n <div class=\"weekday-header\">\r\n <ul>\r\n @for (day of headerWeekdays; track $index) {\r\n <li [class.t7]=\"$index===5\" [class.cn]=\"$index===6\">\r\n <div>{{ day }}</div>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n <div class=\"calendar-body-container\">\r\n <div #calendarBody class=\"calendar-body\" [class.slide-up]=\"direction===1\"\r\n [class.slide-down]=\"direction===-1\">\r\n @for (week of data; track week) {\r\n <ul>\r\n @for (item of week.items; track $index) {\r\n <li [appTooltip]=\"item.dateValue.toLocaleDateString()\" [showAnyway]=\"isDevMode\">\r\n <div [class.out-of-month]=\"!!!item.currentMonth\" [class.t7]=\"$index===5\" [class.cn]=\"$index===6\"\r\n [class.out-of-range]=\"!!rangeLimit && !!!((item.dateValue>=rangeLimit.minDate) && (rangeLimit.maxDate>=item.dateValue))\"\r\n [class.active]=\"item.dateValue.getFullYear()===pendingYear && item.dateValue.getMonth()===pendingMonthIndex && item.dateValue.getDate()===pendingDay\"\r\n (click)=\"onItemClick(item.dateValue)\">\r\n {{ item.date }}</div>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"month-picker-session\" [class.active]=\"monthPickerActive\">\r\n <core-month-picker [lang]=\"lang\" [monthObject$]=\"currentMonthObject$\" (onChange)=\"onMonthObjectChange($event)\" (onYearClick)=\"onMonthPickerYearClick($event)\"></core-month-picker>\r\n </div>\r\n <div class=\"year-picker-session\" [class.active]=\"yearPickerActive\">\r\n <core-year-picker [lang]=\"lang\" (onChange)=\"onYearPicked($event)\"></core-year-picker>\r\n </div>\r\n <div class=\"footer-wrapper\">\r\n <div class=\"cdp-footer\">\r\n <div class=\"clear\" [class.opacity-0]=\"!!!textValue\" (click)=\"clear()\">{{ 'UI.CORE_DATE_PICKER_CLEAR' | translate: lang }}</div>\r\n <div class=\"digi-watch\"></div>\r\n <div class=\"today\" (click)=\"goToday()\">{{ 'UI.CORE_DATE_PICKER_TODAY' | translate: lang }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".core-date-picker-container{--indicator-height: 39px;--popup-z-index: 99999999;--popup-width: 300px;--popup-height: 400px;--popup-bg-color: white;--popup-x-padding: 12px;--cell-size: 0px;--arrow-font-size: 28px;--font-size: 13px;--font-bold: 700;--font-light: 400;--hover-bg-color: #358ccb;--active-bg-color: cadetblue;--scroll-distance: calc(var(--cell-size) * 6);position:relative;font-weight:var(--font-light);font-size:var(--font-size)}.core-date-picker-container input[type=checkbox]{display:none}.core-date-picker-container label.icon{position:absolute;top:3px;right:3px}.core-date-picker-container label.icon:before{content:\"\";display:inline-block;aspect-ratio:1/1;width:var(--indicator-height);height:var(--indicator-height);border-radius:3px;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iMzkiIHZpZXdCb3g9IjAgMCAzOSAzOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjM5IiBoZWlnaHQ9IjM5IiBmaWxsPSIjRjVGNUY1Ii8+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8wXzEpIj4KPHJlY3Qgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTM5NyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEyNjggLTg0MikiIGZpbGw9IiNGMUYxRjEiLz4KPHJlY3QgeD0iLTEyNjgiIHk9Ii04NDIiIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEzOTciIGZpbGw9ImJsYWNrIiBmaWxsLW9wYWNpdHk9IjAuMyIvPgo8cmVjdCB4PSItNjgyIiB5PSItNjU4IiB3aWR0aD0iNzUwIiBoZWlnaHQ9Ijk5OSIgcng9IjEwIiBmaWxsPSJ3aGl0ZSIvPgo8cmVjdCB4PSItMjkwLjUiIHk9Ii0yLjUiIHdpZHRoPSIzMzIiIGhlaWdodD0iNDQiIHJ4PSI0LjUiIGZpbGw9IndoaXRlIiBzdHJva2U9IiNEMUQxRDEiLz4KPHJlY3Qgd2lkdGg9IjM5IiBoZWlnaHQ9IjM5IiByeD0iMyIgZmlsbD0iI0U5RTlFOSIvPgo8cGF0aCBkPSJNMjYuOTAwMSAxMS4wOTkxSDEyLjE5OTdDMTEuMDM5OCAxMS4wOTkxIDEwLjA5OTYgMTIuMDM5MyAxMC4wOTk2IDEzLjE5OTJWMjcuODk5NkMxMC4wOTk2IDI5LjA1OTQgMTEuMDM5OCAyOS45OTk2IDEyLjE5OTcgMjkuOTk5NkgyNi45MDAxQzI4LjA1OTkgMjkuOTk5NiAyOS4wMDAxIDI5LjA1OTQgMjkuMDAwMSAyNy44OTk2VjEzLjE5OTJDMjkuMDAwMSAxMi4wMzkzIDI4LjA1OTkgMTEuMDk5MSAyNi45MDAxIDExLjA5OTFaIiBzdHJva2U9IiM4NDg0ODQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0yMy43NTA1IDguOTk5NTFWMTMuMTk5NiIgc3Ryb2tlPSIjODQ4NDg0IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTUuMzQ5NiA4Ljk5OTUxVjEzLjE5OTYiIHN0cm9rZT0iIzg0ODQ4NCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEwLjA5OTYgMTcuMzk5NEgyOS4wMDAxIiBzdHJva2U9IiM4NDg0ODQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMF8xIj4KPHJlY3Qgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTM5NyIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMjY4IC04NDIpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==) 0px 50% no-repeat;background-size:cover;cursor:pointer}.core-date-picker-container .tl-date-picker-popup{position:absolute;overflow:hidden;z-index:var(--popup-z-index);width:var(--popup-width);height:var(--popup-height);background-color:var(--popup-bg-color);box-shadow:var(--decoration-box-shadow);border-radius:3px;padding:0 12px;display:none}.core-date-picker-container .tl-date-picker-popup.open{display:block}.core-date-picker-container .month-picker-session,.core-date-picker-container .year-picker-session{display:none}.core-date-picker-container .month-picker-session.active,.core-date-picker-container .year-picker-session.active{display:block}.core-date-picker-container .date-picker-session.d-none{display:none}.core-date-picker-container .navigator{width:100%;display:flex;align-items:center;justify-content:space-between}.core-date-picker-container .month-dropdown{font-weight:var(--font-bold);cursor:pointer}.core-date-picker-container .arrows{display:flex;align-items:center;justify-content:flex-end}.core-date-picker-container .arrows>div{margin:0 2px}.core-date-picker-container .arrows>div:before{font-family:feather;font-size:var(--arrow-font-size);cursor:pointer}.core-date-picker-container .arrows>div:hover:before{background-color:var(--hover-bg-color)}.core-date-picker-container .go-up:before{content:\"\\e914\"}.core-date-picker-container .go-down:before{content:\"\\e90c\"}.core-date-picker-container ul{padding:0;margin:0}.core-date-picker-container ul{height:calc((var(--popup-width) - var(--popup-x-padding) * 2) / 7)}.core-date-picker-container ul>li{user-select:none;-webkit-user-select:none;position:relative;display:inline-block!important;width:var(--cell-size);height:var(--cell-size);cursor:pointer}.core-date-picker-container .calendar-body-container{width:100%;height:calc((var(--popup-width) - var(--popup-x-padding) * 2) / 7 * 6);position:absolute;z-index:1;background-color:var(--popup-bg-color);overflow:hidden}.core-date-picker-container .calendar-body>ul>li>div:hover{background-color:var(--hover-bg-color)}.core-date-picker-container .calendar-body>ul>li>div.active{background-color:var(--active-bg-color)}.core-date-picker-container .calendar-body>ul>li>div.out-of-month{color:#d3d3d3}.core-date-picker-container .calendar-body>ul>li>div.out-of-range{-webkit-user-select:none;user-select:none;cursor:default;opacity:.2!important}.core-date-picker-container .calendar-body>ul>li>div.out-of-range:hover{background-color:var(--popup-bg-color)}.core-date-picker-container ul>li>div{width:100%;height:calc((var(--popup-width) - var(--popup-x-padding) * 2) / 7);display:flex;align-items:center;justify-content:center;border-radius:5px}.core-date-picker-container .t7{color:#07b7ee}.core-date-picker-container .cn{color:#ef2b58}.core-date-picker-container .weekday-header{font-weight:var(--font-bold)}.core-date-picker-container .calendar-body{position:absolute;bottom:0}.core-date-picker-container .tl-datepicker-direction:checked~.tl-date-picker-popup>.calendar-body-container>.calendar-body{top:0}.core-date-picker-container .slide-up{animation:slide-up .25s linear}.core-date-picker-container .slide-down{transform:translateY(var(--scroll-distance));animation:slide-down .25s linear}.core-date-picker-container .footer-wrapper{width:calc(var(--popup-width) - var(--popup-x-padding) * 2);position:absolute;bottom:var(--popup-x-padding);left:var(--popup-x-padding);background-color:var(--popup-bg-color)!important}.core-date-picker-container .cdp-footer{width:100%;display:flex;align-items:center;justify-content:space-between}.core-date-picker-container .today,.core-date-picker-container .clear{width:30%;height:var(--cell-size);border-radius:calc(var(--cell-size) / 2);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center}.core-date-picker-container .today{background-color:#f37540}.core-date-picker-container .clear{background-color:brown}@keyframes slide-down{0%{top:calc(var(--scroll-distance) * -1)}to{top:0}}@keyframes slide-up{0%{top:0}to{top:calc(var(--scroll-distance) * -1)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CoreYearPickerComponent, selector: "core-year-picker", inputs: ["id", "default"], outputs: ["onChange"] }, { kind: "component", type: CoreMonthPickerComponent, selector: "core-month-picker", inputs: ["id", "lang", "monthObject$"], outputs: ["onChange", "onYearClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }] }); }
398
+ ], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "backward", first: true, predicate: ["backward"], descendants: true }, { propertyName: "calendarBody", first: true, predicate: ["calendarBody"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"core-date-picker-container\">\r\n <input type=\"checkbox\" [(ngModel)]=\"openState\">\r\n <input type=\"checkbox\" [(ngModel)]=\"monthPickerActive\">\r\n <input type=\"checkbox\" [(ngModel)]=\"yearPickerActive\">\r\n <input #backward type=\"checkbox\" class=\"tl-datepicker-direction\">\r\n <input #input type=\"text\" class=\"form-control\" [placeholder]=\"showPlaceholder ? 'dd/mm/yyyy' : ''\"\r\n maxlength=\"10\" [(ngModel)]=\"textValue\" [class.form-control-disabled]=\"disabled\" [disabled]=\"disabled\"><label class=\"icon\" (click)=\"toggleOpen()\"></label>\r\n <div class=\"tl-date-picker-popup\" [class.open]=\"openState\" [ngStyle]=\"{\r\n left: (!popupAlign || popupAlign === 'left') ? '0px' : 'auto',\r\n right: (popupAlign === 'right') ? '0px' : 'auto',\r\n }\">\r\n <div class=\"date-picker-session\" [class.d-none]=\"monthPickerActive || yearPickerActive\">\r\n <div class=\"navigator\">\r\n <label class=\"month-dropdown\" (click)=\"toggleMonthPickerActive()\">{{ currentMonthText }} {{\r\n currentMonthObject$.value.year }}</label>\r\n <div class=\"arrows\">\r\n <div class=\"go-up\" (click)=\"goBackward()\"></div>\r\n <div class=\"go-down\" (click)=\"goForeward()\"></div>\r\n </div>\r\n </div>\r\n <div class=\"weekday-header\">\r\n <ul>\r\n @for (day of headerWeekdays; track $index) {\r\n <li [class.t7]=\"$index===5\" [class.cn]=\"$index===6\">\r\n <div>{{ day }}</div>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n <div class=\"calendar-body-container\">\r\n <div #calendarBody class=\"calendar-body\" [class.slide-up]=\"direction===1\"\r\n [class.slide-down]=\"direction===-1\">\r\n @for (week of data; track week) {\r\n <ul>\r\n @for (item of week.items; track $index) {\r\n <li [appTooltip]=\"item.dateValue.toLocaleDateString()\" [showAnyway]=\"isDevMode\">\r\n <div [class.out-of-month]=\"!!!item.currentMonth\" [class.t7]=\"$index===5\" [class.cn]=\"$index===6\"\r\n [class.out-of-range]=\"!!rangeLimit && !!!((item.dateValue>=rangeLimit.minDate) && (rangeLimit.maxDate>=item.dateValue))\"\r\n [class.active]=\"item.dateValue.getFullYear()===pendingYear && item.dateValue.getMonth()===pendingMonthIndex && item.dateValue.getDate()===pendingDay\"\r\n (click)=\"onItemClick(item.dateValue)\">\r\n {{ item.date }}</div>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"month-picker-session\" [class.active]=\"monthPickerActive\">\r\n <core-month-picker [lang]=\"lang\" [monthObject$]=\"currentMonthObject$\" (onChange)=\"onMonthObjectChange($event)\" (onYearClick)=\"onMonthPickerYearClick($event)\"></core-month-picker>\r\n </div>\r\n <div class=\"year-picker-session\" [class.active]=\"yearPickerActive\">\r\n <core-year-picker [lang]=\"lang\" (onChange)=\"onYearPicked($event)\"></core-year-picker>\r\n </div>\r\n <div class=\"footer-wrapper\">\r\n <div class=\"cdp-footer\">\r\n <div class=\"clear\" [class.opacity-0]=\"!!!textValue\" (click)=\"clear()\">{{ 'UI.CORE_DATE_PICKER_CLEAR' | translate: lang }}</div>\r\n <div class=\"digi-watch\"></div>\r\n <div class=\"today\" (click)=\"goToday()\">{{ 'UI.CORE_DATE_PICKER_TODAY' | translate: lang }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".core-date-picker-container{--indicator-height: 39px;--popup-z-index: 99999999;--popup-width: 300px;--popup-height: 400px;--popup-bg-color: white;--popup-x-padding: 12px;--cell-size: 0px;--arrow-font-size: 28px;--font-size: 13px;--font-bold: 700;--font-light: 400;--hover-bg-color: #358ccb;--active-bg-color: cadetblue;--scroll-distance: calc(var(--cell-size) * 6);position:relative;font-weight:var(--font-light);font-size:var(--font-size)}.core-date-picker-container input[type=checkbox]{display:none}.core-date-picker-container label.icon{position:absolute;top:3px;right:3px}.core-date-picker-container label.icon:before{content:\"\";display:inline-block;aspect-ratio:1/1;width:var(--indicator-height);height:var(--indicator-height);border-radius:3px;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iMzkiIHZpZXdCb3g9IjAgMCAzOSAzOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjM5IiBoZWlnaHQ9IjM5IiBmaWxsPSIjRjVGNUY1Ii8+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8wXzEpIj4KPHJlY3Qgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTM5NyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEyNjggLTg0MikiIGZpbGw9IiNGMUYxRjEiLz4KPHJlY3QgeD0iLTEyNjgiIHk9Ii04NDIiIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEzOTciIGZpbGw9ImJsYWNrIiBmaWxsLW9wYWNpdHk9IjAuMyIvPgo8cmVjdCB4PSItNjgyIiB5PSItNjU4IiB3aWR0aD0iNzUwIiBoZWlnaHQ9Ijk5OSIgcng9IjEwIiBmaWxsPSJ3aGl0ZSIvPgo8cmVjdCB4PSItMjkwLjUiIHk9Ii0yLjUiIHdpZHRoPSIzMzIiIGhlaWdodD0iNDQiIHJ4PSI0LjUiIGZpbGw9IndoaXRlIiBzdHJva2U9IiNEMUQxRDEiLz4KPHJlY3Qgd2lkdGg9IjM5IiBoZWlnaHQ9IjM5IiByeD0iMyIgZmlsbD0iI0U5RTlFOSIvPgo8cGF0aCBkPSJNMjYuOTAwMSAxMS4wOTkxSDEyLjE5OTdDMTEuMDM5OCAxMS4wOTkxIDEwLjA5OTYgMTIuMDM5MyAxMC4wOTk2IDEzLjE5OTJWMjcuODk5NkMxMC4wOTk2IDI5LjA1OTQgMTEuMDM5OCAyOS45OTk2IDEyLjE5OTcgMjkuOTk5NkgyNi45MDAxQzI4LjA1OTkgMjkuOTk5NiAyOS4wMDAxIDI5LjA1OTQgMjkuMDAwMSAyNy44OTk2VjEzLjE5OTJDMjkuMDAwMSAxMi4wMzkzIDI4LjA1OTkgMTEuMDk5MSAyNi45MDAxIDExLjA5OTFaIiBzdHJva2U9IiM4NDg0ODQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0yMy43NTA1IDguOTk5NTFWMTMuMTk5NiIgc3Ryb2tlPSIjODQ4NDg0IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTUuMzQ5NiA4Ljk5OTUxVjEzLjE5OTYiIHN0cm9rZT0iIzg0ODQ4NCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEwLjA5OTYgMTcuMzk5NEgyOS4wMDAxIiBzdHJva2U9IiM4NDg0ODQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMF8xIj4KPHJlY3Qgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTM5NyIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMjY4IC04NDIpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==) 0px 50% no-repeat;background-size:cover;cursor:pointer}.core-date-picker-container .tl-date-picker-popup{position:absolute;overflow:hidden;z-index:var(--popup-z-index);width:var(--popup-width);height:var(--popup-height);background-color:var(--popup-bg-color);box-shadow:var(--decoration-box-shadow);border-radius:3px;padding:0 12px;display:none}.core-date-picker-container .tl-date-picker-popup.open{display:block}.core-date-picker-container .month-picker-session,.core-date-picker-container .year-picker-session{display:none}.core-date-picker-container .month-picker-session.active,.core-date-picker-container .year-picker-session.active{display:block}.core-date-picker-container .date-picker-session.d-none{display:none}.core-date-picker-container .navigator{width:100%;display:flex;align-items:center;justify-content:space-between}.core-date-picker-container .month-dropdown{font-weight:var(--font-bold);cursor:pointer}.core-date-picker-container .arrows{display:flex;align-items:center;justify-content:flex-end}.core-date-picker-container .arrows>div{margin:0 2px}.core-date-picker-container .arrows>div:before{font-family:feather;font-size:var(--arrow-font-size);cursor:pointer}.core-date-picker-container .arrows>div:hover:before{background-color:var(--hover-bg-color)}.core-date-picker-container .go-up:before{content:\"\\e914\"}.core-date-picker-container .go-down:before{content:\"\\e90c\"}.core-date-picker-container ul{padding:0;margin:0}.core-date-picker-container ul{height:calc((var(--popup-width) - var(--popup-x-padding) * 2) / 7)}.core-date-picker-container ul>li{user-select:none;-webkit-user-select:none;position:relative;display:inline-block!important;width:var(--cell-size);height:var(--cell-size);cursor:pointer}.core-date-picker-container .calendar-body-container{width:100%;height:calc((var(--popup-width) - var(--popup-x-padding) * 2) / 7 * 6);position:absolute;z-index:1;background-color:var(--popup-bg-color);overflow:hidden}.core-date-picker-container .calendar-body>ul>li>div:hover{background-color:var(--hover-bg-color)}.core-date-picker-container .calendar-body>ul>li>div.active{background-color:var(--active-bg-color)}.core-date-picker-container .calendar-body>ul>li>div.out-of-month{color:#d3d3d3}.core-date-picker-container .calendar-body>ul>li>div.out-of-range{-webkit-user-select:none;user-select:none;cursor:default;opacity:.2!important}.core-date-picker-container .calendar-body>ul>li>div.out-of-range:hover{background-color:var(--popup-bg-color)}.core-date-picker-container ul>li>div{width:100%;height:calc((var(--popup-width) - var(--popup-x-padding) * 2) / 7);display:flex;align-items:center;justify-content:center;border-radius:5px}.core-date-picker-container .t7{color:#07b7ee}.core-date-picker-container .cn{color:#ef2b58}.core-date-picker-container .weekday-header{font-weight:var(--font-bold)}.core-date-picker-container .calendar-body{position:absolute;bottom:0}.core-date-picker-container .tl-datepicker-direction:checked~.tl-date-picker-popup>.calendar-body-container>.calendar-body{top:0}.core-date-picker-container .slide-up{animation:slide-up .25s linear}.core-date-picker-container .slide-down{transform:translateY(var(--scroll-distance));animation:slide-down .25s linear}.core-date-picker-container .footer-wrapper{width:calc(var(--popup-width) - var(--popup-x-padding) * 2);position:absolute;bottom:var(--popup-x-padding);left:var(--popup-x-padding);background-color:var(--popup-bg-color)!important}.core-date-picker-container .cdp-footer{width:100%;display:flex;align-items:center;justify-content:space-between}.core-date-picker-container .today,.core-date-picker-container .clear{width:30%;height:var(--cell-size);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center}.core-date-picker-container .today{background-color:#f37540}.core-date-picker-container .clear{background-color:brown}@keyframes slide-down{0%{top:calc(var(--scroll-distance) * -1)}to{top:0}}@keyframes slide-up{0%{top:0}to{top:calc(var(--scroll-distance) * -1)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CoreYearPickerComponent, selector: "core-year-picker", inputs: ["id", "default"], outputs: ["onChange"] }, { kind: "component", type: CoreMonthPickerComponent, selector: "core-month-picker", inputs: ["id", "lang", "monthObject$"], outputs: ["onChange", "onYearClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }] }); }
399
399
  }
400
400
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreDatePickerComponent, decorators: [{
401
401
  type: Component,
@@ -412,7 +412,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
412
412
  multi: true,
413
413
  useExisting: CoreDatePickerComponent
414
414
  }
415
- ], template: "<div #container class=\"core-date-picker-container\">\r\n <input type=\"checkbox\" [(ngModel)]=\"openState\">\r\n <input type=\"checkbox\" [(ngModel)]=\"monthPickerActive\">\r\n <input type=\"checkbox\" [(ngModel)]=\"yearPickerActive\">\r\n <input #backward type=\"checkbox\" class=\"tl-datepicker-direction\">\r\n <input #input type=\"text\" class=\"form-control\" [placeholder]=\"showPlaceholder ? 'dd/mm/yyyy' : ''\"\r\n maxlength=\"10\" [(ngModel)]=\"textValue\" [class.form-control-disabled]=\"disabled\" [disabled]=\"disabled\"><label class=\"icon\" (click)=\"toggleOpen()\"></label>\r\n <div class=\"tl-date-picker-popup\" [class.open]=\"openState\" [ngStyle]=\"{\r\n left: (!popupAlign || popupAlign === 'left') ? '0px' : 'auto',\r\n right: (popupAlign === 'right') ? '0px' : 'auto',\r\n }\">\r\n <div class=\"date-picker-session\" [class.d-none]=\"monthPickerActive || yearPickerActive\">\r\n <div class=\"navigator\">\r\n <label class=\"month-dropdown\" (click)=\"toggleMonthPickerActive()\">{{ currentMonthText }} {{\r\n currentMonthObject$.value.year }}</label>\r\n <div class=\"arrows\">\r\n <div class=\"go-up\" (click)=\"goBackward()\"></div>\r\n <div class=\"go-down\" (click)=\"goForeward()\"></div>\r\n </div>\r\n </div>\r\n <div class=\"weekday-header\">\r\n <ul>\r\n @for (day of headerWeekdays; track $index) {\r\n <li [class.t7]=\"$index===5\" [class.cn]=\"$index===6\">\r\n <div>{{ day }}</div>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n <div class=\"calendar-body-container\">\r\n <div #calendarBody class=\"calendar-body\" [class.slide-up]=\"direction===1\"\r\n [class.slide-down]=\"direction===-1\">\r\n @for (week of data; track week) {\r\n <ul>\r\n @for (item of week.items; track $index) {\r\n <li [appTooltip]=\"item.dateValue.toLocaleDateString()\" [showAnyway]=\"isDevMode\">\r\n <div [class.out-of-month]=\"!!!item.currentMonth\" [class.t7]=\"$index===5\" [class.cn]=\"$index===6\"\r\n [class.out-of-range]=\"!!rangeLimit && !!!((item.dateValue>=rangeLimit.minDate) && (rangeLimit.maxDate>=item.dateValue))\"\r\n [class.active]=\"item.dateValue.getFullYear()===pendingYear && item.dateValue.getMonth()===pendingMonthIndex && item.dateValue.getDate()===pendingDay\"\r\n (click)=\"onItemClick(item.dateValue)\">\r\n {{ item.date }}</div>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"month-picker-session\" [class.active]=\"monthPickerActive\">\r\n <core-month-picker [lang]=\"lang\" [monthObject$]=\"currentMonthObject$\" (onChange)=\"onMonthObjectChange($event)\" (onYearClick)=\"onMonthPickerYearClick($event)\"></core-month-picker>\r\n </div>\r\n <div class=\"year-picker-session\" [class.active]=\"yearPickerActive\">\r\n <core-year-picker [lang]=\"lang\" (onChange)=\"onYearPicked($event)\"></core-year-picker>\r\n </div>\r\n <div class=\"footer-wrapper\">\r\n <div class=\"cdp-footer\">\r\n <div class=\"clear\" [class.opacity-0]=\"!!!textValue\" (click)=\"clear()\">{{ 'UI.CORE_DATE_PICKER_CLEAR' | translate: lang }}</div>\r\n <div class=\"digi-watch\"></div>\r\n <div class=\"today\" (click)=\"goToday()\">{{ 'UI.CORE_DATE_PICKER_TODAY' | translate: lang }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".core-date-picker-container{--indicator-height: 39px;--popup-z-index: 99999999;--popup-width: 300px;--popup-height: 400px;--popup-bg-color: white;--popup-x-padding: 12px;--cell-size: 0px;--arrow-font-size: 28px;--font-size: 13px;--font-bold: 700;--font-light: 400;--hover-bg-color: #358ccb;--active-bg-color: cadetblue;--scroll-distance: calc(var(--cell-size) * 6);position:relative;font-weight:var(--font-light);font-size:var(--font-size)}.core-date-picker-container input[type=checkbox]{display:none}.core-date-picker-container label.icon{position:absolute;top:3px;right:3px}.core-date-picker-container label.icon:before{content:\"\";display:inline-block;aspect-ratio:1/1;width:var(--indicator-height);height:var(--indicator-height);border-radius:3px;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iMzkiIHZpZXdCb3g9IjAgMCAzOSAzOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjM5IiBoZWlnaHQ9IjM5IiBmaWxsPSIjRjVGNUY1Ii8+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8wXzEpIj4KPHJlY3Qgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTM5NyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEyNjggLTg0MikiIGZpbGw9IiNGMUYxRjEiLz4KPHJlY3QgeD0iLTEyNjgiIHk9Ii04NDIiIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEzOTciIGZpbGw9ImJsYWNrIiBmaWxsLW9wYWNpdHk9IjAuMyIvPgo8cmVjdCB4PSItNjgyIiB5PSItNjU4IiB3aWR0aD0iNzUwIiBoZWlnaHQ9Ijk5OSIgcng9IjEwIiBmaWxsPSJ3aGl0ZSIvPgo8cmVjdCB4PSItMjkwLjUiIHk9Ii0yLjUiIHdpZHRoPSIzMzIiIGhlaWdodD0iNDQiIHJ4PSI0LjUiIGZpbGw9IndoaXRlIiBzdHJva2U9IiNEMUQxRDEiLz4KPHJlY3Qgd2lkdGg9IjM5IiBoZWlnaHQ9IjM5IiByeD0iMyIgZmlsbD0iI0U5RTlFOSIvPgo8cGF0aCBkPSJNMjYuOTAwMSAxMS4wOTkxSDEyLjE5OTdDMTEuMDM5OCAxMS4wOTkxIDEwLjA5OTYgMTIuMDM5MyAxMC4wOTk2IDEzLjE5OTJWMjcuODk5NkMxMC4wOTk2IDI5LjA1OTQgMTEuMDM5OCAyOS45OTk2IDEyLjE5OTcgMjkuOTk5NkgyNi45MDAxQzI4LjA1OTkgMjkuOTk5NiAyOS4wMDAxIDI5LjA1OTQgMjkuMDAwMSAyNy44OTk2VjEzLjE5OTJDMjkuMDAwMSAxMi4wMzkzIDI4LjA1OTkgMTEuMDk5MSAyNi45MDAxIDExLjA5OTFaIiBzdHJva2U9IiM4NDg0ODQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0yMy43NTA1IDguOTk5NTFWMTMuMTk5NiIgc3Ryb2tlPSIjODQ4NDg0IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTUuMzQ5NiA4Ljk5OTUxVjEzLjE5OTYiIHN0cm9rZT0iIzg0ODQ4NCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEwLjA5OTYgMTcuMzk5NEgyOS4wMDAxIiBzdHJva2U9IiM4NDg0ODQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMF8xIj4KPHJlY3Qgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTM5NyIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMjY4IC04NDIpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==) 0px 50% no-repeat;background-size:cover;cursor:pointer}.core-date-picker-container .tl-date-picker-popup{position:absolute;overflow:hidden;z-index:var(--popup-z-index);width:var(--popup-width);height:var(--popup-height);background-color:var(--popup-bg-color);box-shadow:var(--decoration-box-shadow);border-radius:3px;padding:0 12px;display:none}.core-date-picker-container .tl-date-picker-popup.open{display:block}.core-date-picker-container .month-picker-session,.core-date-picker-container .year-picker-session{display:none}.core-date-picker-container .month-picker-session.active,.core-date-picker-container .year-picker-session.active{display:block}.core-date-picker-container .date-picker-session.d-none{display:none}.core-date-picker-container .navigator{width:100%;display:flex;align-items:center;justify-content:space-between}.core-date-picker-container .month-dropdown{font-weight:var(--font-bold);cursor:pointer}.core-date-picker-container .arrows{display:flex;align-items:center;justify-content:flex-end}.core-date-picker-container .arrows>div{margin:0 2px}.core-date-picker-container .arrows>div:before{font-family:feather;font-size:var(--arrow-font-size);cursor:pointer}.core-date-picker-container .arrows>div:hover:before{background-color:var(--hover-bg-color)}.core-date-picker-container .go-up:before{content:\"\\e914\"}.core-date-picker-container .go-down:before{content:\"\\e90c\"}.core-date-picker-container ul{padding:0;margin:0}.core-date-picker-container ul{height:calc((var(--popup-width) - var(--popup-x-padding) * 2) / 7)}.core-date-picker-container ul>li{user-select:none;-webkit-user-select:none;position:relative;display:inline-block!important;width:var(--cell-size);height:var(--cell-size);cursor:pointer}.core-date-picker-container .calendar-body-container{width:100%;height:calc((var(--popup-width) - var(--popup-x-padding) * 2) / 7 * 6);position:absolute;z-index:1;background-color:var(--popup-bg-color);overflow:hidden}.core-date-picker-container .calendar-body>ul>li>div:hover{background-color:var(--hover-bg-color)}.core-date-picker-container .calendar-body>ul>li>div.active{background-color:var(--active-bg-color)}.core-date-picker-container .calendar-body>ul>li>div.out-of-month{color:#d3d3d3}.core-date-picker-container .calendar-body>ul>li>div.out-of-range{-webkit-user-select:none;user-select:none;cursor:default;opacity:.2!important}.core-date-picker-container .calendar-body>ul>li>div.out-of-range:hover{background-color:var(--popup-bg-color)}.core-date-picker-container ul>li>div{width:100%;height:calc((var(--popup-width) - var(--popup-x-padding) * 2) / 7);display:flex;align-items:center;justify-content:center;border-radius:5px}.core-date-picker-container .t7{color:#07b7ee}.core-date-picker-container .cn{color:#ef2b58}.core-date-picker-container .weekday-header{font-weight:var(--font-bold)}.core-date-picker-container .calendar-body{position:absolute;bottom:0}.core-date-picker-container .tl-datepicker-direction:checked~.tl-date-picker-popup>.calendar-body-container>.calendar-body{top:0}.core-date-picker-container .slide-up{animation:slide-up .25s linear}.core-date-picker-container .slide-down{transform:translateY(var(--scroll-distance));animation:slide-down .25s linear}.core-date-picker-container .footer-wrapper{width:calc(var(--popup-width) - var(--popup-x-padding) * 2);position:absolute;bottom:var(--popup-x-padding);left:var(--popup-x-padding);background-color:var(--popup-bg-color)!important}.core-date-picker-container .cdp-footer{width:100%;display:flex;align-items:center;justify-content:space-between}.core-date-picker-container .today,.core-date-picker-container .clear{width:30%;height:var(--cell-size);border-radius:calc(var(--cell-size) / 2);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center}.core-date-picker-container .today{background-color:#f37540}.core-date-picker-container .clear{background-color:brown}@keyframes slide-down{0%{top:calc(var(--scroll-distance) * -1)}to{top:0}}@keyframes slide-up{0%{top:0}to{top:calc(var(--scroll-distance) * -1)}}\n"] }]
415
+ ], template: "<div #container class=\"core-date-picker-container\">\r\n <input type=\"checkbox\" [(ngModel)]=\"openState\">\r\n <input type=\"checkbox\" [(ngModel)]=\"monthPickerActive\">\r\n <input type=\"checkbox\" [(ngModel)]=\"yearPickerActive\">\r\n <input #backward type=\"checkbox\" class=\"tl-datepicker-direction\">\r\n <input #input type=\"text\" class=\"form-control\" [placeholder]=\"showPlaceholder ? 'dd/mm/yyyy' : ''\"\r\n maxlength=\"10\" [(ngModel)]=\"textValue\" [class.form-control-disabled]=\"disabled\" [disabled]=\"disabled\"><label class=\"icon\" (click)=\"toggleOpen()\"></label>\r\n <div class=\"tl-date-picker-popup\" [class.open]=\"openState\" [ngStyle]=\"{\r\n left: (!popupAlign || popupAlign === 'left') ? '0px' : 'auto',\r\n right: (popupAlign === 'right') ? '0px' : 'auto',\r\n }\">\r\n <div class=\"date-picker-session\" [class.d-none]=\"monthPickerActive || yearPickerActive\">\r\n <div class=\"navigator\">\r\n <label class=\"month-dropdown\" (click)=\"toggleMonthPickerActive()\">{{ currentMonthText }} {{\r\n currentMonthObject$.value.year }}</label>\r\n <div class=\"arrows\">\r\n <div class=\"go-up\" (click)=\"goBackward()\"></div>\r\n <div class=\"go-down\" (click)=\"goForeward()\"></div>\r\n </div>\r\n </div>\r\n <div class=\"weekday-header\">\r\n <ul>\r\n @for (day of headerWeekdays; track $index) {\r\n <li [class.t7]=\"$index===5\" [class.cn]=\"$index===6\">\r\n <div>{{ day }}</div>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n <div class=\"calendar-body-container\">\r\n <div #calendarBody class=\"calendar-body\" [class.slide-up]=\"direction===1\"\r\n [class.slide-down]=\"direction===-1\">\r\n @for (week of data; track week) {\r\n <ul>\r\n @for (item of week.items; track $index) {\r\n <li [appTooltip]=\"item.dateValue.toLocaleDateString()\" [showAnyway]=\"isDevMode\">\r\n <div [class.out-of-month]=\"!!!item.currentMonth\" [class.t7]=\"$index===5\" [class.cn]=\"$index===6\"\r\n [class.out-of-range]=\"!!rangeLimit && !!!((item.dateValue>=rangeLimit.minDate) && (rangeLimit.maxDate>=item.dateValue))\"\r\n [class.active]=\"item.dateValue.getFullYear()===pendingYear && item.dateValue.getMonth()===pendingMonthIndex && item.dateValue.getDate()===pendingDay\"\r\n (click)=\"onItemClick(item.dateValue)\">\r\n {{ item.date }}</div>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"month-picker-session\" [class.active]=\"monthPickerActive\">\r\n <core-month-picker [lang]=\"lang\" [monthObject$]=\"currentMonthObject$\" (onChange)=\"onMonthObjectChange($event)\" (onYearClick)=\"onMonthPickerYearClick($event)\"></core-month-picker>\r\n </div>\r\n <div class=\"year-picker-session\" [class.active]=\"yearPickerActive\">\r\n <core-year-picker [lang]=\"lang\" (onChange)=\"onYearPicked($event)\"></core-year-picker>\r\n </div>\r\n <div class=\"footer-wrapper\">\r\n <div class=\"cdp-footer\">\r\n <div class=\"clear\" [class.opacity-0]=\"!!!textValue\" (click)=\"clear()\">{{ 'UI.CORE_DATE_PICKER_CLEAR' | translate: lang }}</div>\r\n <div class=\"digi-watch\"></div>\r\n <div class=\"today\" (click)=\"goToday()\">{{ 'UI.CORE_DATE_PICKER_TODAY' | translate: lang }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".core-date-picker-container{--indicator-height: 39px;--popup-z-index: 99999999;--popup-width: 300px;--popup-height: 400px;--popup-bg-color: white;--popup-x-padding: 12px;--cell-size: 0px;--arrow-font-size: 28px;--font-size: 13px;--font-bold: 700;--font-light: 400;--hover-bg-color: #358ccb;--active-bg-color: cadetblue;--scroll-distance: calc(var(--cell-size) * 6);position:relative;font-weight:var(--font-light);font-size:var(--font-size)}.core-date-picker-container input[type=checkbox]{display:none}.core-date-picker-container label.icon{position:absolute;top:3px;right:3px}.core-date-picker-container label.icon:before{content:\"\";display:inline-block;aspect-ratio:1/1;width:var(--indicator-height);height:var(--indicator-height);border-radius:3px;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iMzkiIHZpZXdCb3g9IjAgMCAzOSAzOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjM5IiBoZWlnaHQ9IjM5IiBmaWxsPSIjRjVGNUY1Ii8+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8wXzEpIj4KPHJlY3Qgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTM5NyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEyNjggLTg0MikiIGZpbGw9IiNGMUYxRjEiLz4KPHJlY3QgeD0iLTEyNjgiIHk9Ii04NDIiIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEzOTciIGZpbGw9ImJsYWNrIiBmaWxsLW9wYWNpdHk9IjAuMyIvPgo8cmVjdCB4PSItNjgyIiB5PSItNjU4IiB3aWR0aD0iNzUwIiBoZWlnaHQ9Ijk5OSIgcng9IjEwIiBmaWxsPSJ3aGl0ZSIvPgo8cmVjdCB4PSItMjkwLjUiIHk9Ii0yLjUiIHdpZHRoPSIzMzIiIGhlaWdodD0iNDQiIHJ4PSI0LjUiIGZpbGw9IndoaXRlIiBzdHJva2U9IiNEMUQxRDEiLz4KPHJlY3Qgd2lkdGg9IjM5IiBoZWlnaHQ9IjM5IiByeD0iMyIgZmlsbD0iI0U5RTlFOSIvPgo8cGF0aCBkPSJNMjYuOTAwMSAxMS4wOTkxSDEyLjE5OTdDMTEuMDM5OCAxMS4wOTkxIDEwLjA5OTYgMTIuMDM5MyAxMC4wOTk2IDEzLjE5OTJWMjcuODk5NkMxMC4wOTk2IDI5LjA1OTQgMTEuMDM5OCAyOS45OTk2IDEyLjE5OTcgMjkuOTk5NkgyNi45MDAxQzI4LjA1OTkgMjkuOTk5NiAyOS4wMDAxIDI5LjA1OTQgMjkuMDAwMSAyNy44OTk2VjEzLjE5OTJDMjkuMDAwMSAxMi4wMzkzIDI4LjA1OTkgMTEuMDk5MSAyNi45MDAxIDExLjA5OTFaIiBzdHJva2U9IiM4NDg0ODQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0yMy43NTA1IDguOTk5NTFWMTMuMTk5NiIgc3Ryb2tlPSIjODQ4NDg0IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTUuMzQ5NiA4Ljk5OTUxVjEzLjE5OTYiIHN0cm9rZT0iIzg0ODQ4NCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEwLjA5OTYgMTcuMzk5NEgyOS4wMDAxIiBzdHJva2U9IiM4NDg0ODQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMF8xIj4KPHJlY3Qgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTM5NyIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMjY4IC04NDIpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==) 0px 50% no-repeat;background-size:cover;cursor:pointer}.core-date-picker-container .tl-date-picker-popup{position:absolute;overflow:hidden;z-index:var(--popup-z-index);width:var(--popup-width);height:var(--popup-height);background-color:var(--popup-bg-color);box-shadow:var(--decoration-box-shadow);border-radius:3px;padding:0 12px;display:none}.core-date-picker-container .tl-date-picker-popup.open{display:block}.core-date-picker-container .month-picker-session,.core-date-picker-container .year-picker-session{display:none}.core-date-picker-container .month-picker-session.active,.core-date-picker-container .year-picker-session.active{display:block}.core-date-picker-container .date-picker-session.d-none{display:none}.core-date-picker-container .navigator{width:100%;display:flex;align-items:center;justify-content:space-between}.core-date-picker-container .month-dropdown{font-weight:var(--font-bold);cursor:pointer}.core-date-picker-container .arrows{display:flex;align-items:center;justify-content:flex-end}.core-date-picker-container .arrows>div{margin:0 2px}.core-date-picker-container .arrows>div:before{font-family:feather;font-size:var(--arrow-font-size);cursor:pointer}.core-date-picker-container .arrows>div:hover:before{background-color:var(--hover-bg-color)}.core-date-picker-container .go-up:before{content:\"\\e914\"}.core-date-picker-container .go-down:before{content:\"\\e90c\"}.core-date-picker-container ul{padding:0;margin:0}.core-date-picker-container ul{height:calc((var(--popup-width) - var(--popup-x-padding) * 2) / 7)}.core-date-picker-container ul>li{user-select:none;-webkit-user-select:none;position:relative;display:inline-block!important;width:var(--cell-size);height:var(--cell-size);cursor:pointer}.core-date-picker-container .calendar-body-container{width:100%;height:calc((var(--popup-width) - var(--popup-x-padding) * 2) / 7 * 6);position:absolute;z-index:1;background-color:var(--popup-bg-color);overflow:hidden}.core-date-picker-container .calendar-body>ul>li>div:hover{background-color:var(--hover-bg-color)}.core-date-picker-container .calendar-body>ul>li>div.active{background-color:var(--active-bg-color)}.core-date-picker-container .calendar-body>ul>li>div.out-of-month{color:#d3d3d3}.core-date-picker-container .calendar-body>ul>li>div.out-of-range{-webkit-user-select:none;user-select:none;cursor:default;opacity:.2!important}.core-date-picker-container .calendar-body>ul>li>div.out-of-range:hover{background-color:var(--popup-bg-color)}.core-date-picker-container ul>li>div{width:100%;height:calc((var(--popup-width) - var(--popup-x-padding) * 2) / 7);display:flex;align-items:center;justify-content:center;border-radius:5px}.core-date-picker-container .t7{color:#07b7ee}.core-date-picker-container .cn{color:#ef2b58}.core-date-picker-container .weekday-header{font-weight:var(--font-bold)}.core-date-picker-container .calendar-body{position:absolute;bottom:0}.core-date-picker-container .tl-datepicker-direction:checked~.tl-date-picker-popup>.calendar-body-container>.calendar-body{top:0}.core-date-picker-container .slide-up{animation:slide-up .25s linear}.core-date-picker-container .slide-down{transform:translateY(var(--scroll-distance));animation:slide-down .25s linear}.core-date-picker-container .footer-wrapper{width:calc(var(--popup-width) - var(--popup-x-padding) * 2);position:absolute;bottom:var(--popup-x-padding);left:var(--popup-x-padding);background-color:var(--popup-bg-color)!important}.core-date-picker-container .cdp-footer{width:100%;display:flex;align-items:center;justify-content:space-between}.core-date-picker-container .today,.core-date-picker-container .clear{width:30%;height:var(--cell-size);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center}.core-date-picker-container .today{background-color:#f37540}.core-date-picker-container .clear{background-color:brown}@keyframes slide-down{0%{top:calc(var(--scroll-distance) * -1)}to{top:0}}@keyframes slide-up{0%{top:0}to{top:calc(var(--scroll-distance) * -1)}}\n"] }]
416
416
  }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i1.DomService }, { type: i2.CoreDatetimeService }, { type: i3.MultiLanguageService }, { type: i4.AlertService }], propDecorators: { enableTimeZoneConverter: [{
417
417
  type: Input
418
418
  }], showPlaceholder: [{
@@ -442,4 +442,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
442
442
  type: ViewChild,
443
443
  args: ['calendarBody']
444
444
  }] } });
445
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1kYXRlLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1kYXRlLXBpY2tlci9jb3JlLWRhdGUtcGlja2VyL2NvcmUtZGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtZGF0ZS1waWNrZXIvY29yZS1kYXRlLXBpY2tlci9jb3JlLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWdELFNBQVMsRUFBRSxLQUFLLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hJLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUE0QixvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFHN0csT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQztBQUVqSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7QUE2Qm5FOzs7Ozs7Ozs7O0VBVUU7QUFDRixNQUFNLE9BQU8sdUJBQXdCLFNBQVEsNEJBQTRC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U0FBUzt1QkFBQyxVQUFVO2dCQUNNLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgSW5wdXQsIFJlbmRlcmVyMiwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRG9tU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RvbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtZm9ybS1jb250cm9sLWJhc2UvY29yZS1mb3JtLWNvbnRyb2wtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlRGF0ZXRpbWVTZXJ2aWNlLCBJRGF0YVJvdywgSU1vbnRoSWRlbnRpdHkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb3JlLWRhdGV0aW1lLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb3JlWWVhclBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUteWVhci1waWNrZXIvY29yZS15ZWFyLXBpY2tlci9jb3JlLXllYXItcGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9hcHAtcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBDb3JlTW9udGhQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLW1vbnRoLXBpY2tlci9jb3JlLW1vbnRoLXBpY2tlci9jb3JlLW1vbnRoLXBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVEYXRlUGlja2VyUmFuZ2Uge1xyXG4gIG1pbkRhdGU6IERhdGU7XHJcbiAgbWF4RGF0ZTogRGF0ZTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLWRhdGUtcGlja2VyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29yZVllYXJQaWNrZXJDb21wb25lbnQsXHJcbiAgICBDb3JlTW9udGhQaWNrZXJDb21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgVG9vbHRpcERpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtZGF0ZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB1c2VFeGlzdGluZzogQ29yZURhdGVQaWNrZXJDb21wb25lbnRcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbi8qXHJcbiAgdGhpcyBjb21wb25lbnQgcmVuZGVycyBpdHMgbWFpbiBwYXJ0IGFuZCBwb3B1cCBwYXJ0XHJcbiAgdGhlIG1haW4gcGFydCBkZWFscyB3aXRoIHVzZXIgaW5wdXQgZnJvbSBwaHlzaWNhbCBrZXlib2FyZCBvciB0b3VjaCBrZXlib2FyZFxyXG4gIHRoZSBwb3B1cCBwYXJ0IGNvbnNpc3RzIG9mIDEpIG5hdmlnYXRvciAyKSBoZWFkZXIgMykgY2FsZW5kYXIgYm9keSBjb250YWluZXIgNCkgY2FsZW5kYXIgYm9keVxyXG4gIHRoZSBtb3N0IGltcG9ydGFudCBwYXJ0IG9mIHRoZW0gaXM6XHJcbiAgICA0KSBjYWxlbmRhciBib2R5OlxyXG4gICAgICBkdWUgdmFyaWF0aW9ucyB0aGUgY2FsZW5kYXIgYm9keSBtYXkgcmVhY2ggdG8gNiByb3dzIG9mIHdlZWsgZGF5IHN1Yi1hcnJheVxyXG4gICAgLSBmb3IgdmlzdWFsLCBsb2dpYyBhbmQgY29kaW5nIHNpbXBsaWNpdHkgSSB3aWxsIGFsd2F5cyByZW5kZXIgYWxsIHRoZSA2IHJvd3NcclxuICAgIHNvIGNhbGVuZGFyIGJvZHkgZGltZW5zaW9uIHN0YXlzIHVuY2hhbmdlZFxyXG4gIFxyXG4qL1xyXG5leHBvcnQgY2xhc3MgQ29yZURhdGVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBASW5wdXQoKSBlbmFibGVUaW1lWm9uZUNvbnZlcnRlciE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2hvd1BsYWNlaG9sZGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcG9wdXBXaWR0aDogbnVtYmVyID0gMzAwO1xyXG4gIEBJbnB1dCgpIHBvcHVwWFBhZGRpbmc6IG51bWJlciA9IDEyO1xyXG4gIEBJbnB1dCgpIHBvcHVwQWxpZ24hOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcmFuZ2VMaW1pdCE6IElDb3JlRGF0ZVBpY2tlclJhbmdlO1xyXG4gIEBJbnB1dCgpIG92ZXJyaWRlIHJlYWRvbmx5ITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBvdmVycmlkZSBkaXNhYmxlZCE6IGJvb2xlYW47XHJcblxyXG5cclxuICBsaXN0ZW5lckZuITogKCkgPT4gdm9pZDtcclxuXHJcbiAgbGFuZyE6IHN0cmluZztcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIG9wZW5TdGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG1vbnRoUGlja2VyQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgeWVhclBpY2tlckFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjZWxsU2l6ZTogbnVtYmVyID0gKHRoaXMucG9wdXBXaWR0aCAtIHRoaXMucG9wdXBYUGFkZGluZyAqIDIpIC8gNztcclxuXHJcbiAgb3ZlcnJpZGUgdmFsdWUhOiBEYXRlIHwgbnVsbDtcclxuICBwZW5kaW5nWWVhciE6IG51bWJlcjtcclxuICBwZW5kaW5nTW9udGhJbmRleCE6IG51bWJlcjtcclxuICBwZW5kaW5nRGF5OiBudW1iZXIgPSB0aGlzLnZhbHVlPy5nZXREYXRlKCkhO1xyXG5cclxuICBjdXJyZW50TW9udGhPYmplY3QkITogQmVoYXZpb3JTdWJqZWN0PElNb250aElkZW50aXR5PjtcclxuICBuZXdEYXRlITogRGF0ZTtcclxuXHJcbiAgY3VycmVudE1vbnRoVGV4dCE6IHN0cmluZztcclxuICBjdXJyZW50SG91cnMhOiBudW1iZXI7XHJcbiAgY3VycmVudE1pbnV0ZXMhOiBudW1iZXI7XHJcbiAgY3VycmVudFNlY29uZHMhOiBudW1iZXI7XHJcbiAgY3VycmVudE1pbGxpc2Vjb25kcyE6IG51bWJlcjtcclxuXHJcbiAgZGF0YSE6IElEYXRhUm93W107XHJcbiAgaGVhZGVyV2Vla2RheXMhOiBzdHJpbmdbXTtcclxuICBkaXJlY3Rpb246IG51bWJlciA9IDE7IC8vIHN0YXJ0dXAgZGlyZWN0aW9uIDEgfCAtMVxyXG5cclxuICB0ZXh0VmFsdWU6IHN0cmluZyA9ICcnO1xyXG5cclxuICBpc0Rldk1vZGUgPSBpc0Rldk1vZGUoKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0ITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdiYWNrd2FyZCcpIGJhY2t3YXJkITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdjYWxlbmRhckJvZHknKSBjYWxlbmRhckJvZHkhOiBFbGVtZW50UmVmO1xyXG5cclxuICBpbnB1dFN0cmVhbSQhOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgbGFzdFRleHQhOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb21TZXJ2aWNlOiBEb21TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3JlRGF0ZXRpbWVTZXJ2aWNlOiBDb3JlRGF0ZXRpbWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMubmV3RGF0ZSA9ICEhdGhpcy5yYW5nZUxpbWl0ID8gdGhpcy5yYW5nZUxpbWl0Lm1pbkRhdGUgOiBuZXcgRGF0ZSgpO1xyXG4gICAgdGhpcy5jdXJyZW50TW9udGhPYmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJTW9udGhJZGVudGl0eT4oe1xyXG4gICAgICB5ZWFyOiB0aGlzLnZhbHVlPy5nZXRGdWxsWWVhcigpIHx8IHRoaXMubmV3RGF0ZS5nZXRGdWxsWWVhcigpLFxyXG4gICAgICBtb250aEluZGV4OiB0aGlzLnZhbHVlPy5nZXRNb250aCgpIHx8IHRoaXMubmV3RGF0ZS5nZXRNb250aCgpXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoISF0aGlzLmRpc2FibGVkKSB0aGlzLnJlYWRvbmx5ID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAoISEhdGhpcy52YWx1ZSkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5uZXdEYXRlO1xyXG4gICAgICB0aGlzLmxhc3RUZXh0ID0gdGhpcy5jb3JlRGF0ZXRpbWVTZXJ2aWNlLmRhdGVUb1ZuU3RyaW5nKHRoaXMudmFsdWUpXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wZW5kaW5nWWVhciA9IHRoaXMudmFsdWUuZ2V0RnVsbFllYXIoKTtcclxuICAgIHRoaXMucGVuZGluZ01vbnRoSW5kZXggPSB0aGlzLnZhbHVlLmdldE1vbnRoKCk7XHJcbiAgICB0aGlzLnBlbmRpbmdEYXkgPSB0aGlzLnZhbHVlLmdldERhdGUoKTtcclxuICAgIHRoaXMuY3VycmVudEhvdXJzID0gdGhpcy52YWx1ZS5nZXRIb3VycygpO1xyXG4gICAgdGhpcy5jdXJyZW50TWludXRlcyA9IHRoaXMudmFsdWUuZ2V0TWludXRlcygpO1xyXG4gICAgdGhpcy5jdXJyZW50U2Vjb25kcyA9IHRoaXMudmFsdWUuZ2V0U2Vjb25kcygpO1xyXG4gICAgdGhpcy5jdXJyZW50TWlsbGlzZWNvbmRzID0gdGhpcy52YWx1ZS5nZXRNaWxsaXNlY29uZHMoKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKHggPT4gdGhpcy5sYW5nID0geClcclxuICAgIClcclxuXHJcbiAgICAvKlxyXG4gICAgaWYgKCEhIXRoaXMuaWQpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihgXHJcbiAgICAgIHdpdGhpbiBhIHBhZ2UsIHRhbmxlaWNhLWRhdGUtcGlja2VyIG5lZWRzIGFuIHVuaXF1ZSBwcm9wZXJ0eSBpZCB2YWx1ZSB0byB3b3JrIGNvcnJlY3RseVxyXG4gICAgICBmb3IgZXhhbXBsZTogPHRhbmxlaWNhLWRhdGUtcGlja2VyIGlkPVwic3RhcnREYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RhcnREYXRlXCI+PC90YW5sZWljYS1kYXRlLXBpY2tlcj5cclxuICAgICAgYClcclxuICAgIH1cclxuICAgICovXHJcbiAgICB0aGlzLmhlYWRlcldlZWtkYXlzID0gdGhpcy5jb3JlRGF0ZXRpbWVTZXJ2aWNlLmdldFNob3J0V2Vla2RheXModGhpcy5sYW5nKTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICB0cmlnZ2VyIGFuaW1hdGlvbiBieSByZWZsb3cgdGhlIERPTVxyXG4gICovXHJcbiAgdHJpZ2dlclJlZmxvdygpIHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5jYWxlbmRhckJvZHkubmF0aXZlRWxlbWVudDtcclxuICAgIC8vRE9NIG1hbmlwdWxhdGlvblxyXG4gICAgaWYgKHRoaXMuZGlyZWN0aW9uID09PSAxKSB7XHJcbiAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoXCJzbGlkZS11cFwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoXCJzbGlkZS1kb3duXCIpO1xyXG4gICAgfVxyXG4gICAgZWwub2Zmc2V0SGVpZ2h0OyAgLyogdHJpZ2dlciByZWZsb3cgKGFsdGVybmF0aXZlOiBlbC5vZmZzZXRXaWR0aCkgKi9cclxuICAgIGlmICh0aGlzLmRpcmVjdGlvbiA9PT0gMSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IGVsLmNsYXNzTGlzdC5hZGQoXCJzbGlkZS11cFwiKSwgMCk7IC8vIHBhc3MgdGhlIGNhbGxiYWNrIHRvIENhbGxiYWNrIHF1ZXVlIHRocm91Z2ggV2ViQVBJcywgc28gaXQgd2lsbCBiZSBleGVjdXRlZCBhZnRlciBET00gbWFuaXB1bGF0aW9uIGVuZHNcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWwuY2xhc3NMaXN0LmFkZChcInNsaWRlLWRvd25cIiksIDApOyAvLyBwYXNzIHRoZSBjYWxsYmFjayB0byBDYWxsYmFjayBxdWV1ZSB0aHJvdWdoIFdlYkFQSXMsIHNvIGl0IHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgRE9NIG1hbmlwdWxhdGlvbiBlbmRzXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG4gICAgLypcclxuICAgICAgVGhpcyBldmVudHMgZ2V0IGNhbGxlZCBieSBhbGwgY2xpY2tzIG9uIHRoZSBwYWdlXHJcbiAgICAqL1xyXG4gICAgdGhpcy5saXN0ZW5lckZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdjbGljaycsIChlOiBFdmVudCkgPT4ge1xyXG4gICAgICAvKlxyXG4gICAgICAgIGhhbmRsZSBjbGljayBvdXRzaWRlXHJcbiAgICAgICovXHJcbiAgICAgIGlmICh0aGlzLmNvbnRhaW5lciAmJiAhISF0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGUudGFyZ2V0KSkge1xyXG4gICAgICAgIHRoaXMub3BlblN0YXRlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgY29uc3QgbWF4WkluZGV4ID0gdGhpcy5kb21TZXJ2aWNlLmdldE1heFpJbmRleCgpO1xyXG5cclxuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCBpbnB1dEhlaWdodCA9IHJlY3QuaGVpZ2h0IHx8IDM1O1xyXG5cclxuICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taW5kaWNhdG9yLWhlaWdodCcsIChpbnB1dEhlaWdodCAtIDYpICsgJ3B4JylcclxuICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcG9wdXAtei1pbmRleCcsIG1heFpJbmRleCk7XHJcbiAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWNlbGwtc2l6ZScsIHRoaXMuY2VsbFNpemUgKyAncHgnKVxyXG5cclxuICAgIHRoaXMuY3VycmVudE1vbnRoT2JqZWN0JC5waXBlKFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXHJcbiAgICApLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoVGV4dCA9IHRoaXMuY29yZURhdGV0aW1lU2VydmljZS5nZXRNb250aFRleHQodGhpcy5sYW5nLCB2YWx1ZS5tb250aEluZGV4KTtcclxuICAgICAgICB0aGlzLmJ1aWxkQm9keSh2YWx1ZS55ZWFyLCB2YWx1ZS5tb250aEluZGV4KTtcclxuICAgICAgICB0aGlzLnRyaWdnZXJSZWZsb3coKTtcclxuICAgICAgfSwgMClcclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5pbnB1dFN0cmVhbSQgPSBmcm9tRXZlbnQodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LCAnaW5wdXQnKTtcclxuICAgIHRoaXMuaW5wdXRTdHJlYW0kLnN1YnNjcmliZShldmVudCA9PiB7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhcIkNvcmVEYXRlUGlja2VyQ29tcG9uZW50OiBldmVudC5pbnB1dFR5cGVcIiwgZXZlbnQuaW5wdXRUeXBlKVxyXG4gICAgICBjb25zdCBpc0FsbFRleHRTZWxlY3RlZCA9IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCAmJiB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kID09PSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUubGVuZ3RoO1xyXG5cclxuICAgICAgaWYgKGV2ZW50LmlucHV0VHlwZSA9PT0gJ2RlbGV0ZUNvbnRlbnRGb3J3YXJkJykge1xyXG4gICAgICAgIGlmIChpc0FsbFRleHRTZWxlY3RlZCkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0NvcmVEYXRlUGlja2VyQ29tcG9uZW50OiBBbGwgdGV4dCB3YXMgc2VsZWN0ZWQgYmVmb3JlIGRlbGV0aW9uJyk7XHJcbiAgICAgICAgICB0aGlzLnRleHRWYWx1ZSA9ICcnO1xyXG4gICAgICAgICAgdGhpcy5sYXN0VGV4dCA9ICcnO1xyXG4gICAgICAgICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnQ29yZURhdGVQaWNrZXJDb21wb25lbnQ6IFBhcnRpYWwgb3Igbm8gdGV4dCBzZWxlY3RlZCBiZWZvcmUgZGVsZXRpb24nKTtcclxuICAgICAgICAgIHRoaXMubGFzdFRleHQgPSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZXZlbnQuaW5wdXRUeXBlICE9PSAnZGVsZXRlQ29udGVudEJhY2t3YXJkJ1xyXG4gICAgICAgICYmICcjMCMxIzIjMyM0IzUjNiM3IzgjOSNCYWNrc3BhY2UjRGVsZXRlJy5pbmRleE9mKCcjJyArIGV2ZW50LmRhdGEpIDwgMCkge1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IHRoaXMubGFzdFRleHQ7XHJcbiAgICAgICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sYXN0VGV4dCA9IGV2ZW50LnRhcmdldC52YWx1ZVxyXG4gICAgICB9XHJcblxyXG4gICAgICB2YXIgdiA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgICAgaWYgKHYubWF0Y2goL15cXGR7Mn0kLykgIT09IG51bGwpIHtcclxuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSB2ICsgJy8nO1xyXG4gICAgICAgIHRoaXMudGV4dFZhbHVlID0gdiArICcvJztcclxuICAgICAgfSBlbHNlIGlmICh2Lm1hdGNoKC9eXFxkezJ9XFwvXFxkezJ9JC8pICE9PSBudWxsKSB7XHJcbiAgICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gdiArICcvJztcclxuICAgICAgICB0aGlzLnRleHRWYWx1ZSA9IHYgKyAnLyc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50ZXh0VmFsdWUgPSB2O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy50ZXh0VmFsdWUubGVuZ3RoID09PSAxMCkge1xyXG4gICAgICAgIGNvbnN0IGRpZ2l0cyA9IHRoaXMudGV4dFZhbHVlLnNwbGl0KCcvJyk7XHJcbiAgICAgICAgY29uc3QgeSA9IE51bWJlcihkaWdpdHNbMl0pO1xyXG4gICAgICAgIGNvbnN0IG0gPSBOdW1iZXIoZGlnaXRzWzFdKSAtIDE7XHJcbiAgICAgICAgY29uc3QgZCA9IE51bWJlcihkaWdpdHNbMF0pO1xyXG5cclxuICAgICAgICBpZiAoeSA8PSAwIHx8IG0gPCAwIHx8IG0gPiAxMSB8fCBkIDwgMSB8fCBkID4gMzEpIHtcclxuICAgICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgdGhpcy50ZXh0VmFsdWUgPSAnJztcclxuICAgICAgICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgY29uc3QgaHIgPSBub3cuZ2V0SG91cnMoKTtcclxuICAgICAgICBjb25zdCBtbiA9IG5vdy5nZXRNaW51dGVzKCk7XHJcbiAgICAgICAgY29uc3Qgc2QgPSBub3cuZ2V0U2Vjb25kcygpO1xyXG4gICAgICAgIGNvbnN0IG1zID0gbm93LmdldE1pbGxpc2Vjb25kcygpO1xyXG5cclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoTnVtYmVyKGRpZ2l0c1syXSksIE51bWJlcihkaWdpdHNbMV0pIC0gMSwgTnVtYmVyKGRpZ2l0c1swXSksIGhyLCBtbiwgc2QsIG1zKTtcclxuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSB0aGlzLmNvcmVEYXRldGltZVNlcnZpY2UuZGF0ZVRvVm5TdHJpbmcoZGF0ZSk7XHJcbiAgICAgICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZShkYXRlKTtcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZShpbnB1dDogRGF0ZSB8IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKFwiVVRDIGlucHV0IFwiLCBpbnB1dCk7XHJcbiAgICBsZXQgb2JqOiBhbnkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgaWYgKHR5cGVvZihpbnB1dCkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGlmIChpbnB1dCA9PT0gXCJcIikge1xyXG4gICAgICAgIG9iaiA9IG51bGw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgb2JqID0gbmV3IERhdGUobmV3IERhdGUoaW5wdXQpLnNldEhvdXJzKDAsMCwwLDApKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChpbnB1dCAhPT0gbnVsbCAmJiB0eXBlb2YoaW5wdXQuZ2V0RnVsbFllYXIpID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgb2JqID0gaW5wdXRcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJJbnZhbGlkIGRhdGUgaW5wdXRcIilcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdXBkYXRlUHJvcGVydGllcyA9ICh2YWx1ZTogRGF0ZSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkFmdGVyIGNvbnZlcnQgdG8gTG9jYWwgRGF0ZSBcIiwgdmFsdWUpO1xyXG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgIHRoaXMubGFzdFRleHQgPSB0aGlzLmNvcmVEYXRldGltZVNlcnZpY2UuZGF0ZVRvVm5TdHJpbmcodmFsdWUpXHJcbiAgICAgIHRoaXMudGV4dFZhbHVlID0gdGhpcy5jb3JlRGF0ZXRpbWVTZXJ2aWNlLmRhdGVUb1ZuU3RyaW5nKHZhbHVlKTtcclxuICAgICAgdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLm5leHQoe1xyXG4gICAgICAgIHllYXI6IHZhbHVlLmdldEZ1bGxZZWFyKCksXHJcbiAgICAgICAgbW9udGhJbmRleDogdmFsdWUuZ2V0TW9udGgoKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmN1cnJlbnRIb3VycyA9IHZhbHVlLmdldEhvdXJzKCk7XHJcbiAgICAgIHRoaXMuY3VycmVudE1pbnV0ZXMgPSB2YWx1ZS5nZXRNaW51dGVzKCk7XHJcbiAgICAgIHRoaXMuY3VycmVudFNlY29uZHMgPSB2YWx1ZS5nZXRTZWNvbmRzKCk7XHJcbiAgICAgIHRoaXMuY3VycmVudE1pbGxpc2Vjb25kcyA9IHZhbHVlLmdldE1pbGxpc2Vjb25kcygpO1xyXG5cclxuICAgICAgdGhpcy5jdXJyZW50TW9udGhUZXh0ID0gdGhpcy5jb3JlRGF0ZXRpbWVTZXJ2aWNlLmdldE1vbnRoVGV4dCh0aGlzLmxhbmcsIHRoaXMuY3VycmVudE1vbnRoT2JqZWN0JC52YWx1ZS5tb250aEluZGV4KTtcclxuICAgICAgdGhpcy5wZW5kaW5nWWVhciA9IHZhbHVlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgIHRoaXMucGVuZGluZ01vbnRoSW5kZXggPSB2YWx1ZS5nZXRNb250aCgpO1xyXG4gICAgICB0aGlzLnBlbmRpbmdEYXkgPSB2YWx1ZS5nZXREYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBsZXQgbm93ID0gbmV3IERhdGUoKTtcclxuICAgICAgaWYgKCEhdGhpcy5yYW5nZUxpbWl0KSB7XHJcbiAgICAgICAgbm93ID0gdGhpcy5yYW5nZUxpbWl0Lm1pbkRhdGU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50ZXh0VmFsdWUgPSAnJztcclxuICAgICAgdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLm5leHQoe1xyXG4gICAgICAgIHllYXI6IG5vdy5nZXRGdWxsWWVhcigpLFxyXG4gICAgICAgIG1vbnRoSW5kZXg6IG5vdy5nZXRNb250aCgpXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuY3VycmVudEhvdXJzID0gbm93LmdldEhvdXJzKCk7XHJcbiAgICAgIHRoaXMuY3VycmVudE1pbnV0ZXMgPSBub3cuZ2V0TWludXRlcygpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRTZWNvbmRzID0gbm93LmdldFNlY29uZHMoKTtcclxuICAgICAgdGhpcy5jdXJyZW50TWlsbGlzZWNvbmRzID0gbm93LmdldE1pbGxpc2Vjb25kcygpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aFRleHQgPSB0aGlzLmNvcmVEYXRldGltZVNlcnZpY2UuZ2V0TW9udGhUZXh0KHRoaXMubGFuZywgdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLnZhbHVlLm1vbnRoSW5kZXgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLyogQ29udmVydCBVVEMgZGF0ZSB0byBsb2NhbCBkYXRlICovXHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKG9iaik7XHJcbiAgICAgIGNvbnN0IG9mZnNldCA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lem9uZU9mZnNldCgpO1xyXG4gICAgICBjb25zdCBkYXRlVmFsdWUgPSBuZXcgRGF0ZShvcmlnaW5hbERhdGUuZ2V0VGltZSgpIC0gb2Zmc2V0ICogNjAwMDApO1xyXG4gICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgICAgaWYgKHR5cGVvZiBvYmohLmdldEZ1bGxZZWFyID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgdXBkYXRlUHJvcGVydGllcyhkYXRlVmFsdWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29uc3QgaXNEYXRlID0gdGhpcy5jb3JlRGF0ZXRpbWVTZXJ2aWNlLmlzRGF0ZVN0cmluZyhvYmopO1xyXG4gICAgICAgIGlmIChpc0RhdGUpIHtcclxuICAgICAgICAgIC8vY29uc3QgX29iaiA9IG5ldyBEYXRlKG9iaik7IC8vIGNvbnZlcnQgc3RyaW5nIHRvIGRhdGUgXHJcbiAgICAgICAgICB1cGRhdGVQcm9wZXJ0aWVzKGRhdGVWYWx1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJJbnZhbGlkIGRhdGUgaW5wdXQ6IFwiLCBvYmopO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkludmFsaWQgZGF0ZSBpbnB1dDogXCIsIG9iaik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSXRlbUNsaWNrKGRhdGU6IERhdGUpIHtcclxuXHJcbiAgICBpZiAodGhpcy5yZWFkb25seSkgcmV0dXJuO1xyXG5cclxuICAgIGlmICghIXRoaXMucmFuZ2VMaW1pdCkge1xyXG4gICAgICBpZiAoZGF0ZSA8IHRoaXMucmFuZ2VMaW1pdC5taW5EYXRlIHx8IGRhdGUgPiB0aGlzLnJhbmdlTGltaXQubWF4RGF0ZSkgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICBjb25zdCBoID0gbm93LmdldEhvdXJzKCk7XHJcbiAgICBjb25zdCBtID0gbm93LmdldE1pbnV0ZXMoKTtcclxuICAgIGNvbnN0IHMgPSBub3cuZ2V0U2Vjb25kcygpO1xyXG4gICAgY29uc3QgbXMgPSBub3cuZ2V0TWlsbGlzZWNvbmRzKCk7XHJcbiAgICBkYXRlLnNldEhvdXJzKGgpO1xyXG4gICAgZGF0ZS5zZXRNaW51dGVzKG0pO1xyXG4gICAgZGF0ZS5zZXRTZWNvbmRzKHMpO1xyXG4gICAgZGF0ZS5zZXRNaWxsaXNlY29uZHMobXMpO1xyXG4gICAgdGhpcy50ZXh0VmFsdWUgPSB0aGlzLmNvcmVEYXRldGltZVNlcnZpY2UuZGF0ZVRvVm5TdHJpbmcoZGF0ZSk7XHJcblxyXG4gICAgdGhpcy5wZW5kaW5nWWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIHRoaXMucGVuZGluZ01vbnRoSW5kZXggPSBkYXRlLmdldE1vbnRoKCk7XHJcbiAgICB0aGlzLnBlbmRpbmdEYXkgPSBkYXRlLmdldERhdGUoKTtcclxuXHJcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcclxuXHJcbiAgICB0aGlzLm9uQ2hhbmdlKGRhdGUpO1xyXG4gICAgdGhpcy5vcGVuU3RhdGUgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdvVG9kYXkoKSB7XHJcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZiAoISF0aGlzLnJhbmdlTGltaXQpIHtcclxuICAgICAgaWYgKHRvZGF5IDwgdGhpcy5yYW5nZUxpbWl0Lm1pbkRhdGUgfHwgdG9kYXkgPiB0aGlzLnJhbmdlTGltaXQubWF4RGF0ZSkgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50ZXh0VmFsdWUgPSB0aGlzLmNvcmVEYXRldGltZVNlcnZpY2UuZGF0ZVRvVm5TdHJpbmcodG9kYXkpO1xyXG4gICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRvZGF5KTtcclxuICAgIHRoaXMub3BlblN0YXRlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpIHtcclxuICAgIHRoaXMudGV4dFZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMubGFzdFRleHQgPSAnJztcclxuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgIHRoaXMub3BlblN0YXRlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnb0JhY2t3YXJkKCkge1xyXG4gICAgdGhpcy5kaXJlY3Rpb24gPSAtMTtcclxuICAgIHRoaXMuYmFja3dhcmQubmF0aXZlRWxlbWVudC5jaGVja2VkID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRNb250aE9iamVjdCQudmFsdWUubW9udGhJbmRleCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aE9iamVjdCQubmV4dCh7XHJcbiAgICAgICAgeWVhcjogdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLnZhbHVlLnllYXIgLSAxLFxyXG4gICAgICAgIG1vbnRoSW5kZXg6IDExXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aFRleHQgPSB0aGlzLmNvcmVEYXRldGltZVNlcnZpY2UuZ2V0TW9udGhUZXh0KHRoaXMubGFuZywgMTEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLm5leHQoe1xyXG4gICAgICAgIHllYXI6IHRoaXMuY3VycmVudE1vbnRoT2JqZWN0JC52YWx1ZS55ZWFyLFxyXG4gICAgICAgIG1vbnRoSW5kZXg6IHRoaXMuY3VycmVudE1vbnRoT2JqZWN0JC52YWx1ZS5tb250aEluZGV4IC0gMVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoVGV4dCA9IHRoaXMuY29yZURhdGV0aW1lU2VydmljZS5nZXRNb250aFRleHQodGhpcy5sYW5nLCB0aGlzLmN1cnJlbnRNb250aE9iamVjdCQudmFsdWUubW9udGhJbmRleCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnb0ZvcmV3YXJkKCkge1xyXG4gICAgdGhpcy5kaXJlY3Rpb24gPSAxO1xyXG4gICAgdGhpcy5iYWNrd2FyZC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSBmYWxzZTtcclxuICAgIHRoaXNcclxuICAgIGlmICh0aGlzLmN1cnJlbnRNb250aE9iamVjdCQudmFsdWUubW9udGhJbmRleCA9PT0gMTEpIHtcclxuICAgICAgdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLm5leHQoe1xyXG4gICAgICAgIHllYXI6IHRoaXMuY3VycmVudE1vbnRoT2JqZWN0JC52YWx1ZS55ZWFyICsgMSxcclxuICAgICAgICBtb250aEluZGV4OiAwXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aFRleHQgPSB0aGlzLmNvcmVEYXRldGltZVNlcnZpY2UuZ2V0TW9udGhUZXh0KHRoaXMubGFuZywgMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aE9iamVjdCQubmV4dCh7XHJcbiAgICAgICAgeWVhcjogdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLnZhbHVlLnllYXIsXHJcbiAgICAgICAgbW9udGhJbmRleDogdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLnZhbHVlLm1vbnRoSW5kZXggKyAxXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aFRleHQgPSB0aGlzLmNvcmVEYXRldGltZVNlcnZpY2UuZ2V0TW9udGhUZXh0KHRoaXMubGFuZywgdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLnZhbHVlLm1vbnRoSW5kZXgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyogUHJvYmFibHkgdGhlIG1vc3QgaW1wb3J0YW50IGZ1bmN0aW9uICovXHJcbiAgYnVpbGRCb2R5KHllYXI6IG51bWJlciwgbW9udGhJbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBib2R5ID0gdGhpcy5jb3JlRGF0ZXRpbWVTZXJ2aWNlLmdldENhbGVuZGFyQm9keSh5ZWFyLCBtb250aEluZGV4LCB0aGlzLmRpcmVjdGlvbik7XHJcbiAgICB0aGlzLmRhdGEgPSBib2R5LnJvd3M7XHJcbiAgICBjb25zdCBzY3JvbGxEaXN0YW5jZSA9IChib2R5LnJvd3MubGVuZ3RoIC0gNikgKiB0aGlzLmNlbGxTaXplICsgJ3B4JztcclxuICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2Nyb2xsLWRpc3RhbmNlJywgKGJvZHkucm93cy5sZW5ndGggLSA2KSAqIHRoaXMuY2VsbFNpemUgKyAncHgnKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubGlzdGVuZXJGbikgdGhpcy5saXN0ZW5lckZuKCk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKHggPT4geD8udW5zdWJzY3JpYmUoKSlcclxuICB9XHJcblxyXG4gIHRvZ2dsZU9wZW4oKSB7XHJcbiAgICBpZiAoISF0aGlzLnJlYWRvbmx5KSByZXR1cm5cclxuICAgIGlmICghIXRoaXMuZGlzYWJsZWQpIHJldHVyblxyXG4gICAgdGhpcy5vcGVuU3RhdGUgPSAhdGhpcy5vcGVuU3RhdGU7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVNb250aFBpY2tlckFjdGl2ZSgpIHtcclxuICAgIHRoaXMubW9udGhQaWNrZXJBY3RpdmUgPSAhdGhpcy5tb250aFBpY2tlckFjdGl2ZTtcclxuICB9XHJcblxyXG4gIG9uTW9udGhPYmplY3RDaGFuZ2UoYXJnczogSU1vbnRoSWRlbnRpdHkpIHtcclxuICAgIHRoaXMuY3VycmVudE1vbnRoT2JqZWN0JC5uZXh0KHtcclxuICAgICAgeWVhcjogYXJncy55ZWFyLFxyXG4gICAgICBtb250aEluZGV4OiBhcmdzLm1vbnRoSW5kZXhcclxuICAgIH0pXHJcbiAgICB0aGlzLm1vbnRoUGlja2VyQWN0aXZlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbk1vbnRoUGlja2VyWWVhckNsaWNrKGU6IG51bWJlcikge1xyXG4gICAgdGhpcy5tb250aFBpY2tlckFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy55ZWFyUGlja2VyQWN0aXZlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uWWVhclBpY2tlZChlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuY3VycmVudE1vbnRoT2JqZWN0JC5uZXh0KHtcclxuICAgICAgeWVhcjogZSxcclxuICAgICAgbW9udGhJbmRleDogdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLnZhbHVlLm1vbnRoSW5kZXhcclxuICAgIH0pO1xyXG4gICAgdGhpcy55ZWFyUGlja2VyQWN0aXZlID0gZmFsc2U7XHJcbiAgICB0aGlzLm1vbnRoUGlja2VyQWN0aXZlID0gdHJ1ZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1kYXRlLXBpY2tlci1jb250YWluZXJcIj5cclxuICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cIm9wZW5TdGF0ZVwiPlxyXG4gICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwibW9udGhQaWNrZXJBY3RpdmVcIj5cclxuICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cInllYXJQaWNrZXJBY3RpdmVcIj5cclxuICAgIDxpbnB1dCAjYmFja3dhcmQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJ0bC1kYXRlcGlja2VyLWRpcmVjdGlvblwiPlxyXG4gICAgPGlucHV0ICNpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW3BsYWNlaG9sZGVyXT1cInNob3dQbGFjZWhvbGRlciA/ICdkZC9tbS95eXl5JyA6ICcnXCJcclxuICAgICAgICBtYXhsZW5ndGg9XCIxMFwiIFsobmdNb2RlbCldPVwidGV4dFZhbHVlXCIgW2NsYXNzLmZvcm0tY29udHJvbC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPjxsYWJlbCBjbGFzcz1cImljb25cIiAoY2xpY2spPVwidG9nZ2xlT3BlbigpXCI+PC9sYWJlbD5cclxuICAgIDxkaXYgY2xhc3M9XCJ0bC1kYXRlLXBpY2tlci1wb3B1cFwiIFtjbGFzcy5vcGVuXT1cIm9wZW5TdGF0ZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICBsZWZ0OiAoIXBvcHVwQWxpZ24gfHwgIHBvcHVwQWxpZ24gPT09ICdsZWZ0JykgPyAnMHB4JyA6ICdhdXRvJyxcclxuICAgICAgICByaWdodDogKHBvcHVwQWxpZ24gPT09ICdyaWdodCcpID8gJzBweCcgOiAnYXV0bycsXHJcbiAgICB9XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLXNlc3Npb25cIiBbY2xhc3MuZC1ub25lXT1cIm1vbnRoUGlja2VyQWN0aXZlIHx8IHllYXJQaWNrZXJBY3RpdmVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdmlnYXRvclwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibW9udGgtZHJvcGRvd25cIiAoY2xpY2spPVwidG9nZ2xlTW9udGhQaWNrZXJBY3RpdmUoKVwiPnt7IGN1cnJlbnRNb250aFRleHQgfX0ge3tcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50TW9udGhPYmplY3QkLnZhbHVlLnllYXIgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnby11cFwiIChjbGljayk9XCJnb0JhY2t3YXJkKClcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ28tZG93blwiIChjbGljayk9XCJnb0ZvcmV3YXJkKClcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndlZWtkYXktaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgQGZvciAoZGF5IG9mIGhlYWRlcldlZWtkYXlzOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIFtjbGFzcy50N109XCIkaW5kZXg9PT01XCIgW2NsYXNzLmNuXT1cIiRpbmRleD09PTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgZGF5IH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ib2R5LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAjY2FsZW5kYXJCb2R5IGNsYXNzPVwiY2FsZW5kYXItYm9keVwiIFtjbGFzcy5zbGlkZS11cF09XCJkaXJlY3Rpb249PT0xXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2xpZGUtZG93bl09XCJkaXJlY3Rpb249PT0tMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKHdlZWsgb2YgZGF0YTsgdHJhY2sgd2Vlaykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIHdlZWsuaXRlbXM7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAgW2FwcFRvb2x0aXBdPVwiaXRlbS5kYXRlVmFsdWUudG9Mb2NhbGVEYXRlU3RyaW5nKClcIiBbc2hvd0FueXdheV09XCJpc0Rldk1vZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3Mub3V0LW9mLW1vbnRoXT1cIiEhIWl0ZW0uY3VycmVudE1vbnRoXCIgW2NsYXNzLnQ3XT1cIiRpbmRleD09PTVcIiBbY2xhc3MuY25dPVwiJGluZGV4PT09NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mub3V0LW9mLXJhbmdlXT1cIiEhcmFuZ2VMaW1pdCAmJiAhISEoKGl0ZW0uZGF0ZVZhbHVlPj1yYW5nZUxpbWl0Lm1pbkRhdGUpICYmIChyYW5nZUxpbWl0Lm1heERhdGU+PWl0ZW0uZGF0ZVZhbHVlKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpdGVtLmRhdGVWYWx1ZS5nZXRGdWxsWWVhcigpPT09cGVuZGluZ1llYXIgJiYgaXRlbS5kYXRlVmFsdWUuZ2V0TW9udGgoKT09PXBlbmRpbmdNb250aEluZGV4ICYmIGl0ZW0uZGF0ZVZhbHVlLmdldERhdGUoKT09PXBlbmRpbmdEYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0uZGF0ZVZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5kYXRlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoLXBpY2tlci1zZXNzaW9uXCIgW2NsYXNzLmFjdGl2ZV09XCJtb250aFBpY2tlckFjdGl2ZVwiPlxyXG4gICAgICAgICAgICA8Y29yZS1tb250aC1waWNrZXIgW2xhbmddPVwibGFuZ1wiIFttb250aE9iamVjdCRdPVwiY3VycmVudE1vbnRoT2JqZWN0JFwiIChvbkNoYW5nZSk9XCJvbk1vbnRoT2JqZWN0Q2hhbmdlKCRldmVudClcIiAob25ZZWFyQ2xpY2spPVwib25Nb250aFBpY2tlclllYXJDbGljaygkZXZlbnQpXCI+PC9jb3JlLW1vbnRoLXBpY2tlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwieWVhci1waWNrZXItc2Vzc2lvblwiIFtjbGFzcy5hY3RpdmVdPVwieWVhclBpY2tlckFjdGl2ZVwiPlxyXG4gICAgICAgICAgICA8Y29yZS15ZWFyLXBpY2tlciBbbGFuZ109XCJsYW5nXCIgKG9uQ2hhbmdlKT1cIm9uWWVhclBpY2tlZCgkZXZlbnQpXCI+PC9jb3JlLXllYXItcGlja2VyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItd3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2RwLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsZWFyXCIgW2NsYXNzLm9wYWNpdHktMF09XCIhISF0ZXh0VmFsdWVcIiAoY2xpY2spPVwiY2xlYXIoKVwiPnt7ICdVSS5DT1JFX0RBVEVfUElDS0VSX0NMRUFSJyB8IHRyYW5zbGF0ZTogbGFuZyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpZ2ktd2F0Y2hcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b2RheVwiIChjbGljayk9XCJnb1RvZGF5KClcIj57eyAnVUkuQ09SRV9EQVRFX1BJQ0tFUl9UT0RBWScgfCB0cmFuc2xhdGU6IGxhbmcgfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
445
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1kYXRlLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1kYXRlLXBpY2tlci9jb3JlLWRhdGUtcGlja2VyL2NvcmUtZGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtZGF0ZS1waWNrZXIvY29yZS1kYXRlLXBpY2tlci9jb3JlLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWdELFNBQVMsRUFBRSxLQUFLLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hJLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUE0QixvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFHN0csT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQztBQUVqSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7QUE2Qm5FOzs7Ozs7Ozs7O0VBVUU7QUFDRixNQUFNLE9BQU8sdUJBQXdCLFNBQVEsNEJBQTRCO0lBb0R2RSxZQUNtQixRQUFtQixFQUNuQixVQUFzQixFQUN0QixtQkFBd0MsRUFDakQsR0FBeUIsRUFDekIsWUFBMEI7UUFFbEMsS0FBSyxFQUFFLENBQUM7UUFOUyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUNqRCxRQUFHLEdBQUgsR0FBRyxDQUFzQjtRQUN6QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQXREM0Isb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsZUFBVSxHQUFXLEdBQUcsQ0FBQztRQUN6QixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQVVwQyxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFDbkMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFDbkMscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBRWxDLGFBQVEsR0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFLbEUsZUFBVSxHQUFXLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFHLENBQUM7UUFhNUMsY0FBUyxHQUFXLENBQUMsQ0FBQyxDQUFDLDJCQUEyQjtRQUVsRCxjQUFTLEdBQVcsRUFBRSxDQUFDO1FBRXZCLGNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQztJQWtCeEIsQ0FBQztJQUVELFFBQVE7UUFFTixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN4RSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxlQUFlLENBQWlCO1lBQzdELElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQzdELFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1NBQzlELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFFMUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQ3BFO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FDN0MsQ0FBQTtRQUVEOzs7Ozs7O1VBT0U7UUFDRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVEOztNQUVFO0lBQ0YsYUFBYTtRQUNYLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO1FBQzNDLGtCQUFrQjtRQUNsQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2pDO2FBQU07WUFDTCxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNuQztRQUNELEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBRSxrREFBa0Q7UUFDcEUsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLENBQUMsRUFBRTtZQUN4QixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQywwR0FBMEc7U0FDOUo7YUFBTTtZQUNMLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLDBHQUEwRztTQUNoSztJQUNILENBQUM7SUFFRCxlQUFlO1FBRWI7O1VBRUU7UUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFRLEVBQUUsRUFBRTtZQUNyRTs7Y0FFRTtZQUNGLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUN4RSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQzthQUN4QjtRQUNILENBQUMsQ0FBQyxDQUFBO1FBRUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVqRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzlELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1FBRXRDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDOUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFBO1FBRW5GLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQzNCLG9CQUFvQixFQUFFLENBQ3ZCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzNGLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDUCxDQUFDLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBRWxDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMENBQTBDLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ3hFLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUUzSixJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssc0JBQXNCLEVBQUU7Z0JBQzlDLElBQUksaUJBQWlCLEVBQUU7b0JBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0VBQWdFLENBQUMsQ0FBQztvQkFDOUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO29CQUNuQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3BCLE9BQU87aUJBQ1I7cUJBQU07b0JBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO29CQUNwRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztvQkFDL0MsT0FBTztpQkFDUjthQUNGO1lBRUQsSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLHVCQUF1QjttQkFDMUMsdUNBQXVDLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMxRSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BCLE9BQU87YUFDUjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFBO2FBQ25DO1lBRUQsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDL0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO2FBQzFCO2lCQUFNLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDN0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO2FBQzFCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO2FBQ3BCO1lBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUU7Z0JBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2hDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ2hELEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztvQkFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDcEIsT0FBTztpQkFDUjtnQkFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN2QixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUM1QixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBRWpDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbkcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBRXJCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDcEIsT0FBTzthQUNSO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFSixDQUFDO0lBRVEsVUFBVSxDQUFDLEtBQTJCO1FBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksR0FBRyxHQUFRLElBQUksSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxPQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssUUFBUSxFQUFFO1lBQzlCLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRTtnQkFDaEIsR0FBRyxHQUFHLElBQUksQ0FBQzthQUNaO2lCQUFNO2dCQUNMLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNuRDtTQUNGO2FBQU0sSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssVUFBVSxFQUFFO1lBQ3JFLEdBQUcsR0FBRyxLQUFLLENBQUE7U0FDWjthQUFNO1lBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1lBQ25DLE9BQU07U0FDUDtRQUVELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFXLEVBQUUsRUFBRTtZQUN2QyxPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUM5RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQztnQkFDNUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUU7Z0JBQ3pCLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFO2FBQzdCLENBQUMsQ0FBQTtZQUNGLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFFbkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BILElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEMsQ0FBQyxDQUFBO1FBRUQsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7WUFDckMsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNyQixHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7YUFDL0I7WUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO2dCQUM1QixJQUFJLEVBQUUsR0FBRyxDQUFDLFdBQVcsRUFBRTtnQkFDdkIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUU7YUFDM0IsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDckg7YUFBTTtZQUNMLG9DQUFvQztZQUNwQyxNQUFNLFlBQVksR0FBUyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QyxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2hELE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDcEUsMENBQTBDO1lBQzFDLElBQUksT0FBTyxHQUFJLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRTtnQkFDMUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDN0I7aUJBQU0sSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7Z0JBQ2xDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzFELElBQUksTUFBTSxFQUFFO29CQUNWLHdEQUF3RDtvQkFDeEQsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQzdCO3FCQUFNO29CQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxDQUFDLENBQUM7aUJBQzVDO2FBRUY7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUM1QztTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFVO1FBRXBCLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBRTFCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDckIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTztnQkFBRSxPQUFPO1NBQzlFO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekIsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMzQixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFL0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVqQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNyQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPO2dCQUFFLE9BQU87U0FDaEY7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsVUFBVSxLQUFLLENBQUMsRUFBRTtZQUNuRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO2dCQUM1QixJQUFJLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQztnQkFDN0MsVUFBVSxFQUFFLEVBQUU7YUFDZixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzlFO2FBQU07WUFDTCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO2dCQUM1QixJQUFJLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxJQUFJO2dCQUN6QyxVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQzthQUMxRCxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDckg7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDNUMsSUFBSSxDQUFBO1FBQ0osSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFVBQVUsS0FBSyxFQUFFLEVBQUU7WUFDcEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQztnQkFDNUIsSUFBSSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUM7Z0JBQzdDLFVBQVUsRUFBRSxDQUFDO2FBQ2QsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM3RTthQUFNO1lBQ0wsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQztnQkFDNUIsSUFBSSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSTtnQkFDekMsVUFBVSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLENBQUM7YUFDMUQsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3JIO0lBQ0gsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxTQUFTLENBQUMsSUFBWSxFQUFFLFVBQWtCO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDckgsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxVQUFVO1lBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU07UUFDM0IsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFNO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ25DLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ25ELENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFvQjtRQUN0QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO1lBQzVCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtTQUM1QixDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxDQUFTO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsWUFBWSxDQUFDLENBQVM7UUFDcEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQztZQUM1QixJQUFJLEVBQUUsQ0FBQztZQUNQLFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFVBQVU7U0FDdEQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLENBQUM7OEdBaGJVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDZUQW5CdkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixLQUFLLEVBQUUsSUFBSTtnQkFDWCxXQUFXLEVBQUUsdUJBQXVCO2FBQ3JDO1NBQ0YsZ2FDdkNILDRoSUE4RE0sNmtORHRDRixZQUFZLG1IQUNaLFdBQVcsbThCQUNYLHVCQUF1QiwrR0FDdkIsd0JBQXdCLHVJQUN4QixhQUFhLGtEQUNiLGdCQUFnQjs7MkZBdUJQLHVCQUF1QjtrQkFoQ25DLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLGFBQWE7d0JBQ2IsZ0JBQWdCO3FCQUNqQixhQUdVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcseUJBQXlCO3lCQUNyQztxQkFDRjt1TUFlUSx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNZLFFBQVE7c0JBQXpCLEtBQUs7Z0JBQ1ksUUFBUTtzQkFBekIsS0FBSztnQkFtQ2tCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDRixLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBQ0ssUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNNLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgSW5wdXQsIFJlbmRlcmVyMiwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRG9tU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RvbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtZm9ybS1jb250cm9sLWJhc2UvY29yZS1mb3JtLWNvbnRyb2wtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlRGF0ZXRpbWVTZXJ2aWNlLCBJRGF0YVJvdywgSU1vbnRoSWRlbnRpdHkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb3JlLWRhdGV0aW1lLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb3JlWWVhclBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUteWVhci1waWNrZXIvY29yZS15ZWFyLXBpY2tlci9jb3JlLXllYXItcGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9hcHAtcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBDb3JlTW9udGhQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLW1vbnRoLXBpY2tlci9jb3JlLW1vbnRoLXBpY2tlci9jb3JlLW1vbnRoLXBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVEYXRlUGlja2VyUmFuZ2Uge1xyXG4gIG1pbkRhdGU6IERhdGU7XHJcbiAgbWF4RGF0ZTogRGF0ZTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLWRhdGUtcGlja2VyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29yZVllYXJQaWNrZXJDb21wb25lbnQsXHJcbiAgICBDb3JlTW9udGhQaWNrZXJDb21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgVG9vbHRpcERpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtZGF0ZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB1c2VFeGlzdGluZzogQ29yZURhdGVQaWNrZXJDb21wb25lbnRcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbi8qXHJcbiAgdGhpcyBjb21wb25lbnQgcmVuZGVycyBpdHMgbWFpbiBwYXJ0IGFuZCBwb3B1cCBwYXJ0XHJcbiAgdGhlIG1haW4gcGFydCBkZWFscyB3aXRoIHVzZXIgaW5wdXQgZnJvbSBwaHlzaWNhbCBrZXlib2FyZCBvciB0b3VjaCBrZXlib2FyZFxyXG4gIHRoZSBwb3B1cCBwYXJ0IGNvbnNpc3RzIG9mIDEpIG5hdmlnYXRvciAyKSBoZWFkZXIgMykgY2FsZW5kYXIgYm9keSBjb250YWluZXIgNCkgY2FsZW5kYXIgYm9keVxyXG4gIHRoZSBtb3N0IGltcG9ydGFudCBwYXJ0IG9mIHRoZW0gaXM6XHJcbiAgICA0KSBjYWxlbmRhciBib2R5OlxyXG4gICAgICBkdWUgdmFyaWF0aW9ucyB0aGUgY2FsZW5kYXIgYm9keSBtYXkgcmVhY2ggdG8gNiByb3dzIG9mIHdlZWsgZGF5IHN1Yi1hcnJheVxyXG4gICAgLSBmb3IgdmlzdWFsLCBsb2dpYyBhbmQgY29kaW5nIHNpbXBsaWNpdHkgSSB3aWxsIGFsd2F5cyByZW5kZXIgYWxsIHRoZSA2IHJvd3NcclxuICAgIHNvIGNhbGVuZGFyIGJvZHkgZGltZW5zaW9uIHN0YXlzIHVuY2hhbmdlZFxyXG4gIFxyXG4qL1xyXG5leHBvcnQgY2xhc3MgQ29yZURhdGVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBASW5wdXQoKSBlbmFibGVUaW1lWm9uZUNvbnZlcnRlciE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2hvd1BsYWNlaG9sZGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcG9wdXBXaWR0aDogbnVtYmVyID0gMzAwO1xyXG4gIEBJbnB1dCgpIHBvcHVwWFBhZGRpbmc6IG51bWJlciA9IDEyO1xyXG4gIEBJbnB1dCgpIHBvcHVwQWxpZ24hOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcmFuZ2VMaW1pdCE6IElDb3JlRGF0ZVBpY2tlclJhbmdlO1xyXG4gIEBJbnB1dCgpIG92ZXJyaWRlIHJlYWRvbmx5ITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBvdmVycmlkZSBkaXNhYmxlZCE6IGJvb2xlYW47XHJcblxyXG5cclxuICBsaXN0ZW5lckZuITogKCkgPT4gdm9pZDtcclxuXHJcbiAgbGFuZyE6IHN0cmluZztcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIG9wZW5TdGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG1vbnRoUGlja2VyQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgeWVhclBpY2tlckFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjZWxsU2l6ZTogbnVtYmVyID0gKHRoaXMucG9wdXBXaWR0aCAtIHRoaXMucG9wdXBYUGFkZGluZyAqIDIpIC8gNztcclxuXHJcbiAgb3ZlcnJpZGUgdmFsdWUhOiBEYXRlIHwgbnVsbDtcclxuICBwZW5kaW5nWWVhciE6IG51bWJlcjtcclxuICBwZW5kaW5nTW9udGhJbmRleCE6IG51bWJlcjtcclxuICBwZW5kaW5nRGF5OiBudW1iZXIgPSB0aGlzLnZhbHVlPy5nZXREYXRlKCkhO1xyXG5cclxuICBjdXJyZW50TW9udGhPYmplY3QkITogQmVoYXZpb3JTdWJqZWN0PElNb250aElkZW50aXR5PjtcclxuICBuZXdEYXRlITogRGF0ZTtcclxuXHJcbiAgY3VycmVudE1vbnRoVGV4dCE6IHN0cmluZztcclxuICBjdXJyZW50SG91cnMhOiBudW1iZXI7XHJcbiAgY3VycmVudE1pbnV0ZXMhOiBudW1iZXI7XHJcbiAgY3VycmVudFNlY29uZHMhOiBudW1iZXI7XHJcbiAgY3VycmVudE1pbGxpc2Vjb25kcyE6IG51bWJlcjtcclxuXHJcbiAgZGF0YSE6IElEYXRhUm93W107XHJcbiAgaGVhZGVyV2Vla2RheXMhOiBzdHJpbmdbXTtcclxuICBkaXJlY3Rpb246IG51bWJlciA9IDE7IC8vIHN0YXJ0dXAgZGlyZWN0aW9uIDEgfCAtMVxyXG5cclxuICB0ZXh0VmFsdWU6IHN0cmluZyA9ICcnO1xyXG5cclxuICBpc0Rldk1vZGUgPSBpc0Rldk1vZGUoKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0ITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdiYWNrd2FyZCcpIGJhY2t3YXJkITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdjYWxlbmRhckJvZHknKSBjYWxlbmRhckJvZHkhOiBFbGVtZW50UmVmO1xyXG5cclxuICBpbnB1dFN0cmVhbSQhOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgbGFzdFRleHQhOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb21TZXJ2aWNlOiBEb21TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3JlRGF0ZXRpbWVTZXJ2aWNlOiBDb3JlRGF0ZXRpbWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMubmV3RGF0ZSA9ICEhdGhpcy5yYW5nZUxpbWl0ID8gdGhpcy5yYW5nZUxpbWl0Lm1pbkRhdGUgOiBuZXcgRGF0ZSgpO1xyXG4gICAgdGhpcy5jdXJyZW50TW9udGhPYmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJTW9udGhJZGVudGl0eT4oe1xyXG4gICAgICB5ZWFyOiB0aGlzLnZhbHVlPy5nZXRGdWxsWWVhcigpIHx8IHRoaXMubmV3RGF0ZS5nZXRGdWxsWWVhcigpLFxyXG4gICAgICBtb250aEluZGV4OiB0aGlzLnZhbHVlPy5nZXRNb250aCgpIHx8IHRoaXMubmV3RGF0ZS5nZXRNb250aCgpXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoISF0aGlzLmRpc2FibGVkKSB0aGlzLnJlYWRvbmx5ID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAoISEhdGhpcy52YWx1ZSkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5uZXdEYXRlO1xyXG4gICAgICB0aGlzLmxhc3RUZXh0ID0gdGhpcy5jb3JlRGF0ZXRpbWVTZXJ2aWNlLmRhdGVUb1ZuU3RyaW5nKHRoaXMudmFsdWUpXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wZW5kaW5nWWVhciA9IHRoaXMudmFsdWUuZ2V0RnVsbFllYXIoKTtcclxuICAgIHRoaXMucGVuZGluZ01vbnRoSW5kZXggPSB0aGlzLnZhbHVlLmdldE1vbnRoKCk7XHJcbiAgICB0aGlzLnBlbmRpbmdEYXkgPSB0aGlzLnZhbHVlLmdldERhdGUoKTtcclxuICAgIHRoaXMuY3VycmVudEhvdXJzID0gdGhpcy52YWx1ZS5nZXRIb3VycygpO1xyXG4gICAgdGhpcy5jdXJyZW50TWludXRlcyA9IHRoaXMudmFsdWUuZ2V0TWludXRlcygpO1xyXG4gICAgdGhpcy5jdXJyZW50U2Vjb25kcyA9IHRoaXMudmFsdWUuZ2V0U2Vjb25kcygpO1xyXG4gICAgdGhpcy5jdXJyZW50TWlsbGlzZWNvbmRzID0gdGhpcy52YWx1ZS5nZXRNaWxsaXNlY29uZHMoKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKHggPT4gdGhpcy5sYW5nID0geClcclxuICAgIClcclxuXHJcbiAgICAvKlxyXG4gICAgaWYgKCEhIXRoaXMuaWQpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihgXHJcbiAgICAgIHdpdGhpbiBhIHBhZ2UsIHRhbmxlaWNhLWRhdGUtcGlja2VyIG5lZWRzIGFuIHVuaXF1ZSBwcm9wZXJ0eSBpZCB2YWx1ZSB0byB3b3JrIGNvcnJlY3RseVxyXG4gICAgICBmb3IgZXhhbXBsZTogPHRhbmxlaWNhLWRhdGUtcGlja2VyIGlkPVwic3RhcnREYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RhcnREYXRlXCI+PC90YW5sZWljYS1kYXRlLXBpY2tlcj5cclxuICAgICAgYClcclxuICAgIH1cclxuICAgICovXHJcbiAgICB0aGlzLmhlYWRlcldlZWtkYXlzID0gdGhpcy5jb3JlRGF0ZXRpbWVTZXJ2aWNlLmdldFNob3J0V2Vla2RheXModGhpcy5sYW5nKTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICB0cmlnZ2VyIGFuaW1hdGlvbiBieSByZWZsb3cgdGhlIERPTVxyXG4gICovXHJcbiAgdHJpZ2dlclJlZmxvdygpIHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5jYWxlbmRhckJvZHkubmF0aXZlRWxlbWVudDtcclxuICAgIC8vRE9NIG1hbmlwdWxhdGlvblxyXG4gICAgaWYgKHRoaXMuZGlyZWN0aW9uID09PSAxKSB7XHJcbiAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoXCJzbGlkZS11cFwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoXCJzbGlkZS1kb3duXCIpO1xyXG4gICAgfVxyXG4gICAgZWwub2Zmc2V0SGVpZ2h0OyAgLyogdHJpZ2dlciByZWZsb3cgKGFsdGVybmF0aXZlOiBlbC5vZmZzZXRXaWR0aCkgKi9cclxuICAgIGlmICh0aGlzLmRpcmVjdGlvbiA9PT0gMSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IGVsLmNsYXNzTGlzdC5hZGQoXCJzbGlkZS11cFwiKSwgMCk7IC8vIHBhc3MgdGhlIGNhbGxiYWNrIHRvIENhbGxiYWNrIHF1ZXVlIHRocm91Z2ggV2ViQVBJcywgc28gaXQgd2lsbCBiZSBleGVjdXRlZCBhZnRlciBET00gbWFuaXB1bGF0aW9uIGVuZHNcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWwuY2xhc3NMaXN0LmFkZChcInNsaWRlLWRvd25cIiksIDApOyAvLyBwYXNzIHRoZSBjYWxsYmFjayB0byBDYWxsYmFjayBxdWV1ZSB0aHJvdWdoIFdlYkFQSXMsIHNvIGl0IHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgRE9NIG1hbmlwdWxhdGlvbiBlbmRzXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG4gICAgLypcclxuICAgICAgVGhpcyBldmVudHMgZ2V0IGNhbGxlZCBieSBhbGwgY2xpY2tzIG9uIHRoZSBwYWdlXHJcbiAgICAqL1xyXG4gICAgdGhpcy5saXN0ZW5lckZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdjbGljaycsIChlOiBFdmVudCkgPT4ge1xyXG4gICAgICAvKlxyXG4gICAgICAgIGhhbmRsZSBjbGljayBvdXRzaWRlXHJcbiAgICAgICovXHJcbiAgICAgIGlmICh0aGlzLmNvbnRhaW5lciAmJiAhISF0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGUudGFyZ2V0KSkge1xyXG4gICAgICAgIHRoaXMub3BlblN0YXRlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgY29uc3QgbWF4WkluZGV4ID0gdGhpcy5kb21TZXJ2aWNlLmdldE1heFpJbmRleCgpO1xyXG5cclxuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCBpbnB1dEhlaWdodCA9IHJlY3QuaGVpZ2h0IHx8IDM1O1xyXG5cclxuICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taW5kaWNhdG9yLWhlaWdodCcsIChpbnB1dEhlaWdodCAtIDYpICsgJ3B4JylcclxuICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcG9wdXAtei1pbmRleCcsIG1heFpJbmRleCk7XHJcbiAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWNlbGwtc2l6ZScsIHRoaXMuY2VsbFNpemUgKyAncHgnKVxyXG5cclxuICAgIHRoaXMuY3VycmVudE1vbnRoT2JqZWN0JC5waXBlKFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXHJcbiAgICApLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoVGV4dCA9IHRoaXMuY29yZURhdGV0aW1lU2VydmljZS5nZXRNb250aFRleHQodGhpcy5sYW5nLCB2YWx1ZS5tb250aEluZGV4KTtcclxuICAgICAgICB0aGlzLmJ1aWxkQm9keSh2YWx1ZS55ZWFyLCB2YWx1ZS5tb250aEluZGV4KTtcclxuICAgICAgICB0aGlzLnRyaWdnZXJSZWZsb3coKTtcclxuICAgICAgfSwgMClcclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5pbnB1dFN0cmVhbSQgPSBmcm9tRXZlbnQodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LCAnaW5wdXQnKTtcclxuICAgIHRoaXMuaW5wdXRTdHJlYW0kLnN1YnNjcmliZShldmVudCA9PiB7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhcIkNvcmVEYXRlUGlja2VyQ29tcG9uZW50OiBldmVudC5pbnB1dFR5cGVcIiwgZXZlbnQuaW5wdXRUeXBlKVxyXG4gICAgICBjb25zdCBpc0FsbFRleHRTZWxlY3RlZCA9IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCAmJiB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kID09PSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUubGVuZ3RoO1xyXG5cclxuICAgICAgaWYgKGV2ZW50LmlucHV0VHlwZSA9PT0gJ2RlbGV0ZUNvbnRlbnRGb3J3YXJkJykge1xyXG4gICAgICAgIGlmIChpc0FsbFRleHRTZWxlY3RlZCkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0NvcmVEYXRlUGlja2VyQ29tcG9uZW50OiBBbGwgdGV4dCB3YXMgc2VsZWN0ZWQgYmVmb3JlIGRlbGV0aW9uJyk7XHJcbiAgICAgICAgICB0aGlzLnRleHRWYWx1ZSA9ICcnO1xyXG4gICAgICAgICAgdGhpcy5sYXN0VGV4dCA9ICcnO1xyXG4gICAgICAgICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnQ29yZURhdGVQaWNrZXJDb21wb25lbnQ6IFBhcnRpYWwgb3Igbm8gdGV4dCBzZWxlY3RlZCBiZWZvcmUgZGVsZXRpb24nKTtcclxuICAgICAgICAgIHRoaXMubGFzdFRleHQgPSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZXZlbnQuaW5wdXRUeXBlICE9PSAnZGVsZXRlQ29udGVudEJhY2t3YXJkJ1xyXG4gICAgICAgICYmICcjMCMxIzIjMyM0IzUjNiM3IzgjOSNCYWNrc3BhY2UjRGVsZXRlJy5pbmRleE9mKCcjJyArIGV2ZW50LmRhdGEpIDwgMCkge1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IHRoaXMubGFzdFRleHQ7XHJcbiAgICAgICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sYXN0VGV4dCA9IGV2ZW50LnRhcmdldC52YWx1ZVxyXG4gICAgICB9XHJcblxyXG4gICAgICB2YXIgdiA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgICAgaWYgKHYubWF0Y2goL15cXGR7Mn0kLykgIT09IG51bGwpIHtcclxuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSB2ICsgJy8nO1xyXG4gICAgICAgIHRoaXMudGV4dFZhbHVlID0gdiArICcvJztcclxuICAgICAgfSBlbHNlIGlmICh2Lm1hdGNoKC9eXFxkezJ9XFwvXFxkezJ9JC8pICE9PSBudWxsKSB7XHJcbiAgICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gdiArICcvJztcclxuICAgICAgICB0aGlzLnRleHRWYWx1ZSA9IHYgKyAnLyc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50ZXh0VmFsdWUgPSB2O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy50ZXh0VmFsdWUubGVuZ3RoID09PSAxMCkge1xyXG4gICAgICAgIGNvbnN0IGRpZ2l0cyA9IHRoaXMudGV4dFZhbHVlLnNwbGl0KCcvJyk7XHJcbiAgICAgICAgY29uc3QgeSA9IE51bWJlcihkaWdpdHNbMl0pO1xyXG4gICAgICAgIGNvbnN0IG0gPSBOdW1iZXIoZGlnaXRzWzFdKSAtIDE7XHJcbiAgICAgICAgY29uc3QgZCA9IE51bWJlcihkaWdpdHNbMF0pO1xyXG5cclxuICAgICAgICBpZiAoeSA8PSAwIHx8IG0gPCAwIHx8IG0gPiAxMSB8fCBkIDwgMSB8fCBkID4gMzEpIHtcclxuICAgICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgdGhpcy50ZXh0VmFsdWUgPSAnJztcclxuICAgICAgICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgY29uc3QgaHIgPSBub3cuZ2V0SG91cnMoKTtcclxuICAgICAgICBjb25zdCBtbiA9IG5vdy5nZXRNaW51dGVzKCk7XHJcbiAgICAgICAgY29uc3Qgc2QgPSBub3cuZ2V0U2Vjb25kcygpO1xyXG4gICAgICAgIGNvbnN0IG1zID0gbm93LmdldE1pbGxpc2Vjb25kcygpO1xyXG5cclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoTnVtYmVyKGRpZ2l0c1syXSksIE51bWJlcihkaWdpdHNbMV0pIC0gMSwgTnVtYmVyKGRpZ2l0c1swXSksIGhyLCBtbiwgc2QsIG1zKTtcclxuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSB0aGlzLmNvcmVEYXRldGltZVNlcnZpY2UuZGF0ZVRvVm5TdHJpbmcoZGF0ZSk7XHJcbiAgICAgICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZShkYXRlKTtcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZShpbnB1dDogRGF0ZSB8IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKFwiVVRDIGlucHV0IFwiLCBpbnB1dCk7XHJcbiAgICBsZXQgb2JqOiBhbnkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgaWYgKHR5cGVvZihpbnB1dCkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGlmIChpbnB1dCA9PT0gXCJcIikge1xyXG4gICAgICAgIG9iaiA9IG51bGw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgb2JqID0gbmV3IERhdGUobmV3IERhdGUoaW5wdXQpLnNldEhvdXJzKDAsMCwwLDApKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChpbnB1dCAhPT0gbnVsbCAmJiB0eXBlb2YoaW5wdXQuZ2V0RnVsbFllYXIpID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgb2JqID0gaW5wdXRcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJJbnZhbGlkIGRhdGUgaW5wdXRcIilcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdXBkYXRlUHJvcGVydGllcyA9ICh2YWx1ZTogRGF0ZSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkFmdGVyIGNvbnZlcnQgdG8gTG9jYWwgRGF0ZSBcIiwgdmFsdWUpO1xyXG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgIHRoaXMubGFzdFRleHQgPSB0aGlzLmNvcmVEYXRldGltZVNlcnZpY2UuZGF0ZVRvVm5TdHJpbmcodmFsdWUpXHJcbiAgICAgIHRoaXMudGV4dFZhbHVlID0gdGhpcy5jb3JlRGF0ZXRpbWVTZXJ2aWNlLmRhdGVUb1ZuU3RyaW5nKHZhbHVlKTtcclxuICAgICAgdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLm5leHQoe1xyXG4gICAgICAgIHllYXI6IHZhbHVlLmdldEZ1bGxZZWFyKCksXHJcbiAgICAgICAgbW9udGhJbmRleDogdmFsdWUuZ2V0TW9udGgoKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmN1cnJlbnRIb3VycyA9IHZhbHVlLmdldEhvdXJzKCk7XHJcbiAgICAgIHRoaXMuY3VycmVudE1pbnV0ZXMgPSB2YWx1ZS5nZXRNaW51dGVzKCk7XHJcbiAgICAgIHRoaXMuY3VycmVudFNlY29uZHMgPSB2YWx1ZS5nZXRTZWNvbmRzKCk7XHJcbiAgICAgIHRoaXMuY3VycmVudE1pbGxpc2Vjb25kcyA9IHZhbHVlLmdldE1pbGxpc2Vjb25kcygpO1xyXG5cclxuICAgICAgdGhpcy5jdXJyZW50TW9udGhUZXh0ID0gdGhpcy5jb3JlRGF0ZXRpbWVTZXJ2aWNlLmdldE1vbnRoVGV4dCh0aGlzLmxhbmcsIHRoaXMuY3VycmVudE1vbnRoT2JqZWN0JC52YWx1ZS5tb250aEluZGV4KTtcclxuICAgICAgdGhpcy5wZW5kaW5nWWVhciA9IHZhbHVlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgIHRoaXMucGVuZGluZ01vbnRoSW5kZXggPSB2YWx1ZS5nZXRNb250aCgpO1xyXG4gICAgICB0aGlzLnBlbmRpbmdEYXkgPSB2YWx1ZS5nZXREYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBsZXQgbm93ID0gbmV3IERhdGUoKTtcclxuICAgICAgaWYgKCEhdGhpcy5yYW5nZUxpbWl0KSB7XHJcbiAgICAgICAgbm93ID0gdGhpcy5yYW5nZUxpbWl0Lm1pbkRhdGU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50ZXh0VmFsdWUgPSAnJztcclxuICAgICAgdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLm5leHQoe1xyXG4gICAgICAgIHllYXI6IG5vdy5nZXRGdWxsWWVhcigpLFxyXG4gICAgICAgIG1vbnRoSW5kZXg6IG5vdy5nZXRNb250aCgpXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuY3VycmVudEhvdXJzID0gbm93LmdldEhvdXJzKCk7XHJcbiAgICAgIHRoaXMuY3VycmVudE1pbnV0ZXMgPSBub3cuZ2V0TWludXRlcygpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRTZWNvbmRzID0gbm93LmdldFNlY29uZHMoKTtcclxuICAgICAgdGhpcy5jdXJyZW50TWlsbGlzZWNvbmRzID0gbm93LmdldE1pbGxpc2Vjb25kcygpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aFRleHQgPSB0aGlzLmNvcmVEYXRldGltZVNlcnZpY2UuZ2V0TW9udGhUZXh0KHRoaXMubGFuZywgdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLnZhbHVlLm1vbnRoSW5kZXgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLyogQ29udmVydCBVVEMgZGF0ZSB0byBsb2NhbCBkYXRlICovXHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKG9iaik7XHJcbiAgICAgIGNvbnN0IG9mZnNldCA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lem9uZU9mZnNldCgpO1xyXG4gICAgICBjb25zdCBkYXRlVmFsdWUgPSBuZXcgRGF0ZShvcmlnaW5hbERhdGUuZ2V0VGltZSgpIC0gb2Zmc2V0ICogNjAwMDApO1xyXG4gICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgICAgaWYgKHR5cGVvZiBvYmohLmdldEZ1bGxZZWFyID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgdXBkYXRlUHJvcGVydGllcyhkYXRlVmFsdWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29uc3QgaXNEYXRlID0gdGhpcy5jb3JlRGF0ZXRpbWVTZXJ2aWNlLmlzRGF0ZVN0cmluZyhvYmopO1xyXG4gICAgICAgIGlmIChpc0RhdGUpIHtcclxuICAgICAgICAgIC8vY29uc3QgX29iaiA9IG5ldyBEYXRlKG9iaik7IC8vIGNvbnZlcnQgc3RyaW5nIHRvIGRhdGUgXHJcbiAgICAgICAgICB1cGRhdGVQcm9wZXJ0aWVzKGRhdGVWYWx1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJJbnZhbGlkIGRhdGUgaW5wdXQ6IFwiLCBvYmopO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkludmFsaWQgZGF0ZSBpbnB1dDogXCIsIG9iaik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSXRlbUNsaWNrKGRhdGU6IERhdGUpIHtcclxuXHJcbiAgICBpZiAodGhpcy5yZWFkb25seSkgcmV0dXJuO1xyXG5cclxuICAgIGlmICghIXRoaXMucmFuZ2VMaW1pdCkge1xyXG4gICAgICBpZiAoZGF0ZSA8IHRoaXMucmFuZ2VMaW1pdC5taW5EYXRlIHx8IGRhdGUgPiB0aGlzLnJhbmdlTGltaXQubWF4RGF0ZSkgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICBjb25zdCBoID0gbm93LmdldEhvdXJzKCk7XHJcbiAgICBjb25zdCBtID0gbm93LmdldE1pbnV0ZXMoKTtcclxuICAgIGNvbnN0IHMgPSBub3cuZ2V0U2Vjb25kcygpO1xyXG4gICAgY29uc3QgbXMgPSBub3cuZ2V0TWlsbGlzZWNvbmRzKCk7XHJcbiAgICBkYXRlLnNldEhvdXJzKGgpO1xyXG4gICAgZGF0ZS5zZXRNaW51dGVzKG0pO1xyXG4gICAgZGF0ZS5zZXRTZWNvbmRzKHMpO1xyXG4gICAgZGF0ZS5zZXRNaWxsaXNlY29uZHMobXMpO1xyXG4gICAgdGhpcy50ZXh0VmFsdWUgPSB0aGlzLmNvcmVEYXRldGltZVNlcnZpY2UuZGF0ZVRvVm5TdHJpbmcoZGF0ZSk7XHJcblxyXG4gICAgdGhpcy5wZW5kaW5nWWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIHRoaXMucGVuZGluZ01vbnRoSW5kZXggPSBkYXRlLmdldE1vbnRoKCk7XHJcbiAgICB0aGlzLnBlbmRpbmdEYXkgPSBkYXRlLmdldERhdGUoKTtcclxuXHJcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcclxuXHJcbiAgICB0aGlzLm9uQ2hhbmdlKGRhdGUpO1xyXG4gICAgdGhpcy5vcGVuU3RhdGUgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdvVG9kYXkoKSB7XHJcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZiAoISF0aGlzLnJhbmdlTGltaXQpIHtcclxuICAgICAgaWYgKHRvZGF5IDwgdGhpcy5yYW5nZUxpbWl0Lm1pbkRhdGUgfHwgdG9kYXkgPiB0aGlzLnJhbmdlTGltaXQubWF4RGF0ZSkgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50ZXh0VmFsdWUgPSB0aGlzLmNvcmVEYXRldGltZVNlcnZpY2UuZGF0ZVRvVm5TdHJpbmcodG9kYXkpO1xyXG4gICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRvZGF5KTtcclxuICAgIHRoaXMub3BlblN0YXRlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpIHtcclxuICAgIHRoaXMudGV4dFZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMubGFzdFRleHQgPSAnJztcclxuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgIHRoaXMub3BlblN0YXRlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnb0JhY2t3YXJkKCkge1xyXG4gICAgdGhpcy5kaXJlY3Rpb24gPSAtMTtcclxuICAgIHRoaXMuYmFja3dhcmQubmF0aXZlRWxlbWVudC5jaGVja2VkID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRNb250aE9iamVjdCQudmFsdWUubW9udGhJbmRleCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aE9iamVjdCQubmV4dCh7XHJcbiAgICAgICAgeWVhcjogdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLnZhbHVlLnllYXIgLSAxLFxyXG4gICAgICAgIG1vbnRoSW5kZXg6IDExXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aFRleHQgPSB0aGlzLmNvcmVEYXRldGltZVNlcnZpY2UuZ2V0TW9udGhUZXh0KHRoaXMubGFuZywgMTEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLm5leHQoe1xyXG4gICAgICAgIHllYXI6IHRoaXMuY3VycmVudE1vbnRoT2JqZWN0JC52YWx1ZS55ZWFyLFxyXG4gICAgICAgIG1vbnRoSW5kZXg6IHRoaXMuY3VycmVudE1vbnRoT2JqZWN0JC52YWx1ZS5tb250aEluZGV4IC0gMVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoVGV4dCA9IHRoaXMuY29yZURhdGV0aW1lU2VydmljZS5nZXRNb250aFRleHQodGhpcy5sYW5nLCB0aGlzLmN1cnJlbnRNb250aE9iamVjdCQudmFsdWUubW9udGhJbmRleCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnb0ZvcmV3YXJkKCkge1xyXG4gICAgdGhpcy5kaXJlY3Rpb24gPSAxO1xyXG4gICAgdGhpcy5iYWNrd2FyZC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSBmYWxzZTtcclxuICAgIHRoaXNcclxuICAgIGlmICh0aGlzLmN1cnJlbnRNb250aE9iamVjdCQudmFsdWUubW9udGhJbmRleCA9PT0gMTEpIHtcclxuICAgICAgdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLm5leHQoe1xyXG4gICAgICAgIHllYXI6IHRoaXMuY3VycmVudE1vbnRoT2JqZWN0JC52YWx1ZS55ZWFyICsgMSxcclxuICAgICAgICBtb250aEluZGV4OiAwXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aFRleHQgPSB0aGlzLmNvcmVEYXRldGltZVNlcnZpY2UuZ2V0TW9udGhUZXh0KHRoaXMubGFuZywgMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aE9iamVjdCQubmV4dCh7XHJcbiAgICAgICAgeWVhcjogdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLnZhbHVlLnllYXIsXHJcbiAgICAgICAgbW9udGhJbmRleDogdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLnZhbHVlLm1vbnRoSW5kZXggKyAxXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aFRleHQgPSB0aGlzLmNvcmVEYXRldGltZVNlcnZpY2UuZ2V0TW9udGhUZXh0KHRoaXMubGFuZywgdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLnZhbHVlLm1vbnRoSW5kZXgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyogUHJvYmFibHkgdGhlIG1vc3QgaW1wb3J0YW50IGZ1bmN0aW9uICovXHJcbiAgYnVpbGRCb2R5KHllYXI6IG51bWJlciwgbW9udGhJbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBib2R5ID0gdGhpcy5jb3JlRGF0ZXRpbWVTZXJ2aWNlLmdldENhbGVuZGFyQm9keSh5ZWFyLCBtb250aEluZGV4LCB0aGlzLmRpcmVjdGlvbik7XHJcbiAgICB0aGlzLmRhdGEgPSBib2R5LnJvd3M7XHJcbiAgICBjb25zdCBzY3JvbGxEaXN0YW5jZSA9IChib2R5LnJvd3MubGVuZ3RoIC0gNikgKiB0aGlzLmNlbGxTaXplICsgJ3B4JztcclxuICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2Nyb2xsLWRpc3RhbmNlJywgKGJvZHkucm93cy5sZW5ndGggLSA2KSAqIHRoaXMuY2VsbFNpemUgKyAncHgnKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubGlzdGVuZXJGbikgdGhpcy5saXN0ZW5lckZuKCk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKHggPT4geD8udW5zdWJzY3JpYmUoKSlcclxuICB9XHJcblxyXG4gIHRvZ2dsZU9wZW4oKSB7XHJcbiAgICBpZiAoISF0aGlzLnJlYWRvbmx5KSByZXR1cm5cclxuICAgIGlmICghIXRoaXMuZGlzYWJsZWQpIHJldHVyblxyXG4gICAgdGhpcy5vcGVuU3RhdGUgPSAhdGhpcy5vcGVuU3RhdGU7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVNb250aFBpY2tlckFjdGl2ZSgpIHtcclxuICAgIHRoaXMubW9udGhQaWNrZXJBY3RpdmUgPSAhdGhpcy5tb250aFBpY2tlckFjdGl2ZTtcclxuICB9XHJcblxyXG4gIG9uTW9udGhPYmplY3RDaGFuZ2UoYXJnczogSU1vbnRoSWRlbnRpdHkpIHtcclxuICAgIHRoaXMuY3VycmVudE1vbnRoT2JqZWN0JC5uZXh0KHtcclxuICAgICAgeWVhcjogYXJncy55ZWFyLFxyXG4gICAgICBtb250aEluZGV4OiBhcmdzLm1vbnRoSW5kZXhcclxuICAgIH0pXHJcbiAgICB0aGlzLm1vbnRoUGlja2VyQWN0aXZlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbk1vbnRoUGlja2VyWWVhckNsaWNrKGU6IG51bWJlcikge1xyXG4gICAgdGhpcy5tb250aFBpY2tlckFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy55ZWFyUGlja2VyQWN0aXZlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uWWVhclBpY2tlZChlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuY3VycmVudE1vbnRoT2JqZWN0JC5uZXh0KHtcclxuICAgICAgeWVhcjogZSxcclxuICAgICAgbW9udGhJbmRleDogdGhpcy5jdXJyZW50TW9udGhPYmplY3QkLnZhbHVlLm1vbnRoSW5kZXhcclxuICAgIH0pO1xyXG4gICAgdGhpcy55ZWFyUGlja2VyQWN0aXZlID0gZmFsc2U7XHJcbiAgICB0aGlzLm1vbnRoUGlja2VyQWN0aXZlID0gdHJ1ZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1kYXRlLXBpY2tlci1jb250YWluZXJcIj5cclxuICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cIm9wZW5TdGF0ZVwiPlxyXG4gICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwibW9udGhQaWNrZXJBY3RpdmVcIj5cclxuICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cInllYXJQaWNrZXJBY3RpdmVcIj5cclxuICAgIDxpbnB1dCAjYmFja3dhcmQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJ0bC1kYXRlcGlja2VyLWRpcmVjdGlvblwiPlxyXG4gICAgPGlucHV0ICNpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW3BsYWNlaG9sZGVyXT1cInNob3dQbGFjZWhvbGRlciA/ICdkZC9tbS95eXl5JyA6ICcnXCJcclxuICAgICAgICBtYXhsZW5ndGg9XCIxMFwiIFsobmdNb2RlbCldPVwidGV4dFZhbHVlXCIgW2NsYXNzLmZvcm0tY29udHJvbC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPjxsYWJlbCBjbGFzcz1cImljb25cIiAoY2xpY2spPVwidG9nZ2xlT3BlbigpXCI+PC9sYWJlbD5cclxuICAgIDxkaXYgY2xhc3M9XCJ0bC1kYXRlLXBpY2tlci1wb3B1cFwiIFtjbGFzcy5vcGVuXT1cIm9wZW5TdGF0ZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICBsZWZ0OiAoIXBvcHVwQWxpZ24gfHwgIHBvcHVwQWxpZ24gPT09ICdsZWZ0JykgPyAnMHB4JyA6ICdhdXRvJyxcclxuICAgICAgICByaWdodDogKHBvcHVwQWxpZ24gPT09ICdyaWdodCcpID8gJzBweCcgOiAnYXV0bycsXHJcbiAgICB9XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLXNlc3Npb25cIiBbY2xhc3MuZC1ub25lXT1cIm1vbnRoUGlja2VyQWN0aXZlIHx8IHllYXJQaWNrZXJBY3RpdmVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdmlnYXRvclwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibW9udGgtZHJvcGRvd25cIiAoY2xpY2spPVwidG9nZ2xlTW9udGhQaWNrZXJBY3RpdmUoKVwiPnt7IGN1cnJlbnRNb250aFRleHQgfX0ge3tcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50TW9udGhPYmplY3QkLnZhbHVlLnllYXIgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnby11cFwiIChjbGljayk9XCJnb0JhY2t3YXJkKClcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ28tZG93blwiIChjbGljayk9XCJnb0ZvcmV3YXJkKClcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndlZWtkYXktaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgQGZvciAoZGF5IG9mIGhlYWRlcldlZWtkYXlzOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIFtjbGFzcy50N109XCIkaW5kZXg9PT01XCIgW2NsYXNzLmNuXT1cIiRpbmRleD09PTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgZGF5IH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ib2R5LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAjY2FsZW5kYXJCb2R5IGNsYXNzPVwiY2FsZW5kYXItYm9keVwiIFtjbGFzcy5zbGlkZS11cF09XCJkaXJlY3Rpb249PT0xXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2xpZGUtZG93bl09XCJkaXJlY3Rpb249PT0tMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKHdlZWsgb2YgZGF0YTsgdHJhY2sgd2Vlaykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIHdlZWsuaXRlbXM7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAgW2FwcFRvb2x0aXBdPVwiaXRlbS5kYXRlVmFsdWUudG9Mb2NhbGVEYXRlU3RyaW5nKClcIiBbc2hvd0FueXdheV09XCJpc0Rldk1vZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3Mub3V0LW9mLW1vbnRoXT1cIiEhIWl0ZW0uY3VycmVudE1vbnRoXCIgW2NsYXNzLnQ3XT1cIiRpbmRleD09PTVcIiBbY2xhc3MuY25dPVwiJGluZGV4PT09NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mub3V0LW9mLXJhbmdlXT1cIiEhcmFuZ2VMaW1pdCAmJiAhISEoKGl0ZW0uZGF0ZVZhbHVlPj1yYW5nZUxpbWl0Lm1pbkRhdGUpICYmIChyYW5nZUxpbWl0Lm1heERhdGU+PWl0ZW0uZGF0ZVZhbHVlKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpdGVtLmRhdGVWYWx1ZS5nZXRGdWxsWWVhcigpPT09cGVuZGluZ1llYXIgJiYgaXRlbS5kYXRlVmFsdWUuZ2V0TW9udGgoKT09PXBlbmRpbmdNb250aEluZGV4ICYmIGl0ZW0uZGF0ZVZhbHVlLmdldERhdGUoKT09PXBlbmRpbmdEYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0uZGF0ZVZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5kYXRlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoLXBpY2tlci1zZXNzaW9uXCIgW2NsYXNzLmFjdGl2ZV09XCJtb250aFBpY2tlckFjdGl2ZVwiPlxyXG4gICAgICAgICAgICA8Y29yZS1tb250aC1waWNrZXIgW2xhbmddPVwibGFuZ1wiIFttb250aE9iamVjdCRdPVwiY3VycmVudE1vbnRoT2JqZWN0JFwiIChvbkNoYW5nZSk9XCJvbk1vbnRoT2JqZWN0Q2hhbmdlKCRldmVudClcIiAob25ZZWFyQ2xpY2spPVwib25Nb250aFBpY2tlclllYXJDbGljaygkZXZlbnQpXCI+PC9jb3JlLW1vbnRoLXBpY2tlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwieWVhci1waWNrZXItc2Vzc2lvblwiIFtjbGFzcy5hY3RpdmVdPVwieWVhclBpY2tlckFjdGl2ZVwiPlxyXG4gICAgICAgICAgICA8Y29yZS15ZWFyLXBpY2tlciBbbGFuZ109XCJsYW5nXCIgKG9uQ2hhbmdlKT1cIm9uWWVhclBpY2tlZCgkZXZlbnQpXCI+PC9jb3JlLXllYXItcGlja2VyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItd3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2RwLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsZWFyXCIgW2NsYXNzLm9wYWNpdHktMF09XCIhISF0ZXh0VmFsdWVcIiAoY2xpY2spPVwiY2xlYXIoKVwiPnt7ICdVSS5DT1JFX0RBVEVfUElDS0VSX0NMRUFSJyB8IHRyYW5zbGF0ZTogbGFuZyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpZ2ktd2F0Y2hcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b2RheVwiIChjbGljayk9XCJnb1RvZGF5KClcIj57eyAnVUkuQ09SRV9EQVRFX1BJQ0tFUl9UT0RBWScgfCB0cmFuc2xhdGU6IGxhbmcgfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -157,7 +157,7 @@ export class CoreMonthSelectorComponent extends CoreFormControlBaseComponent {
157
157
  multi: true,
158
158
  useExisting: CoreMonthSelectorComponent
159
159
  }
160
- ], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "monthsContainer", first: true, predicate: ["monthsContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"core-month-picker-container\">\r\n <div class=\"input-wrapper\" [ngStyle]=\"{ position: 'relative' }\">\r\n <input class=\"form-control\" type=\"text\" [ngStyle]=\"{ width: '100%' }\" [ngModel]=\"textValue\" readonly [class.form-control-disabled]=\"disabled\" [disabled]=\"disabled\"><label class=\"icon\"\r\n (click)=\"toggleOpen()\"></label>\r\n </div>\r\n\r\n <div class=\"tl-month-picker-popup\" [class.open]=\"openState\">\r\n <div [ngStyle]=\"{\r\n display: !!yearPickerActive ? 'none' : 'block',\r\n right: align === 'right' ? '0px' : 'unset',\r\n left: align === 'left' ? '0px' : 'unset'\r\n }\">\r\n <div class=\"tl-month-picker-emitter-header\">\r\n <div class=\"tl-month-picker-emitter-year\" (click)=\"onYearClickLocal(year)\">{{ year }}</div>\r\n <div class=\"arrows\">\r\n <div class=\"go-up\" (click)=\"goUp()\"></div>\r\n <div class=\"go-down\" (click)=\"goDown()\"></div>\r\n </div>\r\n </div>\r\n <div class=\"months-container-wrapper\">\r\n <div #monthsContainer class=\"months-container zoom-in\">\r\n <ul *ngFor=\"let row of months; let rowIndex=index\">\r\n <li *ngFor=\"let month of row; let subMonthIndex=index\"\r\n (click)=\"onClick(rowIndex, subMonthIndex)\">\r\n <div\r\n [class.active]=\"year === monthObject$.value.year && rowIndex * 3 + subMonthIndex === monthObject$.value!.monthIndex\">\r\n {{ month }}\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"year-picker-session\" [ngStyle]=\"{\r\n display: !!yearPickerActive ? 'block' : 'none'\r\n }\">\r\n <core-year-picker [lang]=\"lang\" (onChange)=\"onYearPicked($event)\"></core-year-picker>\r\n </div>\r\n\r\n <div class=\"cms-footer-wrapper\">\r\n <div class=\"cms-footer\">\r\n <div class=\"clear\" [class.opacity-0]=\"!!!value\" (click)=\"clear()\">{{ 'UI.CORE_DATE_PICKER_CLEAR' | translate: lang }}</div>\r\n <div class=\"digi-watch\"></div>\r\n <div class=\"this-month\" (click)=\"goThisMonth()\">{{ 'UI.CORE_DATE_PICKER_THIS_MONTH' | translate: lang }}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n</div>", styles: [".core-month-picker-container{--bg: white;--width: 276px;--header-height: 60px;--height: calc(var(var(--header-height)) + 39.42px * 7);--hover-bg-color: #358ccb;--font-bold: 700;--font-light: 400;--font-size: 13px;--cell-width: calc(var(--width) / 3);--cell-height: 50px;--popup-bg-color: white;--popup-x-padding: 12px;--arrow-font-size: 28px;--cell-size: 39.42857142857143px;--popup-width: 300px;--popup-height: 360px;--indicator-height: 29px;position:relative;background-color:var(--bg);font-size:var(--font-size)}@keyframes zoomIn{0%{opacity:0;transform:scale(2)}to{opacity:1;transform:scale(1)}}.core-month-picker-container *{-webkit-user-select:none;user-select:none}.core-month-picker-container label.icon{position:absolute;top:3px;right:3px}.core-month-picker-container label.icon:before{content:\"\";display:inline-block;aspect-ratio:1/1;width:var(--indicator-height);height:var(--indicator-height);border-radius:3px;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iMzkiIHZpZXdCb3g9IjAgMCAzOSAzOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjM5IiBoZWlnaHQ9IjM5IiBmaWxsPSIjRjVGNUY1Ii8+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8wXzEpIj4KPHJlY3Qgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTM5NyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEyNjggLTg0MikiIGZpbGw9IiNGMUYxRjEiLz4KPHJlY3QgeD0iLTEyNjgiIHk9Ii04NDIiIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEzOTciIGZpbGw9ImJsYWNrIiBmaWxsLW9wYWNpdHk9IjAuMyIvPgo8cmVjdCB4PSItNjgyIiB5PSItNjU4IiB3aWR0aD0iNzUwIiBoZWlnaHQ9Ijk5OSIgcng9IjEwIiBmaWxsPSJ3aGl0ZSIvPgo8cmVjdCB4PSItMjkwLjUiIHk9Ii0yLjUiIHdpZHRoPSIzMzIiIGhlaWdodD0iNDQiIHJ4PSI0LjUiIGZpbGw9IndoaXRlIiBzdHJva2U9IiNEMUQxRDEiLz4KPHJlY3Qgd2lkdGg9IjM5IiBoZWlnaHQ9IjM5IiByeD0iMyIgZmlsbD0iI0U5RTlFOSIvPgo8cGF0aCBkPSJNMjYuOTAwMSAxMS4wOTkxSDEyLjE5OTdDMTEuMDM5OCAxMS4wOTkxIDEwLjA5OTYgMTIuMDM5MyAxMC4wOTk2IDEzLjE5OTJWMjcuODk5NkMxMC4wOTk2IDI5LjA1OTQgMTEuMDM5OCAyOS45OTk2IDEyLjE5OTcgMjkuOTk5NkgyNi45MDAxQzI4LjA1OTkgMjkuOTk5NiAyOS4wMDAxIDI5LjA1OTQgMjkuMDAwMSAyNy44OTk2VjEzLjE5OTJDMjkuMDAwMSAxMi4wMzkzIDI4LjA1OTkgMTEuMDk5MSAyNi45MDAxIDExLjA5OTFaIiBzdHJva2U9IiM4NDg0ODQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0yMy43NTA1IDguOTk5NTFWMTMuMTk5NiIgc3Ryb2tlPSIjODQ4NDg0IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTUuMzQ5NiA4Ljk5OTUxVjEzLjE5OTYiIHN0cm9rZT0iIzg0ODQ4NCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEwLjA5OTYgMTcuMzk5NEgyOS4wMDAxIiBzdHJva2U9IiM4NDg0ODQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMF8xIj4KPHJlY3Qgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTM5NyIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMjY4IC04NDIpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==) 0px 50% no-repeat;background-size:cover;cursor:pointer}.core-month-picker-container ul{padding:0;margin:0}.core-month-picker-container ul>li{display:inline-block;width:var(--cell-width);cursor:pointer}.core-month-picker-container ul>li>div{width:var(--cell-width);height:var(--cell-height);display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:5px}.core-month-picker-container ul>li>div:hover{color:#fff;background-color:var(--hover-bg-color)}.core-month-picker-container ul>li>div.active{color:#fff;background-color:#5f9ea0}.core-month-picker-container .tl-month-picker-popup{position:absolute;overflow:hidden;z-index:var(--popup-z-index);width:var(--popup-width);height:var(--popup-height);background-color:var(--popup-bg-color);box-shadow:var(--decoration-box-shadow);border-radius:3px;padding:0 12px;display:none}.core-month-picker-container .tl-month-picker-popup.open{display:block}.core-month-picker-container .tl-month-picker-emitter-header{position:relative;height:var(--header-height);display:flex;align-items:center;justify-content:space-between}.core-month-picker-container .tl-month-picker-emitter-header .tl-month-picker-emitter-year{cursor:pointer;font-weight:var(--font-bold)}.core-month-picker-container .tl-month-picker-emitter-header .arrows{display:flex;align-items:center;justify-content:flex-end}.core-month-picker-container .tl-month-picker-emitter-header .arrows>div{margin:0 2px}.core-month-picker-container .tl-month-picker-emitter-header .arrows>div:before{font-family:feather;font-size:var(--arrow-font-size);cursor:pointer}.core-month-picker-container .tl-month-picker-emitter-header .arrows>div:hover:before{background-color:var(--hover-bg-color)}.core-month-picker-container .tl-month-picker-emitter-header .go-up:before{content:\"\\e914\"}.core-month-picker-container .tl-month-picker-emitter-header .go-down:before{content:\"\\e90c\"}.core-month-picker-container .zoom-in{animation:zoomIn .25s ease-in}.core-month-picker-container .months-container-wrapper{width:var(--width);height:calc(var(--height) - var(--header-height));overflow:hidden}.core-month-picker-container .cms-footer-wrapper{width:calc(var(--popup-width) - var(--popup-x-padding) * 2);position:absolute;bottom:var(--popup-x-padding);left:var(--popup-x-padding);background-color:var(--popup-bg-color)}.core-month-picker-container .cms-footer{width:100%;display:flex;align-items:center;justify-content:space-between}.core-month-picker-container .this-month,.core-month-picker-container .clear{width:30%;height:var(--cell-size);border-radius:calc(var(--cell-size) / 2);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center}.core-month-picker-container .this-month{background-color:var(--hover-bg-color)}.core-month-picker-container .clear{background-color:brown}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: CoreYearPickerComponent, selector: "core-year-picker", inputs: ["id", "default"], outputs: ["onChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
160
+ ], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "monthsContainer", first: true, predicate: ["monthsContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"core-month-selector-container\">\r\n <div class=\"input-wrapper\" [ngStyle]=\"{ position: 'relative' }\">\r\n <input class=\"form-control\" type=\"text\" [ngStyle]=\"{ width: '100%' }\" [ngModel]=\"textValue\" readonly [class.form-control-disabled]=\"disabled\" [disabled]=\"disabled\"><label class=\"icon\"\r\n (click)=\"toggleOpen()\"></label>\r\n </div>\r\n\r\n <div class=\"tl-month-picker-popup\" [class.open]=\"openState\">\r\n <div [ngStyle]=\"{\r\n display: !!yearPickerActive ? 'none' : 'block',\r\n right: align === 'right' ? '0px' : 'unset',\r\n left: align === 'left' ? '0px' : 'unset'\r\n }\">\r\n <div class=\"tl-month-picker-emitter-header\">\r\n <div class=\"tl-month-picker-emitter-year\" (click)=\"onYearClickLocal(year)\">{{ year }}</div>\r\n <div class=\"arrows\">\r\n <div class=\"go-up\" (click)=\"goUp()\"></div>\r\n <div class=\"go-down\" (click)=\"goDown()\"></div>\r\n </div>\r\n </div>\r\n <div class=\"months-container-wrapper\">\r\n <div #monthsContainer class=\"months-container zoom-in\">\r\n <ul *ngFor=\"let row of months; let rowIndex=index\">\r\n <li *ngFor=\"let month of row; let subMonthIndex=index\"\r\n (click)=\"onClick(rowIndex, subMonthIndex)\">\r\n <div\r\n [class.active]=\"year === monthObject$.value.year && rowIndex * 3 + subMonthIndex === monthObject$.value!.monthIndex\">\r\n {{ month }}\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"year-picker-session\" [ngStyle]=\"{\r\n display: !!yearPickerActive ? 'block' : 'none'\r\n }\">\r\n <core-year-picker [lang]=\"lang\" (onChange)=\"onYearPicked($event)\"></core-year-picker>\r\n </div>\r\n\r\n <div class=\"cms-footer-wrapper\">\r\n <div class=\"cms-footer\">\r\n <div class=\"clear\" [class.opacity-0]=\"!!!value\" (click)=\"clear()\">{{ 'UI.CORE_DATE_PICKER_CLEAR' | translate: lang }}</div>\r\n <div class=\"digi-watch\"></div>\r\n <div class=\"this-month\" (click)=\"goThisMonth()\">{{ 'UI.CORE_DATE_PICKER_THIS_MONTH' | translate: lang }}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n</div>", styles: [".core-month-selector-container{--bg: white;--width: 276px;--header-height: 60px;--height: calc(var(var(--header-height)) + 39.42px * 7);--hover-bg-color: #358ccb;--font-bold: 700;--font-light: 400;--font-size: 13px;--cell-width: calc(var(--width) / 3);--cell-height: 50px;--popup-bg-color: white;--popup-x-padding: 12px;--arrow-font-size: 28px;--cell-size: 39.42857142857143px;--popup-width: 300px;--popup-height: 360px;--indicator-height: 29px;position:relative;background-color:var(--bg);font-size:var(--font-size)}@keyframes zoomIn{0%{opacity:0;transform:scale(2)}to{opacity:1;transform:scale(1)}}.core-month-selector-container *{-webkit-user-select:none;user-select:none}.core-month-selector-container label.icon{position:absolute;top:3px;right:3px}.core-month-selector-container label.icon:before{content:\"\";display:inline-block;aspect-ratio:1/1;width:var(--indicator-height);height:var(--indicator-height);border-radius:3px;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iMzkiIHZpZXdCb3g9IjAgMCAzOSAzOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjM5IiBoZWlnaHQ9IjM5IiBmaWxsPSIjRjVGNUY1Ii8+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8wXzEpIj4KPHJlY3Qgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTM5NyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEyNjggLTg0MikiIGZpbGw9IiNGMUYxRjEiLz4KPHJlY3QgeD0iLTEyNjgiIHk9Ii04NDIiIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEzOTciIGZpbGw9ImJsYWNrIiBmaWxsLW9wYWNpdHk9IjAuMyIvPgo8cmVjdCB4PSItNjgyIiB5PSItNjU4IiB3aWR0aD0iNzUwIiBoZWlnaHQ9Ijk5OSIgcng9IjEwIiBmaWxsPSJ3aGl0ZSIvPgo8cmVjdCB4PSItMjkwLjUiIHk9Ii0yLjUiIHdpZHRoPSIzMzIiIGhlaWdodD0iNDQiIHJ4PSI0LjUiIGZpbGw9IndoaXRlIiBzdHJva2U9IiNEMUQxRDEiLz4KPHJlY3Qgd2lkdGg9IjM5IiBoZWlnaHQ9IjM5IiByeD0iMyIgZmlsbD0iI0U5RTlFOSIvPgo8cGF0aCBkPSJNMjYuOTAwMSAxMS4wOTkxSDEyLjE5OTdDMTEuMDM5OCAxMS4wOTkxIDEwLjA5OTYgMTIuMDM5MyAxMC4wOTk2IDEzLjE5OTJWMjcuODk5NkMxMC4wOTk2IDI5LjA1OTQgMTEuMDM5OCAyOS45OTk2IDEyLjE5OTcgMjkuOTk5NkgyNi45MDAxQzI4LjA1OTkgMjkuOTk5NiAyOS4wMDAxIDI5LjA1OTQgMjkuMDAwMSAyNy44OTk2VjEzLjE5OTJDMjkuMDAwMSAxMi4wMzkzIDI4LjA1OTkgMTEuMDk5MSAyNi45MDAxIDExLjA5OTFaIiBzdHJva2U9IiM4NDg0ODQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0yMy43NTA1IDguOTk5NTFWMTMuMTk5NiIgc3Ryb2tlPSIjODQ4NDg0IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTUuMzQ5NiA4Ljk5OTUxVjEzLjE5OTYiIHN0cm9rZT0iIzg0ODQ4NCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEwLjA5OTYgMTcuMzk5NEgyOS4wMDAxIiBzdHJva2U9IiM4NDg0ODQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMF8xIj4KPHJlY3Qgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTM5NyIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMjY4IC04NDIpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==) 0px 50% no-repeat;background-size:cover;cursor:pointer}.core-month-selector-container ul{padding:0;margin:0}.core-month-selector-container ul>li{display:inline-block;width:var(--cell-width);cursor:pointer}.core-month-selector-container ul>li>div{width:var(--cell-width);height:var(--cell-height);display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:5px}.core-month-selector-container ul>li>div:hover{color:#fff;background-color:var(--hover-bg-color)}.core-month-selector-container ul>li>div.active{color:#fff;background-color:#5f9ea0}.core-month-selector-container .tl-month-picker-popup{position:absolute;overflow:hidden;z-index:var(--popup-z-index);width:var(--popup-width);height:var(--popup-height);background-color:var(--popup-bg-color);box-shadow:var(--decoration-box-shadow);border-radius:3px;padding:0 12px;display:none}.core-month-selector-container .tl-month-picker-popup.open{display:block}.core-month-selector-container .tl-month-picker-emitter-header{position:relative;height:var(--header-height);display:flex;align-items:center;justify-content:space-between}.core-month-selector-container .tl-month-picker-emitter-header .tl-month-picker-emitter-year{cursor:pointer;font-weight:var(--font-bold)}.core-month-selector-container .tl-month-picker-emitter-header .arrows{display:flex;align-items:center;justify-content:flex-end}.core-month-selector-container .tl-month-picker-emitter-header .arrows>div{margin:0 2px}.core-month-selector-container .tl-month-picker-emitter-header .arrows>div:before{font-family:feather;font-size:var(--arrow-font-size);cursor:pointer}.core-month-selector-container .tl-month-picker-emitter-header .arrows>div:hover:before{background-color:var(--hover-bg-color)}.core-month-selector-container .tl-month-picker-emitter-header .go-up:before{content:\"\\e914\"}.core-month-selector-container .tl-month-picker-emitter-header .go-down:before{content:\"\\e90c\"}.core-month-selector-container .zoom-in{animation:zoomIn .25s ease-in}.core-month-selector-container .months-container-wrapper{width:var(--width);height:calc(var(--height) - var(--header-height));overflow:hidden}.core-month-selector-container .cms-footer-wrapper{width:calc(var(--popup-width) - var(--popup-x-padding) * 2);position:absolute;bottom:var(--popup-x-padding);left:var(--popup-x-padding);background-color:var(--popup-bg-color)}.core-month-selector-container .cms-footer{width:100%;display:flex;align-items:center;justify-content:space-between}.core-month-selector-container .this-month,.core-month-selector-container .clear{width:30%;height:var(--cell-size);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center}.core-month-selector-container .this-month{background-color:var(--hover-bg-color)}.core-month-selector-container .clear{background-color:brown}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: CoreYearPickerComponent, selector: "core-year-picker", inputs: ["id", "default"], outputs: ["onChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
161
161
  }
162
162
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreMonthSelectorComponent, decorators: [{
163
163
  type: Component,
@@ -172,7 +172,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
172
172
  multi: true,
173
173
  useExisting: CoreMonthSelectorComponent
174
174
  }
175
- ], template: "<div #container class=\"core-month-picker-container\">\r\n <div class=\"input-wrapper\" [ngStyle]=\"{ position: 'relative' }\">\r\n <input class=\"form-control\" type=\"text\" [ngStyle]=\"{ width: '100%' }\" [ngModel]=\"textValue\" readonly [class.form-control-disabled]=\"disabled\" [disabled]=\"disabled\"><label class=\"icon\"\r\n (click)=\"toggleOpen()\"></label>\r\n </div>\r\n\r\n <div class=\"tl-month-picker-popup\" [class.open]=\"openState\">\r\n <div [ngStyle]=\"{\r\n display: !!yearPickerActive ? 'none' : 'block',\r\n right: align === 'right' ? '0px' : 'unset',\r\n left: align === 'left' ? '0px' : 'unset'\r\n }\">\r\n <div class=\"tl-month-picker-emitter-header\">\r\n <div class=\"tl-month-picker-emitter-year\" (click)=\"onYearClickLocal(year)\">{{ year }}</div>\r\n <div class=\"arrows\">\r\n <div class=\"go-up\" (click)=\"goUp()\"></div>\r\n <div class=\"go-down\" (click)=\"goDown()\"></div>\r\n </div>\r\n </div>\r\n <div class=\"months-container-wrapper\">\r\n <div #monthsContainer class=\"months-container zoom-in\">\r\n <ul *ngFor=\"let row of months; let rowIndex=index\">\r\n <li *ngFor=\"let month of row; let subMonthIndex=index\"\r\n (click)=\"onClick(rowIndex, subMonthIndex)\">\r\n <div\r\n [class.active]=\"year === monthObject$.value.year && rowIndex * 3 + subMonthIndex === monthObject$.value!.monthIndex\">\r\n {{ month }}\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"year-picker-session\" [ngStyle]=\"{\r\n display: !!yearPickerActive ? 'block' : 'none'\r\n }\">\r\n <core-year-picker [lang]=\"lang\" (onChange)=\"onYearPicked($event)\"></core-year-picker>\r\n </div>\r\n\r\n <div class=\"cms-footer-wrapper\">\r\n <div class=\"cms-footer\">\r\n <div class=\"clear\" [class.opacity-0]=\"!!!value\" (click)=\"clear()\">{{ 'UI.CORE_DATE_PICKER_CLEAR' | translate: lang }}</div>\r\n <div class=\"digi-watch\"></div>\r\n <div class=\"this-month\" (click)=\"goThisMonth()\">{{ 'UI.CORE_DATE_PICKER_THIS_MONTH' | translate: lang }}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n</div>", styles: [".core-month-picker-container{--bg: white;--width: 276px;--header-height: 60px;--height: calc(var(var(--header-height)) + 39.42px * 7);--hover-bg-color: #358ccb;--font-bold: 700;--font-light: 400;--font-size: 13px;--cell-width: calc(var(--width) / 3);--cell-height: 50px;--popup-bg-color: white;--popup-x-padding: 12px;--arrow-font-size: 28px;--cell-size: 39.42857142857143px;--popup-width: 300px;--popup-height: 360px;--indicator-height: 29px;position:relative;background-color:var(--bg);font-size:var(--font-size)}@keyframes zoomIn{0%{opacity:0;transform:scale(2)}to{opacity:1;transform:scale(1)}}.core-month-picker-container *{-webkit-user-select:none;user-select:none}.core-month-picker-container label.icon{position:absolute;top:3px;right:3px}.core-month-picker-container label.icon:before{content:\"\";display:inline-block;aspect-ratio:1/1;width:var(--indicator-height);height:var(--indicator-height);border-radius:3px;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iMzkiIHZpZXdCb3g9IjAgMCAzOSAzOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjM5IiBoZWlnaHQ9IjM5IiBmaWxsPSIjRjVGNUY1Ii8+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8wXzEpIj4KPHJlY3Qgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTM5NyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEyNjggLTg0MikiIGZpbGw9IiNGMUYxRjEiLz4KPHJlY3QgeD0iLTEyNjgiIHk9Ii04NDIiIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEzOTciIGZpbGw9ImJsYWNrIiBmaWxsLW9wYWNpdHk9IjAuMyIvPgo8cmVjdCB4PSItNjgyIiB5PSItNjU4IiB3aWR0aD0iNzUwIiBoZWlnaHQ9Ijk5OSIgcng9IjEwIiBmaWxsPSJ3aGl0ZSIvPgo8cmVjdCB4PSItMjkwLjUiIHk9Ii0yLjUiIHdpZHRoPSIzMzIiIGhlaWdodD0iNDQiIHJ4PSI0LjUiIGZpbGw9IndoaXRlIiBzdHJva2U9IiNEMUQxRDEiLz4KPHJlY3Qgd2lkdGg9IjM5IiBoZWlnaHQ9IjM5IiByeD0iMyIgZmlsbD0iI0U5RTlFOSIvPgo8cGF0aCBkPSJNMjYuOTAwMSAxMS4wOTkxSDEyLjE5OTdDMTEuMDM5OCAxMS4wOTkxIDEwLjA5OTYgMTIuMDM5MyAxMC4wOTk2IDEzLjE5OTJWMjcuODk5NkMxMC4wOTk2IDI5LjA1OTQgMTEuMDM5OCAyOS45OTk2IDEyLjE5OTcgMjkuOTk5NkgyNi45MDAxQzI4LjA1OTkgMjkuOTk5NiAyOS4wMDAxIDI5LjA1OTQgMjkuMDAwMSAyNy44OTk2VjEzLjE5OTJDMjkuMDAwMSAxMi4wMzkzIDI4LjA1OTkgMTEuMDk5MSAyNi45MDAxIDExLjA5OTFaIiBzdHJva2U9IiM4NDg0ODQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0yMy43NTA1IDguOTk5NTFWMTMuMTk5NiIgc3Ryb2tlPSIjODQ4NDg0IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTUuMzQ5NiA4Ljk5OTUxVjEzLjE5OTYiIHN0cm9rZT0iIzg0ODQ4NCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEwLjA5OTYgMTcuMzk5NEgyOS4wMDAxIiBzdHJva2U9IiM4NDg0ODQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMF8xIj4KPHJlY3Qgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTM5NyIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMjY4IC04NDIpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==) 0px 50% no-repeat;background-size:cover;cursor:pointer}.core-month-picker-container ul{padding:0;margin:0}.core-month-picker-container ul>li{display:inline-block;width:var(--cell-width);cursor:pointer}.core-month-picker-container ul>li>div{width:var(--cell-width);height:var(--cell-height);display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:5px}.core-month-picker-container ul>li>div:hover{color:#fff;background-color:var(--hover-bg-color)}.core-month-picker-container ul>li>div.active{color:#fff;background-color:#5f9ea0}.core-month-picker-container .tl-month-picker-popup{position:absolute;overflow:hidden;z-index:var(--popup-z-index);width:var(--popup-width);height:var(--popup-height);background-color:var(--popup-bg-color);box-shadow:var(--decoration-box-shadow);border-radius:3px;padding:0 12px;display:none}.core-month-picker-container .tl-month-picker-popup.open{display:block}.core-month-picker-container .tl-month-picker-emitter-header{position:relative;height:var(--header-height);display:flex;align-items:center;justify-content:space-between}.core-month-picker-container .tl-month-picker-emitter-header .tl-month-picker-emitter-year{cursor:pointer;font-weight:var(--font-bold)}.core-month-picker-container .tl-month-picker-emitter-header .arrows{display:flex;align-items:center;justify-content:flex-end}.core-month-picker-container .tl-month-picker-emitter-header .arrows>div{margin:0 2px}.core-month-picker-container .tl-month-picker-emitter-header .arrows>div:before{font-family:feather;font-size:var(--arrow-font-size);cursor:pointer}.core-month-picker-container .tl-month-picker-emitter-header .arrows>div:hover:before{background-color:var(--hover-bg-color)}.core-month-picker-container .tl-month-picker-emitter-header .go-up:before{content:\"\\e914\"}.core-month-picker-container .tl-month-picker-emitter-header .go-down:before{content:\"\\e90c\"}.core-month-picker-container .zoom-in{animation:zoomIn .25s ease-in}.core-month-picker-container .months-container-wrapper{width:var(--width);height:calc(var(--height) - var(--header-height));overflow:hidden}.core-month-picker-container .cms-footer-wrapper{width:calc(var(--popup-width) - var(--popup-x-padding) * 2);position:absolute;bottom:var(--popup-x-padding);left:var(--popup-x-padding);background-color:var(--popup-bg-color)}.core-month-picker-container .cms-footer{width:100%;display:flex;align-items:center;justify-content:space-between}.core-month-picker-container .this-month,.core-month-picker-container .clear{width:30%;height:var(--cell-size);border-radius:calc(var(--cell-size) / 2);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center}.core-month-picker-container .this-month{background-color:var(--hover-bg-color)}.core-month-picker-container .clear{background-color:brown}\n"] }]
175
+ ], template: "<div #container class=\"core-month-selector-container\">\r\n <div class=\"input-wrapper\" [ngStyle]=\"{ position: 'relative' }\">\r\n <input class=\"form-control\" type=\"text\" [ngStyle]=\"{ width: '100%' }\" [ngModel]=\"textValue\" readonly [class.form-control-disabled]=\"disabled\" [disabled]=\"disabled\"><label class=\"icon\"\r\n (click)=\"toggleOpen()\"></label>\r\n </div>\r\n\r\n <div class=\"tl-month-picker-popup\" [class.open]=\"openState\">\r\n <div [ngStyle]=\"{\r\n display: !!yearPickerActive ? 'none' : 'block',\r\n right: align === 'right' ? '0px' : 'unset',\r\n left: align === 'left' ? '0px' : 'unset'\r\n }\">\r\n <div class=\"tl-month-picker-emitter-header\">\r\n <div class=\"tl-month-picker-emitter-year\" (click)=\"onYearClickLocal(year)\">{{ year }}</div>\r\n <div class=\"arrows\">\r\n <div class=\"go-up\" (click)=\"goUp()\"></div>\r\n <div class=\"go-down\" (click)=\"goDown()\"></div>\r\n </div>\r\n </div>\r\n <div class=\"months-container-wrapper\">\r\n <div #monthsContainer class=\"months-container zoom-in\">\r\n <ul *ngFor=\"let row of months; let rowIndex=index\">\r\n <li *ngFor=\"let month of row; let subMonthIndex=index\"\r\n (click)=\"onClick(rowIndex, subMonthIndex)\">\r\n <div\r\n [class.active]=\"year === monthObject$.value.year && rowIndex * 3 + subMonthIndex === monthObject$.value!.monthIndex\">\r\n {{ month }}\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"year-picker-session\" [ngStyle]=\"{\r\n display: !!yearPickerActive ? 'block' : 'none'\r\n }\">\r\n <core-year-picker [lang]=\"lang\" (onChange)=\"onYearPicked($event)\"></core-year-picker>\r\n </div>\r\n\r\n <div class=\"cms-footer-wrapper\">\r\n <div class=\"cms-footer\">\r\n <div class=\"clear\" [class.opacity-0]=\"!!!value\" (click)=\"clear()\">{{ 'UI.CORE_DATE_PICKER_CLEAR' | translate: lang }}</div>\r\n <div class=\"digi-watch\"></div>\r\n <div class=\"this-month\" (click)=\"goThisMonth()\">{{ 'UI.CORE_DATE_PICKER_THIS_MONTH' | translate: lang }}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n</div>", styles: [".core-month-selector-container{--bg: white;--width: 276px;--header-height: 60px;--height: calc(var(var(--header-height)) + 39.42px * 7);--hover-bg-color: #358ccb;--font-bold: 700;--font-light: 400;--font-size: 13px;--cell-width: calc(var(--width) / 3);--cell-height: 50px;--popup-bg-color: white;--popup-x-padding: 12px;--arrow-font-size: 28px;--cell-size: 39.42857142857143px;--popup-width: 300px;--popup-height: 360px;--indicator-height: 29px;position:relative;background-color:var(--bg);font-size:var(--font-size)}@keyframes zoomIn{0%{opacity:0;transform:scale(2)}to{opacity:1;transform:scale(1)}}.core-month-selector-container *{-webkit-user-select:none;user-select:none}.core-month-selector-container label.icon{position:absolute;top:3px;right:3px}.core-month-selector-container label.icon:before{content:\"\";display:inline-block;aspect-ratio:1/1;width:var(--indicator-height);height:var(--indicator-height);border-radius:3px;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iMzkiIHZpZXdCb3g9IjAgMCAzOSAzOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjM5IiBoZWlnaHQ9IjM5IiBmaWxsPSIjRjVGNUY1Ii8+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8wXzEpIj4KPHJlY3Qgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTM5NyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEyNjggLTg0MikiIGZpbGw9IiNGMUYxRjEiLz4KPHJlY3QgeD0iLTEyNjgiIHk9Ii04NDIiIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEzOTciIGZpbGw9ImJsYWNrIiBmaWxsLW9wYWNpdHk9IjAuMyIvPgo8cmVjdCB4PSItNjgyIiB5PSItNjU4IiB3aWR0aD0iNzUwIiBoZWlnaHQ9Ijk5OSIgcng9IjEwIiBmaWxsPSJ3aGl0ZSIvPgo8cmVjdCB4PSItMjkwLjUiIHk9Ii0yLjUiIHdpZHRoPSIzMzIiIGhlaWdodD0iNDQiIHJ4PSI0LjUiIGZpbGw9IndoaXRlIiBzdHJva2U9IiNEMUQxRDEiLz4KPHJlY3Qgd2lkdGg9IjM5IiBoZWlnaHQ9IjM5IiByeD0iMyIgZmlsbD0iI0U5RTlFOSIvPgo8cGF0aCBkPSJNMjYuOTAwMSAxMS4wOTkxSDEyLjE5OTdDMTEuMDM5OCAxMS4wOTkxIDEwLjA5OTYgMTIuMDM5MyAxMC4wOTk2IDEzLjE5OTJWMjcuODk5NkMxMC4wOTk2IDI5LjA1OTQgMTEuMDM5OCAyOS45OTk2IDEyLjE5OTcgMjkuOTk5NkgyNi45MDAxQzI4LjA1OTkgMjkuOTk5NiAyOS4wMDAxIDI5LjA1OTQgMjkuMDAwMSAyNy44OTk2VjEzLjE5OTJDMjkuMDAwMSAxMi4wMzkzIDI4LjA1OTkgMTEuMDk5MSAyNi45MDAxIDExLjA5OTFaIiBzdHJva2U9IiM4NDg0ODQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0yMy43NTA1IDguOTk5NTFWMTMuMTk5NiIgc3Ryb2tlPSIjODQ4NDg0IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTUuMzQ5NiA4Ljk5OTUxVjEzLjE5OTYiIHN0cm9rZT0iIzg0ODQ4NCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEwLjA5OTYgMTcuMzk5NEgyOS4wMDAxIiBzdHJva2U9IiM4NDg0ODQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMF8xIj4KPHJlY3Qgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTM5NyIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMjY4IC04NDIpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==) 0px 50% no-repeat;background-size:cover;cursor:pointer}.core-month-selector-container ul{padding:0;margin:0}.core-month-selector-container ul>li{display:inline-block;width:var(--cell-width);cursor:pointer}.core-month-selector-container ul>li>div{width:var(--cell-width);height:var(--cell-height);display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:5px}.core-month-selector-container ul>li>div:hover{color:#fff;background-color:var(--hover-bg-color)}.core-month-selector-container ul>li>div.active{color:#fff;background-color:#5f9ea0}.core-month-selector-container .tl-month-picker-popup{position:absolute;overflow:hidden;z-index:var(--popup-z-index);width:var(--popup-width);height:var(--popup-height);background-color:var(--popup-bg-color);box-shadow:var(--decoration-box-shadow);border-radius:3px;padding:0 12px;display:none}.core-month-selector-container .tl-month-picker-popup.open{display:block}.core-month-selector-container .tl-month-picker-emitter-header{position:relative;height:var(--header-height);display:flex;align-items:center;justify-content:space-between}.core-month-selector-container .tl-month-picker-emitter-header .tl-month-picker-emitter-year{cursor:pointer;font-weight:var(--font-bold)}.core-month-selector-container .tl-month-picker-emitter-header .arrows{display:flex;align-items:center;justify-content:flex-end}.core-month-selector-container .tl-month-picker-emitter-header .arrows>div{margin:0 2px}.core-month-selector-container .tl-month-picker-emitter-header .arrows>div:before{font-family:feather;font-size:var(--arrow-font-size);cursor:pointer}.core-month-selector-container .tl-month-picker-emitter-header .arrows>div:hover:before{background-color:var(--hover-bg-color)}.core-month-selector-container .tl-month-picker-emitter-header .go-up:before{content:\"\\e914\"}.core-month-selector-container .tl-month-picker-emitter-header .go-down:before{content:\"\\e90c\"}.core-month-selector-container .zoom-in{animation:zoomIn .25s ease-in}.core-month-selector-container .months-container-wrapper{width:var(--width);height:calc(var(--height) - var(--header-height));overflow:hidden}.core-month-selector-container .cms-footer-wrapper{width:calc(var(--popup-width) - var(--popup-x-padding) * 2);position:absolute;bottom:var(--popup-x-padding);left:var(--popup-x-padding);background-color:var(--popup-bg-color)}.core-month-selector-container .cms-footer{width:100%;display:flex;align-items:center;justify-content:space-between}.core-month-selector-container .this-month,.core-month-selector-container .clear{width:30%;height:var(--cell-size);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center}.core-month-selector-container .this-month{background-color:var(--hover-bg-color)}.core-month-selector-container .clear{background-color:brown}\n"] }]
176
176
  }], ctorParameters: () => [{ type: i1.CoreDatetimeService }, { type: i2.MultiLanguageService }, { type: i0.Renderer2 }, { type: i3.DomService }], propDecorators: { align: [{
177
177
  type: Input
178
178
  }], onYearClick: [{
@@ -184,4 +184,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
184
184
  type: ViewChild,
185
185
  args: ['monthsContainer']
186
186
  }] } });
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1tb250aC1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1tb250aC1zZWxlY3Rvci9jb3JlLW1vbnRoLXNlbGVjdG9yL2NvcmUtbW9udGgtc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtbW9udGgtc2VsZWN0b3IvY29yZS1tb250aC1zZWxlY3Rvci9jb3JlLW1vbnRoLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUE0QixLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0ksT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBRzdHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUM3RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7QUFxQmxFLE1BQU0sT0FBTywwQkFBMkIsU0FBUSw0QkFBNEI7SUFjakUsVUFBVSxDQUFDLEdBQVc7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7UUFDakIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXZCLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixJQUFJLEVBQUUsR0FBRyxDQUFDLFdBQVcsRUFBRTtnQkFDdkIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUU7YUFDM0IsQ0FBQyxDQUFBO1NBQ0g7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9CLFVBQVUsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7YUFDMUMsQ0FBQyxDQUFBO1NBQ0g7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUE7U0FDakU7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQVlELFlBQ1UsbUJBQXdDLEVBQ3hDLEdBQXlCLEVBQ2hCLFFBQW1CLEVBQ25CLFVBQXNCO1FBR3ZDLEtBQUssRUFBRSxDQUFDO1FBTkEsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxRQUFHLEdBQUgsR0FBRyxDQUFzQjtRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQVk7UUF0RGhDLFVBQUssR0FBVyxPQUFPLENBQUM7UUFFdkIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBTW5ELFNBQUksR0FBVyxJQUFJLENBQUM7UUFnQ3BCLFdBQU0sR0FBZSxFQUFFLENBQUM7UUFPeEIsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBWWpDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25ELENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkQsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRCxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3RELENBQUM7UUFHRixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxlQUFlLENBQWlCO1lBQ3RELElBQUksRUFBRSxHQUFHLENBQUMsV0FBVyxFQUFFO1lBQ3ZCLFVBQVUsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBRU4sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQTtZQUViLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQztZQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHO2dCQUNaLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdEQsQ0FBQztZQUVGLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV6QixDQUFDLENBQUMsQ0FDSCxDQUFBO0lBR0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFRLEVBQUUsRUFBRTtZQUNyRSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDeEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7YUFDeEI7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUVGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUUvRSxDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQWdCLEVBQUUsYUFBcUI7UUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsVUFBVSxFQUFFLFFBQVEsR0FBRyxDQUFDLEdBQUcsYUFBYTtTQUN6QyxDQUFDLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM3RixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUM7UUFDbkQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUNwQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVk7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsWUFBWSxDQUFDLENBQU07UUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFNO1FBQzNCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTTtRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN6QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQTtRQUM3QyxJQUFJLElBQUksQ0FBQyxVQUFVO1lBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3pDLENBQUM7OEdBdExVLDBCQUEwQjtrR0FBMUIsMEJBQTBCLHVJQVIxQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLEtBQUssRUFBRSxJQUFJO2dCQUNYLFdBQVcsRUFBRSwwQkFBMEI7YUFDeEM7U0FDRiw4UEM1QkgsK2xGQWtETSx5a0xEbkNGLFdBQVcsOG1CQUNYLFlBQVksaVBBQ1osdUJBQXVCLDBHQUN2QixhQUFhOzsyRkFZSiwwQkFBMEI7a0JBbkJ0QyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1A7d0JBQ1AsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLHVCQUF1Qjt3QkFDdkIsYUFBYTtxQkFDZCxhQUdVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsNEJBQTRCO3lCQUN4QztxQkFDRjs0S0FJUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNRLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgUmVuZGVyZXIyLCBBZnRlclZpZXdJbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb3JlRGF0ZXRpbWVTZXJ2aWNlLCBJTW9udGhJZGVudGl0eSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvcmUtZGF0ZXRpbWUuc2VydmljZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtZm9ybS1jb250cm9sLWJhc2UvY29yZS1mb3JtLWNvbnRyb2wtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEb21TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZG9tLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb3JlWWVhclBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUteWVhci1waWNrZXIvY29yZS15ZWFyLXBpY2tlci9jb3JlLXllYXItcGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9hcHAtcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLW1vbnRoLXNlbGVjdG9yJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgQ29yZVllYXJQaWNrZXJDb21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVQaXBlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1tb250aC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS1tb250aC1zZWxlY3Rvci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBDb3JlTW9udGhTZWxlY3RvckNvbXBvbmVudFxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVNb250aFNlbGVjdG9yQ29tcG9uZW50IGV4dGVuZHMgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQElucHV0KCkgYWxpZ246IHN0cmluZyA9ICdyaWdodCc7XHJcblxyXG4gIEBPdXRwdXQoKSBvblllYXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnbW9udGhzQ29udGFpbmVyJykgbW9udGhzQ29udGFpbmVyITogRWxlbWVudFJlZjtcclxuXHJcbiAgb3ZlcnJpZGUgdmFsdWUhOiBzdHJpbmc7XHJcblxyXG4gIGxhbmc6IHN0cmluZyA9ICd2aSc7XHJcbiAgbW9udGhPYmplY3QkITogQmVoYXZpb3JTdWJqZWN0PElNb250aElkZW50aXR5PjtcclxuICBsaXN0ZW5lckZuITogKCkgPT4gdm9pZDtcclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZShvYmo6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IG9iajtcclxuICAgIHRoaXMudXBkYXRlVGV4dFZhbHVlKCk7XHJcblxyXG4gICAgaWYgKCFvYmopIHtcclxuICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgICAgdGhpcy5tb250aE9iamVjdCQubmV4dCh7XHJcbiAgICAgICAgeWVhcjogbm93LmdldEZ1bGxZZWFyKCksXHJcbiAgICAgICAgbW9udGhJbmRleDogbm93LmdldE1vbnRoKClcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubW9udGhPYmplY3QkLm5leHQoe1xyXG4gICAgICAgIHllYXI6IE51bWJlcihvYmouc3BsaXQoJy0nKVswXSksXHJcbiAgICAgICAgbW9udGhJbmRleDogTnVtYmVyKG9iai5zcGxpdCgnLScpWzFdKSAtIDFcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVRleHRWYWx1ZSgpOiB2b2lkIHtcclxuICAgIGlmICghIXRoaXMudmFsdWUpIHtcclxuICAgICAgY29uc3QgeWVhciA9IE51bWJlcih0aGlzLnZhbHVlLnNwbGl0KCctJylbMF0pO1xyXG4gICAgICBjb25zdCBtb250aEluZGV4ID0gTnVtYmVyKHRoaXMudmFsdWUuc3BsaXQoJy0nKVsxXSkgLSAxO1xyXG4gICAgICB0aGlzLnRleHRWYWx1ZSA9IHRoaXMubW9udGhTdHJpbmdBcnJheVttb250aEluZGV4XSArICcsICcgKyB5ZWFyXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRleHRWYWx1ZSA9IFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb250aHM6IHN0cmluZ1tdW10gPSBbXTtcclxuICB5ZWFyITogbnVtYmVyO1xyXG4gIHRleHRWYWx1ZSE6IHN0cmluZztcclxuXHJcbiAgeWVhclBpY2tlckFjdGl2ZSE6IGJvb2xlYW47XHJcbiAgb3BlblN0YXRlITogYm9vbGVhbjtcclxuXHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBtb250aFN0cmluZ0FycmF5ITogc3RyaW5nW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb3JlRGF0ZXRpbWVTZXJ2aWNlOiBDb3JlRGF0ZXRpbWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb21TZXJ2aWNlOiBEb21TZXJ2aWNlLFxyXG5cclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcblxyXG4gICAgY29uc3QgbW9udGhTdHJpbmdzID0gdGhpcy5jb3JlRGF0ZXRpbWVTZXJ2aWNlLmdldE1vbnRoTmFtZXModGhpcy5sYW5nIHx8ICd2aScpO1xyXG4gICAgdGhpcy5tb250aFN0cmluZ0FycmF5ID0gbW9udGhTdHJpbmdzO1xyXG4gICAgdGhpcy5tb250aHMgPSBbXHJcbiAgICAgIFttb250aFN0cmluZ3NbMF0sIG1vbnRoU3RyaW5nc1sxXSwgbW9udGhTdHJpbmdzWzJdXSxcclxuICAgICAgW21vbnRoU3RyaW5nc1szXSwgbW9udGhTdHJpbmdzWzRdLCBtb250aFN0cmluZ3NbNV1dLFxyXG4gICAgICBbbW9udGhTdHJpbmdzWzZdLCBtb250aFN0cmluZ3NbN10sIG1vbnRoU3RyaW5nc1s4XV0sXHJcbiAgICAgIFttb250aFN0cmluZ3NbOV0sIG1vbnRoU3RyaW5nc1sxMF0sIG1vbnRoU3RyaW5nc1sxMV1dXHJcbiAgICBdO1xyXG5cclxuXHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgdGhpcy5tb250aE9iamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElNb250aElkZW50aXR5Pih7XHJcbiAgICAgIHllYXI6IG5vdy5nZXRGdWxsWWVhcigpLFxyXG4gICAgICBtb250aEluZGV4OiBub3cuZ2V0TW9udGgoKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLm1vbnRoT2JqZWN0JC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgIHRoaXMueWVhciA9IHgueWVhcjtcclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLmxhbmcgPSB4XHJcblxyXG4gICAgICAgIGNvbnN0IG1vbnRoU3RyaW5ncyA9IHRoaXMuY29yZURhdGV0aW1lU2VydmljZS5nZXRNb250aE5hbWVzKHgpO1xyXG4gICAgICAgIHRoaXMubW9udGhTdHJpbmdBcnJheSA9IG1vbnRoU3RyaW5ncztcclxuICAgICAgICB0aGlzLm1vbnRocyA9IFtcclxuICAgICAgICAgIFttb250aFN0cmluZ3NbMF0sIG1vbnRoU3RyaW5nc1sxXSwgbW9udGhTdHJpbmdzWzJdXSxcclxuICAgICAgICAgIFttb250aFN0cmluZ3NbM10sIG1vbnRoU3RyaW5nc1s0XSwgbW9udGhTdHJpbmdzWzVdXSxcclxuICAgICAgICAgIFttb250aFN0cmluZ3NbNl0sIG1vbnRoU3RyaW5nc1s3XSwgbW9udGhTdHJpbmdzWzhdXSxcclxuICAgICAgICAgIFttb250aFN0cmluZ3NbOV0sIG1vbnRoU3RyaW5nc1sxMF0sIG1vbnRoU3RyaW5nc1sxMV1dXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVUZXh0VmFsdWUoKTtcclxuICAgIFxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxpc3RlbmVyRm4gPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ2NsaWNrJywgKGU6IEV2ZW50KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmNvbnRhaW5lciAmJiAhISF0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGUudGFyZ2V0KSkge1xyXG4gICAgICAgIHRoaXMub3BlblN0YXRlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgY29uc3QgbWF4WkluZGV4ID0gdGhpcy5kb21TZXJ2aWNlLmdldE1heFpJbmRleCgpO1xyXG4gICAgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wb3B1cC16LWluZGV4JywgbWF4WkluZGV4KTtcclxuXHJcbiAgfVxyXG5cclxuICBvbkNsaWNrKHJvd0luZGV4OiBudW1iZXIsIHN1Yk1vbnRoSW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5tb250aE9iamVjdCQubmV4dCh7XHJcbiAgICAgIHllYXI6IHRoaXMueWVhcixcclxuICAgICAgbW9udGhJbmRleDogcm93SW5kZXggKiAzICsgc3ViTW9udGhJbmRleFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuY29yZURhdGV0aW1lU2VydmljZS5tb250aElkZW50aXR5VG9Nb250aFN0cmluZyh0aGlzLm1vbnRoT2JqZWN0JC52YWx1ZSlcclxuICAgIHRoaXMud3JpdGVWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlKTtcclxuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgdGhpcy5vcGVuU3RhdGUgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHRyaWdnZXJSZWZsb3coKSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5tb250aHNDb250YWluZXIubmF0aXZlRWxlbWVudDtcclxuICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcInpvb20taW5cIik7XHJcbiAgICBlbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiBlbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJ6b29tLWluXCIpKTtcclxuICB9XHJcblxyXG4gIGdvVXAoKSB7XHJcbiAgICB0aGlzLnllYXIgLT0gMTtcclxuICAgIHRoaXMudHJpZ2dlclJlZmxvdygpO1xyXG4gIH1cclxuXHJcbiAgZ29Eb3duKCkge1xyXG4gICAgdGhpcy55ZWFyICs9IDE7XHJcbiAgICB0aGlzLnRyaWdnZXJSZWZsb3coKTtcclxuICB9XHJcblxyXG4gIG9uWWVhckNsaWNrTG9jYWwoeWVhcjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnllYXJQaWNrZXJBY3RpdmUgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb25ZZWFyUGlja2VkKGU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy55ZWFyID0gZTtcclxuICAgIHRoaXMueWVhclBpY2tlckFjdGl2ZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlT3BlbigpIHtcclxuICAgIGlmICghIXRoaXMucmVhZG9ubHkpIHJldHVyblxyXG4gICAgaWYgKCEhdGhpcy5kaXNhYmxlZCkgcmV0dXJuXHJcbiAgICB0aGlzLm9wZW5TdGF0ZSA9ICF0aGlzLm9wZW5TdGF0ZTtcclxuICB9XHJcblxyXG4gIGNsZWFyKCkge1xyXG4gICAgdGhpcy52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy50ZXh0VmFsdWUgPSAnJztcclxuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSgnJyk7XHJcbiAgICB0aGlzLm9wZW5TdGF0ZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ29UaGlzTW9udGgoKSB7XHJcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY29yZURhdGV0aW1lU2VydmljZS5kYXRlVG9Nb250aFN0cmluZyh0b2RheSk7XHJcbiAgICB0aGlzLndyaXRlVmFsdWUodmFsdWUpO1xyXG4gICAgdGhpcy51cGRhdGVUZXh0VmFsdWUoKTtcclxuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMub3BlblN0YXRlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4Py51bnN1YnNjcmliZSgpKVxyXG4gICAgaWYgKHRoaXMubGlzdGVuZXJGbikgdGhpcy5saXN0ZW5lckZuKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICNjb250YWluZXIgY2xhc3M9XCJjb3JlLW1vbnRoLXBpY2tlci1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCIgW25nU3R5bGVdPVwieyBwb3NpdGlvbjogJ3JlbGF0aXZlJyB9XCI+XHJcbiAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgdHlwZT1cInRleHRcIiBbbmdTdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScgfVwiIFtuZ01vZGVsXT1cInRleHRWYWx1ZVwiIHJlYWRvbmx5IFtjbGFzcy5mb3JtLWNvbnRyb2wtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj48bGFiZWwgY2xhc3M9XCJpY29uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU9wZW4oKVwiPjwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwidGwtbW9udGgtcGlja2VyLXBvcHVwXCIgW2NsYXNzLm9wZW5dPVwib3BlblN0YXRlXCI+XHJcbiAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6ICEheWVhclBpY2tlckFjdGl2ZSA/ICdub25lJyA6ICdibG9jaycsXHJcbiAgICAgICAgICAgIHJpZ2h0OiBhbGlnbiA9PT0gJ3JpZ2h0JyA/ICcwcHgnIDogJ3Vuc2V0JyxcclxuICAgICAgICAgICAgbGVmdDogYWxpZ24gPT09ICdsZWZ0JyA/ICcwcHgnIDogJ3Vuc2V0J1xyXG4gICAgICAgIH1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRsLW1vbnRoLXBpY2tlci1lbWl0dGVyLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRsLW1vbnRoLXBpY2tlci1lbWl0dGVyLXllYXJcIiAoY2xpY2spPVwib25ZZWFyQ2xpY2tMb2NhbCh5ZWFyKVwiPnt7IHllYXIgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcnJvd3NcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ28tdXBcIiAoY2xpY2spPVwiZ29VcCgpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvLWRvd25cIiAoY2xpY2spPVwiZ29Eb3duKClcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRocy1jb250YWluZXItd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAjbW9udGhzQ29udGFpbmVyIGNsYXNzPVwibW9udGhzLWNvbnRhaW5lciB6b29tLWluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0Zvcj1cImxldCByb3cgb2YgbW9udGhzOyBsZXQgcm93SW5kZXg9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBtb250aCBvZiByb3c7IGxldCBzdWJNb250aEluZGV4PWluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrKHJvd0luZGV4LCBzdWJNb250aEluZGV4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwieWVhciA9PT0gbW9udGhPYmplY3QkLnZhbHVlLnllYXIgJiYgcm93SW5kZXggKiAzICsgIHN1Yk1vbnRoSW5kZXggPT09IG1vbnRoT2JqZWN0JC52YWx1ZSEubW9udGhJbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG1vbnRoIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwieWVhci1waWNrZXItc2Vzc2lvblwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgZGlzcGxheTogISF5ZWFyUGlja2VyQWN0aXZlID8gJ2Jsb2NrJyA6ICdub25lJ1xyXG4gICAgICAgIH1cIj5cclxuICAgICAgICAgICAgPGNvcmUteWVhci1waWNrZXIgW2xhbmddPVwibGFuZ1wiIChvbkNoYW5nZSk9XCJvblllYXJQaWNrZWQoJGV2ZW50KVwiPjwvY29yZS15ZWFyLXBpY2tlcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNtcy1mb290ZXItd3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY21zLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsZWFyXCIgW2NsYXNzLm9wYWNpdHktMF09XCIhISF2YWx1ZVwiIChjbGljayk9XCJjbGVhcigpXCI+e3sgJ1VJLkNPUkVfREFURV9QSUNLRVJfQ0xFQVInIHwgdHJhbnNsYXRlOiBsYW5nIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlnaS13YXRjaFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoaXMtbW9udGhcIiAoY2xpY2spPVwiZ29UaGlzTW9udGgoKVwiPnt7ICdVSS5DT1JFX0RBVEVfUElDS0VSX1RISVNfTU9OVEgnIHwgdHJhbnNsYXRlOiBsYW5nIH19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuPC9kaXY+Il19
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1tb250aC1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1tb250aC1zZWxlY3Rvci9jb3JlLW1vbnRoLXNlbGVjdG9yL2NvcmUtbW9udGgtc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtbW9udGgtc2VsZWN0b3IvY29yZS1tb250aC1zZWxlY3Rvci9jb3JlLW1vbnRoLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUE0QixLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0ksT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBRzdHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUM3RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7QUFxQmxFLE1BQU0sT0FBTywwQkFBMkIsU0FBUSw0QkFBNEI7SUFjakUsVUFBVSxDQUFDLEdBQVc7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7UUFDakIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXZCLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixJQUFJLEVBQUUsR0FBRyxDQUFDLFdBQVcsRUFBRTtnQkFDdkIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUU7YUFDM0IsQ0FBQyxDQUFBO1NBQ0g7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9CLFVBQVUsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7YUFDMUMsQ0FBQyxDQUFBO1NBQ0g7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUE7U0FDakU7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQVlELFlBQ1UsbUJBQXdDLEVBQ3hDLEdBQXlCLEVBQ2hCLFFBQW1CLEVBQ25CLFVBQXNCO1FBR3ZDLEtBQUssRUFBRSxDQUFDO1FBTkEsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxRQUFHLEdBQUgsR0FBRyxDQUFzQjtRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQVk7UUF0RGhDLFVBQUssR0FBVyxPQUFPLENBQUM7UUFFdkIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBTW5ELFNBQUksR0FBVyxJQUFJLENBQUM7UUFnQ3BCLFdBQU0sR0FBZSxFQUFFLENBQUM7UUFPeEIsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBWWpDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25ELENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkQsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRCxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3RELENBQUM7UUFHRixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxlQUFlLENBQWlCO1lBQ3RELElBQUksRUFBRSxHQUFHLENBQUMsV0FBVyxFQUFFO1lBQ3ZCLFVBQVUsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBRU4sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQTtZQUViLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQztZQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHO2dCQUNaLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdEQsQ0FBQztZQUVGLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV6QixDQUFDLENBQUMsQ0FDSCxDQUFBO0lBR0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFRLEVBQUUsRUFBRTtZQUNyRSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDeEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7YUFDeEI7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUVGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUUvRSxDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQWdCLEVBQUUsYUFBcUI7UUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsVUFBVSxFQUFFLFFBQVEsR0FBRyxDQUFDLEdBQUcsYUFBYTtTQUN6QyxDQUFDLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM3RixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUM7UUFDbkQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUNwQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVk7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsWUFBWSxDQUFDLENBQU07UUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFNO1FBQzNCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTTtRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN6QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQTtRQUM3QyxJQUFJLElBQUksQ0FBQyxVQUFVO1lBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3pDLENBQUM7OEdBdExVLDBCQUEwQjtrR0FBMUIsMEJBQTBCLHVJQVIxQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLEtBQUssRUFBRSxJQUFJO2dCQUNYLFdBQVcsRUFBRSwwQkFBMEI7YUFDeEM7U0FDRiw4UEM1QkgsaW1GQWtETSxzbExEbkNGLFdBQVcsOG1CQUNYLFlBQVksaVBBQ1osdUJBQXVCLDBHQUN2QixhQUFhOzsyRkFZSiwwQkFBMEI7a0JBbkJ0QyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1A7d0JBQ1AsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLHVCQUF1Qjt3QkFDdkIsYUFBYTtxQkFDZCxhQUdVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsNEJBQTRCO3lCQUN4QztxQkFDRjs0S0FJUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNRLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgUmVuZGVyZXIyLCBBZnRlclZpZXdJbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb3JlRGF0ZXRpbWVTZXJ2aWNlLCBJTW9udGhJZGVudGl0eSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvcmUtZGF0ZXRpbWUuc2VydmljZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtZm9ybS1jb250cm9sLWJhc2UvY29yZS1mb3JtLWNvbnRyb2wtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEb21TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZG9tLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb3JlWWVhclBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUteWVhci1waWNrZXIvY29yZS15ZWFyLXBpY2tlci9jb3JlLXllYXItcGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9hcHAtcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLW1vbnRoLXNlbGVjdG9yJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgQ29yZVllYXJQaWNrZXJDb21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVQaXBlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1tb250aC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS1tb250aC1zZWxlY3Rvci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBDb3JlTW9udGhTZWxlY3RvckNvbXBvbmVudFxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVNb250aFNlbGVjdG9yQ29tcG9uZW50IGV4dGVuZHMgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQElucHV0KCkgYWxpZ246IHN0cmluZyA9ICdyaWdodCc7XHJcblxyXG4gIEBPdXRwdXQoKSBvblllYXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnbW9udGhzQ29udGFpbmVyJykgbW9udGhzQ29udGFpbmVyITogRWxlbWVudFJlZjtcclxuXHJcbiAgb3ZlcnJpZGUgdmFsdWUhOiBzdHJpbmc7XHJcblxyXG4gIGxhbmc6IHN0cmluZyA9ICd2aSc7XHJcbiAgbW9udGhPYmplY3QkITogQmVoYXZpb3JTdWJqZWN0PElNb250aElkZW50aXR5PjtcclxuICBsaXN0ZW5lckZuITogKCkgPT4gdm9pZDtcclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZShvYmo6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IG9iajtcclxuICAgIHRoaXMudXBkYXRlVGV4dFZhbHVlKCk7XHJcblxyXG4gICAgaWYgKCFvYmopIHtcclxuICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgICAgdGhpcy5tb250aE9iamVjdCQubmV4dCh7XHJcbiAgICAgICAgeWVhcjogbm93LmdldEZ1bGxZZWFyKCksXHJcbiAgICAgICAgbW9udGhJbmRleDogbm93LmdldE1vbnRoKClcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubW9udGhPYmplY3QkLm5leHQoe1xyXG4gICAgICAgIHllYXI6IE51bWJlcihvYmouc3BsaXQoJy0nKVswXSksXHJcbiAgICAgICAgbW9udGhJbmRleDogTnVtYmVyKG9iai5zcGxpdCgnLScpWzFdKSAtIDFcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVRleHRWYWx1ZSgpOiB2b2lkIHtcclxuICAgIGlmICghIXRoaXMudmFsdWUpIHtcclxuICAgICAgY29uc3QgeWVhciA9IE51bWJlcih0aGlzLnZhbHVlLnNwbGl0KCctJylbMF0pO1xyXG4gICAgICBjb25zdCBtb250aEluZGV4ID0gTnVtYmVyKHRoaXMudmFsdWUuc3BsaXQoJy0nKVsxXSkgLSAxO1xyXG4gICAgICB0aGlzLnRleHRWYWx1ZSA9IHRoaXMubW9udGhTdHJpbmdBcnJheVttb250aEluZGV4XSArICcsICcgKyB5ZWFyXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRleHRWYWx1ZSA9IFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb250aHM6IHN0cmluZ1tdW10gPSBbXTtcclxuICB5ZWFyITogbnVtYmVyO1xyXG4gIHRleHRWYWx1ZSE6IHN0cmluZztcclxuXHJcbiAgeWVhclBpY2tlckFjdGl2ZSE6IGJvb2xlYW47XHJcbiAgb3BlblN0YXRlITogYm9vbGVhbjtcclxuXHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBtb250aFN0cmluZ0FycmF5ITogc3RyaW5nW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb3JlRGF0ZXRpbWVTZXJ2aWNlOiBDb3JlRGF0ZXRpbWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb21TZXJ2aWNlOiBEb21TZXJ2aWNlLFxyXG5cclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcblxyXG4gICAgY29uc3QgbW9udGhTdHJpbmdzID0gdGhpcy5jb3JlRGF0ZXRpbWVTZXJ2aWNlLmdldE1vbnRoTmFtZXModGhpcy5sYW5nIHx8ICd2aScpO1xyXG4gICAgdGhpcy5tb250aFN0cmluZ0FycmF5ID0gbW9udGhTdHJpbmdzO1xyXG4gICAgdGhpcy5tb250aHMgPSBbXHJcbiAgICAgIFttb250aFN0cmluZ3NbMF0sIG1vbnRoU3RyaW5nc1sxXSwgbW9udGhTdHJpbmdzWzJdXSxcclxuICAgICAgW21vbnRoU3RyaW5nc1szXSwgbW9udGhTdHJpbmdzWzRdLCBtb250aFN0cmluZ3NbNV1dLFxyXG4gICAgICBbbW9udGhTdHJpbmdzWzZdLCBtb250aFN0cmluZ3NbN10sIG1vbnRoU3RyaW5nc1s4XV0sXHJcbiAgICAgIFttb250aFN0cmluZ3NbOV0sIG1vbnRoU3RyaW5nc1sxMF0sIG1vbnRoU3RyaW5nc1sxMV1dXHJcbiAgICBdO1xyXG5cclxuXHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgdGhpcy5tb250aE9iamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElNb250aElkZW50aXR5Pih7XHJcbiAgICAgIHllYXI6IG5vdy5nZXRGdWxsWWVhcigpLFxyXG4gICAgICBtb250aEluZGV4OiBub3cuZ2V0TW9udGgoKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLm1vbnRoT2JqZWN0JC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgIHRoaXMueWVhciA9IHgueWVhcjtcclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLmxhbmcgPSB4XHJcblxyXG4gICAgICAgIGNvbnN0IG1vbnRoU3RyaW5ncyA9IHRoaXMuY29yZURhdGV0aW1lU2VydmljZS5nZXRNb250aE5hbWVzKHgpO1xyXG4gICAgICAgIHRoaXMubW9udGhTdHJpbmdBcnJheSA9IG1vbnRoU3RyaW5ncztcclxuICAgICAgICB0aGlzLm1vbnRocyA9IFtcclxuICAgICAgICAgIFttb250aFN0cmluZ3NbMF0sIG1vbnRoU3RyaW5nc1sxXSwgbW9udGhTdHJpbmdzWzJdXSxcclxuICAgICAgICAgIFttb250aFN0cmluZ3NbM10sIG1vbnRoU3RyaW5nc1s0XSwgbW9udGhTdHJpbmdzWzVdXSxcclxuICAgICAgICAgIFttb250aFN0cmluZ3NbNl0sIG1vbnRoU3RyaW5nc1s3XSwgbW9udGhTdHJpbmdzWzhdXSxcclxuICAgICAgICAgIFttb250aFN0cmluZ3NbOV0sIG1vbnRoU3RyaW5nc1sxMF0sIG1vbnRoU3RyaW5nc1sxMV1dXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVUZXh0VmFsdWUoKTtcclxuICAgIFxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxpc3RlbmVyRm4gPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ2NsaWNrJywgKGU6IEV2ZW50KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmNvbnRhaW5lciAmJiAhISF0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGUudGFyZ2V0KSkge1xyXG4gICAgICAgIHRoaXMub3BlblN0YXRlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgY29uc3QgbWF4WkluZGV4ID0gdGhpcy5kb21TZXJ2aWNlLmdldE1heFpJbmRleCgpO1xyXG4gICAgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wb3B1cC16LWluZGV4JywgbWF4WkluZGV4KTtcclxuXHJcbiAgfVxyXG5cclxuICBvbkNsaWNrKHJvd0luZGV4OiBudW1iZXIsIHN1Yk1vbnRoSW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5tb250aE9iamVjdCQubmV4dCh7XHJcbiAgICAgIHllYXI6IHRoaXMueWVhcixcclxuICAgICAgbW9udGhJbmRleDogcm93SW5kZXggKiAzICsgc3ViTW9udGhJbmRleFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuY29yZURhdGV0aW1lU2VydmljZS5tb250aElkZW50aXR5VG9Nb250aFN0cmluZyh0aGlzLm1vbnRoT2JqZWN0JC52YWx1ZSlcclxuICAgIHRoaXMud3JpdGVWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlKTtcclxuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgdGhpcy5vcGVuU3RhdGUgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHRyaWdnZXJSZWZsb3coKSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5tb250aHNDb250YWluZXIubmF0aXZlRWxlbWVudDtcclxuICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcInpvb20taW5cIik7XHJcbiAgICBlbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiBlbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJ6b29tLWluXCIpKTtcclxuICB9XHJcblxyXG4gIGdvVXAoKSB7XHJcbiAgICB0aGlzLnllYXIgLT0gMTtcclxuICAgIHRoaXMudHJpZ2dlclJlZmxvdygpO1xyXG4gIH1cclxuXHJcbiAgZ29Eb3duKCkge1xyXG4gICAgdGhpcy55ZWFyICs9IDE7XHJcbiAgICB0aGlzLnRyaWdnZXJSZWZsb3coKTtcclxuICB9XHJcblxyXG4gIG9uWWVhckNsaWNrTG9jYWwoeWVhcjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnllYXJQaWNrZXJBY3RpdmUgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb25ZZWFyUGlja2VkKGU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy55ZWFyID0gZTtcclxuICAgIHRoaXMueWVhclBpY2tlckFjdGl2ZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlT3BlbigpIHtcclxuICAgIGlmICghIXRoaXMucmVhZG9ubHkpIHJldHVyblxyXG4gICAgaWYgKCEhdGhpcy5kaXNhYmxlZCkgcmV0dXJuXHJcbiAgICB0aGlzLm9wZW5TdGF0ZSA9ICF0aGlzLm9wZW5TdGF0ZTtcclxuICB9XHJcblxyXG4gIGNsZWFyKCkge1xyXG4gICAgdGhpcy52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy50ZXh0VmFsdWUgPSAnJztcclxuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSgnJyk7XHJcbiAgICB0aGlzLm9wZW5TdGF0ZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ29UaGlzTW9udGgoKSB7XHJcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY29yZURhdGV0aW1lU2VydmljZS5kYXRlVG9Nb250aFN0cmluZyh0b2RheSk7XHJcbiAgICB0aGlzLndyaXRlVmFsdWUodmFsdWUpO1xyXG4gICAgdGhpcy51cGRhdGVUZXh0VmFsdWUoKTtcclxuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMub3BlblN0YXRlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4Py51bnN1YnNjcmliZSgpKVxyXG4gICAgaWYgKHRoaXMubGlzdGVuZXJGbikgdGhpcy5saXN0ZW5lckZuKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICNjb250YWluZXIgY2xhc3M9XCJjb3JlLW1vbnRoLXNlbGVjdG9yLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXJcIiBbbmdTdHlsZV09XCJ7IHBvc2l0aW9uOiAncmVsYXRpdmUnIH1cIj5cclxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiB0eXBlPVwidGV4dFwiIFtuZ1N0eWxlXT1cInsgd2lkdGg6ICcxMDAlJyB9XCIgW25nTW9kZWxdPVwidGV4dFZhbHVlXCIgcmVhZG9ubHkgW2NsYXNzLmZvcm0tY29udHJvbC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPjxsYWJlbCBjbGFzcz1cImljb25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlT3BlbigpXCI+PC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ0bC1tb250aC1waWNrZXItcG9wdXBcIiBbY2xhc3Mub3Blbl09XCJvcGVuU3RhdGVcIj5cclxuICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgZGlzcGxheTogISF5ZWFyUGlja2VyQWN0aXZlID8gJ25vbmUnIDogJ2Jsb2NrJyxcclxuICAgICAgICAgICAgcmlnaHQ6IGFsaWduID09PSAncmlnaHQnID8gJzBweCcgOiAndW5zZXQnLFxyXG4gICAgICAgICAgICBsZWZ0OiBhbGlnbiA9PT0gJ2xlZnQnID8gJzBweCcgOiAndW5zZXQnXHJcbiAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGwtbW9udGgtcGlja2VyLWVtaXR0ZXItaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGwtbW9udGgtcGlja2VyLWVtaXR0ZXIteWVhclwiIChjbGljayk9XCJvblllYXJDbGlja0xvY2FsKHllYXIpXCI+e3sgeWVhciB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnby11cFwiIChjbGljayk9XCJnb1VwKClcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ28tZG93blwiIChjbGljayk9XCJnb0Rvd24oKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9udGhzLWNvbnRhaW5lci13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICNtb250aHNDb250YWluZXIgY2xhc3M9XCJtb250aHMtY29udGFpbmVyIHpvb20taW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgKm5nRm9yPVwibGV0IHJvdyBvZiBtb250aHM7IGxldCByb3dJbmRleD1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG1vbnRoIG9mIHJvdzsgbGV0IHN1Yk1vbnRoSW5kZXg9aW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2socm93SW5kZXgsIHN1Yk1vbnRoSW5kZXgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJ5ZWFyID09PSBtb250aE9iamVjdCQudmFsdWUueWVhciAmJiByb3dJbmRleCAqIDMgKyAgc3ViTW9udGhJbmRleCA9PT0gbW9udGhPYmplY3QkLnZhbHVlIS5tb250aEluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbW9udGggfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ5ZWFyLXBpY2tlci1zZXNzaW9uXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICBkaXNwbGF5OiAhIXllYXJQaWNrZXJBY3RpdmUgPyAnYmxvY2snIDogJ25vbmUnXHJcbiAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICA8Y29yZS15ZWFyLXBpY2tlciBbbGFuZ109XCJsYW5nXCIgKG9uQ2hhbmdlKT1cIm9uWWVhclBpY2tlZCgkZXZlbnQpXCI+PC9jb3JlLXllYXItcGlja2VyPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY21zLWZvb3Rlci13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbXMtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xlYXJcIiBbY2xhc3Mub3BhY2l0eS0wXT1cIiEhIXZhbHVlXCIgKGNsaWNrKT1cImNsZWFyKClcIj57eyAnVUkuQ09SRV9EQVRFX1BJQ0tFUl9DTEVBUicgfCB0cmFuc2xhdGU6IGxhbmcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWdpLXdhdGNoXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhpcy1tb250aFwiIChjbGljayk9XCJnb1RoaXNNb250aCgpXCI+e3sgJ1VJLkNPUkVfREFURV9QSUNLRVJfVEhJU19NT05USCcgfCB0cmFuc2xhdGU6IGxhbmcgfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj4iXX0=