@idea-ionic/uncommon 8.2.7 → 8.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/public-api.mjs +3 -12
- package/esm2022/src/AWSAPI.service.mjs +4 -3
- package/esm2022/src/AWSAPISocket.service.mjs +4 -3
- package/esm2022/src/address/address.component.mjs +320 -5
- package/esm2022/src/announcement/announcement.component.mjs +37 -6
- package/esm2022/src/colors/colorPicker.component.mjs +64 -8
- package/esm2022/src/contacts/contacts.component.mjs +131 -7
- package/esm2022/src/dateTime/calendarPicker.component.mjs +25 -8
- package/esm2022/src/dateTime/dateTime.component.mjs +90 -6
- package/esm2022/src/duration/duration.component.mjs +123 -5
- package/esm2022/src/echo/echo.page.mjs +74 -6
- package/esm2022/src/echo/echo.routes.mjs +6 -0
- package/esm2022/src/errorReporting.service.mjs +4 -3
- package/esm2022/src/mde/mde.component.mjs +106 -7
- package/esm2022/src/mde/mdeToolbar.component.mjs +17 -4
- package/esm2022/src/offline/cacheableResource.component.mjs +42 -4
- package/esm2022/src/offline/offline.service.mjs +4 -3
- package/esm2022/src/offline/offlineData.service.mjs +4 -3
- package/esm2022/src/offline/offlineIndicator.component.mjs +52 -5
- package/esm2022/src/offline/offlineManager.component.mjs +25 -8
- package/esm2022/src/pushNotifications.service.mjs +4 -3
- package/esm2022/src/sentiment/sentiment.component.mjs +47 -6
- package/esm2022/src/timeInterval/fromTimeToTime.component.mjs +23 -7
- package/esm2022/src/timeInterval/timeInterval.component.mjs +89 -5
- package/fesm2022/idea-ionic-uncommon.mjs +1225 -212
- package/fesm2022/idea-ionic-uncommon.mjs.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +2 -11
- package/src/address/address.component.d.ts +1 -1
- package/src/announcement/announcement.component.d.ts +1 -1
- package/src/colors/colorPicker.component.d.ts +2 -2
- package/src/contacts/contacts.component.d.ts +1 -1
- package/src/dateTime/calendarPicker.component.d.ts +1 -1
- package/src/dateTime/dateTime.component.d.ts +1 -1
- package/src/duration/duration.component.d.ts +1 -1
- package/src/echo/echo.page.d.ts +1 -1
- package/src/echo/echo.routes.d.ts +2 -0
- package/src/mde/mde.component.d.ts +1 -1
- package/src/mde/mdeToolbar.component.d.ts +1 -1
- package/src/offline/cacheableResource.component.d.ts +1 -1
- package/src/offline/offlineIndicator.component.d.ts +1 -1
- package/src/offline/offlineManager.component.d.ts +1 -1
- package/src/sentiment/sentiment.component.d.ts +1 -1
- package/src/timeInterval/fromTimeToTime.component.d.ts +1 -1
- package/src/timeInterval/timeInterval.component.d.ts +1 -1
- package/esm2022/src/address/address.module.mjs +0 -21
- package/esm2022/src/announcement/announcement.module.mjs +0 -21
- package/esm2022/src/colors/colorPicker.module.mjs +0 -20
- package/esm2022/src/contacts/contacts.module.mjs +0 -21
- package/esm2022/src/dateTime/dateTime.module.mjs +0 -22
- package/esm2022/src/duration/duration.module.mjs +0 -21
- package/esm2022/src/echo/echo.module.mjs +0 -26
- package/esm2022/src/mde/mde.module.mjs +0 -22
- package/esm2022/src/offline/offline.module.mjs +0 -22
- package/esm2022/src/sentiment/sentiment.module.mjs +0 -21
- package/esm2022/src/timeInterval/timeInterval.module.mjs +0 -22
- package/src/address/address.module.d.ts +0 -11
- package/src/announcement/announcement.module.d.ts +0 -11
- package/src/colors/colorPicker.module.d.ts +0 -10
- package/src/contacts/contacts.module.d.ts +0 -11
- package/src/dateTime/dateTime.module.d.ts +0 -12
- package/src/duration/duration.module.d.ts +0 -11
- package/src/echo/echo.module.d.ts +0 -12
- package/src/mde/mde.module.d.ts +0 -12
- package/src/offline/offline.module.d.ts +0 -12
- package/src/sentiment/sentiment.module.d.ts +0 -11
- package/src/timeInterval/timeInterval.module.d.ts +0 -12
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
1
2
|
import { Component, Input, inject } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { AlertController, ModalController, IonHeader, IonToolbar, IonTitle, IonButtons, IonButton, IonIcon, IonGrid, IonContent, IonRow, IonCol, IonInput, IonFooter } from '@ionic/angular/standalone';
|
|
5
|
+
import { IDEALocalizedDatePipe, IDEATranslatePipe, IDEATranslationsService } from '@idea-ionic/common';
|
|
4
6
|
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@
|
|
6
|
-
import * as i2 from "@angular/common";
|
|
7
|
-
import * as i3 from "@idea-ionic/common";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
8
|
/**
|
|
9
9
|
* A random sunday, used as reference to calculate the week days.
|
|
10
10
|
*/
|
|
@@ -173,11 +173,28 @@ export class IDEACalendarPickerComponent {
|
|
|
173
173
|
this._modal.dismiss();
|
|
174
174
|
}
|
|
175
175
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEACalendarPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
176
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEACalendarPickerComponent, selector: "idea-calendar-picker", inputs: { inputDate: "inputDate", timePicker: "timePicker", manualTimePicker: "manualTimePicker", title: "title", hideClearButton: "hideClearButton", min: "min", max: "max" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\">\n @if (!hideClearButton) {\n <ion-button [title]=\"'IDEA_UNCOMMON.CALENDAR.RESET' | translate\" (click)=\"save(true)\">\n <ion-icon slot=\"icon-only\" name=\"arrow-undo\" />\n </ion-button>\n }\n <ion-button [title]=\"'IDEA_UNCOMMON.CALENDAR.CLOSE_WITHOUT_SAVING' | translate\" (click)=\"close()\">\n <ion-icon slot=\"icon-only\" name=\"close\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-grid fixed class=\"ion-no-padding\">\n <ion-row>\n <h1 class=\"headerLabel\">{{ 'IDEA_UNCOMMON.CALENDAR.SET_DATE' | translate }}</h1>\n </ion-row>\n <ion-row style=\"margin-bottom: 8px\">\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"5\">\n <ion-row class=\"ion-align-items-center ion-justify-content-center\">\n <ion-col class=\"ion-text-right ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addYears(-1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-back\" />\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding tappable\" [size]=\"6\">\n <ion-input\n type=\"text\"\n [placeholder]=\"'IDEA_UNCOMMON.CALENDAR.YEAR' | translate\"\n [value]=\"refDate.getFullYear()\"\n (ionFocus)=\"$event.target.value = ''\"\n (ionChange)=\"setYear($event?.target?.value)\"\n >\n </ion-input>\n </ion-col>\n <ion-col class=\"ion-text-left ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addYears(+1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-forward\" />\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"7\">\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addMonths(-1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-back\" />\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding tappable\" [size]=\"6\" (click)=\"showMonths()\">\n {{ refDate | dateLocale: 'MMMM' }}\n </ion-col>\n <ion-col class=\"ion-text-left ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addMonths(+1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-forward\" />\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-col>\n </ion-row>\n <ion-row style=\"margin-bottom: 8px\" class=\"headerLabel\">\n @for (ddd of weekDays; track ddd) {\n <ion-col class=\"ion-text-center ion-no-padding\">\n {{ ddd }}\n </ion-col>\n }\n </ion-row>\n @for (row of calendarGrid; track row; let i = $index) {\n <ion-row class=\"ion-align-items-center\">\n @for (col of row; track col; let j = $index) {\n <ion-col class=\"ion-text-center ion-no-padding\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"\n isSameDay(calendarGrid[i][j], today) || isSameDay(calendarGrid[i][j], selectedDate)\n ? 'primary'\n : isSameMonth(calendarGrid[i][j], refDate)\n ? 'dark'\n : 'medium'\n \"\n [fill]=\"\n isSameDay(calendarGrid[i][j], selectedDate)\n ? 'solid'\n : isSameDay(calendarGrid[i][j], today)\n ? 'outline'\n : 'clear'\n \"\n [disabled]=\"!isDateSelectable(calendarGrid[i][j])\"\n (click)=\"selectDate(calendarGrid[i][j])\"\n >\n {{ calendarGrid[i][j] | date: 'd' }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n }\n @if (timePicker || manualTimePicker) {\n <ion-row>\n <h1 class=\"headerLabel\">\n {{ 'IDEA_UNCOMMON.CALENDAR.SET_TIME' | translate }}\n </h1>\n </ion-row>\n }\n @if (timePicker) {\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-no-padding\" [size]=\"7\">\n <ion-row>\n @for (hour of hours; track hour) {\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"2\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"isSameHour(hour) ? 'primary' : 'dark'\"\n [fill]=\"isSameHour(hour) ? 'solid' : 'clear'\"\n (click)=\"selectHour(hour)\"\n >\n {{ hour }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"1\"> : </ion-col>\n <ion-col class=\"ion-no-padding\" [size]=\"4\">\n <ion-row>\n @for (minute of minutes; track minute) {\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"4\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"isSameMinute(minute) ? 'primary' : 'dark'\"\n [fill]=\"isSameMinute(minute) ? 'solid' : 'clear'\"\n (click)=\"selectMinute(minute)\"\n >\n {{ minute }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n </ion-col>\n </ion-row>\n }\n @if (manualTimePicker) {\n <ion-row class=\"ion-align-items-center manualTimePicker\">\n <ion-col class=\"ion-text-center\" [size]=\"12\">\n <input type=\"number\" min=\"0\" max=\"23\" [value]=\"hour\" (change)=\"selectHour($event.target.value)\" />\n <span>:</span>\n <input type=\"number\" min=\"0\" max=\"59\" [value]=\"minute\" (change)=\"selectMinute($event.target.value)\" />\n </ion-col>\n </ion-row>\n }\n </ion-grid>\n</ion-content>\n<ion-footer>\n <ion-toolbar color=\"ideaToolbar\" class=\"tappable\" (click)=\"save()\">\n <ion-title class=\"ion-text-center\">\n <ion-icon name=\"checkmark\" />\n </ion-title>\n </ion-toolbar>\n</ion-footer>\n", styles: ["ion-content{--background: var(--ion-color-white)}h1{margin:10px}.headerLabel{font-size:.7em;font-weight:700;text-transform:uppercase}ion-col,ion-button{font-size:.95em}ion-button{margin:3px 0}ion-footer ion-toolbar{--min-height: 40px}.tappable{cursor:pointer}.manualTimePicker{padding:20px}.manualTimePicker input[type=number],.manualTimePicker span{font-size:2.5em}.manualTimePicker input[type=number]{border:none;border-bottom:2px solid var(--ion-color-dark);text-align:center}.manualTimePicker span{padding-left:4px;padding-right:4px}\n"], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonInput, selector: "ion-input", inputs: ["autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearInputIcon", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i1.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "pipe", type: i3.IDEATranslatePipe, name: "translate" }, { kind: "pipe", type: i3.IDEALocalizedDatePipe, name: "dateLocale" }] }); }
|
|
176
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEACalendarPickerComponent, isStandalone: true, selector: "idea-calendar-picker", inputs: { inputDate: "inputDate", timePicker: "timePicker", manualTimePicker: "manualTimePicker", title: "title", hideClearButton: "hideClearButton", min: "min", max: "max" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\">\n @if (!hideClearButton) {\n <ion-button [title]=\"'IDEA_UNCOMMON.CALENDAR.RESET' | translate\" (click)=\"save(true)\">\n <ion-icon slot=\"icon-only\" name=\"arrow-undo\" />\n </ion-button>\n }\n <ion-button [title]=\"'IDEA_UNCOMMON.CALENDAR.CLOSE_WITHOUT_SAVING' | translate\" (click)=\"close()\">\n <ion-icon slot=\"icon-only\" name=\"close\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-grid fixed class=\"ion-no-padding\">\n <ion-row>\n <h1 class=\"headerLabel\">{{ 'IDEA_UNCOMMON.CALENDAR.SET_DATE' | translate }}</h1>\n </ion-row>\n <ion-row style=\"margin-bottom: 8px\">\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"5\">\n <ion-row class=\"ion-align-items-center ion-justify-content-center\">\n <ion-col class=\"ion-text-right ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addYears(-1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-back\" />\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding tappable\" [size]=\"6\">\n <ion-input\n type=\"text\"\n [placeholder]=\"'IDEA_UNCOMMON.CALENDAR.YEAR' | translate\"\n [value]=\"refDate.getFullYear()\"\n (ionFocus)=\"$event.target.value = ''\"\n (ionChange)=\"setYear($event?.target?.value)\"\n >\n </ion-input>\n </ion-col>\n <ion-col class=\"ion-text-left ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addYears(+1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-forward\" />\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"7\">\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addMonths(-1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-back\" />\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding tappable\" [size]=\"6\" (click)=\"showMonths()\">\n {{ refDate | dateLocale: 'MMMM' }}\n </ion-col>\n <ion-col class=\"ion-text-left ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addMonths(+1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-forward\" />\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-col>\n </ion-row>\n <ion-row style=\"margin-bottom: 8px\" class=\"headerLabel\">\n @for (ddd of weekDays; track ddd) {\n <ion-col class=\"ion-text-center ion-no-padding\">\n {{ ddd }}\n </ion-col>\n }\n </ion-row>\n @for (row of calendarGrid; track row; let i = $index) {\n <ion-row class=\"ion-align-items-center\">\n @for (col of row; track col; let j = $index) {\n <ion-col class=\"ion-text-center ion-no-padding\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"\n isSameDay(calendarGrid[i][j], today) || isSameDay(calendarGrid[i][j], selectedDate)\n ? 'primary'\n : isSameMonth(calendarGrid[i][j], refDate)\n ? 'dark'\n : 'medium'\n \"\n [fill]=\"\n isSameDay(calendarGrid[i][j], selectedDate)\n ? 'solid'\n : isSameDay(calendarGrid[i][j], today)\n ? 'outline'\n : 'clear'\n \"\n [disabled]=\"!isDateSelectable(calendarGrid[i][j])\"\n (click)=\"selectDate(calendarGrid[i][j])\"\n >\n {{ calendarGrid[i][j] | date: 'd' }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n }\n @if (timePicker || manualTimePicker) {\n <ion-row>\n <h1 class=\"headerLabel\">\n {{ 'IDEA_UNCOMMON.CALENDAR.SET_TIME' | translate }}\n </h1>\n </ion-row>\n }\n @if (timePicker) {\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-no-padding\" [size]=\"7\">\n <ion-row>\n @for (hour of hours; track hour) {\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"2\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"isSameHour(hour) ? 'primary' : 'dark'\"\n [fill]=\"isSameHour(hour) ? 'solid' : 'clear'\"\n (click)=\"selectHour(hour)\"\n >\n {{ hour }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"1\"> : </ion-col>\n <ion-col class=\"ion-no-padding\" [size]=\"4\">\n <ion-row>\n @for (minute of minutes; track minute) {\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"4\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"isSameMinute(minute) ? 'primary' : 'dark'\"\n [fill]=\"isSameMinute(minute) ? 'solid' : 'clear'\"\n (click)=\"selectMinute(minute)\"\n >\n {{ minute }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n </ion-col>\n </ion-row>\n }\n @if (manualTimePicker) {\n <ion-row class=\"ion-align-items-center manualTimePicker\">\n <ion-col class=\"ion-text-center\" [size]=\"12\">\n <input type=\"number\" min=\"0\" max=\"23\" [value]=\"hour\" (change)=\"selectHour($event.target.value)\" />\n <span>:</span>\n <input type=\"number\" min=\"0\" max=\"59\" [value]=\"minute\" (change)=\"selectMinute($event.target.value)\" />\n </ion-col>\n </ion-row>\n }\n </ion-grid>\n</ion-content>\n<ion-footer>\n <ion-toolbar color=\"ideaToolbar\" class=\"tappable\" (click)=\"save()\">\n <ion-title class=\"ion-text-center\">\n <ion-icon name=\"checkmark\" />\n </ion-title>\n </ion-toolbar>\n</ion-footer>\n", styles: ["ion-content{--background: var(--ion-color-white)}h1{margin:10px}.headerLabel{font-size:.7em;font-weight:700;text-transform:uppercase}ion-col,ion-button{font-size:.95em}ion-button{margin:3px 0}ion-footer ion-toolbar{--min-height: 40px}.tappable{cursor:pointer}.manualTimePicker{padding:20px}.manualTimePicker input[type=number],.manualTimePicker span{font-size:2.5em}.manualTimePicker input[type=number]{border:none;border-bottom:2px solid var(--ion-color-dark);text-align:center}.manualTimePicker span{padding-left:4px;padding-right:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "ngmodule", type: FormsModule }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }, { kind: "pipe", type: IDEALocalizedDatePipe, name: "dateLocale" }, { kind: "component", type: IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }] }); }
|
|
177
177
|
}
|
|
178
178
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEACalendarPickerComponent, decorators: [{
|
|
179
179
|
type: Component,
|
|
180
|
-
args: [{ selector: 'idea-calendar-picker',
|
|
180
|
+
args: [{ selector: 'idea-calendar-picker', standalone: true, imports: [
|
|
181
|
+
CommonModule,
|
|
182
|
+
FormsModule,
|
|
183
|
+
IDEATranslatePipe,
|
|
184
|
+
IDEALocalizedDatePipe,
|
|
185
|
+
IonFooter,
|
|
186
|
+
IonInput,
|
|
187
|
+
IonCol,
|
|
188
|
+
IonRow,
|
|
189
|
+
IonContent,
|
|
190
|
+
IonGrid,
|
|
191
|
+
IonIcon,
|
|
192
|
+
IonButton,
|
|
193
|
+
IonButtons,
|
|
194
|
+
IonTitle,
|
|
195
|
+
IonToolbar,
|
|
196
|
+
IonHeader
|
|
197
|
+
], template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\">\n @if (!hideClearButton) {\n <ion-button [title]=\"'IDEA_UNCOMMON.CALENDAR.RESET' | translate\" (click)=\"save(true)\">\n <ion-icon slot=\"icon-only\" name=\"arrow-undo\" />\n </ion-button>\n }\n <ion-button [title]=\"'IDEA_UNCOMMON.CALENDAR.CLOSE_WITHOUT_SAVING' | translate\" (click)=\"close()\">\n <ion-icon slot=\"icon-only\" name=\"close\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-grid fixed class=\"ion-no-padding\">\n <ion-row>\n <h1 class=\"headerLabel\">{{ 'IDEA_UNCOMMON.CALENDAR.SET_DATE' | translate }}</h1>\n </ion-row>\n <ion-row style=\"margin-bottom: 8px\">\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"5\">\n <ion-row class=\"ion-align-items-center ion-justify-content-center\">\n <ion-col class=\"ion-text-right ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addYears(-1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-back\" />\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding tappable\" [size]=\"6\">\n <ion-input\n type=\"text\"\n [placeholder]=\"'IDEA_UNCOMMON.CALENDAR.YEAR' | translate\"\n [value]=\"refDate.getFullYear()\"\n (ionFocus)=\"$event.target.value = ''\"\n (ionChange)=\"setYear($event?.target?.value)\"\n >\n </ion-input>\n </ion-col>\n <ion-col class=\"ion-text-left ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addYears(+1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-forward\" />\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"7\">\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addMonths(-1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-back\" />\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding tappable\" [size]=\"6\" (click)=\"showMonths()\">\n {{ refDate | dateLocale: 'MMMM' }}\n </ion-col>\n <ion-col class=\"ion-text-left ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addMonths(+1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-forward\" />\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-col>\n </ion-row>\n <ion-row style=\"margin-bottom: 8px\" class=\"headerLabel\">\n @for (ddd of weekDays; track ddd) {\n <ion-col class=\"ion-text-center ion-no-padding\">\n {{ ddd }}\n </ion-col>\n }\n </ion-row>\n @for (row of calendarGrid; track row; let i = $index) {\n <ion-row class=\"ion-align-items-center\">\n @for (col of row; track col; let j = $index) {\n <ion-col class=\"ion-text-center ion-no-padding\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"\n isSameDay(calendarGrid[i][j], today) || isSameDay(calendarGrid[i][j], selectedDate)\n ? 'primary'\n : isSameMonth(calendarGrid[i][j], refDate)\n ? 'dark'\n : 'medium'\n \"\n [fill]=\"\n isSameDay(calendarGrid[i][j], selectedDate)\n ? 'solid'\n : isSameDay(calendarGrid[i][j], today)\n ? 'outline'\n : 'clear'\n \"\n [disabled]=\"!isDateSelectable(calendarGrid[i][j])\"\n (click)=\"selectDate(calendarGrid[i][j])\"\n >\n {{ calendarGrid[i][j] | date: 'd' }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n }\n @if (timePicker || manualTimePicker) {\n <ion-row>\n <h1 class=\"headerLabel\">\n {{ 'IDEA_UNCOMMON.CALENDAR.SET_TIME' | translate }}\n </h1>\n </ion-row>\n }\n @if (timePicker) {\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-no-padding\" [size]=\"7\">\n <ion-row>\n @for (hour of hours; track hour) {\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"2\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"isSameHour(hour) ? 'primary' : 'dark'\"\n [fill]=\"isSameHour(hour) ? 'solid' : 'clear'\"\n (click)=\"selectHour(hour)\"\n >\n {{ hour }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"1\"> : </ion-col>\n <ion-col class=\"ion-no-padding\" [size]=\"4\">\n <ion-row>\n @for (minute of minutes; track minute) {\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"4\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"isSameMinute(minute) ? 'primary' : 'dark'\"\n [fill]=\"isSameMinute(minute) ? 'solid' : 'clear'\"\n (click)=\"selectMinute(minute)\"\n >\n {{ minute }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n </ion-col>\n </ion-row>\n }\n @if (manualTimePicker) {\n <ion-row class=\"ion-align-items-center manualTimePicker\">\n <ion-col class=\"ion-text-center\" [size]=\"12\">\n <input type=\"number\" min=\"0\" max=\"23\" [value]=\"hour\" (change)=\"selectHour($event.target.value)\" />\n <span>:</span>\n <input type=\"number\" min=\"0\" max=\"59\" [value]=\"minute\" (change)=\"selectMinute($event.target.value)\" />\n </ion-col>\n </ion-row>\n }\n </ion-grid>\n</ion-content>\n<ion-footer>\n <ion-toolbar color=\"ideaToolbar\" class=\"tappable\" (click)=\"save()\">\n <ion-title class=\"ion-text-center\">\n <ion-icon name=\"checkmark\" />\n </ion-title>\n </ion-toolbar>\n</ion-footer>\n", styles: ["ion-content{--background: var(--ion-color-white)}h1{margin:10px}.headerLabel{font-size:.7em;font-weight:700;text-transform:uppercase}ion-col,ion-button{font-size:.95em}ion-button{margin:3px 0}ion-footer ion-toolbar{--min-height: 40px}.tappable{cursor:pointer}.manualTimePicker{padding:20px}.manualTimePicker input[type=number],.manualTimePicker span{font-size:2.5em}.manualTimePicker input[type=number]{border:none;border-bottom:2px solid var(--ion-color-dark);text-align:center}.manualTimePicker span{padding-left:4px;padding-right:4px}\n"] }]
|
|
181
198
|
}], propDecorators: { inputDate: [{
|
|
182
199
|
type: Input
|
|
183
200
|
}], timePicker: [{
|
|
@@ -193,4 +210,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
193
210
|
}], max: [{
|
|
194
211
|
type: Input
|
|
195
212
|
}] } });
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXJQaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvZGF0ZVRpbWUvY2FsZW5kYXJQaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvZGF0ZVRpbWUvY2FsZW5kYXJQaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7O0FBRTdEOztHQUVHO0FBQ0gsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDO0FBT3pCLE1BQU0sT0FBTywyQkFBMkI7SUFMeEM7UUFNVSxXQUFNLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pDLFdBQU0sR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakMsZUFBVSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRzVDLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRXpCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO0tBOEtsQztJQTlKQyxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7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SUFFRCxJQUFJLENBQUMsS0FBZTtRQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDOzhHQXRMVSwyQkFBMkI7a0dBQTNCLDJCQUEyQiw0T0NmeEMsNGpOQW9LQTs7MkZEckphLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSxzQkFBc0I7OEJBU3ZCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbGVydENvbnRyb2xsZXIsIE1vZGFsQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgZXBvY2hEYXRlVGltZSwgZXBvY2hJU09TdHJpbmcgfSBmcm9tICdpZGVhLXRvb2xib3gnO1xuaW1wb3J0IHsgSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG4vKipcbiAqIEEgcmFuZG9tIHN1bmRheSwgdXNlZCBhcyByZWZlcmVuY2UgdG8gY2FsY3VsYXRlIHRoZSB3ZWVrIGRheXMuXG4gKi9cbmNvbnN0IFNVTkRBWSA9IDI1OTIwMDAwMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1jYWxlbmRhci1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJ2NhbGVuZGFyUGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2NhbGVuZGFyUGlja2VyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSURFQUNhbGVuZGFyUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBfbW9kYWwgPSBpbmplY3QoTW9kYWxDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfYWxlcnQgPSBpbmplY3QoQWxlcnRDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfdHJhbnNsYXRlID0gaW5qZWN0KElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlKTtcblxuICBASW5wdXQoKSBpbnB1dERhdGU6IGVwb2NoRGF0ZVRpbWUgfCBlcG9jaElTT1N0cmluZztcbiAgQElucHV0KCkgdGltZVBpY2tlciA9IGZhbHNlO1xuICBASW5wdXQoKSBtYW51YWxUaW1lUGlja2VyID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGhpZGVDbGVhckJ1dHRvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBtaW46IGVwb2NoRGF0ZVRpbWUgfCBlcG9jaElTT1N0cmluZztcbiAgQElucHV0KCkgbWF4OiBlcG9jaERhdGVUaW1lIHwgZXBvY2hJU09TdHJpbmc7XG5cbiAgcmVmRGF0ZTogRGF0ZTtcbiAgc2VsZWN0ZWREYXRlOiBEYXRlO1xuICB0b2RheTogRGF0ZTtcbiAgY2FsZW5kYXJHcmlkOiBEYXRlW11bXTtcbiAgaG91cjogbnVtYmVyO1xuICBtaW51dGU6IG51bWJlcjtcbiAgaG91cnM6IHN0cmluZ1tdO1xuICBtaW51dGVzOiBzdHJpbmdbXTtcbiAgd2Vla0RheXM6IHN0cmluZ1tdO1xuICBkYXRlTWluOiBEYXRlO1xuICBkYXRlTWF4OiBEYXRlO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgIHRoaXMucmVmRGF0ZSA9IHRoaXMuaW5wdXREYXRlID8gbmV3IERhdGUodGhpcy5pbnB1dERhdGUpIDogbmV3IERhdGUodGhpcy50b2RheSk7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLnJlZkRhdGUpO1xuICAgIHRoaXMuaG91ciA9IDEyOyAvLyB0byBlbmR1cmUgdGltZXpvbmVzXG4gICAgdGhpcy5taW51dGUgPSAwO1xuICAgIGlmICh0aGlzLnRpbWVQaWNrZXIgfHwgdGhpcy5tYW51YWxUaW1lUGlja2VyKSB7XG4gICAgICB0aGlzLmhvdXIgPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRIb3VycygpO1xuICAgICAgaWYgKHRoaXMubWFudWFsVGltZVBpY2tlcikgdGhpcy5taW51dGUgPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNaW51dGVzKCk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgLy8gcm91bmQgdGhlIG1pbnV0ZXMgYSBtdWx0aXBsZSBvZiA1XG4gICAgICAgIHRoaXMubWludXRlID0gTWF0aC5jZWlsKHRoaXMuc2VsZWN0ZWREYXRlLmdldE1pbnV0ZXMoKSAvIDUpICogNTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUuc2V0TWludXRlcyh0aGlzLm1pbnV0ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuYnVpbGRDYWxlbmRhckdyaWQodGhpcy5yZWZEYXRlKTtcbiAgICB0aGlzLmhvdXJzID0gQXJyYXkuZnJvbShBcnJheSgyNCkua2V5cygpKS5tYXAoaSA9PiAnMCcuY29uY2F0KGkudG9TdHJpbmcoKSkuc2xpY2UoLTIpKTtcbiAgICB0aGlzLm1pbnV0ZXMgPSBBcnJheS5mcm9tKEFycmF5KDEyKS5rZXlzKCkpLm1hcChpID0+ICcwJy5jb25jYXQoKGkgKiA1KS50b1N0cmluZygpKS5zbGljZSgtMikpO1xuICAgIC8vIGJ1aWxkIHRoZSB3ZWVrZGF5cyBiYXNlZCBvbiB0aGUgY3VycmVudCBsb2NhbGVcbiAgICB0aGlzLndlZWtEYXlzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICBjb25zdCByZWZEYXRlRm9yV2Vla0RheXMgPSBuZXcgRGF0ZShTVU5EQVkpO1xuICAgIHJlZkRhdGVGb3JXZWVrRGF5cy5zZXREYXRlKHJlZkRhdGVGb3JXZWVrRGF5cy5nZXREYXRlKCkgLSB0aGlzLmdldExvY2FsaXNlZERheShyZWZEYXRlRm9yV2Vla0RheXMpKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgdGhpcy53ZWVrRGF5cy5wdXNoKHJlZkRhdGVGb3JXZWVrRGF5cy50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5fdHJhbnNsYXRlLmdldEN1cnJlbnRMYW5nKCksIHsgd2Vla2RheTogJ3Nob3J0JyB9KSk7XG4gICAgICByZWZEYXRlRm9yV2Vla0RheXMuc2V0RGF0ZShyZWZEYXRlRm9yV2Vla0RheXMuZ2V0RGF0ZSgpICsgMSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1pbikgdGhpcy5kYXRlTWluID0gbmV3IERhdGUodGhpcy5taW4pO1xuICAgIGlmICh0aGlzLm1heCkgdGhpcy5kYXRlTWF4ID0gbmV3IERhdGUodGhpcy5tYXgpO1xuICB9XG5cbiAgZ2V0TG9jYWxpc2VkRGF5KGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIGxldCBuID0gZGF0ZS5nZXREYXkoKTtcbiAgICBzd2l0Y2ggKHRoaXMuX3RyYW5zbGF0ZS5nZXRDdXJyZW50TGFuZygpKSB7XG4gICAgICBjYXNlICdpdCc6XG4gICAgICAgIG4gPSAtLW4gPCAwID8gNiA6IG47XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfVxuXG4gIGJ1aWxkQ2FsZW5kYXJHcmlkKHJlZkRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICAvLyBmaW5kIHRoZSBmaXJzdCBkYXkgaW4gdGhlIG1vbnRoOiB0aGUgaW1wb3J0YW50IGRhdGEgaGVyZSBpcyB0aGUgZGF5IG9mIHRoZSB3ZWVrXG4gICAgY29uc3QgZmlyc3REYXRlT2ZNb250aCA9IG5ldyBEYXRlKHJlZkRhdGUuZ2V0RnVsbFllYXIoKSwgcmVmRGF0ZS5nZXRNb250aCgpLCAxKTtcbiAgICAvLyB0aGUgZm9sbG93aW5nIGZsYWcgaXMgdXNlZCB0byBkaXZpZGUgdGhlIGxvZ2ljIHNvIEkgY2FuIGZpbGwgdGhlIGNhbGVuZGFyXG4gICAgLy8gYWxzbyB3aXRoIHRoZSBkYXRlcyBmcm9tIHRoZSBwcmV2aW91cyBtb250aCwgdW50aWwgdGhlcmUncyBzcGFjZSBpbiB0aGUgZ3JpZFxuICAgIGxldCBoYXZlbnRGb3VuZEZpcnN0RGF5ID0gdHJ1ZTtcbiAgICAvLyBpbmRleCB1c2VkIHRvIGJ1aWxkIHRoZSBkYXRlcyBvZiB0aGUgbW9udGgsIHN0YXJ0aW5nIGZyb20gdGhlIGZpcnN0IG9uZVxuICAgIGxldCBpbmRleCA9IDE7XG4gICAgdGhpcy5jYWxlbmRhckdyaWQgPSBuZXcgQXJyYXk8RGF0ZVtdPigpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNjsgaSsrKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyR3JpZFtpXSA9IG5ldyBBcnJheTxEYXRlPigpO1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCA3OyBqKyspIHtcbiAgICAgICAgaWYgKGhhdmVudEZvdW5kRmlyc3REYXkpIHtcbiAgICAgICAgICBpZiAodGhpcy5nZXRMb2NhbGlzZWREYXkoZmlyc3REYXRlT2ZNb250aCkgPT09IGopIHtcbiAgICAgICAgICAgIC8vIG5vdGU6IGNvbnNpZGVycyBTdW5kYXlcbiAgICAgICAgICAgIGhhdmVudEZvdW5kRmlyc3REYXkgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJHcmlkW2ldW2pdID0gbmV3IERhdGUoZmlyc3REYXRlT2ZNb250aCk7XG4gICAgICAgICAgICAvLyBub3cgdGhlIEkndmUgZm91bmQgdGhlIGZpcnN0IGRhdGUgb2YgdGhlIG1vbnRoIEkgY2FuIGZpbGwgdGhlIGNhbGVuZGFyXG4gICAgICAgICAgICAvLyB0aGUgZGF0ZXMgZnJvbXQgdGhlIHByZXZpb3VzIG1vbnRoLCB1bnRpbCB0aGVyZSdzIHNwYWNlIGluIHRoZSBncmlkXG4gICAgICAgICAgICBmb3IgKGxldCB5ID0gdGhpcy5nZXRMb2NhbGlzZWREYXkoZmlyc3REYXRlT2ZNb250aCk7IHkgPj0gMDsgeS0tKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShmaXJzdERhdGVPZk1vbnRoKTtcbiAgICAgICAgICAgICAgZC5zZXREYXRlKGZpcnN0RGF0ZU9mTW9udGguZ2V0RGF0ZSgpIC0geSk7XG4gICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJHcmlkW2ldW3RoaXMuZ2V0TG9jYWxpc2VkRGF5KGZpcnN0RGF0ZU9mTW9udGgpIC0geV0gPSBkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBmaWxsIHRoZSBmb2xsb3dpbmcgZGF0ZXMgdW50aWwgdGhlcmUncyBzcGFjZSBpbiB0aGUgZ3JpZFxuICAgICAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShmaXJzdERhdGVPZk1vbnRoKTtcbiAgICAgICAgICBkLnNldERhdGUoZmlyc3REYXRlT2ZNb250aC5nZXREYXRlKCkgKyBpbmRleCsrKTtcbiAgICAgICAgICB0aGlzLmNhbGVuZGFyR3JpZFtpXVtqXSA9IGQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRZZWFycyhvZmZzZXQ6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucmVmRGF0ZS5zZXRGdWxsWWVhcih0aGlzLnJlZkRhdGUuZ2V0RnVsbFllYXIoKSArIG9mZnNldCk7XG4gICAgdGhpcy5idWlsZENhbGVuZGFyR3JpZCh0aGlzLnJlZkRhdGUpO1xuICB9XG4gIHNldFllYXIoeWVhcjogc3RyaW5nIHwgbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF5ZWFyKSByZXR1cm47XG5cbiAgICB0aGlzLnJlZkRhdGUuc2V0RnVsbFllYXIoTnVtYmVyKHllYXIpKTtcbiAgICB0aGlzLmJ1aWxkQ2FsZW5kYXJHcmlkKHRoaXMucmVmRGF0ZSk7XG4gIH1cbiAgYWRkTW9udGhzKG9mZnNldDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5yZWZEYXRlLnNldE1vbnRoKHRoaXMucmVmRGF0ZS5nZXRNb250aCgpICsgb2Zmc2V0KTtcbiAgICB0aGlzLmJ1aWxkQ2FsZW5kYXJHcmlkKHRoaXMucmVmRGF0ZSk7XG4gIH1cbiAgYXN5bmMgc2hvd01vbnRocygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBidXR0b25zID0gW107XG4gICAgY29uc3QgaW5wdXRzOiBhbnlbXSA9IFtdO1xuICAgIGNvbnN0IG1vbnRoID0gbmV3IERhdGUoMCk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gMTI7IGkrKykge1xuICAgICAgaW5wdXRzLnB1c2goe1xuICAgICAgICB0eXBlOiAncmFkaW8nLFxuICAgICAgICBsYWJlbDogbW9udGgudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMuX3RyYW5zbGF0ZS5nZXRDdXJyZW50TGFuZygpLCB7IG1vbnRoOiAnbG9uZycgfSksXG4gICAgICAgIHZhbHVlOiBpLnRvU3RyaW5nKCksXG4gICAgICAgIGNoZWNrZWQ6IGkgPT09IHRoaXMucmVmRGF0ZS5nZXRNb250aCgpICsgMVxuICAgICAgfSk7XG4gICAgICBtb250aC5zZXRNb250aChtb250aC5nZXRNb250aCgpICsgMSk7XG4gICAgfVxuICAgIGJ1dHRvbnMucHVzaCh7IHRleHQ6IHRoaXMuX3RyYW5zbGF0ZS5fKCdDT01NT04uQ0FOQ0VMJyksIHJvbGU6ICdjYW5jZWwnIH0pO1xuICAgIGJ1dHRvbnMucHVzaCh7XG4gICAgICB0ZXh0OiB0aGlzLl90cmFuc2xhdGUuXygnQ09NTU9OLlNFTEVDVCcpLFxuICAgICAgaGFuZGxlcjogKG06IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnJlZkRhdGUuc2V0TW9udGgocGFyc2VJbnQobSwgMTApIC0gMSk7XG4gICAgICAgIHRoaXMuYnVpbGRDYWxlbmRhckdyaWQodGhpcy5yZWZEYXRlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGFsZXJ0ID0gYXdhaXQgdGhpcy5fYWxlcnQuY3JlYXRlKHtcbiAgICAgIGhlYWRlcjogdGhpcy5fdHJhbnNsYXRlLl8oJ0lERUFfVU5DT01NT04uQ0FMRU5EQVIuTU9OVEgnKSxcbiAgICAgIGJ1dHRvbnMsXG4gICAgICBpbnB1dHNcbiAgICB9KTtcbiAgICBhbGVydC5wcmVzZW50KCk7XG4gIH1cblxuICBpc0RhdGVTZWxlY3RhYmxlKGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5kYXRlTWluICYmIGRhdGUgPCB0aGlzLmRhdGVNaW4pIHJldHVybiBmYWxzZTtcbiAgICBpZiAodGhpcy5kYXRlTWF4ICYmIGRhdGUgPiB0aGlzLmRhdGVNYXgpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHNlbGVjdERhdGUoZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpLCB0aGlzLmhvdXIsIHRoaXMubWludXRlKTtcbiAgfVxuXG4gIHNlbGVjdEhvdXIoaG91cjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5ob3VyID0gTnVtYmVyKGhvdXIpO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlLnNldEhvdXJzKHRoaXMuaG91cik7XG4gIH1cbiAgc2VsZWN0TWludXRlKG1pbnV0ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5taW51dGUgPSBOdW1iZXIobWludXRlKTtcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZS5zZXRNaW51dGVzKHRoaXMubWludXRlKTtcbiAgfVxuXG4gIGlzU2FtZURheShhOiBEYXRlLCBiOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGEuZ2V0RnVsbFllYXIoKSA9PT0gYi5nZXRGdWxsWWVhcigpICYmIGEuZ2V0TW9udGgoKSA9PT0gYi5nZXRNb250aCgpICYmIGEuZ2V0RGF0ZSgpID09PSBiLmdldERhdGUoKTtcbiAgfVxuICBpc1NhbWVNb250aChhOiBEYXRlLCBiOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGEuZ2V0RnVsbFllYXIoKSA9PT0gYi5nZXRGdWxsWWVhcigpICYmIGEuZ2V0TW9udGgoKSA9PT0gYi5nZXRNb250aCgpO1xuICB9XG5cbiAgaXNTYW1lSG91cihob3VyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZERhdGUuZ2V0SG91cnMoKSA9PT0gTnVtYmVyKGhvdXIpO1xuICB9XG4gIGlzU2FtZU1pbnV0ZShtaW51dGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNaW51dGVzKCkgPT09IE51bWJlcihtaW51dGUpO1xuICB9XG5cbiAgc2F2ZShyZXNldD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9tb2RhbC5kaXNtaXNzKHJlc2V0ID8gJycgOiB0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gIH1cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kYWwuZGlzbWlzcygpO1xuICB9XG59XG4iLCI8aW9uLWhlYWRlcj5cbiAgPGlvbi10b29sYmFyIGNvbG9yPVwiaWRlYVRvb2xiYXJcIj5cbiAgICA8aW9uLXRpdGxlPnt7IHRpdGxlIH19PC9pb24tdGl0bGU+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgIEBpZiAoIWhpZGVDbGVhckJ1dHRvbikge1xuICAgICAgICA8aW9uLWJ1dHRvbiBbdGl0bGVdPVwiJ0lERUFfVU5DT01NT04uQ0FMRU5EQVIuUkVTRVQnIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cInNhdmUodHJ1ZSlcIj5cbiAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJhcnJvdy11bmRvXCIgLz5cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgfVxuICAgICAgPGlvbi1idXR0b24gW3RpdGxlXT1cIidJREVBX1VOQ09NTU9OLkNBTEVOREFSLkNMT1NFX1dJVEhPVVRfU0FWSU5HJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNsb3NlXCIgLz5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuPGlvbi1jb250ZW50PlxuICA8aW9uLWdyaWQgZml4ZWQgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgIDxpb24tcm93PlxuICAgICAgPGgxIGNsYXNzPVwiaGVhZGVyTGFiZWxcIj57eyAnSURFQV9VTkNPTU1PTi5DQUxFTkRBUi5TRVRfREFURScgfCB0cmFuc2xhdGUgfX08L2gxPlxuICAgIDwvaW9uLXJvdz5cbiAgICA8aW9uLXJvdyBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDhweFwiPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXIgaW9uLW5vLXBhZGRpbmdcIiBbc2l6ZV09XCI1XCI+XG4gICAgICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlciBpb24tanVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHQgaW9uLW5vLXBhZGRpbmdcIiBbc2l6ZV09XCIzXCI+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIiAoY2xpY2spPVwiYWRkWWVhcnMoLTEpXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNoZXZyb24tYmFja1wiIC8+XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyIGlvbi1uby1wYWRkaW5nIHRhcHBhYmxlXCIgW3NpemVdPVwiNlwiPlxuICAgICAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInSURFQV9VTkNPTU1PTi5DQUxFTkRBUi5ZRUFSJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJyZWZEYXRlLmdldEZ1bGxZZWFyKClcIlxuICAgICAgICAgICAgICAoaW9uRm9jdXMpPVwiJGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnXCJcbiAgICAgICAgICAgICAgKGlvbkNoYW5nZSk9XCJzZXRZZWFyKCRldmVudD8udGFyZ2V0Py52YWx1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9pb24taW5wdXQ+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdCBpb24tbm8tcGFkZGluZ1wiIFtzaXplXT1cIjNcIj5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJhZGRZZWFycygrMSlcIj5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY2hldnJvbi1mb3J3YXJkXCIgLz5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgIDwvaW9uLXJvdz5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyIGlvbi1uby1wYWRkaW5nXCIgW3NpemVdPVwiN1wiPlxuICAgICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0IGlvbi1uby1wYWRkaW5nXCIgW3NpemVdPVwiM1wiPlxuICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImFkZE1vbnRocygtMSlcIj5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY2hldnJvbi1iYWNrXCIgLz5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXIgaW9uLW5vLXBhZGRpbmcgdGFwcGFibGVcIiBbc2l6ZV09XCI2XCIgKGNsaWNrKT1cInNob3dNb250aHMoKVwiPlxuICAgICAgICAgICAge3sgcmVmRGF0ZSB8IGRhdGVMb2NhbGU6ICdNTU1NJyB9fVxuICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWxlZnQgaW9uLW5vLXBhZGRpbmdcIiBbc2l6ZV09XCIzXCI+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIiAoY2xpY2spPVwiYWRkTW9udGhzKCsxKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjaGV2cm9uLWZvcndhcmRcIiAvPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgPC9pb24tcm93PlxuICAgICAgPC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgICA8aW9uLXJvdyBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDhweFwiIGNsYXNzPVwiaGVhZGVyTGFiZWxcIj5cbiAgICAgIEBmb3IgKGRkZCBvZiB3ZWVrRGF5czsgdHJhY2sgZGRkKSB7XG4gICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyIGlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAge3sgZGRkIH19XG4gICAgICAgIDwvaW9uLWNvbD5cbiAgICAgIH1cbiAgICA8L2lvbi1yb3c+XG4gICAgQGZvciAocm93IG9mIGNhbGVuZGFyR3JpZDsgdHJhY2sgcm93OyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIEBmb3IgKGNvbCBvZiByb3c7IHRyYWNrIGNvbDsgbGV0IGogPSAkaW5kZXgpIHtcbiAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlciBpb24tbm8tcGFkZGluZ1wiPlxuICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgc2hhcGU9XCJyb3VuZFwiXG4gICAgICAgICAgICAgIFtjb2xvcl09XCJcbiAgICAgICAgICAgICAgICBpc1NhbWVEYXkoY2FsZW5kYXJHcmlkW2ldW2pdLCB0b2RheSkgfHwgaXNTYW1lRGF5KGNhbGVuZGFyR3JpZFtpXVtqXSwgc2VsZWN0ZWREYXRlKVxuICAgICAgICAgICAgICAgICAgPyAncHJpbWFyeSdcbiAgICAgICAgICAgICAgICAgIDogaXNTYW1lTW9udGgoY2FsZW5kYXJHcmlkW2ldW2pdLCByZWZEYXRlKVxuICAgICAgICAgICAgICAgICAgICA/ICdkYXJrJ1xuICAgICAgICAgICAgICAgICAgICA6ICdtZWRpdW0nXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtmaWxsXT1cIlxuICAgICAgICAgICAgICAgIGlzU2FtZURheShjYWxlbmRhckdyaWRbaV1bal0sIHNlbGVjdGVkRGF0ZSlcbiAgICAgICAgICAgICAgICAgID8gJ3NvbGlkJ1xuICAgICAgICAgICAgICAgICAgOiBpc1NhbWVEYXkoY2FsZW5kYXJHcmlkW2ldW2pdLCB0b2RheSlcbiAgICAgICAgICAgICAgICAgICAgPyAnb3V0bGluZSdcbiAgICAgICAgICAgICAgICAgICAgOiAnY2xlYXInXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNEYXRlU2VsZWN0YWJsZShjYWxlbmRhckdyaWRbaV1bal0pXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERhdGUoY2FsZW5kYXJHcmlkW2ldW2pdKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGNhbGVuZGFyR3JpZFtpXVtqXSB8IGRhdGU6ICdkJyB9fVxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgfVxuICAgICAgPC9pb24tcm93PlxuICAgIH1cbiAgICBAaWYgKHRpbWVQaWNrZXIgfHwgbWFudWFsVGltZVBpY2tlcikge1xuICAgICAgPGlvbi1yb3c+XG4gICAgICAgIDxoMSBjbGFzcz1cImhlYWRlckxhYmVsXCI+XG4gICAgICAgICAge3sgJ0lERUFfVU5DT01NT04uQ0FMRU5EQVIuU0VUX1RJTUUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvaDE+XG4gICAgICA8L2lvbi1yb3c+XG4gICAgfVxuICAgIEBpZiAodGltZVBpY2tlcikge1xuICAgICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIiBbc2l6ZV09XCI3XCI+XG4gICAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgICBAZm9yIChob3VyIG9mIGhvdXJzOyB0cmFjayBob3VyKSB7XG4gICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyIGlvbi1uby1wYWRkaW5nXCIgW3NpemVdPVwiMlwiPlxuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2hhcGU9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICBbY29sb3JdPVwiaXNTYW1lSG91cihob3VyKSA/ICdwcmltYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgICAgICAgICAgICBbZmlsbF09XCJpc1NhbWVIb3VyKGhvdXIpID8gJ3NvbGlkJyA6ICdjbGVhcidcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEhvdXIoaG91cilcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGhvdXIgfX1cbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXIgaW9uLW5vLXBhZGRpbmdcIiBbc2l6ZV09XCIxXCI+IDogPC9pb24tY29sPlxuICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCIgW3NpemVdPVwiNFwiPlxuICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgQGZvciAobWludXRlIG9mIG1pbnV0ZXM7IHRyYWNrIG1pbnV0ZSkge1xuICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlciBpb24tbm8tcGFkZGluZ1wiIFtzaXplXT1cIjRcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cImlzU2FtZU1pbnV0ZShtaW51dGUpID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICAgICAgICAgIFtmaWxsXT1cImlzU2FtZU1pbnV0ZShtaW51dGUpID8gJ3NvbGlkJyA6ICdjbGVhcidcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE1pbnV0ZShtaW51dGUpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBtaW51dGUgfX1cbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDwvaW9uLXJvdz5cbiAgICB9XG4gICAgQGlmIChtYW51YWxUaW1lUGlja2VyKSB7XG4gICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXIgbWFudWFsVGltZVBpY2tlclwiPlxuICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjEyXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBtaW49XCIwXCIgbWF4PVwiMjNcIiBbdmFsdWVdPVwiaG91clwiIChjaGFuZ2UpPVwic2VsZWN0SG91cigkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIC8+XG4gICAgICAgICAgPHNwYW4+Ojwvc3Bhbj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIG1pbj1cIjBcIiBtYXg9XCI1OVwiIFt2YWx1ZV09XCJtaW51dGVcIiAoY2hhbmdlKT1cInNlbGVjdE1pbnV0ZSgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIC8+XG4gICAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDwvaW9uLXJvdz5cbiAgICB9XG4gIDwvaW9uLWdyaWQ+XG48L2lvbi1jb250ZW50PlxuPGlvbi1mb290ZXI+XG4gIDxpb24tdG9vbGJhciBjb2xvcj1cImlkZWFUb29sYmFyXCIgY2xhc3M9XCJ0YXBwYWJsZVwiIChjbGljayk9XCJzYXZlKClcIj5cbiAgICA8aW9uLXRpdGxlIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XG4gICAgICA8aW9uLWljb24gbmFtZT1cImNoZWNrbWFya1wiIC8+XG4gICAgPC9pb24tdGl0bGU+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1mb290ZXI+XG4iXX0=
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXJQaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvZGF0ZVRpbWUvY2FsZW5kYXJQaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvZGF0ZVRpbWUvY2FsZW5kYXJQaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUNMLGVBQWUsRUFDZixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixRQUFRLEVBQ1IsVUFBVSxFQUNWLFNBQVMsRUFDVCxPQUFPLEVBQ1AsT0FBTyxFQUNQLFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1YsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBRXZHOztHQUVHO0FBQ0gsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDO0FBMEJ6QixNQUFNLE9BQU8sMkJBQTJCO0lBeEJ4QztRQXlCVSxXQUFNLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pDLFdBQU0sR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakMsZUFBVSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRzVDLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRXpC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USxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQWxlcnRDb250cm9sbGVyLFxuICBNb2RhbENvbnRyb2xsZXIsXG4gIElvbkhlYWRlcixcbiAgSW9uVG9vbGJhcixcbiAgSW9uVGl0bGUsXG4gIElvbkJ1dHRvbnMsXG4gIElvbkJ1dHRvbixcbiAgSW9uSWNvbixcbiAgSW9uR3JpZCxcbiAgSW9uQ29udGVudCxcbiAgSW9uUm93LFxuICBJb25Db2wsXG4gIElvbklucHV0LFxuICBJb25Gb290ZXJcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBlcG9jaERhdGVUaW1lLCBlcG9jaElTT1N0cmluZyB9IGZyb20gJ2lkZWEtdG9vbGJveCc7XG5pbXBvcnQgeyBJREVBTG9jYWxpemVkRGF0ZVBpcGUsIElERUFUcmFuc2xhdGVQaXBlLCBJREVBVHJhbnNsYXRpb25zU2VydmljZSB9IGZyb20gJ0BpZGVhLWlvbmljL2NvbW1vbic7XG5cbi8qKlxuICogQSByYW5kb20gc3VuZGF5LCB1c2VkIGFzIHJlZmVyZW5jZSB0byBjYWxjdWxhdGUgdGhlIHdlZWsgZGF5cy5cbiAqL1xuY29uc3QgU1VOREFZID0gMjU5MjAwMDAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLWNhbGVuZGFyLXBpY2tlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgSURFQVRyYW5zbGF0ZVBpcGUsXG4gICAgSURFQUxvY2FsaXplZERhdGVQaXBlLFxuICAgIElvbkZvb3RlcixcbiAgICBJb25JbnB1dCxcbiAgICBJb25Db2wsXG4gICAgSW9uUm93LFxuICAgIElvbkNvbnRlbnQsXG4gICAgSW9uR3JpZCxcbiAgICBJb25JY29uLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25CdXR0b25zLFxuICAgIElvblRpdGxlLFxuICAgIElvblRvb2xiYXIsXG4gICAgSW9uSGVhZGVyXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnY2FsZW5kYXJQaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnY2FsZW5kYXJQaWNrZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBQ2FsZW5kYXJQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIF9tb2RhbCA9IGluamVjdChNb2RhbENvbnRyb2xsZXIpO1xuICBwcml2YXRlIF9hbGVydCA9IGluamVjdChBbGVydENvbnRyb2xsZXIpO1xuICBwcml2YXRlIF90cmFuc2xhdGUgPSBpbmplY3QoSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UpO1xuXG4gIEBJbnB1dCgpIGlucHV0RGF0ZTogZXBvY2hEYXRlVGltZSB8IGVwb2NoSVNPU3RyaW5nO1xuICBASW5wdXQoKSB0aW1lUGlja2VyID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1hbnVhbFRpbWVQaWNrZXIgPSBmYWxzZTtcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgaGlkZUNsZWFyQnV0dG9uID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1pbjogZXBvY2hEYXRlVGltZSB8IGVwb2NoSVNPU3RyaW5nO1xuICBASW5wdXQoKSBtYXg6IGVwb2NoRGF0ZVRpbWUgfCBlcG9jaElTT1N0cmluZztcblxuICByZWZEYXRlOiBEYXRlO1xuICBzZWxlY3RlZERhdGU6IERhdGU7XG4gIHRvZGF5OiBEYXRlO1xuICBjYWxlbmRhckdyaWQ6IERhdGVbXVtdO1xuICBob3VyOiBudW1iZXI7XG4gIG1pbnV0ZTogbnVtYmVyO1xuICBob3Vyczogc3RyaW5nW107XG4gIG1pbnV0ZXM6IHN0cmluZ1tdO1xuICB3ZWVrRGF5czogc3RyaW5nW107XG4gIGRhdGVNaW46IERhdGU7XG4gIGRhdGVNYXg6IERhdGU7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgdGhpcy5yZWZEYXRlID0gdGhpcy5pbnB1dERhdGUgPyBuZXcgRGF0ZSh0aGlzLmlucHV0RGF0ZSkgOiBuZXcgRGF0ZSh0aGlzLnRvZGF5KTtcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMucmVmRGF0ZSk7XG4gICAgdGhpcy5ob3VyID0gMTI7IC8vIHRvIGVuZHVyZSB0aW1lem9uZXNcbiAgICB0aGlzLm1pbnV0ZSA9IDA7XG4gICAgaWYgKHRoaXMudGltZVBpY2tlciB8fCB0aGlzLm1hbnVhbFRpbWVQaWNrZXIpIHtcbiAgICAgIHRoaXMuaG91ciA9IHRoaXMuc2VsZWN0ZWREYXRlLmdldEhvdXJzKCk7XG4gICAgICBpZiAodGhpcy5tYW51YWxUaW1lUGlja2VyKSB0aGlzLm1pbnV0ZSA9IHRoaXMuc2VsZWN0ZWREYXRlLmdldE1pbnV0ZXMoKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICAvLyByb3VuZCB0aGUgbWludXRlcyBhIG11bHRpcGxlIG9mIDVcbiAgICAgICAgdGhpcy5taW51dGUgPSBNYXRoLmNlaWwodGhpcy5zZWxlY3RlZERhdGUuZ2V0TWludXRlcygpIC8gNSkgKiA1O1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5zZXRNaW51dGVzKHRoaXMubWludXRlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5idWlsZENhbGVuZGFyR3JpZCh0aGlzLnJlZkRhdGUpO1xuICAgIHRoaXMuaG91cnMgPSBBcnJheS5mcm9tKEFycmF5KDI0KS5rZXlzKCkpLm1hcChpID0+ICcwJy5jb25jYXQoaS50b1N0cmluZygpKS5zbGljZSgtMikpO1xuICAgIHRoaXMubWludXRlcyA9IEFycmF5LmZyb20oQXJyYXkoMTIpLmtleXMoKSkubWFwKGkgPT4gJzAnLmNvbmNhdCgoaSAqIDUpLnRvU3RyaW5nKCkpLnNsaWNlKC0yKSk7XG4gICAgLy8gYnVpbGQgdGhlIHdlZWtkYXlzIGJhc2VkIG9uIHRoZSBjdXJyZW50IGxvY2FsZVxuICAgIHRoaXMud2Vla0RheXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGNvbnN0IHJlZkRhdGVGb3JXZWVrRGF5cyA9IG5ldyBEYXRlKFNVTkRBWSk7XG4gICAgcmVmRGF0ZUZvcldlZWtEYXlzLnNldERhdGUocmVmRGF0ZUZvcldlZWtEYXlzLmdldERhdGUoKSAtIHRoaXMuZ2V0TG9jYWxpc2VkRGF5KHJlZkRhdGVGb3JXZWVrRGF5cykpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICB0aGlzLndlZWtEYXlzLnB1c2gocmVmRGF0ZUZvcldlZWtEYXlzLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLl90cmFuc2xhdGUuZ2V0Q3VycmVudExhbmcoKSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pKTtcbiAgICAgIHJlZkRhdGVGb3JXZWVrRGF5cy5zZXREYXRlKHJlZkRhdGVGb3JXZWVrRGF5cy5nZXREYXRlKCkgKyAxKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubWluKSB0aGlzLmRhdGVNaW4gPSBuZXcgRGF0ZSh0aGlzLm1pbik7XG4gICAgaWYgKHRoaXMubWF4KSB0aGlzLmRhdGVNYXggPSBuZXcgRGF0ZSh0aGlzLm1heCk7XG4gIH1cblxuICBnZXRMb2NhbGlzZWREYXkoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgbGV0IG4gPSBkYXRlLmdldERheSgpO1xuICAgIHN3aXRjaCAodGhpcy5fdHJhbnNsYXRlLmdldEN1cnJlbnRMYW5nKCkpIHtcbiAgICAgIGNhc2UgJ2l0JzpcbiAgICAgICAgbiA9IC0tbiA8IDAgPyA2IDogbjtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9XG5cbiAgYnVpbGRDYWxlbmRhckdyaWQocmVmRGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIC8vIGZpbmQgdGhlIGZpcnN0IGRheSBpbiB0aGUgbW9udGg6IHRoZSBpbXBvcnRhbnQgZGF0YSBoZXJlIGlzIHRoZSBkYXkgb2YgdGhlIHdlZWtcbiAgICBjb25zdCBmaXJzdERhdGVPZk1vbnRoID0gbmV3IERhdGUocmVmRGF0ZS5nZXRGdWxsWWVhcigpLCByZWZEYXRlLmdldE1vbnRoKCksIDEpO1xuICAgIC8vIHRoZSBmb2xsb3dpbmcgZmxhZyBpcyB1c2VkIHRvIGRpdmlkZSB0aGUgbG9naWMgc28gSSBjYW4gZmlsbCB0aGUgY2FsZW5kYXJcbiAgICAvLyBhbHNvIHdpdGggdGhlIGRhdGVzIGZyb20gdGhlIHByZXZpb3VzIG1vbnRoLCB1bnRpbCB0aGVyZSdzIHNwYWNlIGluIHRoZSBncmlkXG4gICAgbGV0IGhhdmVudEZvdW5kRmlyc3REYXkgPSB0cnVlO1xuICAgIC8vIGluZGV4IHVzZWQgdG8gYnVpbGQgdGhlIGRhdGVzIG9mIHRoZSBtb250aCwgc3RhcnRpbmcgZnJvbSB0aGUgZmlyc3Qgb25lXG4gICAgbGV0IGluZGV4ID0gMTtcbiAgICB0aGlzLmNhbGVuZGFyR3JpZCA9IG5ldyBBcnJheTxEYXRlW10+KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA2OyBpKyspIHtcbiAgICAgIHRoaXMuY2FsZW5kYXJHcmlkW2ldID0gbmV3IEFycmF5PERhdGU+KCk7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IDc7IGorKykge1xuICAgICAgICBpZiAoaGF2ZW50Rm91bmRGaXJzdERheSkge1xuICAgICAgICAgIGlmICh0aGlzLmdldExvY2FsaXNlZERheShmaXJzdERhdGVPZk1vbnRoKSA9PT0gaikge1xuICAgICAgICAgICAgLy8gbm90ZTogY29uc2lkZXJzIFN1bmRheVxuICAgICAgICAgICAgaGF2ZW50Rm91bmRGaXJzdERheSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jYWxlbmRhckdyaWRbaV1bal0gPSBuZXcgRGF0ZShmaXJzdERhdGVPZk1vbnRoKTtcbiAgICAgICAgICAgIC8vIG5vdyB0aGUgSSd2ZSBmb3VuZCB0aGUgZmlyc3QgZGF0ZSBvZiB0aGUgbW9udGggSSBjYW4gZmlsbCB0aGUgY2FsZW5kYXJcbiAgICAgICAgICAgIC8vIHRoZSBkYXRlcyBmcm9tdCB0aGUgcHJldmlvdXMgbW9udGgsIHVudGlsIHRoZXJlJ3Mgc3BhY2UgaW4gdGhlIGdyaWRcbiAgICAgICAgICAgIGZvciAobGV0IHkgPSB0aGlzLmdldExvY2FsaXNlZERheShmaXJzdERhdGVPZk1vbnRoKTsgeSA+PSAwOyB5LS0pIHtcbiAgICAgICAgICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKGZpcnN0RGF0ZU9mTW9udGgpO1xuICAgICAgICAgICAgICBkLnNldERhdGUoZmlyc3REYXRlT2ZNb250aC5nZXREYXRlKCkgLSB5KTtcbiAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhckdyaWRbaV1bdGhpcy5nZXRMb2NhbGlzZWREYXkoZmlyc3REYXRlT2ZNb250aCkgLSB5XSA9IGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGZpbGwgdGhlIGZvbGxvd2luZyBkYXRlcyB1bnRpbCB0aGVyZSdzIHNwYWNlIGluIHRoZSBncmlkXG4gICAgICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKGZpcnN0RGF0ZU9mTW9udGgpO1xuICAgICAgICAgIGQuc2V0RGF0ZShmaXJzdERhdGVPZk1vbnRoLmdldERhdGUoKSArIGluZGV4KyspO1xuICAgICAgICAgIHRoaXMuY2FsZW5kYXJHcmlkW2ldW2pdID0gZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFkZFllYXJzKG9mZnNldDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5yZWZEYXRlLnNldEZ1bGxZZWFyKHRoaXMucmVmRGF0ZS5nZXRGdWxsWWVhcigpICsgb2Zmc2V0KTtcbiAgICB0aGlzLmJ1aWxkQ2FsZW5kYXJHcmlkKHRoaXMucmVmRGF0ZSk7XG4gIH1cbiAgc2V0WWVhcih5ZWFyOiBzdHJpbmcgfCBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXllYXIpIHJldHVybjtcblxuICAgIHRoaXMucmVmRGF0ZS5zZXRGdWxsWWVhcihOdW1iZXIoeWVhcikpO1xuICAgIHRoaXMuYnVpbGRDYWxlbmRhckdyaWQodGhpcy5yZWZEYXRlKTtcbiAgfVxuICBhZGRNb250aHMob2Zmc2V0OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnJlZkRhdGUuc2V0TW9udGgodGhpcy5yZWZEYXRlLmdldE1vbnRoKCkgKyBvZmZzZXQpO1xuICAgIHRoaXMuYnVpbGRDYWxlbmRhckdyaWQodGhpcy5yZWZEYXRlKTtcbiAgfVxuICBhc3luYyBzaG93TW9udGhzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJ1dHRvbnMgPSBbXTtcbiAgICBjb25zdCBpbnB1dHM6IGFueVtdID0gW107XG4gICAgY29uc3QgbW9udGggPSBuZXcgRGF0ZSgwKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSAxMjsgaSsrKSB7XG4gICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgIHR5cGU6ICdyYWRpbycsXG4gICAgICAgIGxhYmVsOiBtb250aC50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5fdHJhbnNsYXRlLmdldEN1cnJlbnRMYW5nKCksIHsgbW9udGg6ICdsb25nJyB9KSxcbiAgICAgICAgdmFsdWU6IGkudG9TdHJpbmcoKSxcbiAgICAgICAgY2hlY2tlZDogaSA9PT0gdGhpcy5yZWZEYXRlLmdldE1vbnRoKCkgKyAxXG4gICAgICB9KTtcbiAgICAgIG1vbnRoLnNldE1vbnRoKG1vbnRoLmdldE1vbnRoKCkgKyAxKTtcbiAgICB9XG4gICAgYnV0dG9ucy5wdXNoKHsgdGV4dDogdGhpcy5fdHJhbnNsYXRlLl8oJ0NPTU1PTi5DQU5DRUwnKSwgcm9sZTogJ2NhbmNlbCcgfSk7XG4gICAgYnV0dG9ucy5wdXNoKHtcbiAgICAgIHRleHQ6IHRoaXMuX3RyYW5zbGF0ZS5fKCdDT01NT04uU0VMRUNUJyksXG4gICAgICBoYW5kbGVyOiAobTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMucmVmRGF0ZS5zZXRNb250aChwYXJzZUludChtLCAxMCkgLSAxKTtcbiAgICAgICAgdGhpcy5idWlsZENhbGVuZGFyR3JpZCh0aGlzLnJlZkRhdGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgYWxlcnQgPSBhd2FpdCB0aGlzLl9hbGVydC5jcmVhdGUoe1xuICAgICAgaGVhZGVyOiB0aGlzLl90cmFuc2xhdGUuXygnSURFQV9VTkNPTU1PTi5DQUxFTkRBUi5NT05USCcpLFxuICAgICAgYnV0dG9ucyxcbiAgICAgIGlucHV0c1xuICAgIH0pO1xuICAgIGFsZXJ0LnByZXNlbnQoKTtcbiAgfVxuXG4gIGlzRGF0ZVNlbGVjdGFibGUoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmRhdGVNaW4gJiYgZGF0ZSA8IHRoaXMuZGF0ZU1pbikgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0aGlzLmRhdGVNYXggJiYgZGF0ZSA+IHRoaXMuZGF0ZU1heCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc2VsZWN0RGF0ZShkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCksIHRoaXMuaG91ciwgdGhpcy5taW51dGUpO1xuICB9XG5cbiAgc2VsZWN0SG91cihob3VyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmhvdXIgPSBOdW1iZXIoaG91cik7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUuc2V0SG91cnModGhpcy5ob3VyKTtcbiAgfVxuICBzZWxlY3RNaW51dGUobWludXRlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm1pbnV0ZSA9IE51bWJlcihtaW51dGUpO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlLnNldE1pbnV0ZXModGhpcy5taW51dGUpO1xuICB9XG5cbiAgaXNTYW1lRGF5KGE6IERhdGUsIGI6IERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYS5nZXRGdWxsWWVhcigpID09PSBiLmdldEZ1bGxZZWFyKCkgJiYgYS5nZXRNb250aCgpID09PSBiLmdldE1vbnRoKCkgJiYgYS5nZXREYXRlKCkgPT09IGIuZ2V0RGF0ZSgpO1xuICB9XG4gIGlzU2FtZU1vbnRoKGE6IERhdGUsIGI6IERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYS5nZXRGdWxsWWVhcigpID09PSBiLmdldEZ1bGxZZWFyKCkgJiYgYS5nZXRNb250aCgpID09PSBiLmdldE1vbnRoKCk7XG4gIH1cblxuICBpc1NhbWVIb3VyKGhvdXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRIb3VycygpID09PSBOdW1iZXIoaG91cik7XG4gIH1cbiAgaXNTYW1lTWludXRlKG1pbnV0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWREYXRlLmdldE1pbnV0ZXMoKSA9PT0gTnVtYmVyKG1pbnV0ZSk7XG4gIH1cblxuICBzYXZlKHJlc2V0PzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsLmRpc21pc3MocmVzZXQgPyAnJyA6IHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgfVxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tb2RhbC5kaXNtaXNzKCk7XG4gIH1cbn1cbiIsIjxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXIgY29sb3I9XCJpZGVhVG9vbGJhclwiPlxuICAgIDxpb24tdGl0bGU+e3sgdGl0bGUgfX08L2lvbi10aXRsZT5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgQGlmICghaGlkZUNsZWFyQnV0dG9uKSB7XG4gICAgICAgIDxpb24tYnV0dG9uIFt0aXRsZV09XCInSURFQV9VTkNPTU1PTi5DQUxFTkRBUi5SRVNFVCcgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwic2F2ZSh0cnVlKVwiPlxuICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImFycm93LXVuZG9cIiAvPlxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICB9XG4gICAgICA8aW9uLWJ1dHRvbiBbdGl0bGVdPVwiJ0lERUFfVU5DT01NT04uQ0FMRU5EQVIuQ0xPU0VfV0lUSE9VVF9TQVZJTkcnIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY2xvc2VcIiAvPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG48aW9uLWNvbnRlbnQ+XG4gIDxpb24tZ3JpZCBmaXhlZCBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgPGlvbi1yb3c+XG4gICAgICA8aDEgY2xhc3M9XCJoZWFkZXJMYWJlbFwiPnt7ICdJREVBX1VOQ09NTU9OLkNBTEVOREFSLlNFVF9EQVRFJyB8IHRyYW5zbGF0ZSB9fTwvaDE+XG4gICAgPC9pb24tcm93PlxuICAgIDxpb24tcm93IHN0eWxlPVwibWFyZ2luLWJvdHRvbTogOHB4XCI+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlciBpb24tbm8tcGFkZGluZ1wiIFtzaXplXT1cIjVcIj5cbiAgICAgICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtY2VudGVyIGlvbi1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodCBpb24tbm8tcGFkZGluZ1wiIFtzaXplXT1cIjNcIj5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJhZGRZZWFycygtMSlcIj5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY2hldnJvbi1iYWNrXCIgLz5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXIgaW9uLW5vLXBhZGRpbmcgdGFwcGFibGVcIiBbc2l6ZV09XCI2XCI+XG4gICAgICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidJREVBX1VOQ09NTU9OLkNBTEVOREFSLllFQVInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInJlZkRhdGUuZ2V0RnVsbFllYXIoKVwiXG4gICAgICAgICAgICAgIChpb25Gb2N1cyk9XCIkZXZlbnQudGFyZ2V0LnZhbHVlID0gJydcIlxuICAgICAgICAgICAgICAoaW9uQ2hhbmdlKT1cInNldFllYXIoJGV2ZW50Py50YXJnZXQ/LnZhbHVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2lvbi1pbnB1dD5cbiAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1sZWZ0IGlvbi1uby1wYWRkaW5nXCIgW3NpemVdPVwiM1wiPlxuICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImFkZFllYXJzKCsxKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjaGV2cm9uLWZvcndhcmRcIiAvPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgPC9pb24tcm93PlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXIgaW9uLW5vLXBhZGRpbmdcIiBbc2l6ZV09XCI3XCI+XG4gICAgICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHQgaW9uLW5vLXBhZGRpbmdcIiBbc2l6ZV09XCIzXCI+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIiAoY2xpY2spPVwiYWRkTW9udGhzKC0xKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjaGV2cm9uLWJhY2tcIiAvPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlciBpb24tbm8tcGFkZGluZyB0YXBwYWJsZVwiIFtzaXplXT1cIjZcIiAoY2xpY2spPVwic2hvd01vbnRocygpXCI+XG4gICAgICAgICAgICB7eyByZWZEYXRlIHwgZGF0ZUxvY2FsZTogJ01NTU0nIH19XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdCBpb24tbm8tcGFkZGluZ1wiIFtzaXplXT1cIjNcIj5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJhZGRNb250aHMoKzEpXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNoZXZyb24tZm9yd2FyZFwiIC8+XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICA8L2lvbi1yb3c+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICAgIDxpb24tcm93IHN0eWxlPVwibWFyZ2luLWJvdHRvbTogOHB4XCIgY2xhc3M9XCJoZWFkZXJMYWJlbFwiPlxuICAgICAgQGZvciAoZGRkIG9mIHdlZWtEYXlzOyB0cmFjayBkZGQpIHtcbiAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXIgaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgICB7eyBkZGQgfX1cbiAgICAgICAgPC9pb24tY29sPlxuICAgICAgfVxuICAgIDwvaW9uLXJvdz5cbiAgICBAZm9yIChyb3cgb2YgY2FsZW5kYXJHcmlkOyB0cmFjayByb3c7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgQGZvciAoY29sIG9mIHJvdzsgdHJhY2sgY29sOyBsZXQgaiA9ICRpbmRleCkge1xuICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyIGlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgICAgICAgICAgW2NvbG9yXT1cIlxuICAgICAgICAgICAgICAgIGlzU2FtZURheShjYWxlbmRhckdyaWRbaV1bal0sIHRvZGF5KSB8fCBpc1NhbWVEYXkoY2FsZW5kYXJHcmlkW2ldW2pdLCBzZWxlY3RlZERhdGUpXG4gICAgICAgICAgICAgICAgICA/ICdwcmltYXJ5J1xuICAgICAgICAgICAgICAgICAgOiBpc1NhbWVNb250aChjYWxlbmRhckdyaWRbaV1bal0sIHJlZkRhdGUpXG4gICAgICAgICAgICAgICAgICAgID8gJ2RhcmsnXG4gICAgICAgICAgICAgICAgICAgIDogJ21lZGl1bSdcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2ZpbGxdPVwiXG4gICAgICAgICAgICAgICAgaXNTYW1lRGF5KGNhbGVuZGFyR3JpZFtpXVtqXSwgc2VsZWN0ZWREYXRlKVxuICAgICAgICAgICAgICAgICAgPyAnc29saWQnXG4gICAgICAgICAgICAgICAgICA6IGlzU2FtZURheShjYWxlbmRhckdyaWRbaV1bal0sIHRvZGF5KVxuICAgICAgICAgICAgICAgICAgICA/ICdvdXRsaW5lJ1xuICAgICAgICAgICAgICAgICAgICA6ICdjbGVhcidcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0RhdGVTZWxlY3RhYmxlKGNhbGVuZGFyR3JpZFtpXVtqXSlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF0ZShjYWxlbmRhckdyaWRbaV1bal0pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgY2FsZW5kYXJHcmlkW2ldW2pdIHwgZGF0ZTogJ2QnIH19XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICB9XG4gICAgICA8L2lvbi1yb3c+XG4gICAgfVxuICAgIEBpZiAodGltZVBpY2tlciB8fCBtYW51YWxUaW1lUGlja2VyKSB7XG4gICAgICA8aW9uLXJvdz5cbiAgICAgICAgPGgxIGNsYXNzPVwiaGVhZGVyTGFiZWxcIj5cbiAgICAgICAgICB7eyAnSURFQV9VTkNPTU1PTi5DQUxFTkRBUi5TRVRfVElNRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9oMT5cbiAgICAgIDwvaW9uLXJvdz5cbiAgICB9XG4gICAgQGlmICh0aW1lUGlja2VyKSB7XG4gICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiIFtzaXplXT1cIjdcIj5cbiAgICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICAgIEBmb3IgKGhvdXIgb2YgaG91cnM7IHRyYWNrIGhvdXIpIHtcbiAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXIgaW9uLW5vLXBhZGRpbmdcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJpc1NhbWVIb3VyKGhvdXIpID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICAgICAgICAgIFtmaWxsXT1cImlzU2FtZUhvdXIoaG91cikgPyAnc29saWQnIDogJ2NsZWFyJ1wiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SG91cihob3VyKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgaG91ciB9fVxuICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvaW9uLXJvdz5cbiAgICAgICAgPC9pb24tY29sPlxuICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlciBpb24tbm8tcGFkZGluZ1wiIFtzaXplXT1cIjFcIj4gOiA8L2lvbi1jb2w+XG4gICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIiBbc2l6ZV09XCI0XCI+XG4gICAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgICBAZm9yIChtaW51dGUgb2YgbWludXRlczsgdHJhY2sgbWludXRlKSB7XG4gICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyIGlvbi1uby1wYWRkaW5nXCIgW3NpemVdPVwiNFwiPlxuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2hhcGU9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICBbY29sb3JdPVwiaXNTYW1lTWludXRlKG1pbnV0ZSkgPyAncHJpbWFyeScgOiAnZGFyaydcIlxuICAgICAgICAgICAgICAgICAgW2ZpbGxdPVwiaXNTYW1lTWludXRlKG1pbnV0ZSkgPyAnc29saWQnIDogJ2NsZWFyJ1wiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0TWludXRlKG1pbnV0ZSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IG1pbnV0ZSB9fVxuICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvaW9uLXJvdz5cbiAgICAgICAgPC9pb24tY29sPlxuICAgICAgPC9pb24tcm93PlxuICAgIH1cbiAgICBAaWYgKG1hbnVhbFRpbWVQaWNrZXIpIHtcbiAgICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlciBtYW51YWxUaW1lUGlja2VyXCI+XG4gICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgW3NpemVdPVwiMTJcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIG1pbj1cIjBcIiBtYXg9XCIyM1wiIFt2YWx1ZV09XCJob3VyXCIgKGNoYW5nZSk9XCJzZWxlY3RIb3VyKCRldmVudC50YXJnZXQudmFsdWUpXCIgLz5cbiAgICAgICAgICA8c3Bhbj46PC9zcGFuPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgbWluPVwiMFwiIG1heD1cIjU5XCIgW3ZhbHVlXT1cIm1pbnV0ZVwiIChjaGFuZ2UpPVwic2VsZWN0TWludXRlKCRldmVudC50YXJnZXQudmFsdWUpXCIgLz5cbiAgICAgICAgPC9pb24tY29sPlxuICAgICAgPC9pb24tcm93PlxuICAgIH1cbiAgPC9pb24tZ3JpZD5cbjwvaW9uLWNvbnRlbnQ+XG48aW9uLWZvb3Rlcj5cbiAgPGlvbi10b29sYmFyIGNvbG9yPVwiaWRlYVRvb2xiYXJcIiBjbGFzcz1cInRhcHBhYmxlXCIgKGNsaWNrKT1cInNhdmUoKVwiPlxuICAgIDxpb24tdGl0bGUgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIj5cbiAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hlY2ttYXJrXCIgLz5cbiAgICA8L2lvbi10aXRsZT5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWZvb3Rlcj5cbiJdfQ==
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
1
2
|
import { Component, Input, Output, EventEmitter, inject } from '@angular/core';
|
|
2
|
-
import { ModalController } from '@ionic/angular/standalone';
|
|
3
|
-
import { IDEATranslationsService } from '@idea-ionic/common';
|
|
3
|
+
import { ModalController, IonItem, IonButton, IonIcon, IonLabel, IonText } from '@ionic/angular/standalone';
|
|
4
|
+
import { IDEATranslatePipe, IDEATranslationsService } from '@idea-ionic/common';
|
|
4
5
|
import { IDEACalendarPickerComponent } from './calendarPicker.component';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@ionic/angular";
|
|
7
7
|
export class IDEADateTimeComponent {
|
|
8
8
|
constructor() {
|
|
9
9
|
this._modal = inject(ModalController);
|
|
@@ -90,11 +90,95 @@ export class IDEADateTimeComponent {
|
|
|
90
90
|
this.iconSelect.emit();
|
|
91
91
|
}
|
|
92
92
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEADateTimeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
93
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEADateTimeComponent, selector: "idea-date-time", inputs: { date: "date", timePicker: "timePicker", manualTimePicker: "manualTimePicker", useISOFormat: "useISOFormat", label: "label", icon: "icon", iconColor: "iconColor", lines: "lines", color: "color", placeholder: "placeholder", disabled: "disabled", obligatory: "obligatory", hideClearButton: "hideClearButton", min: "min", max: "max" }, outputs: { dateChange: "dateChange", iconSelect: "iconSelect" }, usesOnChanges: true, ngImport: i0, template:
|
|
93
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEADateTimeComponent, isStandalone: true, selector: "idea-date-time", inputs: { date: "date", timePicker: "timePicker", manualTimePicker: "manualTimePicker", useISOFormat: "useISOFormat", label: "label", icon: "icon", iconColor: "iconColor", lines: "lines", color: "color", placeholder: "placeholder", disabled: "disabled", obligatory: "obligatory", hideClearButton: "hideClearButton", min: "min", max: "max" }, outputs: { dateChange: "dateChange", iconSelect: "iconSelect" }, usesOnChanges: true, ngImport: i0, template: `
|
|
94
|
+
<ion-item
|
|
95
|
+
class="dateTimeItem"
|
|
96
|
+
[color]="color"
|
|
97
|
+
[lines]="lines"
|
|
98
|
+
[title]="placeholder || label || ''"
|
|
99
|
+
[button]="!disabled"
|
|
100
|
+
[disabled]="isOpening"
|
|
101
|
+
[class.withLabel]="label"
|
|
102
|
+
(click)="openCalendarPicker()"
|
|
103
|
+
>
|
|
104
|
+
@if (icon) {
|
|
105
|
+
<ion-button
|
|
106
|
+
fill="clear"
|
|
107
|
+
slot="start"
|
|
108
|
+
[color]="iconColor"
|
|
109
|
+
[class.marginTop]="label"
|
|
110
|
+
(click)="doIconSelect($event)"
|
|
111
|
+
>
|
|
112
|
+
<ion-icon [icon]="icon" slot="icon-only" />
|
|
113
|
+
</ion-button>
|
|
114
|
+
}
|
|
115
|
+
@if (label) {
|
|
116
|
+
<ion-label position="stacked" [class.selectable]="!disabled">
|
|
117
|
+
{{ label }}
|
|
118
|
+
@if (obligatory && !disabled) {
|
|
119
|
+
<ion-text class="obligatoryDot" />
|
|
120
|
+
}
|
|
121
|
+
</ion-label>
|
|
122
|
+
}
|
|
123
|
+
<ion-label class="value" [class.selectable]="!disabled">
|
|
124
|
+
@if (!valueToDisplay && !disabled) {
|
|
125
|
+
<ion-text class="placeholder" [class.selectable]="!disabled">
|
|
126
|
+
{{ placeholder }}
|
|
127
|
+
</ion-text>
|
|
128
|
+
}
|
|
129
|
+
{{ valueToDisplay }}
|
|
130
|
+
</ion-label>
|
|
131
|
+
@if (!disabled) {
|
|
132
|
+
<ion-icon slot="end" icon="caret-down" class="selectIcon" [class.selectable]="!disabled" />
|
|
133
|
+
}
|
|
134
|
+
</ion-item>
|
|
135
|
+
`, isInline: true, styles: [".dateTimeItem{min-height:48px;height:auto}.dateTimeItem .description{margin:10px 0;height:20px;line-height:20px;width:100%}.dateTimeItem .placeholder{color:var(--ion-color-medium)}.dateTimeItem .value{white-space:nowrap}.dateTimeItem .selectIcon{margin:0;padding-left:4px;font-size:.8em;color:var(--ion-color-medium)}.dateTimeItem.withLabel{min-height:58px;height:auto}.dateTimeItem.withLabel .selectIcon{padding-top:25px}.dateTimeItem.withLabel ion-button[slot=start]{margin-top:16px}.selectable{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }] }); }
|
|
94
136
|
}
|
|
95
137
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEADateTimeComponent, decorators: [{
|
|
96
138
|
type: Component,
|
|
97
|
-
args: [{ selector: 'idea-date-time',
|
|
139
|
+
args: [{ selector: 'idea-date-time', standalone: true, imports: [CommonModule, IDEATranslatePipe, IonText, IonLabel, IonIcon, IonButton, IonItem], template: `
|
|
140
|
+
<ion-item
|
|
141
|
+
class="dateTimeItem"
|
|
142
|
+
[color]="color"
|
|
143
|
+
[lines]="lines"
|
|
144
|
+
[title]="placeholder || label || ''"
|
|
145
|
+
[button]="!disabled"
|
|
146
|
+
[disabled]="isOpening"
|
|
147
|
+
[class.withLabel]="label"
|
|
148
|
+
(click)="openCalendarPicker()"
|
|
149
|
+
>
|
|
150
|
+
@if (icon) {
|
|
151
|
+
<ion-button
|
|
152
|
+
fill="clear"
|
|
153
|
+
slot="start"
|
|
154
|
+
[color]="iconColor"
|
|
155
|
+
[class.marginTop]="label"
|
|
156
|
+
(click)="doIconSelect($event)"
|
|
157
|
+
>
|
|
158
|
+
<ion-icon [icon]="icon" slot="icon-only" />
|
|
159
|
+
</ion-button>
|
|
160
|
+
}
|
|
161
|
+
@if (label) {
|
|
162
|
+
<ion-label position="stacked" [class.selectable]="!disabled">
|
|
163
|
+
{{ label }}
|
|
164
|
+
@if (obligatory && !disabled) {
|
|
165
|
+
<ion-text class="obligatoryDot" />
|
|
166
|
+
}
|
|
167
|
+
</ion-label>
|
|
168
|
+
}
|
|
169
|
+
<ion-label class="value" [class.selectable]="!disabled">
|
|
170
|
+
@if (!valueToDisplay && !disabled) {
|
|
171
|
+
<ion-text class="placeholder" [class.selectable]="!disabled">
|
|
172
|
+
{{ placeholder }}
|
|
173
|
+
</ion-text>
|
|
174
|
+
}
|
|
175
|
+
{{ valueToDisplay }}
|
|
176
|
+
</ion-label>
|
|
177
|
+
@if (!disabled) {
|
|
178
|
+
<ion-icon slot="end" icon="caret-down" class="selectIcon" [class.selectable]="!disabled" />
|
|
179
|
+
}
|
|
180
|
+
</ion-item>
|
|
181
|
+
`, styles: [".dateTimeItem{min-height:48px;height:auto}.dateTimeItem .description{margin:10px 0;height:20px;line-height:20px;width:100%}.dateTimeItem .placeholder{color:var(--ion-color-medium)}.dateTimeItem .value{white-space:nowrap}.dateTimeItem .selectIcon{margin:0;padding-left:4px;font-size:.8em;color:var(--ion-color-medium)}.dateTimeItem.withLabel{min-height:58px;height:auto}.dateTimeItem.withLabel .selectIcon{padding-top:25px}.dateTimeItem.withLabel ion-button[slot=start]{margin-top:16px}.selectable{cursor:pointer}\n"] }]
|
|
98
182
|
}], propDecorators: { date: [{
|
|
99
183
|
type: Input
|
|
100
184
|
}], timePicker: [{
|
|
@@ -130,4 +214,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
130
214
|
}], iconSelect: [{
|
|
131
215
|
type: Output
|
|
132
216
|
}] } });
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZVRpbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvZGF0ZVRpbWUvZGF0ZVRpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvZGF0ZVRpbWUvZGF0ZVRpbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFLWixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTdELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFPekUsTUFBTSxPQUFPLHFCQUFxQjtJQUxsQztRQU1VLFdBQU0sR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakMsZUFBVSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBTXJEOztXQUVHO1FBQ00sZUFBVSxHQUFHLEtBQUssQ0FBQztRQUM1Qjs7V0FFRztRQUNNLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUNsQzs7V0FFRztRQUNNLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBeUI5Qjs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDMUI7O1dBRUc7UUFDTSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzVCOztXQUVHO1FBQ00sb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFVdkIsZUFBVSxHQUFHLElBQUksWUFBWSxFQUErQyxDQUFDO1FBQzdFLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBS2hELGNBQVMsR0FBRyxLQUFLLENBQUM7S0FvRG5CO0lBbERD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QXFCLGtlQ3ZCbEMsMmxDQW1DQTs7MkZEWmEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGdCQUFnQjs4QkFXakIsSUFBSTtzQkFBWixLQUFLO2dCQUlHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsS0FBSztzQkFBYixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFJRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlHLEtBQUs7c0JBQWIsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBSUcsV0FBVztzQkFBbkIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUcsZUFBZTtzQkFBdkIsS0FBSztnQkFJRyxHQUFHO3NCQUFYLEtBQUs7Z0JBSUcsR0FBRztzQkFBWCxLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgT25DaGFuZ2VzLFxuICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZXBvY2hEYXRlVGltZSwgZXBvY2hJU09TdHJpbmcgfSBmcm9tICdpZGVhLXRvb2xib3gnO1xuaW1wb3J0IHsgSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5pbXBvcnQgeyBJREVBQ2FsZW5kYXJQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyUGlja2VyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtZGF0ZS10aW1lJyxcbiAgdGVtcGxhdGVVcmw6ICdkYXRlVGltZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydkYXRlVGltZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIElERUFEYXRlVGltZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIF9tb2RhbCA9IGluamVjdChNb2RhbENvbnRyb2xsZXIpO1xuICBwcml2YXRlIF90cmFuc2xhdGUgPSBpbmplY3QoSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0ZSB0byBzaG93L3BpY2suXG4gICAqL1xuICBASW5wdXQoKSBkYXRlOiBlcG9jaERhdGVUaW1lIHwgZXBvY2hJU09TdHJpbmc7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIHRpbWUgcGlja2VyIChkYXRldGltZSkgb3Igbm90IChkYXRlKS5cbiAgICovXG4gIEBJbnB1dCgpIHRpbWVQaWNrZXIgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgTUFOVUFMIHRpbWUgcGlja2VyIChkYXRldGltZSkgb3Igbm90IChkYXRlKS5cbiAgICovXG4gIEBJbnB1dCgpIG1hbnVhbFRpbWVQaWNrZXIgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXNlIHRoZSBgZXBvY2hJU09TdHJpbmdgIGZvcm1hdCBpbnN0ZWFkIG9mIGBlcG9jaERhdGVUaW1lYC5cbiAgICovXG4gIEBJbnB1dCgpIHVzZUlTT0Zvcm1hdCA9IGZhbHNlO1xuICAvKipcbiAgICogVGhlIGxhYmVsIGZvciB0aGUgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGljb24gZm9yIHRoZSBmaWVsZC5cbiAgICovXG4gIEBJbnB1dCgpIGljb246IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgaWNvbi5cbiAgICovXG4gIEBJbnB1dCgpIGljb25Db2xvcjogc3RyaW5nO1xuICAvKipcbiAgICogTGluZXMgcHJlZmVyZW5jZXMgZm9yIHRoZSBpdGVtLlxuICAgKi9cbiAgQElucHV0KCkgbGluZXM6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpIGNvbG9yOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIHBsYWNlaG9sZGVyIGZvciB0aGUgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgb2JsaWdhdG9yeSBkb3QgaXMgc2hvd24uXG4gICAqL1xuICBASW5wdXQoKSBvYmxpZ2F0b3J5ID0gZmFsc2U7XG4gIC8qKlxuICAgKiBJZiB0cnVlLCBoaWRldyB0aGUgY2xlYXIgYnV0dG9uIGluIHRoZSBoZWFkZXIuXG4gICAqL1xuICBASW5wdXQoKSBoaWRlQ2xlYXJCdXR0b24gPSBmYWxzZTtcbiAgLyoqXG4gICAqIElmIHNldCwgaXMgdGhlIG1pbmltdW0gZGF0ZSBzZWxlY3RhYmxlLlxuICAgKi9cbiAgQElucHV0KCkgbWluOiBlcG9jaERhdGVUaW1lIHwgZXBvY2hJU09TdHJpbmc7XG4gIC8qKlxuICAgKiBJZiBzZXQsIGlzIHRoZSBtYXhpbXVtIGRhdGUgc2VsZWN0YWJsZS5cbiAgICovXG4gIEBJbnB1dCgpIG1heDogZXBvY2hEYXRlVGltZSB8IGVwb2NoSVNPU3RyaW5nO1xuXG4gIEBPdXRwdXQoKSBkYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxlcG9jaERhdGVUaW1lIHwgZXBvY2hJU09TdHJpbmcgfCBudWxsIHwgYW55PigpO1xuICBAT3V0cHV0KCkgaWNvblNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICB2YWx1ZVRvRGlzcGxheTogc3RyaW5nO1xuICBwcml2YXRlIGxhbmdDaGFuZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBpc09wZW5pbmcgPSBmYWxzZTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxhbmdDaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLl90cmFuc2xhdGUub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoKTogdm9pZCA9PiB7XG4gICAgICB0aGlzLnZhbHVlVG9EaXNwbGF5ID0gdGhpcy5nZXRWYWx1ZVRvRGlzcGxheSh0aGlzLmRhdGUpO1xuICAgIH0pO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxhbmdDaGFuZ2VTdWJzY3JpcHRpb24pIHRoaXMubGFuZ0NoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5kYXRlIHx8IGNoYW5nZXMudGltZVBpY2tlcikgdGhpcy52YWx1ZVRvRGlzcGxheSA9IHRoaXMuZ2V0VmFsdWVUb0Rpc3BsYXkodGhpcy5kYXRlKTtcbiAgfVxuXG4gIGFzeW5jIG9wZW5DYWxlbmRhclBpY2tlcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmlzT3BlbmluZykgcmV0dXJuO1xuICAgIHRoaXMuaXNPcGVuaW5nID0gdHJ1ZTtcbiAgICBjb25zdCBtb2RhbCA9IGF3YWl0IHRoaXMuX21vZGFsLmNyZWF0ZSh7XG4gICAgICBjb21wb25lbnQ6IElERUFDYWxlbmRhclBpY2tlckNvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7XG4gICAgICAgIGlucHV0RGF0ZTogdGhpcy5kYXRlLFxuICAgICAgICB0aXRsZTogdGhpcy5sYWJlbCxcbiAgICAgICAgdGltZVBpY2tlcjogdGhpcy50aW1lUGlja2VyLFxuICAgICAgICBtYW51YWxUaW1lUGlja2VyOiB0aGlzLm1hbnVhbFRpbWVQaWNrZXIsXG4gICAgICAgIGhpZGVDbGVhckJ1dHRvbjogdGhpcy5oaWRlQ2xlYXJCdXR0b24sXG4gICAgICAgIG1pbjogdGhpcy5taW4sXG4gICAgICAgIG1heDogdGhpcy5tYXhcbiAgICAgIH1cbiAgICB9KTtcbiAgICBtb2RhbC5vbkRpZERpc21pc3MoKS50aGVuKCh7IGRhdGEgfSk6IHZvaWQgPT4ge1xuICAgICAgaWYgKGRhdGEgIT09IHVuZGVmaW5lZCAmJiBkYXRhICE9PSBudWxsKSB7XG4gICAgICAgIGlmIChkYXRhID09PSAnJykgdGhpcy5kb1NlbGVjdChudWxsKTtcbiAgICAgICAgZWxzZSB0aGlzLmRvU2VsZWN0KGRhdGEgYXMgRGF0ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbW9kYWwucHJlc2VudCgpO1xuICAgIHRoaXMuaXNPcGVuaW5nID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGdldFZhbHVlVG9EaXNwbGF5KGRhdGU6IGVwb2NoRGF0ZVRpbWUgfCBlcG9jaElTT1N0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuICFkYXRlXG4gICAgICA/ICcnXG4gICAgICA6IHRoaXMuX3RyYW5zbGF0ZS5mb3JtYXREYXRlKGRhdGUsIHRoaXMudGltZVBpY2tlciB8fCB0aGlzLm1hbnVhbFRpbWVQaWNrZXIgPyAnZCBNTU0geXl5eSwgSEg6bW0nIDogJ21lZGl1bURhdGUnKTtcbiAgfVxuXG4gIGRvU2VsZWN0KGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdChkYXRlID8gKHRoaXMudXNlSVNPRm9ybWF0ID8gZGF0ZS50b0lTT1N0cmluZygpIDogZGF0ZS52YWx1ZU9mKCkpIDogbnVsbCk7XG4gIH1cbiAgZG9JY29uU2VsZWN0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudCkgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5pY29uU2VsZWN0LmVtaXQoKTtcbiAgfVxufVxuIiwiPGlvbi1pdGVtXG4gIGNsYXNzPVwiZGF0ZVRpbWVJdGVtXCJcbiAgW2NvbG9yXT1cImNvbG9yXCJcbiAgW2xpbmVzXT1cImxpbmVzXCJcbiAgW3RpdGxlXT1cInBsYWNlaG9sZGVyIHx8IGxhYmVsIHx8ICcnXCJcbiAgW2J1dHRvbl09XCIhZGlzYWJsZWRcIlxuICBbZGlzYWJsZWRdPVwiaXNPcGVuaW5nXCJcbiAgW2NsYXNzLndpdGhMYWJlbF09XCJsYWJlbFwiXG4gIChjbGljayk9XCJvcGVuQ2FsZW5kYXJQaWNrZXIoKVwiXG4+XG4gIEBpZiAoaWNvbikge1xuICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIHNsb3Q9XCJzdGFydFwiIFtjb2xvcl09XCJpY29uQ29sb3JcIiBbY2xhc3MubWFyZ2luVG9wXT1cImxhYmVsXCIgKGNsaWNrKT1cImRvSWNvblNlbGVjdCgkZXZlbnQpXCI+XG4gICAgICA8aW9uLWljb24gW2ljb25dPVwiaWNvblwiIHNsb3Q9XCJpY29uLW9ubHlcIiAvPlxuICAgIDwvaW9uLWJ1dHRvbj5cbiAgfVxuICBAaWYgKGxhYmVsKSB7XG4gICAgPGlvbi1sYWJlbCBwb3NpdGlvbj1cInN0YWNrZWRcIiBbY2xhc3Muc2VsZWN0YWJsZV09XCIhZGlzYWJsZWRcIj5cbiAgICAgIHt7IGxhYmVsIH19XG4gICAgICBAaWYgKG9ibGlnYXRvcnkgJiYgIWRpc2FibGVkKSB7XG4gICAgICAgIDxpb24tdGV4dCBjbGFzcz1cIm9ibGlnYXRvcnlEb3RcIiAvPlxuICAgICAgfVxuICAgIDwvaW9uLWxhYmVsPlxuICB9XG4gIDxpb24tbGFiZWwgY2xhc3M9XCJ2YWx1ZVwiIFtjbGFzcy5zZWxlY3RhYmxlXT1cIiFkaXNhYmxlZFwiPlxuICAgIEBpZiAoIXZhbHVlVG9EaXNwbGF5ICYmICFkaXNhYmxlZCkge1xuICAgICAgPGlvbi10ZXh0IGNsYXNzPVwicGxhY2Vob2xkZXJcIiBbY2xhc3Muc2VsZWN0YWJsZV09XCIhZGlzYWJsZWRcIj5cbiAgICAgICAge3sgcGxhY2Vob2xkZXIgfX1cbiAgICAgIDwvaW9uLXRleHQ+XG4gICAgfVxuICAgIHt7IHZhbHVlVG9EaXNwbGF5IH19XG4gIDwvaW9uLWxhYmVsPlxuICBAaWYgKCFkaXNhYmxlZCkge1xuICAgIDxpb24taWNvbiBzbG90PVwiZW5kXCIgaWNvbj1cImNhcmV0LWRvd25cIiBjbGFzcz1cInNlbGVjdEljb25cIiBbY2xhc3Muc2VsZWN0YWJsZV09XCIhZGlzYWJsZWRcIiAvPlxuICB9XG48L2lvbi1pdGVtPlxuIl19
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZVRpbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvZGF0ZVRpbWUvZGF0ZVRpbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUtaLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUc1RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUF5RnpFLE1BQU0sT0FBTyxxQkFBcUI7SUF2RmxDO1FBd0ZVLFdBQU0sR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakMsZUFBVSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBTXJEOztXQUVHO1FBQ00sZUFBVSxHQUFHLEtBQUssQ0FBQztRQUM1Qjs7V0FFRztRQUNNLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUNsQzs7V0FFRztRQUNNLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBeUI5Qjs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDMUI7O1dBRUc7UUFDTSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzVCOztXQUVHO1FBQ00sb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFVdkIsZUFBVSxHQUFHLElBQUksWUFBWSxFQUErQyxDQUFDO1FBQzdFLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FB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O0lBQ3pCLENBQUM7OEdBMUhVLHFCQUFxQjtrR0FBckIscUJBQXFCLHNmQW5GdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDVCwya0JBM0NTLFlBQVksK0JBQXFCLE9BQU8sZ0ZBQUUsUUFBUSw2RkFBRSxPQUFPLDJKQUFFLFNBQVMsb1BBQUUsT0FBTzs7MkZBb0Y5RSxxQkFBcUI7a0JBdkZqQyxTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFlBQ2hGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQ1Q7OEJBZ0RRLElBQUk7c0JBQVosS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUlHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLEtBQUs7c0JBQWIsS0FBSztnQkFJRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBSUcsS0FBSztzQkFBYixLQUFLO2dCQUlHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUlHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBSUcsR0FBRztzQkFBWCxLQUFLO2dCQUlHLEdBQUc7c0JBQVgsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBPbkNoYW5nZXMsXG4gIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciwgSW9uSXRlbSwgSW9uQnV0dG9uLCBJb25JY29uLCBJb25MYWJlbCwgSW9uVGV4dCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBlcG9jaERhdGVUaW1lLCBlcG9jaElTT1N0cmluZyB9IGZyb20gJ2lkZWEtdG9vbGJveCc7XG5pbXBvcnQgeyBJREVBVHJhbnNsYXRlUGlwZSwgSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5pbXBvcnQgeyBJREVBQ2FsZW5kYXJQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyUGlja2VyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtZGF0ZS10aW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSURFQVRyYW5zbGF0ZVBpcGUsIElvblRleHQsIElvbkxhYmVsLCBJb25JY29uLCBJb25CdXR0b24sIElvbkl0ZW1dLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24taXRlbVxuICAgICAgY2xhc3M9XCJkYXRlVGltZUl0ZW1cIlxuICAgICAgW2NvbG9yXT1cImNvbG9yXCJcbiAgICAgIFtsaW5lc109XCJsaW5lc1wiXG4gICAgICBbdGl0bGVdPVwicGxhY2Vob2xkZXIgfHwgbGFiZWwgfHwgJydcIlxuICAgICAgW2J1dHRvbl09XCIhZGlzYWJsZWRcIlxuICAgICAgW2Rpc2FibGVkXT1cImlzT3BlbmluZ1wiXG4gICAgICBbY2xhc3Mud2l0aExhYmVsXT1cImxhYmVsXCJcbiAgICAgIChjbGljayk9XCJvcGVuQ2FsZW5kYXJQaWNrZXIoKVwiXG4gICAgPlxuICAgICAgQGlmIChpY29uKSB7XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICBzbG90PVwic3RhcnRcIlxuICAgICAgICAgIFtjb2xvcl09XCJpY29uQ29sb3JcIlxuICAgICAgICAgIFtjbGFzcy5tYXJnaW5Ub3BdPVwibGFiZWxcIlxuICAgICAgICAgIChjbGljayk9XCJkb0ljb25TZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW9uLWljb24gW2ljb25dPVwiaWNvblwiIHNsb3Q9XCJpY29uLW9ubHlcIiAvPlxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICB9XG4gICAgICBAaWYgKGxhYmVsKSB7XG4gICAgICAgIDxpb24tbGFiZWwgcG9zaXRpb249XCJzdGFja2VkXCIgW2NsYXNzLnNlbGVjdGFibGVdPVwiIWRpc2FibGVkXCI+XG4gICAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgICAgICBAaWYgKG9ibGlnYXRvcnkgJiYgIWRpc2FibGVkKSB7XG4gICAgICAgICAgICA8aW9uLXRleHQgY2xhc3M9XCJvYmxpZ2F0b3J5RG90XCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgfVxuICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cInZhbHVlXCIgW2NsYXNzLnNlbGVjdGFibGVdPVwiIWRpc2FibGVkXCI+XG4gICAgICAgIEBpZiAoIXZhbHVlVG9EaXNwbGF5ICYmICFkaXNhYmxlZCkge1xuICAgICAgICAgIDxpb24tdGV4dCBjbGFzcz1cInBsYWNlaG9sZGVyXCIgW2NsYXNzLnNlbGVjdGFibGVdPVwiIWRpc2FibGVkXCI+XG4gICAgICAgICAgICB7eyBwbGFjZWhvbGRlciB9fVxuICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgIH1cbiAgICAgICAge3sgdmFsdWVUb0Rpc3BsYXkgfX1cbiAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgQGlmICghZGlzYWJsZWQpIHtcbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBpY29uPVwiY2FyZXQtZG93blwiIGNsYXNzPVwic2VsZWN0SWNvblwiIFtjbGFzcy5zZWxlY3RhYmxlXT1cIiFkaXNhYmxlZFwiIC8+XG4gICAgICB9XG4gICAgPC9pb24taXRlbT5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLmRhdGVUaW1lSXRlbSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgLmRlc2NyaXB0aW9uIHtcbiAgICAgICAgICBtYXJnaW46IDEwcHggMDtcbiAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgICAgLnBsYWNlaG9sZGVyIHtcbiAgICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIH1cbiAgICAgICAgLnZhbHVlIHtcbiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB9XG4gICAgICAgIC5zZWxlY3RJY29uIHtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiA0cHg7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5kYXRlVGltZUl0ZW0ud2l0aExhYmVsIHtcbiAgICAgICAgbWluLWhlaWdodDogNThweDtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAuc2VsZWN0SWNvbiB7XG4gICAgICAgICAgcGFkZGluZy10b3A6IDI1cHg7XG4gICAgICAgIH1cbiAgICAgICAgaW9uLWJ1dHRvbltzbG90PSdzdGFydCddIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAuc2VsZWN0YWJsZSB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICBgXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSURFQURhdGVUaW1lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgX21vZGFsID0gaW5qZWN0KE1vZGFsQ29udHJvbGxlcik7XG4gIHByaXZhdGUgX3RyYW5zbGF0ZSA9IGluamVjdChJREVBVHJhbnNsYXRpb25zU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRlIHRvIHNob3cvcGljay5cbiAgICovXG4gIEBJbnB1dCgpIGRhdGU6IGVwb2NoRGF0ZVRpbWUgfCBlcG9jaElTT1N0cmluZztcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgdGltZSBwaWNrZXIgKGRhdGV0aW1lKSBvciBub3QgKGRhdGUpLlxuICAgKi9cbiAgQElucHV0KCkgdGltZVBpY2tlciA9IGZhbHNlO1xuICAvKipcbiAgICogV2hldGhlciB0byBzaG93IHRoZSBNQU5VQUwgdGltZSBwaWNrZXIgKGRhdGV0aW1lKSBvciBub3QgKGRhdGUpLlxuICAgKi9cbiAgQElucHV0KCkgbWFudWFsVGltZVBpY2tlciA9IGZhbHNlO1xuICAvKipcbiAgICogV2hldGhlciB0byB1c2UgdGhlIGBlcG9jaElTT1N0cmluZ2AgZm9ybWF0IGluc3RlYWQgb2YgYGVwb2NoRGF0ZVRpbWVgLlxuICAgKi9cbiAgQElucHV0KCkgdXNlSVNPRm9ybWF0ID0gZmFsc2U7XG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgZm9yIHRoZSBmaWVsZC5cbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgaWNvbiBmb3IgdGhlIGZpZWxkLlxuICAgKi9cbiAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBpY29uLlxuICAgKi9cbiAgQElucHV0KCkgaWNvbkNvbG9yOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMaW5lcyBwcmVmZXJlbmNlcyBmb3IgdGhlIGl0ZW0uXG4gICAqL1xuICBASW5wdXQoKSBsaW5lczogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGNvbG9yIGZvciB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KCkgY29sb3I6IHN0cmluZztcbiAgLyoqXG4gICAqIEEgcGxhY2Vob2xkZXIgZm9yIHRoZSBmaWVsZC5cbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBvYmxpZ2F0b3J5IGRvdCBpcyBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpIG9ibGlnYXRvcnkgPSBmYWxzZTtcbiAgLyoqXG4gICAqIElmIHRydWUsIGhpZGV3IHRoZSBjbGVhciBidXR0b24gaW4gdGhlIGhlYWRlci5cbiAgICovXG4gIEBJbnB1dCgpIGhpZGVDbGVhckJ1dHRvbiA9IGZhbHNlO1xuICAvKipcbiAgICogSWYgc2V0LCBpcyB0aGUgbWluaW11bSBkYXRlIHNlbGVjdGFibGUuXG4gICAqL1xuICBASW5wdXQoKSBtaW46IGVwb2NoRGF0ZVRpbWUgfCBlcG9jaElTT1N0cmluZztcbiAgLyoqXG4gICAqIElmIHNldCwgaXMgdGhlIG1heGltdW0gZGF0ZSBzZWxlY3RhYmxlLlxuICAgKi9cbiAgQElucHV0KCkgbWF4OiBlcG9jaERhdGVUaW1lIHwgZXBvY2hJU09TdHJpbmc7XG5cbiAgQE91dHB1dCgpIGRhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGVwb2NoRGF0ZVRpbWUgfCBlcG9jaElTT1N0cmluZyB8IG51bGwgfCBhbnk+KCk7XG4gIEBPdXRwdXQoKSBpY29uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHZhbHVlVG9EaXNwbGF5OiBzdHJpbmc7XG4gIHByaXZhdGUgbGFuZ0NoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGlzT3BlbmluZyA9IGZhbHNlO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubGFuZ0NoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuX3RyYW5zbGF0ZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKCgpOiB2b2lkID0+IHtcbiAgICAgIHRoaXMudmFsdWVUb0Rpc3BsYXkgPSB0aGlzLmdldFZhbHVlVG9EaXNwbGF5KHRoaXMuZGF0ZSk7XG4gICAgfSk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubGFuZ0NoYW5nZVN1YnNjcmlwdGlvbikgdGhpcy5sYW5nQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmRhdGUgfHwgY2hhbmdlcy50aW1lUGlja2VyKSB0aGlzLnZhbHVlVG9EaXNwbGF5ID0gdGhpcy5nZXRWYWx1ZVRvRGlzcGxheSh0aGlzLmRhdGUpO1xuICB9XG5cbiAgYXN5bmMgb3BlbkNhbGVuZGFyUGlja2VyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuaXNPcGVuaW5nKSByZXR1cm47XG4gICAgdGhpcy5pc09wZW5pbmcgPSB0cnVlO1xuICAgIGNvbnN0IG1vZGFsID0gYXdhaXQgdGhpcy5fbW9kYWwuY3JlYXRlKHtcbiAgICAgIGNvbXBvbmVudDogSURFQUNhbGVuZGFyUGlja2VyQ29tcG9uZW50LFxuICAgICAgY29tcG9uZW50UHJvcHM6IHtcbiAgICAgICAgaW5wdXREYXRlOiB0aGlzLmRhdGUsXG4gICAgICAgIHRpdGxlOiB0aGlzLmxhYmVsLFxuICAgICAgICB0aW1lUGlja2VyOiB0aGlzLnRpbWVQaWNrZXIsXG4gICAgICAgIG1hbnVhbFRpbWVQaWNrZXI6IHRoaXMubWFudWFsVGltZVBpY2tlcixcbiAgICAgICAgaGlkZUNsZWFyQnV0dG9uOiB0aGlzLmhpZGVDbGVhckJ1dHRvbixcbiAgICAgICAgbWluOiB0aGlzLm1pbixcbiAgICAgICAgbWF4OiB0aGlzLm1heFxuICAgICAgfVxuICAgIH0pO1xuICAgIG1vZGFsLm9uRGlkRGlzbWlzcygpLnRoZW4oKHsgZGF0YSB9KTogdm9pZCA9PiB7XG4gICAgICBpZiAoZGF0YSAhPT0gdW5kZWZpbmVkICYmIGRhdGEgIT09IG51bGwpIHtcbiAgICAgICAgaWYgKGRhdGEgPT09ICcnKSB0aGlzLmRvU2VsZWN0KG51bGwpO1xuICAgICAgICBlbHNlIHRoaXMuZG9TZWxlY3QoZGF0YSBhcyBEYXRlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBtb2RhbC5wcmVzZW50KCk7XG4gICAgdGhpcy5pc09wZW5pbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmFsdWVUb0Rpc3BsYXkoZGF0ZTogZXBvY2hEYXRlVGltZSB8IGVwb2NoSVNPU3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gIWRhdGVcbiAgICAgID8gJydcbiAgICAgIDogdGhpcy5fdHJhbnNsYXRlLmZvcm1hdERhdGUoZGF0ZSwgdGhpcy50aW1lUGlja2VyIHx8IHRoaXMubWFudWFsVGltZVBpY2tlciA/ICdkIE1NTSB5eXl5LCBISDptbScgOiAnbWVkaXVtRGF0ZScpO1xuICB9XG5cbiAgZG9TZWxlY3QoZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KGRhdGUgPyAodGhpcy51c2VJU09Gb3JtYXQgPyBkYXRlLnRvSVNPU3RyaW5nKCkgOiBkYXRlLnZhbHVlT2YoKSkgOiBudWxsKTtcbiAgfVxuICBkb0ljb25TZWxlY3QoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50KSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmljb25TZWxlY3QuZW1pdCgpO1xuICB9XG59XG4iXX0=
|