@idea-ionic/uncommon 8.2.6 → 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,9 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
1
2
|
import { Component, Input, inject } from '@angular/core';
|
|
2
|
-
import { ModalController } from '@ionic/angular/standalone';
|
|
3
|
+
import { ModalController, IonHeader, IonToolbar, IonButtons, IonButton, IonIcon, IonTitle, IonContent, IonGrid, IonRow, IonCol, IonText, IonSegment, IonSegmentButton, IonLabel } from '@ionic/angular/standalone';
|
|
3
4
|
import { TimeInterval } from 'idea-toolbox';
|
|
4
|
-
import { IDEATranslationsService } from '@idea-ionic/common';
|
|
5
|
+
import { IDEATranslatePipe, IDEATranslationsService } from '@idea-ionic/common';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@ionic/angular";
|
|
7
|
-
import * as i2 from "@idea-ionic/common";
|
|
8
7
|
export class IDEAFromTimeToTimeComponent {
|
|
9
8
|
constructor() {
|
|
10
9
|
this._modal = inject(ModalController);
|
|
@@ -120,11 +119,28 @@ export class IDEAFromTimeToTimeComponent {
|
|
|
120
119
|
this._modal.dismiss();
|
|
121
120
|
}
|
|
122
121
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAFromTimeToTimeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
123
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEAFromTimeToTimeComponent, selector: "idea-from-time-to-time", inputs: { timeInterval: "timeInterval", period: "period", notEarlierThan: "notEarlierThan", notLaterThan: "notLaterThan", title: "title" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"'COMMON.CLOSE' | translate\" (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'COMMON.RESET' | translate\" (click)=\"reset()\">\n <ion-icon name=\"arrow-undo\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-grid class=\"clockGrid\">\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"5\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(12) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12)\"\n [disabled]=\"!isAllowed(12)\"\n (click)=\"setInterval(12)\"\n >\n {{ getClockButtonContent(12) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(12, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12, minutes)\"\n [disabled]=\"!isAllowed(12, minutes)\"\n (click)=\"setInterval(12, minutes)\"\n >\n {{ getClockButtonContent(12, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"3\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(11, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11, minutes)\"\n [disabled]=\"!isAllowed(11, minutes)\"\n (click)=\"setInterval(11, minutes)\"\n >\n {{ getClockButtonContent(11, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(11) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11)\"\n [disabled]=\"!isAllowed(11)\"\n (click)=\"setInterval(11)\"\n >\n {{ getClockButtonContent(11) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(1) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1)\"\n [disabled]=\"!isAllowed(1)\"\n (click)=\"setInterval(1)\"\n >\n {{ getClockButtonContent(1) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(1, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1, minutes)\"\n [disabled]=\"!isAllowed(1, minutes)\"\n (click)=\"setInterval(1, minutes)\"\n >\n {{ getClockButtonContent(1, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(10, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10, minutes)\"\n [disabled]=\"!isAllowed(10, minutes)\"\n (click)=\"setInterval(10, minutes)\"\n >\n {{ getClockButtonContent(10, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(10) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10)\"\n [disabled]=\"!isAllowed(10)\"\n (click)=\"setInterval(10)\"\n >\n {{ getClockButtonContent(10) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(2) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2)\"\n [disabled]=\"!isAllowed(2)\"\n (click)=\"setInterval(2)\"\n >\n {{ getClockButtonContent(2) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(2, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2, minutes)\"\n [disabled]=\"!isAllowed(2, minutes)\"\n (click)=\"setInterval(2, minutes)\"\n >\n {{ getClockButtonContent(2, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(9, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9, minutes)\"\n [disabled]=\"!isAllowed(9, minutes)\"\n (click)=\"setInterval(9, minutes)\"\n >\n {{ getClockButtonContent(9, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(9) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9)\"\n [disabled]=\"!isAllowed(9)\"\n (click)=\"setInterval(9)\"\n >\n {{ getClockButtonContent(9) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center displayText\" [size]=\"4\">\n <ion-text [class.fromSelected]=\"segment === Segments.TO\">\n {{ 'IDEA_UNCOMMON.FTTT.FROM' | translate }}\n @if (segment === Segments.TO) {\n <span>{{ msToTimeString(_timeInterval.from) }}</span>\n }\n </ion-text>\n @if (segment === Segments.TO) {\n <ion-text>{{ 'IDEA_UNCOMMON.FTTT.TO' | translate }}</ion-text>\n }\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(3) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3)\"\n [disabled]=\"!isAllowed(3)\"\n (click)=\"setInterval(3)\"\n >\n {{ getClockButtonContent(3) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(3, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3, minutes)\"\n [disabled]=\"!isAllowed(3, minutes)\"\n (click)=\"setInterval(3, minutes)\"\n >\n {{ getClockButtonContent(3, minutes) }}\n </ion-button>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(8, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8, minutes)\"\n [disabled]=\"!isAllowed(8, minutes)\"\n (click)=\"setInterval(8, minutes)\"\n >\n {{ getClockButtonContent(8, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(8) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8)\"\n [disabled]=\"!isAllowed(8)\"\n (click)=\"setInterval(8)\"\n >\n {{ getClockButtonContent(8) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(4) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4)\"\n [disabled]=\"!isAllowed(4)\"\n (click)=\"setInterval(4)\"\n >\n {{ getClockButtonContent(4) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(4, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4, minutes)\"\n [disabled]=\"!isAllowed(4, minutes)\"\n (click)=\"setInterval(4, minutes)\"\n >\n {{ getClockButtonContent(4, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(7, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7, minutes)\"\n [disabled]=\"!isAllowed(7, minutes)\"\n (click)=\"setInterval(7, minutes)\"\n >\n {{ getClockButtonContent(7, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(7) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7)\"\n [disabled]=\"!isAllowed(7)\"\n (click)=\"setInterval(7)\"\n >\n {{ getClockButtonContent(7) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(5) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5)\"\n [disabled]=\"!isAllowed(5)\"\n (click)=\"setInterval(5)\"\n >\n {{ getClockButtonContent(5) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(5, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5, minutes)\"\n [disabled]=\"!isAllowed(5, minutes)\"\n (click)=\"setInterval(5, minutes)\"\n >\n {{ getClockButtonContent(5, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"3\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(6, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6, minutes)\"\n [disabled]=\"!isAllowed(6, minutes)\"\n (click)=\"setInterval(6, minutes)\"\n >\n {{ getClockButtonContent(6, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(6) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6)\"\n [disabled]=\"!isAllowed(6)\"\n (click)=\"setInterval(6)\"\n >\n {{ getClockButtonContent(6) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"5\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.PERIOD' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"period\" (ionChange)=\"period = $event?.detail?.value || period\">\n <ion-segment-button [value]=\"Periods.AM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.AM' | translate }}</ion-label>\n </ion-segment-button>\n <ion-segment-button [value]=\"Periods.PM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.PM' | translate }}</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.MINUTES_PREFERENCE' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"minutes\" (ionChange)=\"minutes = $event?.detail?.value || minutes\">\n <ion-segment-button value=\"15\">\n <ion-label>15</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"30\">\n <ion-label>30</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"45\">\n <ion-label>45</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n </ion-grid>\n</ion-content>\n", styles: ["ion-grid.clockGrid ion-button[size=large]{width:50px;height:50px;font-size:1.1em;font-weight:700}ion-grid.clockGrid ion-button[size=small]{font-size:.75em}ion-grid.clockGrid ion-button.oppositeMeridian{--border-color: var(--ion-color-medium);--border-style: dashed;--border-width: 1px}ion-grid.clockGrid .displayText ion-text{font-size:1.3em;font-weight:700}ion-grid.clockGrid .displayText ion-text.fromSelected{display:block;padding-bottom:3px;font-size:.9em}ion-grid.clockGrid ion-segment ion-segment-button{min-width:50px;--color-checked: var(--ion-color-dark);--border-color: var(--ion-color-dark)}ion-grid.clockGrid .prefLabel{font-size:.6em;font-weight:700;text-transform:uppercase}\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.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.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonSegment, selector: "ion-segment", inputs: ["color", "disabled", "mode", "scrollable", "selectOnFocus", "swipeGesture", "value"] }, { kind: "component", type: i1.IonSegmentButton, selector: "ion-segment-button", inputs: ["disabled", "layout", "mode", "type", "value"] }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { 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.SelectValueAccessor, selector: "ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "pipe", type: i2.IDEATranslatePipe, name: "translate" }] }); }
|
|
122
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEAFromTimeToTimeComponent, isStandalone: true, selector: "idea-from-time-to-time", inputs: { timeInterval: "timeInterval", period: "period", notEarlierThan: "notEarlierThan", notLaterThan: "notLaterThan", title: "title" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"'COMMON.CLOSE' | translate\" (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'COMMON.RESET' | translate\" (click)=\"reset()\">\n <ion-icon name=\"arrow-undo\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-grid class=\"clockGrid\">\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"5\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(12) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12)\"\n [disabled]=\"!isAllowed(12)\"\n (click)=\"setInterval(12)\"\n >\n {{ getClockButtonContent(12) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(12, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12, minutes)\"\n [disabled]=\"!isAllowed(12, minutes)\"\n (click)=\"setInterval(12, minutes)\"\n >\n {{ getClockButtonContent(12, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"3\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(11, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11, minutes)\"\n [disabled]=\"!isAllowed(11, minutes)\"\n (click)=\"setInterval(11, minutes)\"\n >\n {{ getClockButtonContent(11, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(11) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11)\"\n [disabled]=\"!isAllowed(11)\"\n (click)=\"setInterval(11)\"\n >\n {{ getClockButtonContent(11) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(1) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1)\"\n [disabled]=\"!isAllowed(1)\"\n (click)=\"setInterval(1)\"\n >\n {{ getClockButtonContent(1) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(1, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1, minutes)\"\n [disabled]=\"!isAllowed(1, minutes)\"\n (click)=\"setInterval(1, minutes)\"\n >\n {{ getClockButtonContent(1, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(10, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10, minutes)\"\n [disabled]=\"!isAllowed(10, minutes)\"\n (click)=\"setInterval(10, minutes)\"\n >\n {{ getClockButtonContent(10, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(10) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10)\"\n [disabled]=\"!isAllowed(10)\"\n (click)=\"setInterval(10)\"\n >\n {{ getClockButtonContent(10) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(2) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2)\"\n [disabled]=\"!isAllowed(2)\"\n (click)=\"setInterval(2)\"\n >\n {{ getClockButtonContent(2) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(2, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2, minutes)\"\n [disabled]=\"!isAllowed(2, minutes)\"\n (click)=\"setInterval(2, minutes)\"\n >\n {{ getClockButtonContent(2, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(9, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9, minutes)\"\n [disabled]=\"!isAllowed(9, minutes)\"\n (click)=\"setInterval(9, minutes)\"\n >\n {{ getClockButtonContent(9, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(9) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9)\"\n [disabled]=\"!isAllowed(9)\"\n (click)=\"setInterval(9)\"\n >\n {{ getClockButtonContent(9) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center displayText\" [size]=\"4\">\n <ion-text [class.fromSelected]=\"segment === Segments.TO\">\n {{ 'IDEA_UNCOMMON.FTTT.FROM' | translate }}\n @if (segment === Segments.TO) {\n <span>{{ msToTimeString(timeIntervalWC.from) }}</span>\n }\n </ion-text>\n @if (segment === Segments.TO) {\n <ion-text>{{ 'IDEA_UNCOMMON.FTTT.TO' | translate }}</ion-text>\n }\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(3) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3)\"\n [disabled]=\"!isAllowed(3)\"\n (click)=\"setInterval(3)\"\n >\n {{ getClockButtonContent(3) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(3, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3, minutes)\"\n [disabled]=\"!isAllowed(3, minutes)\"\n (click)=\"setInterval(3, minutes)\"\n >\n {{ getClockButtonContent(3, minutes) }}\n </ion-button>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(8, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8, minutes)\"\n [disabled]=\"!isAllowed(8, minutes)\"\n (click)=\"setInterval(8, minutes)\"\n >\n {{ getClockButtonContent(8, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(8) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8)\"\n [disabled]=\"!isAllowed(8)\"\n (click)=\"setInterval(8)\"\n >\n {{ getClockButtonContent(8) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(4) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4)\"\n [disabled]=\"!isAllowed(4)\"\n (click)=\"setInterval(4)\"\n >\n {{ getClockButtonContent(4) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(4, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4, minutes)\"\n [disabled]=\"!isAllowed(4, minutes)\"\n (click)=\"setInterval(4, minutes)\"\n >\n {{ getClockButtonContent(4, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(7, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7, minutes)\"\n [disabled]=\"!isAllowed(7, minutes)\"\n (click)=\"setInterval(7, minutes)\"\n >\n {{ getClockButtonContent(7, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(7) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7)\"\n [disabled]=\"!isAllowed(7)\"\n (click)=\"setInterval(7)\"\n >\n {{ getClockButtonContent(7) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(5) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5)\"\n [disabled]=\"!isAllowed(5)\"\n (click)=\"setInterval(5)\"\n >\n {{ getClockButtonContent(5) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(5, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5, minutes)\"\n [disabled]=\"!isAllowed(5, minutes)\"\n (click)=\"setInterval(5, minutes)\"\n >\n {{ getClockButtonContent(5, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"3\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(6, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6, minutes)\"\n [disabled]=\"!isAllowed(6, minutes)\"\n (click)=\"setInterval(6, minutes)\"\n >\n {{ getClockButtonContent(6, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(6) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6)\"\n [disabled]=\"!isAllowed(6)\"\n (click)=\"setInterval(6)\"\n >\n {{ getClockButtonContent(6) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"5\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.PERIOD' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"period\" (ionChange)=\"period = $event?.detail?.value || period\">\n <ion-segment-button [value]=\"Periods.AM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.AM' | translate }}</ion-label>\n </ion-segment-button>\n <ion-segment-button [value]=\"Periods.PM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.PM' | translate }}</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.MINUTES_PREFERENCE' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"minutes\" (ionChange)=\"minutes = $event?.detail?.value || minutes\">\n <ion-segment-button value=\"15\">\n <ion-label>15</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"30\">\n <ion-label>30</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"45\">\n <ion-label>45</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n </ion-grid>\n</ion-content>\n", styles: ["ion-grid.clockGrid ion-button[size=large]{width:50px;height:50px;font-size:1.1em;font-weight:700}ion-grid.clockGrid ion-button[size=small]{font-size:.75em}ion-grid.clockGrid ion-button.oppositeMeridian{--border-color: var(--ion-color-medium);--border-style: dashed;--border-width: 1px}ion-grid.clockGrid .displayText ion-text{font-size:1.3em;font-weight:700}ion-grid.clockGrid .displayText ion-text.fromSelected{display:block;padding-bottom:3px;font-size:.9em}ion-grid.clockGrid ion-segment ion-segment-button{min-width:50px;--color-checked: var(--ion-color-dark);--border-color: var(--ion-color-dark)}ion-grid.clockGrid .prefLabel{font-size:.6em;font-weight:700;text-transform:uppercase}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonSegmentButton, selector: "ion-segment-button", inputs: ["disabled", "layout", "mode", "type", "value"] }, { kind: "component", type: IonSegment, selector: "ion-segment", inputs: ["color", "disabled", "mode", "scrollable", "selectOnFocus", "swipeGesture", "value"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { 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: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { 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: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }] }); }
|
|
124
123
|
}
|
|
125
124
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAFromTimeToTimeComponent, decorators: [{
|
|
126
125
|
type: Component,
|
|
127
|
-
args: [{ selector: 'idea-from-time-to-time', template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"'COMMON.CLOSE' | translate\" (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'COMMON.RESET' | translate\" (click)=\"reset()\">\n <ion-icon name=\"arrow-undo\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-grid class=\"clockGrid\">\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"5\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(12) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12)\"\n [disabled]=\"!isAllowed(12)\"\n (click)=\"setInterval(12)\"\n >\n {{ getClockButtonContent(12) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(12, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12, minutes)\"\n [disabled]=\"!isAllowed(12, minutes)\"\n (click)=\"setInterval(12, minutes)\"\n >\n {{ getClockButtonContent(12, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"3\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(11, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11, minutes)\"\n [disabled]=\"!isAllowed(11, minutes)\"\n (click)=\"setInterval(11, minutes)\"\n >\n {{ getClockButtonContent(11, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(11) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11)\"\n [disabled]=\"!isAllowed(11)\"\n (click)=\"setInterval(11)\"\n >\n {{ getClockButtonContent(11) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(1) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1)\"\n [disabled]=\"!isAllowed(1)\"\n (click)=\"setInterval(1)\"\n >\n {{ getClockButtonContent(1) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(1, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1, minutes)\"\n [disabled]=\"!isAllowed(1, minutes)\"\n (click)=\"setInterval(1, minutes)\"\n >\n {{ getClockButtonContent(1, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(10, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10, minutes)\"\n [disabled]=\"!isAllowed(10, minutes)\"\n (click)=\"setInterval(10, minutes)\"\n >\n {{ getClockButtonContent(10, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(10) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10)\"\n [disabled]=\"!isAllowed(10)\"\n (click)=\"setInterval(10)\"\n >\n {{ getClockButtonContent(10) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(2) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2)\"\n [disabled]=\"!isAllowed(2)\"\n (click)=\"setInterval(2)\"\n >\n {{ getClockButtonContent(2) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(2, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2, minutes)\"\n [disabled]=\"!isAllowed(2, minutes)\"\n (click)=\"setInterval(2, minutes)\"\n >\n {{ getClockButtonContent(2, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(9, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9, minutes)\"\n [disabled]=\"!isAllowed(9, minutes)\"\n (click)=\"setInterval(9, minutes)\"\n >\n {{ getClockButtonContent(9, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(9) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9)\"\n [disabled]=\"!isAllowed(9)\"\n (click)=\"setInterval(9)\"\n >\n {{ getClockButtonContent(9) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center displayText\" [size]=\"4\">\n <ion-text [class.fromSelected]=\"segment === Segments.TO\">\n {{ 'IDEA_UNCOMMON.FTTT.FROM' | translate }}\n @if (segment === Segments.TO) {\n <span>{{ msToTimeString(_timeInterval.from) }}</span>\n }\n </ion-text>\n @if (segment === Segments.TO) {\n <ion-text>{{ 'IDEA_UNCOMMON.FTTT.TO' | translate }}</ion-text>\n }\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(3) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3)\"\n [disabled]=\"!isAllowed(3)\"\n (click)=\"setInterval(3)\"\n >\n {{ getClockButtonContent(3) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(3, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3, minutes)\"\n [disabled]=\"!isAllowed(3, minutes)\"\n (click)=\"setInterval(3, minutes)\"\n >\n {{ getClockButtonContent(3, minutes) }}\n </ion-button>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(8, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8, minutes)\"\n [disabled]=\"!isAllowed(8, minutes)\"\n (click)=\"setInterval(8, minutes)\"\n >\n {{ getClockButtonContent(8, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(8) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8)\"\n [disabled]=\"!isAllowed(8)\"\n (click)=\"setInterval(8)\"\n >\n {{ getClockButtonContent(8) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(4) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4)\"\n [disabled]=\"!isAllowed(4)\"\n (click)=\"setInterval(4)\"\n >\n {{ getClockButtonContent(4) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(4, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4, minutes)\"\n [disabled]=\"!isAllowed(4, minutes)\"\n (click)=\"setInterval(4, minutes)\"\n >\n {{ getClockButtonContent(4, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(7, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7, minutes)\"\n [disabled]=\"!isAllowed(7, minutes)\"\n (click)=\"setInterval(7, minutes)\"\n >\n {{ getClockButtonContent(7, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(7) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7)\"\n [disabled]=\"!isAllowed(7)\"\n (click)=\"setInterval(7)\"\n >\n {{ getClockButtonContent(7) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(5) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5)\"\n [disabled]=\"!isAllowed(5)\"\n (click)=\"setInterval(5)\"\n >\n {{ getClockButtonContent(5) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(5, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5, minutes)\"\n [disabled]=\"!isAllowed(5, minutes)\"\n (click)=\"setInterval(5, minutes)\"\n >\n {{ getClockButtonContent(5, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"3\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(6, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6, minutes)\"\n [disabled]=\"!isAllowed(6, minutes)\"\n (click)=\"setInterval(6, minutes)\"\n >\n {{ getClockButtonContent(6, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(6) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6)\"\n [disabled]=\"!isAllowed(6)\"\n (click)=\"setInterval(6)\"\n >\n {{ getClockButtonContent(6) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"5\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.PERIOD' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"period\" (ionChange)=\"period = $event?.detail?.value || period\">\n <ion-segment-button [value]=\"Periods.AM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.AM' | translate }}</ion-label>\n </ion-segment-button>\n <ion-segment-button [value]=\"Periods.PM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.PM' | translate }}</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.MINUTES_PREFERENCE' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"minutes\" (ionChange)=\"minutes = $event?.detail?.value || minutes\">\n <ion-segment-button value=\"15\">\n <ion-label>15</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"30\">\n <ion-label>30</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"45\">\n <ion-label>45</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n </ion-grid>\n</ion-content>\n", styles: ["ion-grid.clockGrid ion-button[size=large]{width:50px;height:50px;font-size:1.1em;font-weight:700}ion-grid.clockGrid ion-button[size=small]{font-size:.75em}ion-grid.clockGrid ion-button.oppositeMeridian{--border-color: var(--ion-color-medium);--border-style: dashed;--border-width: 1px}ion-grid.clockGrid .displayText ion-text{font-size:1.3em;font-weight:700}ion-grid.clockGrid .displayText ion-text.fromSelected{display:block;padding-bottom:3px;font-size:.9em}ion-grid.clockGrid ion-segment ion-segment-button{min-width:50px;--color-checked: var(--ion-color-dark);--border-color: var(--ion-color-dark)}ion-grid.clockGrid .prefLabel{font-size:.6em;font-weight:700;text-transform:uppercase}\n"] }]
|
|
126
|
+
args: [{ selector: 'idea-from-time-to-time', standalone: true, imports: [
|
|
127
|
+
CommonModule,
|
|
128
|
+
IDEATranslatePipe,
|
|
129
|
+
IonLabel,
|
|
130
|
+
IonSegmentButton,
|
|
131
|
+
IonSegment,
|
|
132
|
+
IonText,
|
|
133
|
+
IonCol,
|
|
134
|
+
IonRow,
|
|
135
|
+
IonGrid,
|
|
136
|
+
IonContent,
|
|
137
|
+
IonTitle,
|
|
138
|
+
IonIcon,
|
|
139
|
+
IonButton,
|
|
140
|
+
IonButtons,
|
|
141
|
+
IonToolbar,
|
|
142
|
+
IonHeader
|
|
143
|
+
], template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"'COMMON.CLOSE' | translate\" (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'COMMON.RESET' | translate\" (click)=\"reset()\">\n <ion-icon name=\"arrow-undo\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-grid class=\"clockGrid\">\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"5\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(12) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12)\"\n [disabled]=\"!isAllowed(12)\"\n (click)=\"setInterval(12)\"\n >\n {{ getClockButtonContent(12) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(12, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12, minutes)\"\n [disabled]=\"!isAllowed(12, minutes)\"\n (click)=\"setInterval(12, minutes)\"\n >\n {{ getClockButtonContent(12, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"3\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(11, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11, minutes)\"\n [disabled]=\"!isAllowed(11, minutes)\"\n (click)=\"setInterval(11, minutes)\"\n >\n {{ getClockButtonContent(11, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(11) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11)\"\n [disabled]=\"!isAllowed(11)\"\n (click)=\"setInterval(11)\"\n >\n {{ getClockButtonContent(11) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(1) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1)\"\n [disabled]=\"!isAllowed(1)\"\n (click)=\"setInterval(1)\"\n >\n {{ getClockButtonContent(1) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(1, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1, minutes)\"\n [disabled]=\"!isAllowed(1, minutes)\"\n (click)=\"setInterval(1, minutes)\"\n >\n {{ getClockButtonContent(1, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(10, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10, minutes)\"\n [disabled]=\"!isAllowed(10, minutes)\"\n (click)=\"setInterval(10, minutes)\"\n >\n {{ getClockButtonContent(10, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(10) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10)\"\n [disabled]=\"!isAllowed(10)\"\n (click)=\"setInterval(10)\"\n >\n {{ getClockButtonContent(10) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(2) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2)\"\n [disabled]=\"!isAllowed(2)\"\n (click)=\"setInterval(2)\"\n >\n {{ getClockButtonContent(2) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(2, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2, minutes)\"\n [disabled]=\"!isAllowed(2, minutes)\"\n (click)=\"setInterval(2, minutes)\"\n >\n {{ getClockButtonContent(2, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(9, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9, minutes)\"\n [disabled]=\"!isAllowed(9, minutes)\"\n (click)=\"setInterval(9, minutes)\"\n >\n {{ getClockButtonContent(9, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(9) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9)\"\n [disabled]=\"!isAllowed(9)\"\n (click)=\"setInterval(9)\"\n >\n {{ getClockButtonContent(9) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center displayText\" [size]=\"4\">\n <ion-text [class.fromSelected]=\"segment === Segments.TO\">\n {{ 'IDEA_UNCOMMON.FTTT.FROM' | translate }}\n @if (segment === Segments.TO) {\n <span>{{ msToTimeString(timeIntervalWC.from) }}</span>\n }\n </ion-text>\n @if (segment === Segments.TO) {\n <ion-text>{{ 'IDEA_UNCOMMON.FTTT.TO' | translate }}</ion-text>\n }\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(3) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3)\"\n [disabled]=\"!isAllowed(3)\"\n (click)=\"setInterval(3)\"\n >\n {{ getClockButtonContent(3) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(3, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3, minutes)\"\n [disabled]=\"!isAllowed(3, minutes)\"\n (click)=\"setInterval(3, minutes)\"\n >\n {{ getClockButtonContent(3, minutes) }}\n </ion-button>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(8, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8, minutes)\"\n [disabled]=\"!isAllowed(8, minutes)\"\n (click)=\"setInterval(8, minutes)\"\n >\n {{ getClockButtonContent(8, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(8) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8)\"\n [disabled]=\"!isAllowed(8)\"\n (click)=\"setInterval(8)\"\n >\n {{ getClockButtonContent(8) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(4) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4)\"\n [disabled]=\"!isAllowed(4)\"\n (click)=\"setInterval(4)\"\n >\n {{ getClockButtonContent(4) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(4, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4, minutes)\"\n [disabled]=\"!isAllowed(4, minutes)\"\n (click)=\"setInterval(4, minutes)\"\n >\n {{ getClockButtonContent(4, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(7, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7, minutes)\"\n [disabled]=\"!isAllowed(7, minutes)\"\n (click)=\"setInterval(7, minutes)\"\n >\n {{ getClockButtonContent(7, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(7) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7)\"\n [disabled]=\"!isAllowed(7)\"\n (click)=\"setInterval(7)\"\n >\n {{ getClockButtonContent(7) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(5) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5)\"\n [disabled]=\"!isAllowed(5)\"\n (click)=\"setInterval(5)\"\n >\n {{ getClockButtonContent(5) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(5, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5, minutes)\"\n [disabled]=\"!isAllowed(5, minutes)\"\n (click)=\"setInterval(5, minutes)\"\n >\n {{ getClockButtonContent(5, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"3\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(6, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6, minutes)\"\n [disabled]=\"!isAllowed(6, minutes)\"\n (click)=\"setInterval(6, minutes)\"\n >\n {{ getClockButtonContent(6, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(6) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6)\"\n [disabled]=\"!isAllowed(6)\"\n (click)=\"setInterval(6)\"\n >\n {{ getClockButtonContent(6) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"5\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.PERIOD' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"period\" (ionChange)=\"period = $event?.detail?.value || period\">\n <ion-segment-button [value]=\"Periods.AM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.AM' | translate }}</ion-label>\n </ion-segment-button>\n <ion-segment-button [value]=\"Periods.PM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.PM' | translate }}</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.MINUTES_PREFERENCE' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"minutes\" (ionChange)=\"minutes = $event?.detail?.value || minutes\">\n <ion-segment-button value=\"15\">\n <ion-label>15</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"30\">\n <ion-label>30</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"45\">\n <ion-label>45</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n </ion-grid>\n</ion-content>\n", styles: ["ion-grid.clockGrid ion-button[size=large]{width:50px;height:50px;font-size:1.1em;font-weight:700}ion-grid.clockGrid ion-button[size=small]{font-size:.75em}ion-grid.clockGrid ion-button.oppositeMeridian{--border-color: var(--ion-color-medium);--border-style: dashed;--border-width: 1px}ion-grid.clockGrid .displayText ion-text{font-size:1.3em;font-weight:700}ion-grid.clockGrid .displayText ion-text.fromSelected{display:block;padding-bottom:3px;font-size:.9em}ion-grid.clockGrid ion-segment ion-segment-button{min-width:50px;--color-checked: var(--ion-color-dark);--border-color: var(--ion-color-dark)}ion-grid.clockGrid .prefLabel{font-size:.6em;font-weight:700;text-transform:uppercase}\n"] }]
|
|
128
144
|
}], propDecorators: { timeInterval: [{
|
|
129
145
|
type: Input
|
|
130
146
|
}], period: [{
|
|
@@ -152,4 +168,4 @@ export var Periods;
|
|
|
152
168
|
Periods["AM"] = "AM";
|
|
153
169
|
Periods["PM"] = "PM";
|
|
154
170
|
})(Periods || (Periods = {}));
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbVRpbWVUb1RpbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvdGltZUludGVydmFsL2Zyb21UaW1lVG9UaW1lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvdW5jb21tb24vc3JjL3RpbWVJbnRlcnZhbC9mcm9tVGltZVRvVGltZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFPN0QsTUFBTSxPQUFPLDJCQUEyQjtJQUx4QztRQU1VLFdBQU0sR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakMsZUFBVSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBTXJEOztXQUVHO1FBQ00sV0FBTSxHQUFZLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFldEMsYUFBUSxHQUFHLFFBQVEsQ0FBQztRQUNwQixZQUFPLEdBQUcsT0FBTyxDQUFDO0tBK0duQjtJQTNHQyxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYSxFQUFFLE9BQWdCO1FBQ3pDLCtFQUErRTtRQUMvRSxLQUFLLEdBQUcs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O0lBQ3hCLENBQUM7OEdBeklVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLDBNQ1Z4QywyOGJBK1dBOzsyRkRyV2EsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLHdCQUF3Qjs4QkFXekIsWUFBWTtzQkFBcEIsS0FBSztnQkFJRyxNQUFNO3NCQUFkLEtBQUs7Z0JBSUcsY0FBYztzQkFBdEIsS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLEtBQUs7c0JBQWIsS0FBSzs7QUFxSFI7O0dBRUc7QUFDSCxJQUFLLFFBR0o7QUFIRCxXQUFLLFFBQVE7SUFDWCx5QkFBYSxDQUFBO0lBQ2IscUJBQVMsQ0FBQTtBQUNYLENBQUMsRUFISSxRQUFRLEtBQVIsUUFBUSxRQUdaO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxPQUdYO0FBSEQsV0FBWSxPQUFPO0lBQ2pCLG9CQUFTLENBQUE7SUFDVCxvQkFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUhXLE9BQU8sS0FBUCxPQUFPLFFBR2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgVGltZUludGVydmFsIH0gZnJvbSAnaWRlYS10b29sYm94JztcbmltcG9ydCB7IElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1mcm9tLXRpbWUtdG8tdGltZScsXG4gIHRlbXBsYXRlVXJsOiAnZnJvbVRpbWVUb1RpbWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnZnJvbVRpbWVUb1RpbWUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBRnJvbVRpbWVUb1RpbWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIF9tb2RhbCA9IGluamVjdChNb2RhbENvbnRyb2xsZXIpO1xuICBwcml2YXRlIF90cmFuc2xhdGUgPSBpbmplY3QoSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBpbnRlcnZhbCB0byBzZXQuXG4gICAqL1xuICBASW5wdXQoKSB0aW1lSW50ZXJ2YWw6IFRpbWVJbnRlcnZhbDtcbiAgLyoqXG4gICAqIFdoZXRoZXIgd2Ugc2hvdWxkIHN0YXJ0IHBpY2tpbmcgdGhlIHRpbWUgZGlzcGxheWluZyB0aGUgYWZ0ZXJub29uIChQTSkgb3IgdGhlIG1vcm5pbmcgKEFNLCBkZWZhdWx0KS5cbiAgICovXG4gIEBJbnB1dCgpIHBlcmlvZDogUGVyaW9kcyA9IFBlcmlvZHMuQU07XG4gIC8qKlxuICAgKiBBIHRpbWUgdG8gdXNlIGFzIGxvd2VyIGxpbWl0IGZvciB0aGUgcG9zc2libGUgY2hvaWNlcy5cbiAgICovXG4gIEBJbnB1dCgpIG5vdEVhcmxpZXJUaGFuOiBudW1iZXI7XG4gIC8qKlxuICAgKiBBIHRpbWUgdG8gdXNlIGFzIHVwcGVyIGxpbWl0IGZvciB0aGUgcG9zc2libGUgY2hvaWNlcy5cbiAgICovXG4gIEBJbnB1dCgpIG5vdExhdGVyVGhhbjogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIHRpdGxlIG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuXG4gIHNlZ21lbnQ6IFNlZ21lbnRzO1xuICBTZWdtZW50cyA9IFNlZ21lbnRzO1xuICBQZXJpb2RzID0gUGVyaW9kcztcbiAgdGltZUludGVydmFsV0M6IFRpbWVJbnRlcnZhbDtcbiAgbWludXRlczogbnVtYmVyO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VnbWVudCA9IFNlZ21lbnRzLkZST007XG4gICAgdGhpcy5taW51dGVzID0gMzA7XG4gICAgdGhpcy50aW1lSW50ZXJ2YWxXQyA9IG5ldyBUaW1lSW50ZXJ2YWwodGhpcy50aW1lSW50ZXJ2YWwpO1xuICB9XG5cbiAgc2V0SW50ZXJ2YWwoaG91cnM6IG51bWJlciwgbWludXRlcz86IG51bWJlcik6IHZvaWQge1xuICAgIC8vIGFkanVzdCB0aGUgaG91ciBiYXNlZCBvbiB0aGUgc3RhcnQgb2YgdGhlIGludGVydmFsIGFuZCB0aGUgc2V0dGluZ3Mgb2YgYW0vcG1cbiAgICBob3VycyA9IHRoaXMuY29udGV4dHVhbGl6ZUhvdXIoaG91cnMsIG1pbnV0ZXMpO1xuICAgIC8vIGNvbnZlcnQgdGhlIGhvdXJzIGFuZCBtaW51dGVzIGluIG1pbGxpc2Vjb25kc1xuICAgIGNvbnN0IHRpbWVNcyA9IHRoaXMudGltZVRvTXMoaG91cnMsIG1pbnV0ZXMpO1xuICAgIC8vIHNldCB0aGUgY29ycmVjdCBwYXJ0IG9mIHRoZSBpbnRlcnZhbCwgYmFzZWQgb24gdGhlIGN1cnJlbnQgc2VnbWVudFxuICAgIGlmICh0aGlzLnNlZ21lbnQgPT09IFNlZ21lbnRzLkZST00pIHtcbiAgICAgIC8vIHNldCB0aGUgc3RhcnQgb2YgdGhlIGludGVydmFsIChmcm9tKSBhbmQgY2hhbmdlIHRoZSBzZWdtZW50IHNvIHRoYXQgdGhlIGVuZCAodG8pIHdpbGwgYmUgcGlja2VkXG4gICAgICB0aGlzLnRpbWVJbnRlcnZhbFdDLmZyb20gPSB0aW1lTXM7XG4gICAgICB0aGlzLnNlZ21lbnQgPSBTZWdtZW50cy5UTztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY2FuJ3QgcHJvY2VlZCBpZiBmcm9tIGFuZCB0byBhcmUgZXF1YWxcbiAgICAgIGlmICh0aW1lTXMgPT09IHRoaXMudGltZUludGVydmFsV0MuZnJvbSkgcmV0dXJuO1xuICAgICAgLy8gc2V0IHRoZSBlbmQgb2YgdGhlIGludGVydmFsICh0bylcbiAgICAgIHRoaXMudGltZUludGVydmFsV0MudG8gPSB0aW1lTXM7XG4gICAgICAvLyBzYXZlIHRoZSBjaGFuZ2VzIGFuZCBub3RpZnkgdGhlIHBhcmVudCBjb21wb25lbnRcbiAgICAgIHRoaXMuc2F2ZSgpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIHRpbWVUb01zKGhvdXJzOiBudW1iZXIsIG1pbnV0ZXM/OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiAoaG91cnMgKiA2MCAqIDYwICsgKG1pbnV0ZXMgfHwgMCkgKiA2MCkgKiAxMDAwO1xuICB9XG5cbiAgZ2V0Q2xvY2tCdXR0b25Db250ZW50KGhvdXJzOiBudW1iZXIsIG1pbnV0ZXM/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIC8vIGFkanVzdCB0aGUgaG91ciBiYXNlZCBvbiB0aGUgc3RhcnQgb2YgdGhlIGludGVydmFsIGFuZCB0aGUgc2V0dGluZ3Mgb2YgYW0vcG1cbiAgICBob3VycyA9IHRoaXMuY29udGV4dHVhbGl6ZUhvdXIoaG91cnMsIG1pbnV0ZXMpO1xuICAgIC8vIGNvbnZlcnQgdGhlIGNhbGN1bGF0ZWQgdGltZSBpbnRvIGEgcmVhZGFibGUgc3RyaW5nOyB3ZSBuZWVkIHRvIGZvcm1hdCBpdCB0byBkaXN0aW5ndWlzaCAwLTI0IHZzIDAtMTIgYW0vcG1cbiAgICBjb25zdCByZWZEYXRlID0gbmV3IERhdGUoKTtcbiAgICByZWZEYXRlLnNldEhvdXJzKGhvdXJzLCBtaW51dGVzIHx8IDAsIDApO1xuICAgIGNvbnN0IHN0ciA9IHRoaXMuX3RyYW5zbGF0ZS5mb3JtYXREYXRlKHJlZkRhdGUsICdzaG9ydFRpbWUnKTtcbiAgICAvLyByZW1vdmUgdGhlIGV4dHJhIHBhcnQgKGUuZy4gYW0vcG0pLCBiYXNlZCBvbiB0aGUgdHlwZSBvZiBidXR0b24gd2UgaGF2ZSB0byBzaG93XG4gICAgY29uc3Qgc3RyQXJyID0gc3RyLnNwbGl0KCc6Jyk7XG4gICAgcmV0dXJuIFN0cmluZyhOdW1iZXIoc3RyQXJyWzBdKSkuY29uY2F0KG1pbnV0ZXMgPyAnOicuY29uY2F0KHN0ckFyclsxXS5zbGljZSgwLCAyKSkgOiAnJyk7XG4gIH1cbiAgcHJpdmF0ZSBjb250ZXh0dWFsaXplSG91cihob3VyczogbnVtYmVyLCBtaW51dGVzPzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAvLyBhZGp1c3QgdGhlIGNvbnRlbnQgdG8gdGhlIGFmdGVybm9vbiBob3VycywgaWYgbmVlZGVkXG4gICAgaWYgKHRoaXMucGVyaW9kID09PSBQZXJpb2RzLlBNKSBob3VycyArPSAxMjtcbiAgICAvLyBpZiB3ZSBhbHJlYWR5IHNlbGVjdGVkIHRoZSBzdGFydCBvZiB0aGUgaW50ZXJ2YWwsIGNoZWNrIHdoZXRoZXIgd2UgbmVlZCB0byBhZGp1c3QgdGhlIHRpbWU6IHRoZSBjZW50ZXIgb2YgdGhlXG4gICAgLy8gY2xvY2sgd2lsbCBiZSBtb3ZlZCB0byB0aGUgc2VsZWN0ZWQgaG91ciAoZnJvbSksIHRvIGhhdmUgYSByZWFzb25hYmxlIHNldCBvZiBjaG9pY2VzIGZvciB0aGUgZW5kICh0bylcbiAgICBpZiAodGhpcy5zZWdtZW50ID09PSBTZWdtZW50cy5UTyAmJiB0aGlzLnRpbWVUb01zKGhvdXJzLCBtaW51dGVzKSA8IHRoaXMudGltZUludGVydmFsV0MuZnJvbSlcbiAgICAgIGhvdXJzICs9IHRoaXMucGVyaW9kID09PSBQZXJpb2RzLlBNID8gLTEyIDogMTI7XG4gICAgLy8gc2V0IG1pZG5pZ2h0IHRvIDAwXG4gICAgaWYgKGhvdXJzID09PSAyNCkgaG91cnMgPSAwO1xuICAgIHJldHVybiBob3VycztcbiAgfVxuXG4gIGVxdWFsc0Zyb20oaG91cnM6IG51bWJlciwgbWludXRlcz86IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIC8vIGlmIHRoZSBzdGFydCBvZiB0aGUgaW50ZXJ2YWwgaGFzbid0IGJlZW4gc2VsZWN0ZWQgeWV0LCBza2lwIGl0XG4gICAgaWYgKHRoaXMuc2VnbWVudCA9PT0gU2VnbWVudHMuRlJPTSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGFkanVzdCB0aGUgaG91ciBiYXNlZCBvbiB0aGUgc3RhcnQgb2YgdGhlIGludGVydmFsIGFuZCB0aGUgc2V0dGluZ3Mgb2YgYW0vcG1cbiAgICBob3VycyA9IHRoaXMuY29udGV4dHVhbGl6ZUhvdXIoaG91cnMsIG1pbnV0ZXMpO1xuICAgIC8vIGNvbXBhcmUgdGhlIHR3byBzdHJpbmdzIGJhc2VkIG9uIHRoZSB0aW1lc3RhbXBzIGluIG1zXG4gICAgcmV0dXJuIHRoaXMubXNUb1RpbWVTdHJpbmcodGhpcy50aW1lSW50ZXJ2YWxXQy5mcm9tKSA9PT0gdGhpcy5tc1RvVGltZVN0cmluZyh0aGlzLnRpbWVUb01zKGhvdXJzLCBtaW51dGVzKSk7XG4gIH1cblxuICBpc0FsbG93ZWQoaG91cnM6IG51bWJlciwgbWludXRlcz86IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIC8vIGFkanVzdCB0aGUgaG91ciBiYXNlZCBvbiB0aGUgc3RhcnQgb2YgdGhlIGludGVydmFsIGFuZCB0aGUgc2V0dGluZ3Mgb2YgYW0vcG1cbiAgICBob3VycyA9IHRoaXMuY29udGV4dHVhbGl6ZUhvdXIoaG91cnMsIG1pbnV0ZXMpO1xuICAgIC8vIGNoZWNrIHdoZXRoZXIgdGhlIHNlbGVjdGVkIHRpbWUgaXMgaW5zaWRlIHRoZSBnaXZlbiBib3VuZGFyaWVzXG4gICAgcmV0dXJuIChcbiAgICAgICghdGhpcy5ub3RFYXJsaWVyVGhhbiB8fFxuICAgICAgICB0aGlzLnRpbWVUb01zKGhvdXJzLCBtaW51dGVzKSA+PSB0aGlzLm5vdEVhcmxpZXJUaGFuIHx8XG4gICAgICAgIHRoaXMudGltZVRvTXMoaG91cnMsIG1pbnV0ZXMpID09PSAwKSAmJlxuICAgICAgKCF0aGlzLm5vdExhdGVyVGhhbiB8fCB0aGlzLnRpbWVUb01zKGhvdXJzLCBtaW51dGVzKSA8PSB0aGlzLm5vdExhdGVyVGhhbilcbiAgICApO1xuICB9XG5cbiAgaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKGhvdXJzOiBudW1iZXIsIG1pbnV0ZXM/OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAvLyBpZiB0aGUgc3RhcnQgb2YgdGhlIGludGVydmFsIGhhc24ndCBiZWVuIHNlbGVjdGVkIHlldCwgc2tpcCBpdFxuICAgIGlmICh0aGlzLnNlZ21lbnQgPT09IFNlZ21lbnRzLkZST00pIHJldHVybiBmYWxzZTtcbiAgICAvLyBhZGp1c3QgdGhlIGhvdXIgYmFzZWQgb24gdGhlIHN0YXJ0IG9mIHRoZSBpbnRlcnZhbCBhbmQgdGhlIHNldHRpbmdzIG9mIGFtL3BtXG4gICAgaG91cnMgPSB0aGlzLmNvbnRleHR1YWxpemVIb3VyKGhvdXJzLCBtaW51dGVzKTtcbiAgICAvLyBjYWxjdWxhdGUgdGhlIG1zIG9mIHRoZSBzZWxlY3RlZCB0aW1lIGFuZCBvZiBcIm5vb25cIiB0aW1lICh0byBkZXRlcm0gdGhlIG1lcmlkaWFuKVxuICAgIGNvbnN0IHRpbWVNcyA9IHRoaXMudGltZVRvTXMoaG91cnMsIG1pbnV0ZXMpO1xuICAgIGNvbnN0IG5vb25NcyA9IHRoaXMudGltZVRvTXMoMTIpO1xuICAgIC8vIHJldHVybiB0cnVlIGluIGNhc2UgdGhlIGhvdXIgZG9lc24ndCBiZWxvbmcgdG8gdGhlIGN1cnJlbnQgbWVyaWRpYW5cbiAgICByZXR1cm4gKHRoaXMucGVyaW9kID09PSBQZXJpb2RzLkFNICYmIHRpbWVNcyA+IG5vb25NcykgfHwgKHRoaXMucGVyaW9kID09PSBQZXJpb2RzLlBNICYmIHRpbWVNcyA8IG5vb25Ncyk7XG4gIH1cblxuICBtc1RvVGltZVN0cmluZyh0aW1lOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmICghdGltZSkgcmV0dXJuICcnO1xuICAgIC8vIG5vdGU6IHRoZSB0aW1lIG11c3QgYmUgYWx3YXlzIGNvbnNpZGVyZWQgd2l0aG91dCBhbnkgdGltZXpvbmUgKFVUQylcbiAgICBjb25zdCByZWZEYXRlID0gbmV3IERhdGUoKTtcbiAgICByZWZEYXRlLnNldFRpbWUodGltZSk7XG4gICAgY29uc3QgZGF0ZU9wdHMgPSB7IHRpbWVab25lOiAnVVRDJywgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JyB9IGFzIGNvbnN0O1xuICAgIHJldHVybiByZWZEYXRlLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLl90cmFuc2xhdGUuZ2V0Q3VycmVudExhbmcoKSwgZGF0ZU9wdHMpO1xuICB9XG5cbiAgc2F2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRpbWVJbnRlcnZhbC5sb2FkKHRoaXMudGltZUludGVydmFsV0MpO1xuICAgIHRoaXMuX21vZGFsLmRpc21pc3ModHJ1ZSk7XG4gIH1cblxuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnRpbWVJbnRlcnZhbC5yZXNldCgpO1xuICAgIHRoaXMuX21vZGFsLmRpc21pc3MoZmFsc2UpO1xuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kYWwuZGlzbWlzcygpO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHR3byBzdGFnZXMgb2YgdGhlIGNvbXBvbmVudCwgdG8gcGljayB0aGUgc3RhcnQgYW5kIHRoZSBlbmQgb2YgdGhlIGludGVydmFsLlxuICovXG5lbnVtIFNlZ21lbnRzIHtcbiAgRlJPTSA9ICdGUk9NJyxcbiAgVE8gPSAnVE8nXG59XG5cbi8qKlxuICogVGhlIHR3byBwb3NzaWJsZSBwZXJpb2RzIG9mIHRoZSBjb21wb25lbnQsIHRvIGludGVycHJldCB0aGUgY2xvY2sgdGhlIHJpZ2h0IHdheS5cbiAqL1xuZXhwb3J0IGVudW0gUGVyaW9kcyB7XG4gIEFNID0gJ0FNJyxcbiAgUE0gPSAnUE0nXG59XG4iLCI8aW9uLWhlYWRlcj5cbiAgPGlvbi10b29sYmFyIGNvbG9yPVwiaWRlYVRvb2xiYXJcIj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJ1dHRvbiBbdGl0bGVdPVwiJ0NPTU1PTi5DTE9TRScgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlXCIgc2xvdD1cImljb24tb25seVwiIC8+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgICA8aW9uLXRpdGxlPnt7IHRpdGxlIH19PC9pb24tdGl0bGU+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgIDxpb24tYnV0dG9uIFt0aXRsZV09XCInQ09NTU9OLlJFU0VUJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJyZXNldCgpXCI+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiYXJyb3ctdW5kb1wiIHNsb3Q9XCJpY29uLW9ubHlcIiAvPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG48aW9uLWNvbnRlbnQ+XG4gIDxpb24tZ3JpZCBjbGFzcz1cImNsb2NrR3JpZFwiPlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGlvbi1jb2wgW3NpemVdPVwiNVwiPiZuYnNwOzwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgc2hhcGU9XCJyb3VuZFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oMTIpID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMTIpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCgxMilcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCgxMilcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDEyKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWxlZnRcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSgxMiwgbWludXRlcykgPyAncHJpbWFyeScgOiAnbGlnaHQnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMTIsIG1pbnV0ZXMpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCgxMiwgbWludXRlcylcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCgxMiwgbWludXRlcylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDEyLCBtaW51dGVzKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCIzXCI+Jm5ic3A7PC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjJcIj4mbmJzcDs8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDExLCBtaW51dGVzKSA/ICdwcmltYXJ5JyA6ICdsaWdodCdcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbigxMSwgbWludXRlcylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDExLCBtaW51dGVzKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDExLCBtaW51dGVzKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoMTEsIG1pbnV0ZXMpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDExKSA/ICdwcmltYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDExKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoMTEpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMTEpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgxMSkgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDEpID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDEpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMSlcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDEpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oMSwgbWludXRlcykgPyAncHJpbWFyeScgOiAnbGlnaHQnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMSwgbWludXRlcylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDEsIG1pbnV0ZXMpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMSwgbWludXRlcylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDEsIG1pbnV0ZXMpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjJcIj4mbmJzcDs8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGlvbi1jb2wgW3NpemVdPVwiMVwiPiZuYnNwOzwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oMTAsIG1pbnV0ZXMpID8gJ3ByaW1hcnknIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDEwLCBtaW51dGVzKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoMTAsIG1pbnV0ZXMpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMTAsIG1pbnV0ZXMpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgxMCwgbWludXRlcykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1sZWZ0XCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgc2hhcGU9XCJyb3VuZFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oMTApID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMTApXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCgxMClcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCgxMClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDEwKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCIyXCI+Jm5ic3A7PC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDIpID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMilcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDIpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMilcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDIpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oMiwgbWludXRlcykgPyAncHJpbWFyeScgOiAnbGlnaHQnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMiwgbWludXRlcylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDIsIG1pbnV0ZXMpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMiwgbWludXRlcylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDIsIG1pbnV0ZXMpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjFcIj4mbmJzcDs8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSg5LCBtaW51dGVzKSA/ICdwcmltYXJ5JyA6ICdsaWdodCdcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbig5LCBtaW51dGVzKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoOSwgbWludXRlcylcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCg5LCBtaW51dGVzKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoOSwgbWludXRlcykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1sZWZ0XCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgc2hhcGU9XCJyb3VuZFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oOSkgPyAncHJpbWFyeScgOiAnZGFyaydcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbig5KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoOSlcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCg5KVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoOSkgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXIgZGlzcGxheVRleHRcIiBbc2l6ZV09XCI0XCI+XG4gICAgICAgIDxpb24tdGV4dCBbY2xhc3MuZnJvbVNlbGVjdGVkXT1cInNlZ21lbnQgPT09IFNlZ21lbnRzLlRPXCI+XG4gICAgICAgICAge3sgJ0lERUFfVU5DT01NT04uRlRUVC5GUk9NJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIEBpZiAoc2VnbWVudCA9PT0gU2VnbWVudHMuVE8pIHtcbiAgICAgICAgICAgIDxzcGFuPnt7IG1zVG9UaW1lU3RyaW5nKF90aW1lSW50ZXJ2YWwuZnJvbSkgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICBAaWYgKHNlZ21lbnQgPT09IFNlZ21lbnRzLlRPKSB7XG4gICAgICAgICAgPGlvbi10ZXh0Pnt7ICdJREVBX1VOQ09NTU9OLkZUVFQuVE8nIHwgdHJhbnNsYXRlIH19PC9pb24tdGV4dD5cbiAgICAgICAgfVxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDMpID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDMpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDMpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oMywgbWludXRlcykgPyAncHJpbWFyeScgOiAnbGlnaHQnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMywgbWludXRlcylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDMsIG1pbnV0ZXMpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMywgbWludXRlcylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDMsIG1pbnV0ZXMpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCIxXCI+Jm5ic3A7PC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSg4LCBtaW51dGVzKSA/ICdwcmltYXJ5JyA6ICdsaWdodCdcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbig4LCBtaW51dGVzKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoOCwgbWludXRlcylcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCg4LCBtaW51dGVzKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoOCwgbWludXRlcykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1sZWZ0XCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgc2hhcGU9XCJyb3VuZFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oOCkgPyAncHJpbWFyeScgOiAnZGFyaydcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbig4KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoOClcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCg4KVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoOCkgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgW3NpemVdPVwiMlwiPiZuYnNwOzwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSg0KSA/ICdwcmltYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDQpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCg0KVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCg0KSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDQsIG1pbnV0ZXMpID8gJ3ByaW1hcnknIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDQsIG1pbnV0ZXMpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCg0LCBtaW51dGVzKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDQsIG1pbnV0ZXMpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCg0LCBtaW51dGVzKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCIxXCI+Jm5ic3A7PC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjJcIj4mbmJzcDs8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDcsIG1pbnV0ZXMpID8gJ3ByaW1hcnknIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDcsIG1pbnV0ZXMpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCg3LCBtaW51dGVzKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDcsIG1pbnV0ZXMpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCg3LCBtaW51dGVzKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWxlZnRcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSg3KSA/ICdwcmltYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDcpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCg3KVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCg3KSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgc2hhcGU9XCJyb3VuZFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oNSkgPyAncHJpbWFyeScgOiAnZGFyaydcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbig1KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoNSlcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCg1KVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoNSkgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSg1LCBtaW51dGVzKSA/ICdwcmltYXJ5JyA6ICdsaWdodCdcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbig1LCBtaW51dGVzKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoNSwgbWludXRlcylcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCg1LCBtaW51dGVzKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoNSwgbWludXRlcykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgW3NpemVdPVwiMlwiPiZuYnNwOzwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCIzXCI+Jm5ic3A7PC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDYsIG1pbnV0ZXMpID8gJ3ByaW1hcnknIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDYsIG1pbnV0ZXMpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCg2LCBtaW51dGVzKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDYsIG1pbnV0ZXMpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCg2LCBtaW51dGVzKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDYpID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oNilcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDYpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoNilcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDYpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjVcIj4mbmJzcDs8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIFtzaXplXT1cIjNcIiBbc2l6ZVNtXT1cIjdcIj5cbiAgICAgICAgPGlvbi10ZXh0IGNsYXNzPVwicHJlZkxhYmVsXCI+e3sgJ0lERUFfVU5DT01NT04uRlRUVC5QRVJJT0QnIHwgdHJhbnNsYXRlIH19OjwvaW9uLXRleHQ+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCI5XCIgW3NpemVTbV09XCI1XCI+XG4gICAgICAgIDxpb24tc2VnbWVudCBbdmFsdWVdPVwicGVyaW9kXCIgKGlvbkNoYW5nZSk9XCJwZXJpb2QgPSAkZXZlbnQ/LmRldGFpbD8udmFsdWUgfHwgcGVyaW9kXCI+XG4gICAgICAgICAgPGlvbi1zZWdtZW50LWJ1dHRvbiBbdmFsdWVdPVwiUGVyaW9kcy5BTVwiPlxuICAgICAgICAgICAgPGlvbi1sYWJlbD57eyAnSURFQV9VTkNPTU1PTi5GVFRULkFNJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvaW9uLXNlZ21lbnQtYnV0dG9uPlxuICAgICAgICAgIDxpb24tc2VnbWVudC1idXR0b24gW3ZhbHVlXT1cIlBlcmlvZHMuUE1cIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgJ0lERUFfVU5DT01NT04uRlRUVC5QTScgfCB0cmFuc2xhdGUgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICA8L2lvbi1zZWdtZW50LWJ1dHRvbj5cbiAgICAgICAgPC9pb24tc2VnbWVudD5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCIgW3NpemVdPVwiM1wiIFtzaXplU21dPVwiN1wiPlxuICAgICAgICA8aW9uLXRleHQgY2xhc3M9XCJwcmVmTGFiZWxcIj57eyAnSURFQV9VTkNPTU1PTi5GVFRULk1JTlVURVNfUFJFRkVSRU5DRScgfCB0cmFuc2xhdGUgfX06PC9pb24tdGV4dD5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjlcIiBbc2l6ZVNtXT1cIjVcIj5cbiAgICAgICAgPGlvbi1zZWdtZW50IFt2YWx1ZV09XCJtaW51dGVzXCIgKGlvbkNoYW5nZSk9XCJtaW51dGVzID0gJGV2ZW50Py5kZXRhaWw/LnZhbHVlIHx8IG1pbnV0ZXNcIj5cbiAgICAgICAgICA8aW9uLXNlZ21lbnQtYnV0dG9uIHZhbHVlPVwiMTVcIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+MTU8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8L2lvbi1zZWdtZW50LWJ1dHRvbj5cbiAgICAgICAgICA8aW9uLXNlZ21lbnQtYnV0dG9uIHZhbHVlPVwiMzBcIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+MzA8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8L2lvbi1zZWdtZW50LWJ1dHRvbj5cbiAgICAgICAgICA8aW9uLXNlZ21lbnQtYnV0dG9uIHZhbHVlPVwiNDVcIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+NDU8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8L2lvbi1zZWdtZW50LWJ1dHRvbj5cbiAgICAgICAgPC9pb24tc2VnbWVudD5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gIDwvaW9uLWdyaWQ+XG48L2lvbi1jb250ZW50PlxuIl19
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbVRpbWVUb1RpbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvdGltZUludGVydmFsL2Zyb21UaW1lVG9UaW1lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvdW5jb21tb24vc3JjL3RpbWVJbnRlcnZhbC9mcm9tVGltZVRvVGltZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFDUCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE9BQU8sRUFDUCxNQUFNLEVBQ04sTUFBTSxFQUNOLE9BQU8sRUFDUCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDVCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBMEJoRixNQUFNLE9BQU8sMkJBQTJCO0lBeEJ4QztRQXlCVSxXQUFNLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pDLGVBQVUsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQU1yRDs7V0FFRztRQUNNLFdBQU0sR0FBWSxPQUFPLENBQUMsRUFBRSxDQUFDO1FBZXRDLGFBQVEsR0FBRyxRQUFRLENBQUM7UUFDcEIsWUFBTyxHQUFHLE9BQU8sQ0FBQztLQStHbkI7SUEzR0MsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFP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LFFBR1o7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLE9BR1g7QUFIRCxXQUFZLE9BQU87SUFDakIsb0JBQVMsQ0FBQTtJQUNULG9CQUFTLENBQUE7QUFDWCxDQUFDLEVBSFcsT0FBTyxLQUFQLE9BQU8sUUFHbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE1vZGFsQ29udHJvbGxlcixcbiAgSW9uSGVhZGVyLFxuICBJb25Ub29sYmFyLFxuICBJb25CdXR0b25zLFxuICBJb25CdXR0b24sXG4gIElvbkljb24sXG4gIElvblRpdGxlLFxuICBJb25Db250ZW50LFxuICBJb25HcmlkLFxuICBJb25Sb3csXG4gIElvbkNvbCxcbiAgSW9uVGV4dCxcbiAgSW9uU2VnbWVudCxcbiAgSW9uU2VnbWVudEJ1dHRvbixcbiAgSW9uTGFiZWxcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBUaW1lSW50ZXJ2YWwgfSBmcm9tICdpZGVhLXRvb2xib3gnO1xuaW1wb3J0IHsgSURFQVRyYW5zbGF0ZVBpcGUsIElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1mcm9tLXRpbWUtdG8tdGltZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSURFQVRyYW5zbGF0ZVBpcGUsXG4gICAgSW9uTGFiZWwsXG4gICAgSW9uU2VnbWVudEJ1dHRvbixcbiAgICBJb25TZWdtZW50LFxuICAgIElvblRleHQsXG4gICAgSW9uQ29sLFxuICAgIElvblJvdyxcbiAgICBJb25HcmlkLFxuICAgIElvbkNvbnRlbnQsXG4gICAgSW9uVGl0bGUsXG4gICAgSW9uSWNvbixcbiAgICBJb25CdXR0b24sXG4gICAgSW9uQnV0dG9ucyxcbiAgICBJb25Ub29sYmFyLFxuICAgIElvbkhlYWRlclxuICBdLFxuICB0ZW1wbGF0ZVVybDogJ2Zyb21UaW1lVG9UaW1lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2Zyb21UaW1lVG9UaW1lLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSURFQUZyb21UaW1lVG9UaW1lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBfbW9kYWwgPSBpbmplY3QoTW9kYWxDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfdHJhbnNsYXRlID0gaW5qZWN0KElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlKTtcblxuICAvKipcbiAgICogVGhlIHRpbWUgaW50ZXJ2YWwgdG8gc2V0LlxuICAgKi9cbiAgQElucHV0KCkgdGltZUludGVydmFsOiBUaW1lSW50ZXJ2YWw7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHdlIHNob3VsZCBzdGFydCBwaWNraW5nIHRoZSB0aW1lIGRpc3BsYXlpbmcgdGhlIGFmdGVybm9vbiAoUE0pIG9yIHRoZSBtb3JuaW5nIChBTSwgZGVmYXVsdCkuXG4gICAqL1xuICBASW5wdXQoKSBwZXJpb2Q6IFBlcmlvZHMgPSBQZXJpb2RzLkFNO1xuICAvKipcbiAgICogQSB0aW1lIHRvIHVzZSBhcyBsb3dlciBsaW1pdCBmb3IgdGhlIHBvc3NpYmxlIGNob2ljZXMuXG4gICAqL1xuICBASW5wdXQoKSBub3RFYXJsaWVyVGhhbjogbnVtYmVyO1xuICAvKipcbiAgICogQSB0aW1lIHRvIHVzZSBhcyB1cHBlciBsaW1pdCBmb3IgdGhlIHBvc3NpYmxlIGNob2ljZXMuXG4gICAqL1xuICBASW5wdXQoKSBub3RMYXRlclRoYW46IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcblxuICBzZWdtZW50OiBTZWdtZW50cztcbiAgU2VnbWVudHMgPSBTZWdtZW50cztcbiAgUGVyaW9kcyA9IFBlcmlvZHM7XG4gIHRpbWVJbnRlcnZhbFdDOiBUaW1lSW50ZXJ2YWw7XG4gIG1pbnV0ZXM6IG51bWJlcjtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlZ21lbnQgPSBTZWdtZW50cy5GUk9NO1xuICAgIHRoaXMubWludXRlcyA9IDMwO1xuICAgIHRoaXMudGltZUludGVydmFsV0MgPSBuZXcgVGltZUludGVydmFsKHRoaXMudGltZUludGVydmFsKTtcbiAgfVxuXG4gIHNldEludGVydmFsKGhvdXJzOiBudW1iZXIsIG1pbnV0ZXM/OiBudW1iZXIpOiB2b2lkIHtcbiAgICAvLyBhZGp1c3QgdGhlIGhvdXIgYmFzZWQgb24gdGhlIHN0YXJ0IG9mIHRoZSBpbnRlcnZhbCBhbmQgdGhlIHNldHRpbmdzIG9mIGFtL3BtXG4gICAgaG91cnMgPSB0aGlzLmNvbnRleHR1YWxpemVIb3VyKGhvdXJzLCBtaW51dGVzKTtcbiAgICAvLyBjb252ZXJ0IHRoZSBob3VycyBhbmQgbWludXRlcyBpbiBtaWxsaXNlY29uZHNcbiAgICBjb25zdCB0aW1lTXMgPSB0aGlzLnRpbWVUb01zKGhvdXJzLCBtaW51dGVzKTtcbiAgICAvLyBzZXQgdGhlIGNvcnJlY3QgcGFydCBvZiB0aGUgaW50ZXJ2YWwsIGJhc2VkIG9uIHRoZSBjdXJyZW50IHNlZ21lbnRcbiAgICBpZiAodGhpcy5zZWdtZW50ID09PSBTZWdtZW50cy5GUk9NKSB7XG4gICAgICAvLyBzZXQgdGhlIHN0YXJ0IG9mIHRoZSBpbnRlcnZhbCAoZnJvbSkgYW5kIGNoYW5nZSB0aGUgc2VnbWVudCBzbyB0aGF0IHRoZSBlbmQgKHRvKSB3aWxsIGJlIHBpY2tlZFxuICAgICAgdGhpcy50aW1lSW50ZXJ2YWxXQy5mcm9tID0gdGltZU1zO1xuICAgICAgdGhpcy5zZWdtZW50ID0gU2VnbWVudHMuVE87XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNhbid0IHByb2NlZWQgaWYgZnJvbSBhbmQgdG8gYXJlIGVxdWFsXG4gICAgICBpZiAodGltZU1zID09PSB0aGlzLnRpbWVJbnRlcnZhbFdDLmZyb20pIHJldHVybjtcbiAgICAgIC8vIHNldCB0aGUgZW5kIG9mIHRoZSBpbnRlcnZhbCAodG8pXG4gICAgICB0aGlzLnRpbWVJbnRlcnZhbFdDLnRvID0gdGltZU1zO1xuICAgICAgLy8gc2F2ZSB0aGUgY2hhbmdlcyBhbmQgbm90aWZ5IHRoZSBwYXJlbnQgY29tcG9uZW50XG4gICAgICB0aGlzLnNhdmUoKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSB0aW1lVG9Ncyhob3VyczogbnVtYmVyLCBtaW51dGVzPzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKGhvdXJzICogNjAgKiA2MCArIChtaW51dGVzIHx8IDApICogNjApICogMTAwMDtcbiAgfVxuXG4gIGdldENsb2NrQnV0dG9uQ29udGVudChob3VyczogbnVtYmVyLCBtaW51dGVzPzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAvLyBhZGp1c3QgdGhlIGhvdXIgYmFzZWQgb24gdGhlIHN0YXJ0IG9mIHRoZSBpbnRlcnZhbCBhbmQgdGhlIHNldHRpbmdzIG9mIGFtL3BtXG4gICAgaG91cnMgPSB0aGlzLmNvbnRleHR1YWxpemVIb3VyKGhvdXJzLCBtaW51dGVzKTtcbiAgICAvLyBjb252ZXJ0IHRoZSBjYWxjdWxhdGVkIHRpbWUgaW50byBhIHJlYWRhYmxlIHN0cmluZzsgd2UgbmVlZCB0byBmb3JtYXQgaXQgdG8gZGlzdGluZ3Vpc2ggMC0yNCB2cyAwLTEyIGFtL3BtXG4gICAgY29uc3QgcmVmRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgcmVmRGF0ZS5zZXRIb3Vycyhob3VycywgbWludXRlcyB8fCAwLCAwKTtcbiAgICBjb25zdCBzdHIgPSB0aGlzLl90cmFuc2xhdGUuZm9ybWF0RGF0ZShyZWZEYXRlLCAnc2hvcnRUaW1lJyk7XG4gICAgLy8gcmVtb3ZlIHRoZSBleHRyYSBwYXJ0IChlLmcuIGFtL3BtKSwgYmFzZWQgb24gdGhlIHR5cGUgb2YgYnV0dG9uIHdlIGhhdmUgdG8gc2hvd1xuICAgIGNvbnN0IHN0ckFyciA9IHN0ci5zcGxpdCgnOicpO1xuICAgIHJldHVybiBTdHJpbmcoTnVtYmVyKHN0ckFyclswXSkpLmNvbmNhdChtaW51dGVzID8gJzonLmNvbmNhdChzdHJBcnJbMV0uc2xpY2UoMCwgMikpIDogJycpO1xuICB9XG4gIHByaXZhdGUgY29udGV4dHVhbGl6ZUhvdXIoaG91cnM6IG51bWJlciwgbWludXRlcz86IG51bWJlcik6IG51bWJlciB7XG4gICAgLy8gYWRqdXN0IHRoZSBjb250ZW50IHRvIHRoZSBhZnRlcm5vb24gaG91cnMsIGlmIG5lZWRlZFxuICAgIGlmICh0aGlzLnBlcmlvZCA9PT0gUGVyaW9kcy5QTSkgaG91cnMgKz0gMTI7XG4gICAgLy8gaWYgd2UgYWxyZWFkeSBzZWxlY3RlZCB0aGUgc3RhcnQgb2YgdGhlIGludGVydmFsLCBjaGVjayB3aGV0aGVyIHdlIG5lZWQgdG8gYWRqdXN0IHRoZSB0aW1lOiB0aGUgY2VudGVyIG9mIHRoZVxuICAgIC8vIGNsb2NrIHdpbGwgYmUgbW92ZWQgdG8gdGhlIHNlbGVjdGVkIGhvdXIgKGZyb20pLCB0byBoYXZlIGEgcmVhc29uYWJsZSBzZXQgb2YgY2hvaWNlcyBmb3IgdGhlIGVuZCAodG8pXG4gICAgaWYgKHRoaXMuc2VnbWVudCA9PT0gU2VnbWVudHMuVE8gJiYgdGhpcy50aW1lVG9Ncyhob3VycywgbWludXRlcykgPCB0aGlzLnRpbWVJbnRlcnZhbFdDLmZyb20pXG4gICAgICBob3VycyArPSB0aGlzLnBlcmlvZCA9PT0gUGVyaW9kcy5QTSA/IC0xMiA6IDEyO1xuICAgIC8vIHNldCBtaWRuaWdodCB0byAwMFxuICAgIGlmIChob3VycyA9PT0gMjQpIGhvdXJzID0gMDtcbiAgICByZXR1cm4gaG91cnM7XG4gIH1cblxuICBlcXVhbHNGcm9tKGhvdXJzOiBudW1iZXIsIG1pbnV0ZXM/OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAvLyBpZiB0aGUgc3RhcnQgb2YgdGhlIGludGVydmFsIGhhc24ndCBiZWVuIHNlbGVjdGVkIHlldCwgc2tpcCBpdFxuICAgIGlmICh0aGlzLnNlZ21lbnQgPT09IFNlZ21lbnRzLkZST00pIHJldHVybiBmYWxzZTtcbiAgICAvLyBhZGp1c3QgdGhlIGhvdXIgYmFzZWQgb24gdGhlIHN0YXJ0IG9mIHRoZSBpbnRlcnZhbCBhbmQgdGhlIHNldHRpbmdzIG9mIGFtL3BtXG4gICAgaG91cnMgPSB0aGlzLmNvbnRleHR1YWxpemVIb3VyKGhvdXJzLCBtaW51dGVzKTtcbiAgICAvLyBjb21wYXJlIHRoZSB0d28gc3RyaW5ncyBiYXNlZCBvbiB0aGUgdGltZXN0YW1wcyBpbiBtc1xuICAgIHJldHVybiB0aGlzLm1zVG9UaW1lU3RyaW5nKHRoaXMudGltZUludGVydmFsV0MuZnJvbSkgPT09IHRoaXMubXNUb1RpbWVTdHJpbmcodGhpcy50aW1lVG9Ncyhob3VycywgbWludXRlcykpO1xuICB9XG5cbiAgaXNBbGxvd2VkKGhvdXJzOiBudW1iZXIsIG1pbnV0ZXM/OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAvLyBhZGp1c3QgdGhlIGhvdXIgYmFzZWQgb24gdGhlIHN0YXJ0IG9mIHRoZSBpbnRlcnZhbCBhbmQgdGhlIHNldHRpbmdzIG9mIGFtL3BtXG4gICAgaG91cnMgPSB0aGlzLmNvbnRleHR1YWxpemVIb3VyKGhvdXJzLCBtaW51dGVzKTtcbiAgICAvLyBjaGVjayB3aGV0aGVyIHRoZSBzZWxlY3RlZCB0aW1lIGlzIGluc2lkZSB0aGUgZ2l2ZW4gYm91bmRhcmllc1xuICAgIHJldHVybiAoXG4gICAgICAoIXRoaXMubm90RWFybGllclRoYW4gfHxcbiAgICAgICAgdGhpcy50aW1lVG9Ncyhob3VycywgbWludXRlcykgPj0gdGhpcy5ub3RFYXJsaWVyVGhhbiB8fFxuICAgICAgICB0aGlzLnRpbWVUb01zKGhvdXJzLCBtaW51dGVzKSA9PT0gMCkgJiZcbiAgICAgICghdGhpcy5ub3RMYXRlclRoYW4gfHwgdGhpcy50aW1lVG9Ncyhob3VycywgbWludXRlcykgPD0gdGhpcy5ub3RMYXRlclRoYW4pXG4gICAgKTtcbiAgfVxuXG4gIGlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbihob3VyczogbnVtYmVyLCBtaW51dGVzPzogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgLy8gaWYgdGhlIHN0YXJ0IG9mIHRoZSBpbnRlcnZhbCBoYXNuJ3QgYmVlbiBzZWxlY3RlZCB5ZXQsIHNraXAgaXRcbiAgICBpZiAodGhpcy5zZWdtZW50ID09PSBTZWdtZW50cy5GUk9NKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gYWRqdXN0IHRoZSBob3VyIGJhc2VkIG9uIHRoZSBzdGFydCBvZiB0aGUgaW50ZXJ2YWwgYW5kIHRoZSBzZXR0aW5ncyBvZiBhbS9wbVxuICAgIGhvdXJzID0gdGhpcy5jb250ZXh0dWFsaXplSG91cihob3VycywgbWludXRlcyk7XG4gICAgLy8gY2FsY3VsYXRlIHRoZSBtcyBvZiB0aGUgc2VsZWN0ZWQgdGltZSBhbmQgb2YgXCJub29uXCIgdGltZSAodG8gZGV0ZXJtIHRoZSBtZXJpZGlhbilcbiAgICBjb25zdCB0aW1lTXMgPSB0aGlzLnRpbWVUb01zKGhvdXJzLCBtaW51dGVzKTtcbiAgICBjb25zdCBub29uTXMgPSB0aGlzLnRpbWVUb01zKDEyKTtcbiAgICAvLyByZXR1cm4gdHJ1ZSBpbiBjYXNlIHRoZSBob3VyIGRvZXNuJ3QgYmVsb25nIHRvIHRoZSBjdXJyZW50IG1lcmlkaWFuXG4gICAgcmV0dXJuICh0aGlzLnBlcmlvZCA9PT0gUGVyaW9kcy5BTSAmJiB0aW1lTXMgPiBub29uTXMpIHx8ICh0aGlzLnBlcmlvZCA9PT0gUGVyaW9kcy5QTSAmJiB0aW1lTXMgPCBub29uTXMpO1xuICB9XG5cbiAgbXNUb1RpbWVTdHJpbmcodGltZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAoIXRpbWUpIHJldHVybiAnJztcbiAgICAvLyBub3RlOiB0aGUgdGltZSBtdXN0IGJlIGFsd2F5cyBjb25zaWRlcmVkIHdpdGhvdXQgYW55IHRpbWV6b25lIChVVEMpXG4gICAgY29uc3QgcmVmRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgcmVmRGF0ZS5zZXRUaW1lKHRpbWUpO1xuICAgIGNvbnN0IGRhdGVPcHRzID0geyB0aW1lWm9uZTogJ1VUQycsIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcgfSBhcyBjb25zdDtcbiAgICByZXR1cm4gcmVmRGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcodGhpcy5fdHJhbnNsYXRlLmdldEN1cnJlbnRMYW5nKCksIGRhdGVPcHRzKTtcbiAgfVxuXG4gIHNhdmUoKTogdm9pZCB7XG4gICAgdGhpcy50aW1lSW50ZXJ2YWwubG9hZCh0aGlzLnRpbWVJbnRlcnZhbFdDKTtcbiAgICB0aGlzLl9tb2RhbC5kaXNtaXNzKHRydWUpO1xuICB9XG5cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy50aW1lSW50ZXJ2YWwucmVzZXQoKTtcbiAgICB0aGlzLl9tb2RhbC5kaXNtaXNzKGZhbHNlKTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsLmRpc21pc3MoKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSB0d28gc3RhZ2VzIG9mIHRoZSBjb21wb25lbnQsIHRvIHBpY2sgdGhlIHN0YXJ0IGFuZCB0aGUgZW5kIG9mIHRoZSBpbnRlcnZhbC5cbiAqL1xuZW51bSBTZWdtZW50cyB7XG4gIEZST00gPSAnRlJPTScsXG4gIFRPID0gJ1RPJ1xufVxuXG4vKipcbiAqIFRoZSB0d28gcG9zc2libGUgcGVyaW9kcyBvZiB0aGUgY29tcG9uZW50LCB0byBpbnRlcnByZXQgdGhlIGNsb2NrIHRoZSByaWdodCB3YXkuXG4gKi9cbmV4cG9ydCBlbnVtIFBlcmlvZHMge1xuICBBTSA9ICdBTScsXG4gIFBNID0gJ1BNJ1xufVxuIiwiPGlvbi1oZWFkZXI+XG4gIDxpb24tdG9vbGJhciBjb2xvcj1cImlkZWFUb29sYmFyXCI+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgPGlvbi1idXR0b24gW3RpdGxlXT1cIidDT01NT04uQ0xPU0UnIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiIHNsb3Q9XCJpY29uLW9ubHlcIiAvPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgPGlvbi10aXRsZT57eyB0aXRsZSB9fTwvaW9uLXRpdGxlPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICA8aW9uLWJ1dHRvbiBbdGl0bGVdPVwiJ0NPTU1PTi5SRVNFVCcgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwicmVzZXQoKVwiPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImFycm93LXVuZG9cIiBzbG90PVwiaWNvbi1vbmx5XCIgLz5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuPGlvbi1jb250ZW50PlxuICA8aW9uLWdyaWQgY2xhc3M9XCJjbG9ja0dyaWRcIj5cbiAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjVcIj4mbmJzcDs8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDEyKSA/ICdwcmltYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDEyKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoMTIpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMTIpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgxMikgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1sZWZ0XCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oMTIsIG1pbnV0ZXMpID8gJ3ByaW1hcnknIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDEyLCBtaW51dGVzKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoMTIsIG1pbnV0ZXMpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMTIsIG1pbnV0ZXMpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgxMiwgbWludXRlcykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgW3NpemVdPVwiM1wiPiZuYnNwOzwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCIyXCI+Jm5ic3A7PC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSgxMSwgbWludXRlcykgPyAncHJpbWFyeScgOiAnbGlnaHQnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMTEsIG1pbnV0ZXMpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCgxMSwgbWludXRlcylcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCgxMSwgbWludXRlcylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDExLCBtaW51dGVzKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWxlZnRcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSgxMSkgPyAncHJpbWFyeScgOiAnZGFyaydcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbigxMSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDExKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDExKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoMTEpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSgxKSA/ICdwcmltYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDEpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCgxKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDEpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgxKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDEsIG1pbnV0ZXMpID8gJ3ByaW1hcnknIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDEsIG1pbnV0ZXMpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCgxLCBtaW51dGVzKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDEsIG1pbnV0ZXMpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgxLCBtaW51dGVzKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCIyXCI+Jm5ic3A7PC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjFcIj4mbmJzcDs8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDEwLCBtaW51dGVzKSA/ICdwcmltYXJ5JyA6ICdsaWdodCdcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbigxMCwgbWludXRlcylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDEwLCBtaW51dGVzKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDEwLCBtaW51dGVzKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoMTAsIG1pbnV0ZXMpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDEwKSA/ICdwcmltYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDEwKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoMTApXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMTApXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgxMCkgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgW3NpemVdPVwiMlwiPiZuYnNwOzwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSgyKSA/ICdwcmltYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDIpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCgyKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDIpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgyKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDIsIG1pbnV0ZXMpID8gJ3ByaW1hcnknIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDIsIG1pbnV0ZXMpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCgyLCBtaW51dGVzKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDIsIG1pbnV0ZXMpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgyLCBtaW51dGVzKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCIxXCI+Jm5ic3A7PC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oOSwgbWludXRlcykgPyAncHJpbWFyeScgOiAnbGlnaHQnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oOSwgbWludXRlcylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDksIG1pbnV0ZXMpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoOSwgbWludXRlcylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDksIG1pbnV0ZXMpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDkpID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oOSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDkpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoOSlcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDkpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyIGRpc3BsYXlUZXh0XCIgW3NpemVdPVwiNFwiPlxuICAgICAgICA8aW9uLXRleHQgW2NsYXNzLmZyb21TZWxlY3RlZF09XCJzZWdtZW50ID09PSBTZWdtZW50cy5UT1wiPlxuICAgICAgICAgIHt7ICdJREVBX1VOQ09NTU9OLkZUVFQuRlJPTScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICBAaWYgKHNlZ21lbnQgPT09IFNlZ21lbnRzLlRPKSB7XG4gICAgICAgICAgICA8c3Bhbj57eyBtc1RvVGltZVN0cmluZyh0aW1lSW50ZXJ2YWxXQy5mcm9tKSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgIEBpZiAoc2VnbWVudCA9PT0gU2VnbWVudHMuVE8pIHtcbiAgICAgICAgICA8aW9uLXRleHQ+e3sgJ0lERUFfVU5DT01NT04uRlRUVC5UTycgfCB0cmFuc2xhdGUgfX08L2lvbi10ZXh0PlxuICAgICAgICB9XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgc2hhcGU9XCJyb3VuZFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oMykgPyAncHJpbWFyeScgOiAnZGFyaydcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbigzKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoMylcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCgzKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoMykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSgzLCBtaW51dGVzKSA/ICdwcmltYXJ5JyA6ICdsaWdodCdcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbigzLCBtaW51dGVzKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoMywgbWludXRlcylcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCgzLCBtaW51dGVzKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoMywgbWludXRlcykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjFcIj4mbmJzcDs8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDgsIG1pbnV0ZXMpID8gJ3ByaW1hcnknIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDgsIG1pbnV0ZXMpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCg4LCBtaW51dGVzKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDgsIG1pbnV0ZXMpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCg4LCBtaW51dGVzKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWxlZnRcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSg4KSA/ICdwcmltYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDgpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCg4KVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCg4KSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCIyXCI+Jm5ic3A7PC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDQpID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oNClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDQpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoNClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDQpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oNCwgbWludXRlcykgPyAncHJpbWFyeScgOiAnbGlnaHQnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oNCwgbWludXRlcylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDQsIG1pbnV0ZXMpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoNCwgbWludXRlcylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDQsIG1pbnV0ZXMpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjFcIj4mbmJzcDs8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGlvbi1jb2wgW3NpemVdPVwiMlwiPiZuYnNwOzwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oNywgbWludXRlcykgPyAncHJpbWFyeScgOiAnbGlnaHQnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oNywgbWludXRlcylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDcsIG1pbnV0ZXMpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoNywgbWludXRlcylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDcsIG1pbnV0ZXMpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDcpID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oNylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDcpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoNylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDcpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSg1KSA/ICdwcmltYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDUpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCg1KVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDUpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCg1KSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDUsIG1pbnV0ZXMpID8gJ3ByaW1hcnknIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDUsIG1pbnV0ZXMpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCg1LCBtaW51dGVzKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDUsIG1pbnV0ZXMpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCg1LCBtaW51dGVzKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCIyXCI+Jm5ic3A7PC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjNcIj4mbmJzcDs8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oNiwgbWludXRlcykgPyAncHJpbWFyeScgOiAnbGlnaHQnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oNiwgbWludXRlcylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDYsIG1pbnV0ZXMpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoNiwgbWludXRlcylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDYsIG1pbnV0ZXMpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgc2hhcGU9XCJyb3VuZFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oNikgPyAncHJpbWFyeScgOiAnZGFyaydcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbig2KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoNilcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCg2KVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoNikgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgW3NpemVdPVwiNVwiPiZuYnNwOzwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCIgW3NpemVdPVwiM1wiIFtzaXplU21dPVwiN1wiPlxuICAgICAgICA8aW9uLXRleHQgY2xhc3M9XCJwcmVmTGFiZWxcIj57eyAnSURFQV9VTkNPTU1PTi5GVFRULlBFUklPRCcgfCB0cmFuc2xhdGUgfX06PC9pb24tdGV4dD5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjlcIiBbc2l6ZVNtXT1cIjVcIj5cbiAgICAgICAgPGlvbi1zZWdtZW50IFt2YWx1ZV09XCJwZXJpb2RcIiAoaW9uQ2hhbmdlKT1cInBlcmlvZCA9ICRldmVudD8uZGV0YWlsPy52YWx1ZSB8fCBwZXJpb2RcIj5cbiAgICAgICAgICA8aW9uLXNlZ21lbnQtYnV0dG9uIFt2YWx1ZV09XCJQZXJpb2RzLkFNXCI+XG4gICAgICAgICAgICA8aW9uLWxhYmVsPnt7ICdJREVBX1VOQ09NTU9OLkZUVFQuQU0nIHwgdHJhbnNsYXRlIH19PC9pb24tbGFiZWw+XG4gICAgICAgICAgPC9pb24tc2VnbWVudC1idXR0b24+XG4gICAgICAgICAgPGlvbi1zZWdtZW50LWJ1dHRvbiBbdmFsdWVdPVwiUGVyaW9kcy5QTVwiPlxuICAgICAgICAgICAgPGlvbi1sYWJlbD57eyAnSURFQV9VTkNPTU1PTi5GVFRULlBNJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvaW9uLXNlZ21lbnQtYnV0dG9uPlxuICAgICAgICA8L2lvbi1zZWdtZW50PlxuICAgICAgPC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIiBbc2l6ZV09XCIzXCIgW3NpemVTbV09XCI3XCI+XG4gICAgICAgIDxpb24tdGV4dCBjbGFzcz1cInByZWZMYWJlbFwiPnt7ICdJREVBX1VOQ09NTU9OLkZUVFQuTUlOVVRFU19QUkVGRVJFTkNFJyB8IHRyYW5zbGF0ZSB9fTo8L2lvbi10ZXh0PlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgW3NpemVdPVwiOVwiIFtzaXplU21dPVwiNVwiPlxuICAgICAgICA8aW9uLXNlZ21lbnQgW3ZhbHVlXT1cIm1pbnV0ZXNcIiAoaW9uQ2hhbmdlKT1cIm1pbnV0ZXMgPSAkZXZlbnQ/LmRldGFpbD8udmFsdWUgfHwgbWludXRlc1wiPlxuICAgICAgICAgIDxpb24tc2VnbWVudC1idXR0b24gdmFsdWU9XCIxNVwiPlxuICAgICAgICAgICAgPGlvbi1sYWJlbD4xNTwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvaW9uLXNlZ21lbnQtYnV0dG9uPlxuICAgICAgICAgIDxpb24tc2VnbWVudC1idXR0b24gdmFsdWU9XCIzMFwiPlxuICAgICAgICAgICAgPGlvbi1sYWJlbD4zMDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvaW9uLXNlZ21lbnQtYnV0dG9uPlxuICAgICAgICAgIDxpb24tc2VnbWVudC1idXR0b24gdmFsdWU9XCI0NVwiPlxuICAgICAgICAgICAgPGlvbi1sYWJlbD40NTwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvaW9uLXNlZ21lbnQtYnV0dG9uPlxuICAgICAgICA8L2lvbi1zZWdtZW50PlxuICAgICAgPC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgPC9pb24tZ3JpZD5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
|
|
@@ -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 { ModalController, IonItem, IonButton, IonIcon, IonText, IonLabel } from '@ionic/angular/standalone';
|
|
3
4
|
import { IDEATranslationsService } from '@idea-ionic/common';
|
|
4
5
|
import { IDEAFromTimeToTimeComponent, Periods } from './fromTimeToTime.component';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@ionic/angular";
|
|
7
7
|
export class IDEATimeIntervalComponent {
|
|
8
8
|
constructor() {
|
|
9
9
|
this._modal = inject(ModalController);
|
|
@@ -81,11 +81,95 @@ export class IDEATimeIntervalComponent {
|
|
|
81
81
|
this.iconSelect.emit(event);
|
|
82
82
|
}
|
|
83
83
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEATimeIntervalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
84
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEATimeIntervalComponent, selector: "idea-time-interval", inputs: { timeInterval: "timeInterval", period: "period", notEarlierThan: "notEarlierThan", notLaterThan: "notLaterThan", label: "label", icon: "icon", iconColor: "iconColor", placeholder: "placeholder", disabled: "disabled", tappableWhenDisabled: "tappableWhenDisabled", obligatory: "obligatory", lines: "lines", color: "color" }, outputs: { select: "select", iconSelect: "iconSelect", selectWhenDisabled: "selectWhenDisabled" }, usesOnChanges: true, ngImport: i0, template:
|
|
84
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEATimeIntervalComponent, isStandalone: true, selector: "idea-time-interval", inputs: { timeInterval: "timeInterval", period: "period", notEarlierThan: "notEarlierThan", notLaterThan: "notLaterThan", label: "label", icon: "icon", iconColor: "iconColor", placeholder: "placeholder", disabled: "disabled", tappableWhenDisabled: "tappableWhenDisabled", obligatory: "obligatory", lines: "lines", color: "color" }, outputs: { select: "select", iconSelect: "iconSelect", selectWhenDisabled: "selectWhenDisabled" }, usesOnChanges: true, ngImport: i0, template: `
|
|
85
|
+
<ion-item
|
|
86
|
+
class="timeIntervalItem"
|
|
87
|
+
[color]="color"
|
|
88
|
+
[lines]="lines"
|
|
89
|
+
[button]="!disabled"
|
|
90
|
+
[disabled]="isOpening"
|
|
91
|
+
[title]="placeholder || valueToDisplay || ''"
|
|
92
|
+
[class.withLabel]="label"
|
|
93
|
+
(click)="disabled ? doSelectWhenDisabled() : pickTimeInterval()"
|
|
94
|
+
>
|
|
95
|
+
@if (icon) {
|
|
96
|
+
<ion-button
|
|
97
|
+
fill="clear"
|
|
98
|
+
slot="start"
|
|
99
|
+
[color]="iconColor"
|
|
100
|
+
[class.marginTop]="label"
|
|
101
|
+
(click)="doIconSelect($event)"
|
|
102
|
+
>
|
|
103
|
+
<ion-icon [name]="icon" slot="icon-only" />
|
|
104
|
+
</ion-button>
|
|
105
|
+
}
|
|
106
|
+
@if (label) {
|
|
107
|
+
<ion-label position="stacked" [class.selectable]="!disabled || tappableWhenDisabled">
|
|
108
|
+
{{ label }}
|
|
109
|
+
@if (obligatory && !disabled) {
|
|
110
|
+
<ion-text class="obligatoryDot" />
|
|
111
|
+
}
|
|
112
|
+
</ion-label>
|
|
113
|
+
}
|
|
114
|
+
<ion-label class="description" [class.selectable]="!disabled || tappableWhenDisabled">
|
|
115
|
+
@if (!valueToDisplay && !disabled) {
|
|
116
|
+
<ion-text class="placeholder" [class.selectable]="!disabled">
|
|
117
|
+
{{ placeholder }}
|
|
118
|
+
</ion-text>
|
|
119
|
+
}
|
|
120
|
+
{{ valueToDisplay }}
|
|
121
|
+
</ion-label>
|
|
122
|
+
@if (!disabled) {
|
|
123
|
+
<ion-icon slot="end" name="caret-down" class="selectIcon" [class.selectable]="!disabled" />
|
|
124
|
+
}
|
|
125
|
+
</ion-item>
|
|
126
|
+
`, isInline: true, styles: [".timeIntervalItem{min-height:48px;height:auto}.timeIntervalItem .description{margin:10px 0;height:20px;line-height:20px;width:100%}.timeIntervalItem .placeholder{color:var(--ion-color-medium)}.timeIntervalItem .selectIcon{margin:0;padding-left:4px;font-size:.8em;color:var(--ion-color-medium)}.timeIntervalItem.withLabel{min-height:58px;height:auto}.timeIntervalItem.withLabel .selectIcon{padding-top:25px}.timeIntervalItem.withLabel ion-button[slot=start]{margin-top:16px}.selectable{cursor:pointer}\n"], dependencies: [{ kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { 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"] }, { kind: "ngmodule", type: CommonModule }] }); }
|
|
85
127
|
}
|
|
86
128
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEATimeIntervalComponent, decorators: [{
|
|
87
129
|
type: Component,
|
|
88
|
-
args: [{ selector: 'idea-time-interval',
|
|
130
|
+
args: [{ selector: 'idea-time-interval', standalone: true, imports: [IonLabel, IonText, IonIcon, IonButton, IonItem, CommonModule], template: `
|
|
131
|
+
<ion-item
|
|
132
|
+
class="timeIntervalItem"
|
|
133
|
+
[color]="color"
|
|
134
|
+
[lines]="lines"
|
|
135
|
+
[button]="!disabled"
|
|
136
|
+
[disabled]="isOpening"
|
|
137
|
+
[title]="placeholder || valueToDisplay || ''"
|
|
138
|
+
[class.withLabel]="label"
|
|
139
|
+
(click)="disabled ? doSelectWhenDisabled() : pickTimeInterval()"
|
|
140
|
+
>
|
|
141
|
+
@if (icon) {
|
|
142
|
+
<ion-button
|
|
143
|
+
fill="clear"
|
|
144
|
+
slot="start"
|
|
145
|
+
[color]="iconColor"
|
|
146
|
+
[class.marginTop]="label"
|
|
147
|
+
(click)="doIconSelect($event)"
|
|
148
|
+
>
|
|
149
|
+
<ion-icon [name]="icon" slot="icon-only" />
|
|
150
|
+
</ion-button>
|
|
151
|
+
}
|
|
152
|
+
@if (label) {
|
|
153
|
+
<ion-label position="stacked" [class.selectable]="!disabled || tappableWhenDisabled">
|
|
154
|
+
{{ label }}
|
|
155
|
+
@if (obligatory && !disabled) {
|
|
156
|
+
<ion-text class="obligatoryDot" />
|
|
157
|
+
}
|
|
158
|
+
</ion-label>
|
|
159
|
+
}
|
|
160
|
+
<ion-label class="description" [class.selectable]="!disabled || tappableWhenDisabled">
|
|
161
|
+
@if (!valueToDisplay && !disabled) {
|
|
162
|
+
<ion-text class="placeholder" [class.selectable]="!disabled">
|
|
163
|
+
{{ placeholder }}
|
|
164
|
+
</ion-text>
|
|
165
|
+
}
|
|
166
|
+
{{ valueToDisplay }}
|
|
167
|
+
</ion-label>
|
|
168
|
+
@if (!disabled) {
|
|
169
|
+
<ion-icon slot="end" name="caret-down" class="selectIcon" [class.selectable]="!disabled" />
|
|
170
|
+
}
|
|
171
|
+
</ion-item>
|
|
172
|
+
`, styles: [".timeIntervalItem{min-height:48px;height:auto}.timeIntervalItem .description{margin:10px 0;height:20px;line-height:20px;width:100%}.timeIntervalItem .placeholder{color:var(--ion-color-medium)}.timeIntervalItem .selectIcon{margin:0;padding-left:4px;font-size:.8em;color:var(--ion-color-medium)}.timeIntervalItem.withLabel{min-height:58px;height:auto}.timeIntervalItem.withLabel .selectIcon{padding-top:25px}.timeIntervalItem.withLabel ion-button[slot=start]{margin-top:16px}.selectable{cursor:pointer}\n"] }]
|
|
89
173
|
}], propDecorators: { timeInterval: [{
|
|
90
174
|
type: Input
|
|
91
175
|
}], period: [{
|
|
@@ -119,4 +203,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
119
203
|
}], selectWhenDisabled: [{
|
|
120
204
|
type: Output
|
|
121
205
|
}] } });
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZUludGVydmFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvdW5jb21tb24vc3JjL3RpbWVJbnRlcnZhbC90aW1lSW50ZXJ2YWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvdGltZUludGVydmFsL3RpbWVJbnRlcnZhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUtaLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFN0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFPbEYsTUFBTSxPQUFPLHlCQUF5QjtJQUx0QztRQU1VLFdBQU0sR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakMsZUFBVSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBTXJEOztXQUVHO1FBQ00sV0FBTSxHQUFZLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUE2Q3RDOztXQUVHO1FBQ08sV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDNUM7O1dBRUc7UUFDTyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNoRDs7V0FFRztRQUNPLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFLeEQsY0FBUyxHQUFHLEtBQUssQ0FBQztLQThEbkI7SUE1REMsUUFBUTtRQUNOLDRDQUE0QztRQUM1QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsU0FB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QixJQUFJLEtBQUs7WUFBRSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQzs4R0FySVUseUJBQXlCO2tHQUF6Qix5QkFBeUIsOGZDeEJ0Qyxnc0NBbUNBOzsyRkRYYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usb0JBQW9COzhCQVdyQixZQUFZO3NCQUFwQixLQUFLO2dCQUlHLE1BQU07c0JBQWQsS0FBSztnQkFJRyxjQUFjO3NCQUF0QixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsS0FBSztzQkFBYixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFJRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFJRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBSUcsS0FBSztzQkFBYixLQUFLO2dCQUlJLE1BQU07c0JBQWYsTUFBTTtnQkFJRyxVQUFVO3NCQUFuQixNQUFNO2dCQUlHLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgT25DaGFuZ2VzLFxuICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPdmVybGF5RXZlbnREZXRhaWwgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGltZUludGVydmFsIH0gZnJvbSAnaWRlYS10b29sYm94JztcbmltcG9ydCB7IElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuaW1wb3J0IHsgSURFQUZyb21UaW1lVG9UaW1lQ29tcG9uZW50LCBQZXJpb2RzIH0gZnJvbSAnLi9mcm9tVGltZVRvVGltZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLXRpbWUtaW50ZXJ2YWwnLFxuICB0ZW1wbGF0ZVVybDogJ3RpbWVJbnRlcnZhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWyd0aW1lSW50ZXJ2YWwuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBVGltZUludGVydmFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgX21vZGFsID0gaW5qZWN0KE1vZGFsQ29udHJvbGxlcik7XG4gIHByaXZhdGUgX3RyYW5zbGF0ZSA9IGluamVjdChJREVBVHJhbnNsYXRpb25zU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGludGVydmFsIHRvIHNldC5cbiAgICovXG4gIEBJbnB1dCgpIHRpbWVJbnRlcnZhbDogVGltZUludGVydmFsO1xuICAvKipcbiAgICogV2hldGhlciB3ZSBzaG91bGQgc3RhcnQgcGlja2luZyB0aGUgdGltZSBkaXNwbGF5aW5nIHRoZSBhZnRlcm5vb24gKFBNKSBvciB0aGUgbW9ybmluZyAoQU0sIGRlZmF1bHQpLlxuICAgKi9cbiAgQElucHV0KCkgcGVyaW9kOiBQZXJpb2RzID0gUGVyaW9kcy5BTTtcbiAgLyoqXG4gICAqIEEgdGltZSB0byB1c2UgYXMgbG93ZXIgbGltaXQgZm9yIHRoZSBwb3NzaWJsZSBjaG9pY2VzLlxuICAgKi9cbiAgQElucHV0KCkgbm90RWFybGllclRoYW46IG51bWJlcjtcbiAgLyoqXG4gICAqIEEgdGltZSB0byB1c2UgYXMgdXBwZXIgbGltaXQgZm9yIHRoZSBwb3NzaWJsZSBjaG9pY2VzLlxuICAgKi9cbiAgQElucHV0KCkgbm90TGF0ZXJUaGFuOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgZm9yIHRoZSBmaWVsZC5cbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgaWNvbiBmb3IgdGhlIGZpZWxkLlxuICAgKi9cbiAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBpY29uLlxuICAgKi9cbiAgQElucHV0KCkgaWNvbkNvbG9yOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIHBsYWNlaG9sZGVyIGZvciB0aGUgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGZpZWxkIGhhcyBhIHRhcHBhYmxlIGVmZmVjdCB3aGVuIGRpc2FibGVkLlxuICAgKi9cbiAgQElucHV0KCkgdGFwcGFibGVXaGVuRGlzYWJsZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgb2JsaWdhdG9yeSBkb3QgaXMgc2hvd24uXG4gICAqL1xuICBASW5wdXQoKSBvYmxpZ2F0b3J5OiBib29sZWFuO1xuICAvKipcbiAgICogTGluZXMgcHJlZmVyZW5jZXMgZm9yIHRoZSBpdGVtLlxuICAgKi9cbiAgQElucHV0KCkgbGluZXM6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpIGNvbG9yOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPbiBzZWxlY3QgZXZlbnQuXG4gICAqL1xuICBAT3V0cHV0KCkgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAvKipcbiAgICogSWNvbiBzZWxlY3QuXG4gICAqL1xuICBAT3V0cHV0KCkgaWNvblNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqXG4gICAqIE9uIHNlbGVjdCAod2l0aCB0aGUgZmllbGQgZGlzYWJsZWQpIGV2ZW50LlxuICAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdFdoZW5EaXNhYmxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICB2YWx1ZVRvRGlzcGxheTogc3RyaW5nO1xuICBwcml2YXRlIGxhbmdDaGFuZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBpc09wZW5pbmcgPSBmYWxzZTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyB3aGVuIHRoZSBsYW5ndWFnZSBjaGFuZ2VzLCBzZXQgdGhlIGxvY2FsZVxuICAgIHRoaXMubGFuZ0NoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuX3RyYW5zbGF0ZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKCgpOiB2b2lkID0+IHtcbiAgICAgIHRoaXMudmFsdWVUb0Rpc3BsYXkgPSB0aGlzLmdldFZhbHVlVG9EaXNwbGF5KHRoaXMudGltZUludGVydmFsKTtcbiAgICB9KTtcbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sYW5nQ2hhbmdlU3Vic2NyaXB0aW9uKSB0aGlzLmxhbmdDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMudGltZUludGVydmFsKSB0aGlzLnZhbHVlVG9EaXNwbGF5ID0gdGhpcy5nZXRWYWx1ZVRvRGlzcGxheShjaGFuZ2VzLnRpbWVJbnRlcnZhbC5jdXJyZW50VmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYWx1ZVRvRGlzcGxheSh0aW1lSW50ZXJ2YWw6IFRpbWVJbnRlcnZhbCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aW1lSW50ZXJ2YWwgfHwgIXRpbWVJbnRlcnZhbC5pc1NldCgpKSByZXR1cm4gJyc7XG4gICAgLy8gbm90ZTogdGhlIHRpbWUgbXVzdCBiZSBhbHdheXMgY29uc2lkZXJlZCB3aXRob3V0IGFueSB0aW1lem9uZSAoVVRDKVxuICAgIGNvbnN0IGRhdGVPcHRzID0geyB0aW1lWm9uZTogJ1VUQycsIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcgfSBhcyBjb25zdDtcbiAgICByZXR1cm4gJycuY29uY2F0KFxuICAgICAgdGhpcy5fdHJhbnNsYXRlLl8oJ0lERUFfVU5DT01NT04uRlRUVC5GUk9NJyksXG4gICAgICAnICcsXG4gICAgICBuZXcgRGF0ZSh0aW1lSW50ZXJ2YWwuZnJvbSkudG9Mb2NhbGVUaW1lU3RyaW5nKHRoaXMuX3RyYW5zbGF0ZS5nZXRDdXJyZW50TGFuZygpLCBkYXRlT3B0cyksXG4gICAgICAnICcsXG4gICAgICB0aGlzLl90cmFuc2xhdGUuXygnSURFQV9VTkNPTU1PTi5GVFRULlRPJykudG9Mb3dlckNhc2UoKSxcbiAgICAgICcgJyxcbiAgICAgIG5ldyBEYXRlKHRpbWVJbnRlcnZhbC50bykudG9Mb2NhbGVUaW1lU3RyaW5nKHRoaXMuX3RyYW5zbGF0ZS5nZXRDdXJyZW50TGFuZygpLCBkYXRlT3B0cylcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgcGlja1RpbWVJbnRlcnZhbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc09wZW5pbmcpIHJldHVybjtcbiAgICB0aGlzLmlzT3BlbmluZyA9IHRydWU7XG4gICAgY29uc3QgbW9kYWwgPSBhd2FpdCB0aGlzLl9tb2RhbC5jcmVhdGUoe1xuICAgICAgY29tcG9uZW50OiBJREVBRnJvbVRpbWVUb1RpbWVDb21wb25lbnQsXG4gICAgICBjb21wb25lbnRQcm9wczoge1xuICAgICAgICB0aW1lSW50ZXJ2YWw6IHRoaXMudGltZUludGVydmFsLFxuICAgICAgICBwZXJpb2Q6IHRoaXMucGVyaW9kLFxuICAgICAgICBub3RFYXJsaWVyVGhhbjogdGhpcy5ub3RFYXJsaWVyVGhhbixcbiAgICAgICAgbm90TGF0ZXJUaGFuOiB0aGlzLm5vdExhdGVyVGhhbixcbiAgICAgICAgdGl0bGU6IHRoaXMubGFiZWxcbiAgICAgIH1cbiAgICB9KTtcbiAgICBtb2RhbC5vbkRpZERpc21pc3MoKS50aGVuKChyZXM6IE92ZXJsYXlFdmVudERldGFpbCk6IHZvaWQgPT4ge1xuICAgICAgLy8gaWYgdGhlIGNvbnRlbnQgY2hhbmdlZCwgdXBkYXRlIHRoZSBpbnRlcm5hbCB2YWx1ZXMgYW5kIG5vdGlmeSB0aGUgcGFyZW50IGNvbXBvbmVudFxuICAgICAgaWYgKHJlcy5kYXRhID09PSB0cnVlIHx8IHJlcy5kYXRhID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLnZhbHVlVG9EaXNwbGF5ID0gdGhpcy5nZXRWYWx1ZVRvRGlzcGxheSh0aGlzLnRpbWVJbnRlcnZhbCk7XG4gICAgICAgIHRoaXMuc2VsZWN0LmVtaXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBtb2RhbC5wcmVzZW50KCk7XG4gICAgdGhpcy5pc09wZW5pbmcgPSBmYWxzZTtcbiAgfVxuXG4gIGRvU2VsZWN0V2hlbkRpc2FibGVkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB0aGlzLnNlbGVjdFdoZW5EaXNhYmxlZC5lbWl0KCk7XG4gIH1cblxuICBkb0ljb25TZWxlY3QoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmIChldmVudCkgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5pY29uU2VsZWN0LmVtaXQoZXZlbnQpO1xuICB9XG59XG4iLCI8aW9uLWl0ZW1cbiAgY2xhc3M9XCJ0aW1lSW50ZXJ2YWxJdGVtXCJcbiAgW2NvbG9yXT1cImNvbG9yXCJcbiAgW2xpbmVzXT1cImxpbmVzXCJcbiAgW2J1dHRvbl09XCIhZGlzYWJsZWRcIlxuICBbZGlzYWJsZWRdPVwiaXNPcGVuaW5nXCJcbiAgW3RpdGxlXT1cInBsYWNlaG9sZGVyIHx8IHZhbHVlVG9EaXNwbGF5IHx8ICcnXCJcbiAgW2NsYXNzLndpdGhMYWJlbF09XCJsYWJlbFwiXG4gIChjbGljayk9XCJkaXNhYmxlZCA/IGRvU2VsZWN0V2hlbkRpc2FibGVkKCkgOiBwaWNrVGltZUludGVydmFsKClcIlxuPlxuICBAaWYgKGljb24pIHtcbiAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBzbG90PVwic3RhcnRcIiBbY29sb3JdPVwiaWNvbkNvbG9yXCIgW2NsYXNzLm1hcmdpblRvcF09XCJsYWJlbFwiIChjbGljayk9XCJkb0ljb25TZWxlY3QoJGV2ZW50KVwiPlxuICAgICAgPGlvbi1pY29uIFtuYW1lXT1cImljb25cIiBzbG90PVwiaWNvbi1vbmx5XCIgLz5cbiAgICA8L2lvbi1idXR0b24+XG4gIH1cbiAgQGlmIChsYWJlbCkge1xuICAgIDxpb24tbGFiZWwgcG9zaXRpb249XCJzdGFja2VkXCIgW2NsYXNzLnNlbGVjdGFibGVdPVwiIWRpc2FibGVkIHx8IHRhcHBhYmxlV2hlbkRpc2FibGVkXCI+XG4gICAgICB7eyBsYWJlbCB9fVxuICAgICAgQGlmIChvYmxpZ2F0b3J5ICYmICFkaXNhYmxlZCkge1xuICAgICAgICA8aW9uLXRleHQgY2xhc3M9XCJvYmxpZ2F0b3J5RG90XCIgLz5cbiAgICAgIH1cbiAgICA8L2lvbi1sYWJlbD5cbiAgfVxuICA8aW9uLWxhYmVsIGNsYXNzPVwiZGVzY3JpcHRpb25cIiBbY2xhc3Muc2VsZWN0YWJsZV09XCIhZGlzYWJsZWQgfHwgdGFwcGFibGVXaGVuRGlzYWJsZWRcIj5cbiAgICBAaWYgKCF2YWx1ZVRvRGlzcGxheSAmJiAhZGlzYWJsZWQpIHtcbiAgICAgIDxpb24tdGV4dCBjbGFzcz1cInBsYWNlaG9sZGVyXCIgW2NsYXNzLnNlbGVjdGFibGVdPVwiIWRpc2FibGVkXCI+XG4gICAgICAgIHt7IHBsYWNlaG9sZGVyIH19XG4gICAgICA8L2lvbi10ZXh0PlxuICAgIH1cbiAgICB7eyB2YWx1ZVRvRGlzcGxheSB9fVxuICA8L2lvbi1sYWJlbD5cbiAgQGlmICghZGlzYWJsZWQpIHtcbiAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJjYXJldC1kb3duXCIgY2xhc3M9XCJzZWxlY3RJY29uXCIgW2NsYXNzLnNlbGVjdGFibGVdPVwiIWRpc2FibGVkXCIgLz5cbiAgfVxuPC9pb24taXRlbT5cbiJdfQ==
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZUludGVydmFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvdW5jb21tb24vc3JjL3RpbWVJbnRlcnZhbC90aW1lSW50ZXJ2YWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUtaLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUc1RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBc0ZsRixNQUFNLE9BQU8seUJBQXlCO0lBcEZ0QztRQXFGVSxXQUFNLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pDLGVBQVUsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQU1yRDs7V0FFRztRQUNNLFdBQU0sR0FBWSxPQUFPLENBQUMsRUFBRSxDQUFDO1FBNkN0Qzs7V0FFRztRQUNPLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzVDOztXQUVHO1FBQ08sZUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDaEQ7O1dBRUc7UUFDTyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBS3hELGNBQVMsR0FBRyxLQUFLLENBQUM7S0E4RG5CO0lBNURDLFFBQVE7UUFDTiw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxVQUFVLENB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LENBQUMsS0FBVTtRQUNyQixJQUFJLEtBQUs7WUFBRSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQzs4R0FySVUseUJBQXlCO2tHQUF6Qix5QkFBeUIsa2hCQWhGMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDVCxna0JBM0NTLFFBQVEsNkZBQUUsT0FBTyxnRkFBRSxPQUFPLDJKQUFFLFNBQVMsb1BBQUUsT0FBTyx5TkFBRSxZQUFZOzsyRkFpRjNELHlCQUF5QjtrQkFwRnJDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLFlBQzdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQ1Q7OEJBNkNRLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsTUFBTTtzQkFBZCxLQUFLO2dCQUlHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBSUcsWUFBWTtzQkFBcEIsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUlHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUcsV0FBVztzQkFBbkIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUlHLEtBQUs7c0JBQWIsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBSUksTUFBTTtzQkFBZixNQUFNO2dCQUlHLFVBQVU7c0JBQW5CLE1BQU07Z0JBSUcsa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgT25DaGFuZ2VzLFxuICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIsIElvbkl0ZW0sIElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uVGV4dCwgSW9uTGFiZWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGltZUludGVydmFsIH0gZnJvbSAnaWRlYS10b29sYm94JztcbmltcG9ydCB7IElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuaW1wb3J0IHsgSURFQUZyb21UaW1lVG9UaW1lQ29tcG9uZW50LCBQZXJpb2RzIH0gZnJvbSAnLi9mcm9tVGltZVRvVGltZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLXRpbWUtaW50ZXJ2YWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSW9uTGFiZWwsIElvblRleHQsIElvbkljb24sIElvbkJ1dHRvbiwgSW9uSXRlbSwgQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWl0ZW1cbiAgICAgIGNsYXNzPVwidGltZUludGVydmFsSXRlbVwiXG4gICAgICBbY29sb3JdPVwiY29sb3JcIlxuICAgICAgW2xpbmVzXT1cImxpbmVzXCJcbiAgICAgIFtidXR0b25dPVwiIWRpc2FibGVkXCJcbiAgICAgIFtkaXNhYmxlZF09XCJpc09wZW5pbmdcIlxuICAgICAgW3RpdGxlXT1cInBsYWNlaG9sZGVyIHx8IHZhbHVlVG9EaXNwbGF5IHx8ICcnXCJcbiAgICAgIFtjbGFzcy53aXRoTGFiZWxdPVwibGFiZWxcIlxuICAgICAgKGNsaWNrKT1cImRpc2FibGVkID8gZG9TZWxlY3RXaGVuRGlzYWJsZWQoKSA6IHBpY2tUaW1lSW50ZXJ2YWwoKVwiXG4gICAgPlxuICAgICAgQGlmIChpY29uKSB7XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICBzbG90PVwic3RhcnRcIlxuICAgICAgICAgIFtjb2xvcl09XCJpY29uQ29sb3JcIlxuICAgICAgICAgIFtjbGFzcy5tYXJnaW5Ub3BdPVwibGFiZWxcIlxuICAgICAgICAgIChjbGljayk9XCJkb0ljb25TZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwiaWNvblwiIHNsb3Q9XCJpY29uLW9ubHlcIiAvPlxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICB9XG4gICAgICBAaWYgKGxhYmVsKSB7XG4gICAgICAgIDxpb24tbGFiZWwgcG9zaXRpb249XCJzdGFja2VkXCIgW2NsYXNzLnNlbGVjdGFibGVdPVwiIWRpc2FibGVkIHx8IHRhcHBhYmxlV2hlbkRpc2FibGVkXCI+XG4gICAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgICAgICBAaWYgKG9ibGlnYXRvcnkgJiYgIWRpc2FibGVkKSB7XG4gICAgICAgICAgICA8aW9uLXRleHQgY2xhc3M9XCJvYmxpZ2F0b3J5RG90XCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgfVxuICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImRlc2NyaXB0aW9uXCIgW2NsYXNzLnNlbGVjdGFibGVdPVwiIWRpc2FibGVkIHx8IHRhcHBhYmxlV2hlbkRpc2FibGVkXCI+XG4gICAgICAgIEBpZiAoIXZhbHVlVG9EaXNwbGF5ICYmICFkaXNhYmxlZCkge1xuICAgICAgICAgIDxpb24tdGV4dCBjbGFzcz1cInBsYWNlaG9sZGVyXCIgW2NsYXNzLnNlbGVjdGFibGVdPVwiIWRpc2FibGVkXCI+XG4gICAgICAgICAgICB7eyBwbGFjZWhvbGRlciB9fVxuICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgIH1cbiAgICAgICAge3sgdmFsdWVUb0Rpc3BsYXkgfX1cbiAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgQGlmICghZGlzYWJsZWQpIHtcbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBuYW1lPVwiY2FyZXQtZG93blwiIGNsYXNzPVwic2VsZWN0SWNvblwiIFtjbGFzcy5zZWxlY3RhYmxlXT1cIiFkaXNhYmxlZFwiIC8+XG4gICAgICB9XG4gICAgPC9pb24taXRlbT5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnRpbWVJbnRlcnZhbEl0ZW0ge1xuICAgICAgICBtaW4taGVpZ2h0OiA0OHB4O1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIC5kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgICAgIC5wbGFjZWhvbGRlciB7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgICB9XG4gICAgICAgIC5zZWxlY3RJY29uIHtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiA0cHg7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC50aW1lSW50ZXJ2YWxJdGVtLndpdGhMYWJlbCB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDU4cHg7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgLnNlbGVjdEljb24ge1xuICAgICAgICAgIHBhZGRpbmctdG9wOiAyNXB4O1xuICAgICAgICB9XG4gICAgICAgIGlvbi1idXR0b25bc2xvdD0nc3RhcnQnXSB7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLnNlbGVjdGFibGUge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG4gICAgYFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIElERUFUaW1lSW50ZXJ2YWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgcHJpdmF0ZSBfbW9kYWwgPSBpbmplY3QoTW9kYWxDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfdHJhbnNsYXRlID0gaW5qZWN0KElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlKTtcblxuICAvKipcbiAgICogVGhlIHRpbWUgaW50ZXJ2YWwgdG8gc2V0LlxuICAgKi9cbiAgQElucHV0KCkgdGltZUludGVydmFsOiBUaW1lSW50ZXJ2YWw7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHdlIHNob3VsZCBzdGFydCBwaWNraW5nIHRoZSB0aW1lIGRpc3BsYXlpbmcgdGhlIGFmdGVybm9vbiAoUE0pIG9yIHRoZSBtb3JuaW5nIChBTSwgZGVmYXVsdCkuXG4gICAqL1xuICBASW5wdXQoKSBwZXJpb2Q6IFBlcmlvZHMgPSBQZXJpb2RzLkFNO1xuICAvKipcbiAgICogQSB0aW1lIHRvIHVzZSBhcyBsb3dlciBsaW1pdCBmb3IgdGhlIHBvc3NpYmxlIGNob2ljZXMuXG4gICAqL1xuICBASW5wdXQoKSBub3RFYXJsaWVyVGhhbjogbnVtYmVyO1xuICAvKipcbiAgICogQSB0aW1lIHRvIHVzZSBhcyB1cHBlciBsaW1pdCBmb3IgdGhlIHBvc3NpYmxlIGNob2ljZXMuXG4gICAqL1xuICBASW5wdXQoKSBub3RMYXRlclRoYW46IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBsYWJlbCBmb3IgdGhlIGZpZWxkLlxuICAgKi9cbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBpY29uIGZvciB0aGUgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBpY29uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY29sb3Igb2YgdGhlIGljb24uXG4gICAqL1xuICBASW5wdXQoKSBpY29uQ29sb3I6IHN0cmluZztcbiAgLyoqXG4gICAqIEEgcGxhY2Vob2xkZXIgZm9yIHRoZSBmaWVsZC5cbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgZmllbGQgaGFzIGEgdGFwcGFibGUgZWZmZWN0IHdoZW4gZGlzYWJsZWQuXG4gICAqL1xuICBASW5wdXQoKSB0YXBwYWJsZVdoZW5EaXNhYmxlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBvYmxpZ2F0b3J5IGRvdCBpcyBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpIG9ibGlnYXRvcnk6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMaW5lcyBwcmVmZXJlbmNlcyBmb3IgdGhlIGl0ZW0uXG4gICAqL1xuICBASW5wdXQoKSBsaW5lczogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGNvbG9yIGZvciB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KCkgY29sb3I6IHN0cmluZztcbiAgLyoqXG4gICAqIE9uIHNlbGVjdCBldmVudC5cbiAgICovXG4gIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIC8qKlxuICAgKiBJY29uIHNlbGVjdC5cbiAgICovXG4gIEBPdXRwdXQoKSBpY29uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAvKipcbiAgICogT24gc2VsZWN0ICh3aXRoIHRoZSBmaWVsZCBkaXNhYmxlZCkgZXZlbnQuXG4gICAqL1xuICBAT3V0cHV0KCkgc2VsZWN0V2hlbkRpc2FibGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHZhbHVlVG9EaXNwbGF5OiBzdHJpbmc7XG4gIHByaXZhdGUgbGFuZ0NoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGlzT3BlbmluZyA9IGZhbHNlO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIHdoZW4gdGhlIGxhbmd1YWdlIGNoYW5nZXMsIHNldCB0aGUgbG9jYWxlXG4gICAgdGhpcy5sYW5nQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy5fdHJhbnNsYXRlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKCk6IHZvaWQgPT4ge1xuICAgICAgdGhpcy52YWx1ZVRvRGlzcGxheSA9IHRoaXMuZ2V0VmFsdWVUb0Rpc3BsYXkodGhpcy50aW1lSW50ZXJ2YWwpO1xuICAgIH0pO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxhbmdDaGFuZ2VTdWJzY3JpcHRpb24pIHRoaXMubGFuZ0NoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy50aW1lSW50ZXJ2YWwpIHRoaXMudmFsdWVUb0Rpc3BsYXkgPSB0aGlzLmdldFZhbHVlVG9EaXNwbGF5KGNoYW5nZXMudGltZUludGVydmFsLmN1cnJlbnRWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldFZhbHVlVG9EaXNwbGF5KHRpbWVJbnRlcnZhbDogVGltZUludGVydmFsKTogc3RyaW5nIHtcbiAgICBpZiAoIXRpbWVJbnRlcnZhbCB8fCAhdGltZUludGVydmFsLmlzU2V0KCkpIHJldHVybiAnJztcbiAgICAvLyBub3RlOiB0aGUgdGltZSBtdXN0IGJlIGFsd2F5cyBjb25zaWRlcmVkIHdpdGhvdXQgYW55IHRpbWV6b25lIChVVEMpXG4gICAgY29uc3QgZGF0ZU9wdHMgPSB7IHRpbWVab25lOiAnVVRDJywgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JyB9IGFzIGNvbnN0O1xuICAgIHJldHVybiAnJy5jb25jYXQoXG4gICAgICB0aGlzLl90cmFuc2xhdGUuXygnSURFQV9VTkNPTU1PTi5GVFRULkZST00nKSxcbiAgICAgICcgJyxcbiAgICAgIG5ldyBEYXRlKHRpbWVJbnRlcnZhbC5mcm9tKS50b0xvY2FsZVRpbWVTdHJpbmcodGhpcy5fdHJhbnNsYXRlLmdldEN1cnJlbnRMYW5nKCksIGRhdGVPcHRzKSxcbiAgICAgICcgJyxcbiAgICAgIHRoaXMuX3RyYW5zbGF0ZS5fKCdJREVBX1VOQ09NTU9OLkZUVFQuVE8nKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgJyAnLFxuICAgICAgbmV3IERhdGUodGltZUludGVydmFsLnRvKS50b0xvY2FsZVRpbWVTdHJpbmcodGhpcy5fdHJhbnNsYXRlLmdldEN1cnJlbnRMYW5nKCksIGRhdGVPcHRzKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBwaWNrVGltZUludGVydmFsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlzT3BlbmluZykgcmV0dXJuO1xuICAgIHRoaXMuaXNPcGVuaW5nID0gdHJ1ZTtcbiAgICBjb25zdCBtb2RhbCA9IGF3YWl0IHRoaXMuX21vZGFsLmNyZWF0ZSh7XG4gICAgICBjb21wb25lbnQ6IElERUFGcm9tVGltZVRvVGltZUNvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7XG4gICAgICAgIHRpbWVJbnRlcnZhbDogdGhpcy50aW1lSW50ZXJ2YWwsXG4gICAgICAgIHBlcmlvZDogdGhpcy5wZXJpb2QsXG4gICAgICAgIG5vdEVhcmxpZXJUaGFuOiB0aGlzLm5vdEVhcmxpZXJUaGFuLFxuICAgICAgICBub3RMYXRlclRoYW46IHRoaXMubm90TGF0ZXJUaGFuLFxuICAgICAgICB0aXRsZTogdGhpcy5sYWJlbFxuICAgICAgfVxuICAgIH0pO1xuICAgIG1vZGFsLm9uRGlkRGlzbWlzcygpLnRoZW4oKHJlczogYW55KTogdm9pZCA9PiB7XG4gICAgICAvLyBpZiB0aGUgY29udGVudCBjaGFuZ2VkLCB1cGRhdGUgdGhlIGludGVybmFsIHZhbHVlcyBhbmQgbm90aWZ5IHRoZSBwYXJlbnQgY29tcG9uZW50XG4gICAgICBpZiAocmVzLmRhdGEgPT09IHRydWUgfHwgcmVzLmRhdGEgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMudmFsdWVUb0Rpc3BsYXkgPSB0aGlzLmdldFZhbHVlVG9EaXNwbGF5KHRoaXMudGltZUludGVydmFsKTtcbiAgICAgICAgdGhpcy5zZWxlY3QuZW1pdCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIG1vZGFsLnByZXNlbnQoKTtcbiAgICB0aGlzLmlzT3BlbmluZyA9IGZhbHNlO1xuICB9XG5cbiAgZG9TZWxlY3RXaGVuRGlzYWJsZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHRoaXMuc2VsZWN0V2hlbkRpc2FibGVkLmVtaXQoKTtcbiAgfVxuXG4gIGRvSWNvblNlbGVjdChldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50KSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmljb25TZWxlY3QuZW1pdChldmVudCk7XG4gIH1cbn1cbiJdfQ==
|