@sebgroup/green-angular 5.12.0 → 5.13.0
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/lib/shared/core-control/core-checkbox.directive.mjs +3 -3
- package/esm2022/lib/shared/core-control/core-control.directive.mjs +9 -9
- package/esm2022/src/lib/shared/core-control/core-checkbox.directive.mjs +3 -3
- package/esm2022/src/lib/shared/core-control/core-control.directive.mjs +9 -9
- package/esm2022/src/v-angular/checkbox/checkbox.component.mjs +24 -4
- package/esm2022/src/v-angular/datepicker/components/date-input/date-input.component.mjs +21 -3
- package/esm2022/src/v-angular/dropdown/dropdown.component.mjs +33 -4
- package/esm2022/src/v-angular/dropdown/typeahead/typeahead.directive.mjs +2 -1
- package/esm2022/src/v-angular/textarea/textarea.component.mjs +27 -3
- package/esm2022/v-angular/checkbox/checkbox.component.mjs +24 -4
- package/esm2022/v-angular/datepicker/components/date-input/date-input.component.mjs +21 -3
- package/esm2022/v-angular/dropdown/dropdown.component.mjs +33 -4
- package/esm2022/v-angular/dropdown/typeahead/typeahead.directive.mjs +2 -1
- package/esm2022/v-angular/textarea/textarea.component.mjs +27 -3
- package/fesm2022/sebgroup-green-angular-src-lib-shared.mjs +10 -10
- package/fesm2022/sebgroup-green-angular-src-lib-shared.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs +23 -3
- package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs +20 -2
- package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +33 -3
- package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs +26 -2
- package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-v-angular.mjs +102 -10
- package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular.mjs +10 -10
- package/fesm2022/sebgroup-green-angular.mjs.map +1 -1
- package/lib/shared/core-control/core-checkbox.directive.d.ts +1 -1
- package/lib/shared/core-control/core-control.directive.d.ts +1 -1
- package/package.json +2 -2
- package/src/lib/shared/core-control/core-checkbox.directive.d.ts +1 -1
- package/src/lib/shared/core-control/core-control.directive.d.ts +1 -1
- package/src/v-angular/checkbox/checkbox.component.d.ts +10 -2
- package/src/v-angular/datepicker/components/date-input/date-input.component.d.ts +7 -1
- package/src/v-angular/dropdown/dropdown.component.d.ts +17 -2
- package/src/v-angular/textarea/textarea.component.d.ts +13 -1
- package/v-angular/checkbox/checkbox.component.d.ts +10 -2
- package/v-angular/datepicker/components/date-input/date-input.component.d.ts +7 -1
- package/v-angular/dropdown/dropdown.component.d.ts +17 -2
- package/v-angular/textarea/textarea.component.d.ts +13 -1
|
@@ -31,6 +31,12 @@ import * as i6 from "../datepicker/datepicker.component";
|
|
|
31
31
|
* https://jsverse.github.io/transloco/docs/plugins/locale/#setup
|
|
32
32
|
*/
|
|
33
33
|
export class DateInputComponent extends DateControlValueAccessorComponent {
|
|
34
|
+
get isSmall() {
|
|
35
|
+
return this.size === 'small';
|
|
36
|
+
}
|
|
37
|
+
get isLarge() {
|
|
38
|
+
return this.size === 'large';
|
|
39
|
+
}
|
|
34
40
|
constructor(ngControl, translocoScope, transloco, elementRef, cdr) {
|
|
35
41
|
super(ngControl, translocoScope, elementRef, cdr, transloco);
|
|
36
42
|
this.ngControl = ngControl;
|
|
@@ -60,6 +66,10 @@ export class DateInputComponent extends DateControlValueAccessorComponent {
|
|
|
60
66
|
this.firstDayOfWeek = WeekDay.Monday;
|
|
61
67
|
/** If set to true, it will allow to close the calendar on escape button click. */
|
|
62
68
|
this.closeCalendarOnEscape = true;
|
|
69
|
+
/**
|
|
70
|
+
* Sets the displayed size of the date input field.
|
|
71
|
+
*/
|
|
72
|
+
this.size = 'large';
|
|
63
73
|
/** @internal */
|
|
64
74
|
// calendarIcon: IconDefinition = faCalendarDays;
|
|
65
75
|
/** @internal */
|
|
@@ -153,11 +163,11 @@ export class DateInputComponent extends DateControlValueAccessorComponent {
|
|
|
153
163
|
});
|
|
154
164
|
}
|
|
155
165
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateInputComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i2.TranslocoService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
156
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DateInputComponent, selector: "nggv-dateinput,nggv-input[type=date]", inputs: { thook: "thook", type: "type", readonly: "readonly", disableDates: "disableDates", disableWeekDays: "disableWeekDays", minRows: "minRows", firstValid: "firstValid", lastValid: "lastValid", closingTime: "closingTime", firstDayOfWeek: "firstDayOfWeek", closeCalendarOnEscape: "closeCalendarOnEscape" }, host: { listeners: { "keydown": "keyListener($event)" }, properties: { "attr.data-thook": "this.thook" } }, viewQueries: [{ propertyName: "toggleButtonRef", first: true, predicate: ["toggleCalendarButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- LABEL -->\n<ng-container *transloco=\"let t; read: scope\">\n <label\n [id]=\"id + '-label'\"\n class=\"gds-field-label hide-if-empty\"\n [attr.for]=\"id + '-input'\"\n >\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"gds-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n </label>\n\n <!-- DESCRIPTION -->\n <div\n class=\"gds-field-label--small description hide-if-empty\"\n *ngIf=\"description\"\n >\n {{ description }}\n </div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\n <ng-template\n *ngTemplateOutlet=\"\n lockedTpl || defaultLockedTpl;\n context: { $implicit: state }\n \"\n ></ng-template>\n <ng-template #defaultLockedTpl>\n <div\n [id]=\"id + '-input'\"\n class=\"nggv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n {{ state | nggvInputMaskFormat: dateInputMask }}\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- INPUT WRAPPER -->\n <ng-container *ngIf=\"!locked\">\n <div\n class=\"field-wrap\"\n [class.nggv-field--error]=\"invalid\"\n *ngIf=\"showInput$ | async\"\n >\n <!-- INPUT FIELD -->\n <input\n #input\n [id]=\"id + '-input'\"\n class=\"nggv-field-date\"\n type=\"text\"\n autocomplete=\"off\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [nggvInputMask]=\"dateInputMask\"\n [value]=\"state\"\n title=\"\"\n (change)=\"onValueChange($event.target)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n\n <button\n aria-label=\"toggle calendar\"\n #toggleCalendarButton\n class=\"nggv-button-date\"\n type=\"button\"\n data-thook=\"toggle-calendar-button\"\n (click)=\"toggleDatepicker()\"\n [disabled]=\"disabled\"\n >\n <gds-icon-calendar\n *nggCoreElement\n width=\"20\"\n height=\"20\"\n ></gds-icon-calendar>\n </button>\n </div>\n\n <!-- DATEPICKER -->\n <div class=\"nggv-datepicker\" *ngIf=\"shown\">\n <nggv-datepicker\n #input\n [type]=\"type\"\n [disableDates]=\"disableDates\"\n [disableWeekDays]=\"disableWeekDays\"\n [selected]=\"state\"\n [locale]=\"locale\"\n [minCalendarRows]=\"minRows\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [firstValid]=\"firstValid\"\n [lastValid]=\"lastValid\"\n [closingTime]=\"closingTime\"\n (ngvDateChange)=\"onDateChange($event)\"\n >\n <ng-content></ng-content>\n </nggv-datepicker>\n </div>\n\n <!-- ERRORS -->\n <ng-container\n *ngIf=\"\n invalid &&\n (error || ngControl?.invalid) &&\n (!errorList || !errorList.length)\n \"\n >\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n width=\"16\"\n height=\"16\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n *ngIf=\"error; else errorsRef\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n <ng-template #errorsRef>\n <span\n *ngIf=\"firstError as error\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </span>\n </label>\n </ng-container>\n\n <ng-container *ngFor=\"let error of errorList ?? []\">\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n *ngIf=\"invalid && error\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n width=\"16\"\n height=\"16\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n </span>\n </label>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:block;position:relative}@media (max-width: 47.98em){:host{min-width:100%}}:host .hide-if-empty:empty{display:none}:host .unset-state{padding-left:.5rem}:host .gds-field-label{display:block}:host .gds-field-label:is(label){margin-bottom:0}:host .gds-field-label.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label.form-control:focus,:host .gds-field-label.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label+input,:host .gds-field-label+textarea,fieldset :host .gds-field-label+div,:host .gds-field-label+button,:host .gds-field-label+.group-stepper,:host .gds-field-label+.stepper-wrapper,:host .gds-field-label+.group{margin-top:.5rem}:host .gds-field-label+.form-info{margin-bottom:.5rem}:host label+.field-wrap,:host label+.nggv-field--locked{margin-top:.5rem}:host .description{font-size:.875rem;margin-bottom:.5rem;line-height:1.25rem;width:100%}:host .gds-field-label--optional:is(label){margin-bottom:0}:host .gds-field-label--optional.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label--optional.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label--optional.form-control:focus,:host .gds-field-label--optional.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label--optional:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label--optional+input,:host .gds-field-label--optional+textarea,fieldset :host .gds-field-label--optional+div,:host .gds-field-label--optional+button,:host .gds-field-label--optional+.group-stepper,:host .gds-field-label--optional+.stepper-wrapper,:host .gds-field-label--optional+.group{margin-top:.5rem}:host .gds-field-label--optional+.form-info{margin-bottom:.5rem}:host .nggv-datepicker{margin-top:.25rem;position:absolute}:host .nggv-field--error{border-bottom:.125rem solid #9f000a!important}:host .nggv-field--error:focus,:host .nggv-field--error:active,:host .nggv-field--error:hover{border-bottom:.125rem solid #9f000a!important}:host .error-item{display:flex;gap:.5rem;color:#9f000a}:host .gds-field-notice{margin-top:.5rem;display:block;font-size:.875rem;line-height:1;font-weight:500}:host .field-wrap{border:1px solid #868686;border-radius:4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;height:2.625rem;display:flex}:host .field-wrap *,:host .field-wrap *:before,:host .field-wrap *:after{box-sizing:border-box}:host .field-wrap .nggv-button-date{--text-disabled-color: #adadad;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);font-weight:500;min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center;transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;border-color:#333;color:#333;--color: rgb(51, 51, 51);background-color:transparent;min-height:2.5rem;border:none;border-radius:3px;width:2.625rem;height:2.625rem;min-width:2.625rem;border-top-left-radius:0!important;border-bottom-left-radius:0!important;text-align:right}:host .field-wrap .nggv-button-date:focus:not(:focus-visible){box-shadow:none;outline:0}:host .field-wrap .nggv-button-date:focus,:host .field-wrap .nggv-button-date:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:100%}}@media screen and (-ms-high-contrast: active){:host .field-wrap .nggv-button-date{border:2px solid currentcolor}}:host .field-wrap .nggv-button-date.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host .field-wrap .nggv-button-date.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host .field-wrap .nggv-button-date:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected=true],:host .field-wrap .nggv-button-date:active,:host .field-wrap .nggv-button-date.active,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected]:hover,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{opacity:.9}:host .field-wrap .nggv-button-date:focus-visible{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333!important}:host .field-wrap .nggv-button-date:disabled,:host .field-wrap .nggv-button-date.disabled,:host .field-wrap .nggv-button-date[aria-disabled=true]{color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host .field-wrap .nggv-button-date:disabled::placeholder,:host .field-wrap .nggv-button-date.disabled::placeholder,:host .field-wrap .nggv-button-date[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}@media (max-width: 47.98em){:host .field-wrap .nggv-button-date{width:2.625rem;height:2.625rem}}:host .field-wrap .nggv-button-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-button-date[disabled]{background-color:#f8f8f8!important;color:#adadad}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:initial}}:host .field-wrap input[type=text]::-webkit-inner-spin-button,:host .field-wrap input[type=text]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none;font-size:1rem;font-family:inherit}:host .field-wrap .nggv-field-date{border:1px solid #cecece;border-radius:4px 0 0 4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;border:none;min-height:2.375rem;width:100%;padding-left:1rem}:host .field-wrap .nggv-field-date *,:host .field-wrap .nggv-field-date *:before,:host .field-wrap .nggv-field-date *:after{box-sizing:border-box}:host .field-wrap .nggv-field-date:hover{border-color:#41b0ee}:host .field-wrap .nggv-field-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-field-date:active{border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]{background-color:#f8f8f8;border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]::placeholder{color:#cecece}:host .field-wrap .nggv-field-date:not(:focus){border-right:none;padding-right:0}:host .field-wrap .nggv-field-date:focus{padding-right:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: i4.NggvInputMaskDirective, selector: "[nggvInputMask]", inputs: ["nggvInputMask"] }, { kind: "directive", type: i5.NggCoreElementDirective, selector: "[nggCoreElement]" }, { kind: "component", type: i6.DatepickerComponent, selector: "nggv-datepicker", inputs: ["firstDayOfWeek", "disableDates", "disableWeekDays", "minCalendarRows", "selected", "locale", "type", "firstValid", "lastValid", "closingTime"], outputs: ["ngvDateChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.InputMaskFormatPipe, name: "nggvInputMaskFormat" }] }); }
|
|
166
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DateInputComponent, selector: "nggv-dateinput,nggv-input[type=date]", inputs: { thook: "thook", type: "type", readonly: "readonly", disableDates: "disableDates", disableWeekDays: "disableWeekDays", minRows: "minRows", firstValid: "firstValid", lastValid: "lastValid", closingTime: "closingTime", firstDayOfWeek: "firstDayOfWeek", closeCalendarOnEscape: "closeCalendarOnEscape", size: "size" }, host: { listeners: { "keydown": "keyListener($event)" }, properties: { "attr.data-thook": "this.thook", "class.small": "this.isSmall", "class.large": "this.isLarge" } }, viewQueries: [{ propertyName: "toggleButtonRef", first: true, predicate: ["toggleCalendarButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- LABEL -->\n<ng-container *transloco=\"let t; read: scope\">\n <label\n [id]=\"id + '-label'\"\n class=\"gds-field-label hide-if-empty\"\n [attr.for]=\"id + '-input'\"\n >\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"gds-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n </label>\n\n <!-- DESCRIPTION -->\n <div\n class=\"gds-field-label--small description hide-if-empty\"\n *ngIf=\"description\"\n >\n {{ description }}\n </div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\n <ng-template\n *ngTemplateOutlet=\"\n lockedTpl || defaultLockedTpl;\n context: { $implicit: state }\n \"\n ></ng-template>\n <ng-template #defaultLockedTpl>\n <div\n [id]=\"id + '-input'\"\n class=\"nggv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n {{ state | nggvInputMaskFormat: dateInputMask }}\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- INPUT WRAPPER -->\n <ng-container *ngIf=\"!locked\">\n <div\n class=\"field-wrap\"\n [class.nggv-field--error]=\"invalid\"\n *ngIf=\"showInput$ | async\"\n >\n <!-- INPUT FIELD -->\n <input\n #input\n [id]=\"id + '-input'\"\n class=\"nggv-field-date\"\n type=\"text\"\n autocomplete=\"off\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [nggvInputMask]=\"dateInputMask\"\n [value]=\"state\"\n title=\"\"\n (change)=\"onValueChange($event.target)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n\n <button\n aria-label=\"toggle calendar\"\n #toggleCalendarButton\n class=\"nggv-button-date\"\n type=\"button\"\n data-thook=\"toggle-calendar-button\"\n (click)=\"toggleDatepicker()\"\n [disabled]=\"disabled\"\n >\n @if (size === 'small') {\n <gds-icon-calendar *nggCoreElement size=\"16px\"></gds-icon-calendar>\n }\n\n @if (size === 'large') {\n <gds-icon-calendar *nggCoreElement size=\"20px\"></gds-icon-calendar>\n }\n </button>\n </div>\n\n <!-- DATEPICKER -->\n <div class=\"nggv-datepicker\" *ngIf=\"shown\">\n <nggv-datepicker\n #input\n [type]=\"type\"\n [disableDates]=\"disableDates\"\n [disableWeekDays]=\"disableWeekDays\"\n [selected]=\"state\"\n [locale]=\"locale\"\n [minCalendarRows]=\"minRows\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [firstValid]=\"firstValid\"\n [lastValid]=\"lastValid\"\n [closingTime]=\"closingTime\"\n (ngvDateChange)=\"onDateChange($event)\"\n >\n <ng-content></ng-content>\n </nggv-datepicker>\n </div>\n\n <!-- ERRORS -->\n <ng-container\n *ngIf=\"\n invalid &&\n (error || ngControl?.invalid) &&\n (!errorList || !errorList.length)\n \"\n >\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n size=\"16px\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n *ngIf=\"error; else errorsRef\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n <ng-template #errorsRef>\n <span\n *ngIf=\"firstError as error\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </span>\n </label>\n </ng-container>\n <ng-container *ngFor=\"let error of errorList ?? []\">\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n *ngIf=\"invalid && error\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n size=\"16px\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n </span>\n </label>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:block;position:relative}@media (max-width: 47.98em){:host{min-width:100%}}:host .hide-if-empty:empty{display:none}:host .unset-state{padding-left:.5rem}:host .gds-field-label{display:block}:host .gds-field-label:is(label){margin-bottom:0}:host .gds-field-label.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label.form-control:focus,:host .gds-field-label.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label+input,:host .gds-field-label+textarea,fieldset :host .gds-field-label+div,:host .gds-field-label+button,:host .gds-field-label+.group-stepper,:host .gds-field-label+.stepper-wrapper,:host .gds-field-label+.group{margin-top:.5rem}:host .gds-field-label+.form-info{margin-bottom:.5rem}:host label+.field-wrap,:host label+.nggv-field--locked{margin-top:.5rem}:host .description{font-size:.875rem;margin-bottom:.5rem;line-height:1.25rem;width:100%}:host .gds-field-label--optional:is(label){margin-bottom:0}:host .gds-field-label--optional.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label--optional.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label--optional.form-control:focus,:host .gds-field-label--optional.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label--optional:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label--optional+input,:host .gds-field-label--optional+textarea,fieldset :host .gds-field-label--optional+div,:host .gds-field-label--optional+button,:host .gds-field-label--optional+.group-stepper,:host .gds-field-label--optional+.stepper-wrapper,:host .gds-field-label--optional+.group{margin-top:.5rem}:host .gds-field-label--optional+.form-info{margin-bottom:.5rem}:host .nggv-datepicker{margin-top:.25rem;position:absolute}:host .nggv-field--error{border-bottom:.125rem solid #9f000a!important}:host .nggv-field--error:focus,:host .nggv-field--error:active,:host .nggv-field--error:hover{border-bottom:.125rem solid #9f000a!important}:host .error-item{display:flex;gap:.5rem;color:#9f000a}:host .gds-field-notice{margin-top:.5rem;display:block;font-size:.875rem;line-height:1;font-weight:500}:host .field-wrap{border:1px solid #868686;border-radius:4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;height:2.625rem;display:flex}:host .field-wrap *,:host .field-wrap *:before,:host .field-wrap *:after{box-sizing:border-box}:host .field-wrap .nggv-button-date{--text-disabled-color: #adadad;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);font-weight:500;min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center;transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;border-color:#333;color:#333;--color: rgb(51, 51, 51);background-color:transparent;min-height:2.5rem;border:none;border-radius:3px;width:2.625rem;height:2.625rem;min-width:2.625rem;border-top-left-radius:0!important;border-bottom-left-radius:0!important;text-align:right}:host .field-wrap .nggv-button-date:focus:not(:focus-visible){box-shadow:none;outline:0}:host .field-wrap .nggv-button-date:focus,:host .field-wrap .nggv-button-date:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:100%}}@media screen and (-ms-high-contrast: active){:host .field-wrap .nggv-button-date{border:2px solid currentcolor}}:host .field-wrap .nggv-button-date.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host .field-wrap .nggv-button-date.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host .field-wrap .nggv-button-date:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected=true],:host .field-wrap .nggv-button-date:active,:host .field-wrap .nggv-button-date.active,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected]:hover,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{opacity:.9}:host .field-wrap .nggv-button-date:focus-visible{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333!important}:host .field-wrap .nggv-button-date:disabled,:host .field-wrap .nggv-button-date.disabled,:host .field-wrap .nggv-button-date[aria-disabled=true]{color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host .field-wrap .nggv-button-date:disabled::placeholder,:host .field-wrap .nggv-button-date.disabled::placeholder,:host .field-wrap .nggv-button-date[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}@media (max-width: 47.98em){:host .field-wrap .nggv-button-date{width:2.625rem;height:2.625rem}}:host .field-wrap .nggv-button-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-button-date[disabled]{background-color:#f8f8f8!important;color:#adadad}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:initial}}:host .field-wrap input[type=text]::-webkit-inner-spin-button,:host .field-wrap input[type=text]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none;font-size:1rem;font-family:inherit}:host .field-wrap .nggv-field-date{border:1px solid #cecece;border-radius:4px 0 0 4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;border:none;min-height:2.375rem;width:100%;padding-left:1rem}:host .field-wrap .nggv-field-date *,:host .field-wrap .nggv-field-date *:before,:host .field-wrap .nggv-field-date *:after{box-sizing:border-box}:host .field-wrap .nggv-field-date:hover{border-color:#41b0ee}:host .field-wrap .nggv-field-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-field-date:active{border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]{background-color:#f8f8f8;border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]::placeholder{color:#cecece}:host .field-wrap .nggv-field-date:not(:focus){border-right:none;padding-right:0}:host .field-wrap .nggv-field-date:focus{padding-right:0}:host.small .gds-field-label{font-size:.875rem;line-height:1rem}:host.small label+.field-wrap{margin-top:.25rem}:host.small .field-wrap{height:calc(2rem + 2px);min-height:calc(2rem + 2px)}:host.small .field-wrap .nggv-field-date{padding:.38rem .5rem;line-height:1rem;min-height:2rem;font-size:.875rem}:host.small .field-wrap .nggv-button-date{min-height:2rem;min-width:2rem;width:2rem;height:2rem;padding:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: i4.NggvInputMaskDirective, selector: "[nggvInputMask]", inputs: ["nggvInputMask"] }, { kind: "directive", type: i5.NggCoreElementDirective, selector: "[nggCoreElement]" }, { kind: "component", type: i6.DatepickerComponent, selector: "nggv-datepicker", inputs: ["firstDayOfWeek", "disableDates", "disableWeekDays", "minCalendarRows", "selected", "locale", "type", "firstValid", "lastValid", "closingTime"], outputs: ["ngvDateChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.InputMaskFormatPipe, name: "nggvInputMaskFormat" }] }); }
|
|
157
167
|
}
|
|
158
168
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateInputComponent, decorators: [{
|
|
159
169
|
type: Component,
|
|
160
|
-
args: [{ selector: 'nggv-dateinput,nggv-input[type=date]', template: "<!-- LABEL -->\n<ng-container *transloco=\"let t; read: scope\">\n <label\n [id]=\"id + '-label'\"\n class=\"gds-field-label hide-if-empty\"\n [attr.for]=\"id + '-input'\"\n >\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"gds-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n </label>\n\n <!-- DESCRIPTION -->\n <div\n class=\"gds-field-label--small description hide-if-empty\"\n *ngIf=\"description\"\n >\n {{ description }}\n </div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\n <ng-template\n *ngTemplateOutlet=\"\n lockedTpl || defaultLockedTpl;\n context: { $implicit: state }\n \"\n ></ng-template>\n <ng-template #defaultLockedTpl>\n <div\n [id]=\"id + '-input'\"\n class=\"nggv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n {{ state | nggvInputMaskFormat: dateInputMask }}\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- INPUT WRAPPER -->\n <ng-container *ngIf=\"!locked\">\n <div\n class=\"field-wrap\"\n [class.nggv-field--error]=\"invalid\"\n *ngIf=\"showInput$ | async\"\n >\n <!-- INPUT FIELD -->\n <input\n #input\n [id]=\"id + '-input'\"\n class=\"nggv-field-date\"\n type=\"text\"\n autocomplete=\"off\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [nggvInputMask]=\"dateInputMask\"\n [value]=\"state\"\n title=\"\"\n (change)=\"onValueChange($event.target)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n\n <button\n aria-label=\"toggle calendar\"\n #toggleCalendarButton\n class=\"nggv-button-date\"\n type=\"button\"\n data-thook=\"toggle-calendar-button\"\n (click)=\"toggleDatepicker()\"\n [disabled]=\"disabled\"\n >\n <gds-icon-calendar\n *nggCoreElement\n width=\"20\"\n height=\"20\"\n ></gds-icon-calendar>\n </button>\n </div>\n\n <!-- DATEPICKER -->\n <div class=\"nggv-datepicker\" *ngIf=\"shown\">\n <nggv-datepicker\n #input\n [type]=\"type\"\n [disableDates]=\"disableDates\"\n [disableWeekDays]=\"disableWeekDays\"\n [selected]=\"state\"\n [locale]=\"locale\"\n [minCalendarRows]=\"minRows\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [firstValid]=\"firstValid\"\n [lastValid]=\"lastValid\"\n [closingTime]=\"closingTime\"\n (ngvDateChange)=\"onDateChange($event)\"\n >\n <ng-content></ng-content>\n </nggv-datepicker>\n </div>\n\n <!-- ERRORS -->\n <ng-container\n *ngIf=\"\n invalid &&\n (error || ngControl?.invalid) &&\n (!errorList || !errorList.length)\n \"\n >\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n width=\"16\"\n height=\"16\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n *ngIf=\"error; else errorsRef\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n <ng-template #errorsRef>\n <span\n *ngIf=\"firstError as error\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </span>\n </label>\n </ng-container>\n\n <ng-container *ngFor=\"let error of errorList ?? []\">\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n *ngIf=\"invalid && error\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n width=\"16\"\n height=\"16\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n </span>\n </label>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:block;position:relative}@media (max-width: 47.98em){:host{min-width:100%}}:host .hide-if-empty:empty{display:none}:host .unset-state{padding-left:.5rem}:host .gds-field-label{display:block}:host .gds-field-label:is(label){margin-bottom:0}:host .gds-field-label.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label.form-control:focus,:host .gds-field-label.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label+input,:host .gds-field-label+textarea,fieldset :host .gds-field-label+div,:host .gds-field-label+button,:host .gds-field-label+.group-stepper,:host .gds-field-label+.stepper-wrapper,:host .gds-field-label+.group{margin-top:.5rem}:host .gds-field-label+.form-info{margin-bottom:.5rem}:host label+.field-wrap,:host label+.nggv-field--locked{margin-top:.5rem}:host .description{font-size:.875rem;margin-bottom:.5rem;line-height:1.25rem;width:100%}:host .gds-field-label--optional:is(label){margin-bottom:0}:host .gds-field-label--optional.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label--optional.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label--optional.form-control:focus,:host .gds-field-label--optional.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label--optional:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label--optional+input,:host .gds-field-label--optional+textarea,fieldset :host .gds-field-label--optional+div,:host .gds-field-label--optional+button,:host .gds-field-label--optional+.group-stepper,:host .gds-field-label--optional+.stepper-wrapper,:host .gds-field-label--optional+.group{margin-top:.5rem}:host .gds-field-label--optional+.form-info{margin-bottom:.5rem}:host .nggv-datepicker{margin-top:.25rem;position:absolute}:host .nggv-field--error{border-bottom:.125rem solid #9f000a!important}:host .nggv-field--error:focus,:host .nggv-field--error:active,:host .nggv-field--error:hover{border-bottom:.125rem solid #9f000a!important}:host .error-item{display:flex;gap:.5rem;color:#9f000a}:host .gds-field-notice{margin-top:.5rem;display:block;font-size:.875rem;line-height:1;font-weight:500}:host .field-wrap{border:1px solid #868686;border-radius:4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;height:2.625rem;display:flex}:host .field-wrap *,:host .field-wrap *:before,:host .field-wrap *:after{box-sizing:border-box}:host .field-wrap .nggv-button-date{--text-disabled-color: #adadad;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);font-weight:500;min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center;transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;border-color:#333;color:#333;--color: rgb(51, 51, 51);background-color:transparent;min-height:2.5rem;border:none;border-radius:3px;width:2.625rem;height:2.625rem;min-width:2.625rem;border-top-left-radius:0!important;border-bottom-left-radius:0!important;text-align:right}:host .field-wrap .nggv-button-date:focus:not(:focus-visible){box-shadow:none;outline:0}:host .field-wrap .nggv-button-date:focus,:host .field-wrap .nggv-button-date:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:100%}}@media screen and (-ms-high-contrast: active){:host .field-wrap .nggv-button-date{border:2px solid currentcolor}}:host .field-wrap .nggv-button-date.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host .field-wrap .nggv-button-date.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host .field-wrap .nggv-button-date:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected=true],:host .field-wrap .nggv-button-date:active,:host .field-wrap .nggv-button-date.active,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected]:hover,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{opacity:.9}:host .field-wrap .nggv-button-date:focus-visible{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333!important}:host .field-wrap .nggv-button-date:disabled,:host .field-wrap .nggv-button-date.disabled,:host .field-wrap .nggv-button-date[aria-disabled=true]{color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host .field-wrap .nggv-button-date:disabled::placeholder,:host .field-wrap .nggv-button-date.disabled::placeholder,:host .field-wrap .nggv-button-date[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}@media (max-width: 47.98em){:host .field-wrap .nggv-button-date{width:2.625rem;height:2.625rem}}:host .field-wrap .nggv-button-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-button-date[disabled]{background-color:#f8f8f8!important;color:#adadad}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:initial}}:host .field-wrap input[type=text]::-webkit-inner-spin-button,:host .field-wrap input[type=text]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none;font-size:1rem;font-family:inherit}:host .field-wrap .nggv-field-date{border:1px solid #cecece;border-radius:4px 0 0 4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;border:none;min-height:2.375rem;width:100%;padding-left:1rem}:host .field-wrap .nggv-field-date *,:host .field-wrap .nggv-field-date *:before,:host .field-wrap .nggv-field-date *:after{box-sizing:border-box}:host .field-wrap .nggv-field-date:hover{border-color:#41b0ee}:host .field-wrap .nggv-field-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-field-date:active{border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]{background-color:#f8f8f8;border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]::placeholder{color:#cecece}:host .field-wrap .nggv-field-date:not(:focus){border-right:none;padding-right:0}:host .field-wrap .nggv-field-date:focus{padding-right:0}\n"] }]
|
|
170
|
+
args: [{ selector: 'nggv-dateinput,nggv-input[type=date]', template: "<!-- LABEL -->\n<ng-container *transloco=\"let t; read: scope\">\n <label\n [id]=\"id + '-label'\"\n class=\"gds-field-label hide-if-empty\"\n [attr.for]=\"id + '-input'\"\n >\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"gds-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n </label>\n\n <!-- DESCRIPTION -->\n <div\n class=\"gds-field-label--small description hide-if-empty\"\n *ngIf=\"description\"\n >\n {{ description }}\n </div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\n <ng-template\n *ngTemplateOutlet=\"\n lockedTpl || defaultLockedTpl;\n context: { $implicit: state }\n \"\n ></ng-template>\n <ng-template #defaultLockedTpl>\n <div\n [id]=\"id + '-input'\"\n class=\"nggv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n {{ state | nggvInputMaskFormat: dateInputMask }}\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- INPUT WRAPPER -->\n <ng-container *ngIf=\"!locked\">\n <div\n class=\"field-wrap\"\n [class.nggv-field--error]=\"invalid\"\n *ngIf=\"showInput$ | async\"\n >\n <!-- INPUT FIELD -->\n <input\n #input\n [id]=\"id + '-input'\"\n class=\"nggv-field-date\"\n type=\"text\"\n autocomplete=\"off\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [nggvInputMask]=\"dateInputMask\"\n [value]=\"state\"\n title=\"\"\n (change)=\"onValueChange($event.target)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n\n <button\n aria-label=\"toggle calendar\"\n #toggleCalendarButton\n class=\"nggv-button-date\"\n type=\"button\"\n data-thook=\"toggle-calendar-button\"\n (click)=\"toggleDatepicker()\"\n [disabled]=\"disabled\"\n >\n @if (size === 'small') {\n <gds-icon-calendar *nggCoreElement size=\"16px\"></gds-icon-calendar>\n }\n\n @if (size === 'large') {\n <gds-icon-calendar *nggCoreElement size=\"20px\"></gds-icon-calendar>\n }\n </button>\n </div>\n\n <!-- DATEPICKER -->\n <div class=\"nggv-datepicker\" *ngIf=\"shown\">\n <nggv-datepicker\n #input\n [type]=\"type\"\n [disableDates]=\"disableDates\"\n [disableWeekDays]=\"disableWeekDays\"\n [selected]=\"state\"\n [locale]=\"locale\"\n [minCalendarRows]=\"minRows\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [firstValid]=\"firstValid\"\n [lastValid]=\"lastValid\"\n [closingTime]=\"closingTime\"\n (ngvDateChange)=\"onDateChange($event)\"\n >\n <ng-content></ng-content>\n </nggv-datepicker>\n </div>\n\n <!-- ERRORS -->\n <ng-container\n *ngIf=\"\n invalid &&\n (error || ngControl?.invalid) &&\n (!errorList || !errorList.length)\n \"\n >\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n size=\"16px\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n *ngIf=\"error; else errorsRef\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n <ng-template #errorsRef>\n <span\n *ngIf=\"firstError as error\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </span>\n </label>\n </ng-container>\n <ng-container *ngFor=\"let error of errorList ?? []\">\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n *ngIf=\"invalid && error\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n size=\"16px\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n </span>\n </label>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:block;position:relative}@media (max-width: 47.98em){:host{min-width:100%}}:host .hide-if-empty:empty{display:none}:host .unset-state{padding-left:.5rem}:host .gds-field-label{display:block}:host .gds-field-label:is(label){margin-bottom:0}:host .gds-field-label.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label.form-control:focus,:host .gds-field-label.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label+input,:host .gds-field-label+textarea,fieldset :host .gds-field-label+div,:host .gds-field-label+button,:host .gds-field-label+.group-stepper,:host .gds-field-label+.stepper-wrapper,:host .gds-field-label+.group{margin-top:.5rem}:host .gds-field-label+.form-info{margin-bottom:.5rem}:host label+.field-wrap,:host label+.nggv-field--locked{margin-top:.5rem}:host .description{font-size:.875rem;margin-bottom:.5rem;line-height:1.25rem;width:100%}:host .gds-field-label--optional:is(label){margin-bottom:0}:host .gds-field-label--optional.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label--optional.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label--optional.form-control:focus,:host .gds-field-label--optional.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label--optional:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label--optional+input,:host .gds-field-label--optional+textarea,fieldset :host .gds-field-label--optional+div,:host .gds-field-label--optional+button,:host .gds-field-label--optional+.group-stepper,:host .gds-field-label--optional+.stepper-wrapper,:host .gds-field-label--optional+.group{margin-top:.5rem}:host .gds-field-label--optional+.form-info{margin-bottom:.5rem}:host .nggv-datepicker{margin-top:.25rem;position:absolute}:host .nggv-field--error{border-bottom:.125rem solid #9f000a!important}:host .nggv-field--error:focus,:host .nggv-field--error:active,:host .nggv-field--error:hover{border-bottom:.125rem solid #9f000a!important}:host .error-item{display:flex;gap:.5rem;color:#9f000a}:host .gds-field-notice{margin-top:.5rem;display:block;font-size:.875rem;line-height:1;font-weight:500}:host .field-wrap{border:1px solid #868686;border-radius:4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;height:2.625rem;display:flex}:host .field-wrap *,:host .field-wrap *:before,:host .field-wrap *:after{box-sizing:border-box}:host .field-wrap .nggv-button-date{--text-disabled-color: #adadad;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);font-weight:500;min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center;transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;border-color:#333;color:#333;--color: rgb(51, 51, 51);background-color:transparent;min-height:2.5rem;border:none;border-radius:3px;width:2.625rem;height:2.625rem;min-width:2.625rem;border-top-left-radius:0!important;border-bottom-left-radius:0!important;text-align:right}:host .field-wrap .nggv-button-date:focus:not(:focus-visible){box-shadow:none;outline:0}:host .field-wrap .nggv-button-date:focus,:host .field-wrap .nggv-button-date:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:100%}}@media screen and (-ms-high-contrast: active){:host .field-wrap .nggv-button-date{border:2px solid currentcolor}}:host .field-wrap .nggv-button-date.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host .field-wrap .nggv-button-date.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host .field-wrap .nggv-button-date:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected=true],:host .field-wrap .nggv-button-date:active,:host .field-wrap .nggv-button-date.active,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected]:hover,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{opacity:.9}:host .field-wrap .nggv-button-date:focus-visible{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333!important}:host .field-wrap .nggv-button-date:disabled,:host .field-wrap .nggv-button-date.disabled,:host .field-wrap .nggv-button-date[aria-disabled=true]{color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host .field-wrap .nggv-button-date:disabled::placeholder,:host .field-wrap .nggv-button-date.disabled::placeholder,:host .field-wrap .nggv-button-date[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}@media (max-width: 47.98em){:host .field-wrap .nggv-button-date{width:2.625rem;height:2.625rem}}:host .field-wrap .nggv-button-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-button-date[disabled]{background-color:#f8f8f8!important;color:#adadad}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:initial}}:host .field-wrap input[type=text]::-webkit-inner-spin-button,:host .field-wrap input[type=text]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none;font-size:1rem;font-family:inherit}:host .field-wrap .nggv-field-date{border:1px solid #cecece;border-radius:4px 0 0 4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;border:none;min-height:2.375rem;width:100%;padding-left:1rem}:host .field-wrap .nggv-field-date *,:host .field-wrap .nggv-field-date *:before,:host .field-wrap .nggv-field-date *:after{box-sizing:border-box}:host .field-wrap .nggv-field-date:hover{border-color:#41b0ee}:host .field-wrap .nggv-field-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-field-date:active{border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]{background-color:#f8f8f8;border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]::placeholder{color:#cecece}:host .field-wrap .nggv-field-date:not(:focus){border-right:none;padding-right:0}:host .field-wrap .nggv-field-date:focus{padding-right:0}:host.small .gds-field-label{font-size:.875rem;line-height:1rem}:host.small label+.field-wrap{margin-top:.25rem}:host.small .field-wrap{height:calc(2rem + 2px);min-height:calc(2rem + 2px)}:host.small .field-wrap .nggv-field-date{padding:.38rem .5rem;line-height:1rem;min-height:2rem;font-size:.875rem}:host.small .field-wrap .nggv-button-date{min-height:2rem;min-width:2rem;width:2rem;height:2rem;padding:0}\n"] }]
|
|
161
171
|
}], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
|
|
162
172
|
type: Self
|
|
163
173
|
}, {
|
|
@@ -175,6 +185,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
175
185
|
args: ['attr.data-thook']
|
|
176
186
|
}, {
|
|
177
187
|
type: Input
|
|
188
|
+
}], isSmall: [{
|
|
189
|
+
type: HostBinding,
|
|
190
|
+
args: ['class.small']
|
|
191
|
+
}], isLarge: [{
|
|
192
|
+
type: HostBinding,
|
|
193
|
+
args: ['class.large']
|
|
178
194
|
}], type: [{
|
|
179
195
|
type: Input
|
|
180
196
|
}], readonly: [{
|
|
@@ -195,8 +211,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
195
211
|
type: Input
|
|
196
212
|
}], closeCalendarOnEscape: [{
|
|
197
213
|
type: Input
|
|
214
|
+
}], size: [{
|
|
215
|
+
type: Input
|
|
198
216
|
}], keyListener: [{
|
|
199
217
|
type: HostListener,
|
|
200
218
|
args: ['keydown', ['$event']]
|
|
201
219
|
}] } });
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL2NvbXBvbmVudHMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RhdGVwaWNrZXIvY29tcG9uZW50cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTywwQkFBMEIsQ0FBQTtBQUVqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDekMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxFQUNMLGVBQWUsRUFFZixnQkFBZ0IsR0FDakIsTUFBTSxvQkFBb0IsQ0FBQTtBQUMzQixPQUFPLEVBQUUsU0FBUyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXJELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHlFQUF5RSxDQUFBO0FBSTNILE9BQU8sd0RBQXdELENBQUE7QUFDL0QsT0FBTyxvRUFBb0UsQ0FBQTs7Ozs7Ozs7QUFFM0U7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFNSCxNQUFNLE9BQU8sa0JBQ1gsU0FBUSxpQ0FBaUM7SUFpRHpDLFlBQzZCLFNBQW9C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LE9BQU07Z0JBQy9CLCtEQUErRDtnQkFDL0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQzdCLENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDOytHQTNKVSxrQkFBa0IsdUVBcURuQixlQUFlO21HQXJEZCxrQkFBa0IsOG5CQ3BEL0IsMjBLQTJMQTs7NEZEdklhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxzQ0FBc0M7OzBCQXVEN0MsSUFBSTs7MEJBQUksUUFBUTs7MEJBQ2hCLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsZUFBZTtpSUFoRHpCLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBR1EsS0FBSztzQkFBN0MsV0FBVzt1QkFBQyxpQkFBaUI7O3NCQUFHLEtBQUs7Z0JBRzdCLElBQUk7c0JBQVosS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0csZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBNEVOLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4uLy4uL2RhdGVwaWNrZXIuZ2xvYmFscydcblxuaW1wb3J0IHsgV2Vla0RheSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFNlbGYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHtcbiAgVFJBTlNMT0NPX1NDT1BFLFxuICBUcmFuc2xvY29TY29wZSxcbiAgVHJhbnNsb2NvU2VydmljZSxcbn0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJ1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IERhdGVDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RhdGUtY29udHJvbC12YWx1ZS1hY2Nlc3Nvci9kYXRlLWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IuY29tcG9uZW50J1xuXG5pbXBvcnQgdHlwZSB7IENhbGVuZGFyVHlwZSB9IGZyb20gJy4uLy4uL2RhdGVwaWNrZXIubW9kZWxzJ1xuXG5pbXBvcnQgJ0BzZWJncm91cC9ncmVlbi1jb3JlL2NvbXBvbmVudHMvaWNvbi9pY29ucy9jYWxlbmRhci5qcydcbmltcG9ydCAnQHNlYmdyb3VwL2dyZWVuLWNvcmUvY29tcG9uZW50cy9pY29uL2ljb25zL3RyaWFuZ2xlLWV4Y2xhbWF0aW9uLmpzJ1xuXG4vKipcbiAqIERhdGUgcGlja2VycyBzaW1wbGlmeSB0aGUgdGFzayBvZiBzZWxlY3RpbmcgYSBkYXRlIGluIGEgdmlzdWFsIHJlcHJlc2VudGF0aW9uIG9mIGEgY2FsZW5kYXIuXG4gKiBodHRwczovL2Rlc2lnbmxpYnJhcnkuc2ViZ3JvdXAuY29tL2NvbXBvbmVudHMvY29tcG9uZW50LWRhdGVwaWNrZXJcbiAqXG4gKiBTZWxlY3RvcjogYG5nZ3YtZGF0ZWlucHV0YFxuICpcbiAqIFdoZW4gZm9jdXNpbmcgYW4gZGF0ZSBlbGVtZW50LCB0aGUgY2FsZW5kYXIgYWxsb3dzIGZvciBuYXZpZ2F0aW9uIHVzaW5nIGJvdGggdGFiIGFuZCBhcnJvdyBrZXlzLlxuICogUHJlc3NpbmcgJ2VzYycgd2lsbCBjbG9zZSB0aGUgY2FsZW5kYXIuXG4gKlxuICogUmVxdWlyZXMgVHJhbnNsb2NvTG9jYWxlLCBidXQgaW4gdHVybiBhbGxvd3MgZm9yIHNldHRpbmcgbG9jYWxlIGR5bmFtaWNhbGx5OlxuICogaHR0cHM6Ly9qc3ZlcnNlLmdpdGh1Yi5pby90cmFuc2xvY28vZG9jcy9wbHVnaW5zL2xvY2FsZS8jbWFudWFsbHktc2V0dGluZy1sb2NhbGVcbiAqXG4gKiBUbyBjb25maWd1cmUgVHJhbnNsb2NvTG9jYWxlLCBmb2xsb3cgdGhpcyBndWlkZTpcbiAqIGh0dHBzOi8vanN2ZXJzZS5naXRodWIuaW8vdHJhbnNsb2NvL2RvY3MvcGx1Z2lucy9sb2NhbGUvI3NldHVwXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nZ3YtZGF0ZWlucHV0LG5nZ3YtaW5wdXRbdHlwZT1kYXRlXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlSW5wdXRDb21wb25lbnRcbiAgZXh0ZW5kcyBEYXRlQ29udHJvbFZhbHVlQWNjZXNzb3JDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3lcbntcbiAgQFZpZXdDaGlsZCgndG9nZ2xlQ2FsZW5kYXJCdXR0b24nKVxuICB0b2dnbGVCdXR0b25SZWY/OiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PlxuICAvKiogU3BlY2lhbCBwcm9wZXJ0eSB1c2VkIGZvciBzZWxlY3RpbmcgRE9NIGVsZW1lbnRzIGR1cmluZyBhdXRvbWF0ZWQgVUkgdGVzdGluZy4gKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtdGhvb2snKSBASW5wdXQoKSB0aG9vazogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9XG4gICAgJ2RhdGUtaW5wdXQnXG4gIC8qKiBTZXQgdHlwZSBvZiBjYWxlbmRhcjogZWl0aGVyICdub3JtYWwnIG9yICdleHBhbmRlZCcuIERlZmF1bHQgaXMgJ25vcm1hbCcuICovXG4gIEBJbnB1dCgpIHR5cGU6IENhbGVuZGFyVHlwZSA9ICdub3JtYWwnXG4gIC8qKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIHZhbHVlIHdpbGwgbm90IGJlIGVkaXRhYmxlLiAqL1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBEYXRlcyBvciBwYXJzYWJsZSBzdHJpbmdzIHRoYXQgY29ycmVzcG9uZHMgd2l0aCBkYXRlcyB0aGF0IHNob3VsZCBub3QgYmUgc2VsZWN0YWJsZSBpbiB0aGUgY2FsZW5kYXIuXG4gICAqIEkuZS4gYmFuayBob2xpZGF5cy5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVEYXRlczogKHN0cmluZyB8IERhdGUpW10gPSBbXVxuICAvKipcbiAgICogQW4gYXJyYXkgb2Ygd2Vla2RheXMgdGhhdCBzaG91bGQgbm90IGJlIHNlbGVjdGFibGUgaW4gdGhlIGNhbGVuZGFyLlxuICAgKiBDYW4gYmUgdXNlZCB0b2dldGhlciB3aXRoIG9yIGluc3RlYWQgb2YgQElucHV0KCkgZGlzYWJsZURhdGVzLlxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZVdlZWtEYXlzOiBXZWVrRGF5W10gPSBbXVxuICAvKiogTWluaW51bSBudW1iZXIgb2Ygcm93cyBzaG93biBpbiB0aGUgY2FsZW5kYXIuICovXG4gIEBJbnB1dCgpIG1pblJvd3MgPSA1XG4gIC8qKiBTZXRzIGEgZnJvbS1kYXRlIG9mIHdoaWNoIGFsbCBkYXRlcyBiZWZvcmUgd2lsbCBiZSBpbnZhbGlkLiAqL1xuICBASW5wdXQoKSBmaXJzdFZhbGlkOiBEYXRlIHwgdW5kZWZpbmVkXG4gIC8qKiBTZXRzIGEgdG8tZGF0ZSBvZiB3aGljaCBhbGwgZGF0ZXMgYWZ0ZXIgd2lsbCBiZSBpbnZhbGlkLiAqL1xuICBASW5wdXQoKSBsYXN0VmFsaWQ6IERhdGUgfCB1bmRlZmluZWRcbiAgLyoqIFNldHMgYSBjbG9zaW5nIHRpbWUgZm9yIHRvZGF5IHRvIHRvZ2dsZSBhdmFpbGFiaWxpdHkgZm9yIHRvZGF5J3MgZGF0ZS4gKi9cbiAgQElucHV0KCkgY2xvc2luZ1RpbWU6IERhdGUgfCB1bmRlZmluZWRcbiAgLyoqIFNldHMgZmlyc3QgZGF5IG9mIHdlZWsgaW4gY2FsZW5kYXIuIERlZmF1bHRzIHRvIE1vbmRheS4gKi9cbiAgQElucHV0KCkgZmlyc3REYXlPZldlZWs6IFdlZWtEYXkgPSBXZWVrRGF5Lk1vbmRheVxuICAvKiogSWYgc2V0IHRvIHRydWUsIGl0IHdpbGwgYWxsb3cgdG8gY2xvc2UgdGhlIGNhbGVuZGFyIG9uIGVzY2FwZSBidXR0b24gY2xpY2suICovXG4gIEBJbnB1dCgpIGNsb3NlQ2FsZW5kYXJPbkVzY2FwZSA9IHRydWVcblxuICAvKiogQGludGVybmFsICovXG4gIC8vIGNhbGVuZGFySWNvbjogSWNvbkRlZmluaXRpb24gPSBmYUNhbGVuZGFyRGF5cztcblxuICAvKiogQGludGVybmFsICovXG4gIHNob3duID0gZmFsc2VcblxuICAvKiogQGludGVybmFsICovXG4gIHNob3dJbnB1dCQgPSB0aGlzLnNob3dJbnB1dERhdGVTcmMuYXNPYnNlcnZhYmxlKCkucGlwZShzdGFydFdpdGgodHJ1ZSkpXG5cbiAgLyoqIE9ic2VydmFibGUgZm9yIGxpc3RlbmluZyB0byBjbGlja3Mgb3V0c2lkZSBvZiB0aGUgZGF0ZXBpY2tlci4gKi9cbiAgcHJpdmF0ZSBkb2N1bWVudENsaWNrJDogT2JzZXJ2YWJsZTxFdmVudD4gPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdjbGljaycpXG4gIC8qKiBTdWJqZWN0IHVzZWQgZm9yIHVuc3Vic2NyaWJlIHBhdHRlcm4gb24gYWJvdmUgb2JzZXJ2YWJsZS4gKi9cbiAgcHJpdmF0ZSBkYXRlcGlja2VyQ2xvc2VkJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoVFJBTlNMT0NPX1NDT1BFKVxuICAgIHByb3RlY3RlZCB0cmFuc2xvY29TY29wZTogVHJhbnNsb2NvU2NvcGUsXG4gICAgcHJvdGVjdGVkIHRyYW5zbG9jbzogVHJhbnNsb2NvU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7XG4gICAgc3VwZXIobmdDb250cm9sLCB0cmFuc2xvY29TY29wZSwgZWxlbWVudFJlZiwgY2RyLCB0cmFuc2xvY28pXG4gICAgLy8gdGhpcy5zaG93SW5wdXQkID0gdGhpcy5zaG93SW5wdXREYXRlU3JjLmFzT2JzZXJ2YWJsZSgpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVwaWNrZXJDbG9zZWQkLm5leHQodHJ1ZSlcbiAgICB0aGlzLmRhdGVwaWNrZXJDbG9zZWQkLmNvbXBsZXRlKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQ2FsbGVkIGZyb20gdGhlIGRhdGVwaWNrZXItY29tcG9uZW50IHdoZW4gYSBkYXRlIGJ1dHRvbiBpcyBjbGlja2VkIGluIHRoZSBjYWxlbmRhci5cbiAgICpcbiAgICogQHBhcmFtIGRhdGUgZGF0ZSBvYmplY3QgZW1pdHRlZCB3aGVuIHNlbGVjdGluZyBhIGRhdGUgaW4gdGhlIGRhdGVwaWNrZXIuXG4gICAqL1xuICBvbkRhdGVDaGFuZ2UoZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIC8vIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3Igd2lsbCBlbnN1cmUgY29ycmVjdCBmb3JtYXR0aW5nIG9mIHN0YXRlXG4gICAgdGhpcy5zdGF0ZSA9IERhdGVDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudC5wYXJzZURhdGVMaWtlKGRhdGUpXG4gICAgLy8gZW1pdCBzdGF0ZVxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5zdGF0ZSlcbiAgICAvLyBjbG9zZSBkYXRlcGlja2VyIGFuZCBtb3ZlIGZvY3VzIHRvIGRhdGVwaWNrZXIgYnV0dG9uXG4gICAgdGhpcy5zZXRTaG93bihmYWxzZSlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudG9nZ2xlQnV0dG9uUmVmPy5uYXRpdmVFbGVtZW50LmZvY3VzKCksIDEpXG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIENhbGxlZCB3aGVuIGVudGVyaW5nIGRhdGUgbWFudWFsbHkgaW4gaW5wdXQgZmllbGQuXG4gICAqL1xuICBvblZhbHVlQ2hhbmdlKGV2ZW50VGFyZ2V0OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBXaWxsIGJlIGluIHRoZSBmb3JtYXQgc2VsZWN0ZWQgaW4gaW5wdXRNYXNrXG4gICAgY29uc3QgdmFsdWUgPSBgJHtldmVudFRhcmdldC5pbnB1dG1hc2sudW5kb1ZhbHVlfWAgPz8gJydcblxuICAgIC8vIFVzZSBwYXJzZXJmdW5jdGlvbiBmcm9tIGlucHV0TWFzayB0byBwYXJzZSB0byBhIGRhdGUgb2JqZWN0IHNpbmNlIHZhbHVlIGNhbiBiZSBpbiBtdWx0aXBsZSBmb3JtYXRzXG4gICAgLy8gVGhlbiBvbnRyb2wgdmFsdWUgYWNjZXNzb3Igd2lsbCBlbnN1cmUgY29ycmVjdCBmb3JtYXR0aW5nIG9mIHN0YXRlXG4gICAgY29uc3QgcGFyc2VkRGF0ZSA9IERhdGVDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudC5wYXJzZURhdGVMaWtlKFxuICAgICAgdGhpcy5kYXRlSW5wdXRNYXNrLnBhcnNlciEodmFsdWUpLFxuICAgIClcblxuICAgIHRoaXMuc3RhdGUgPSBwYXJzZWREYXRlXG5cbiAgICAvLyBlbWl0IHBhcnNlZCBkYXRlXG4gICAgdGhpcy5vbkNoYW5nZShwYXJzZWREYXRlKVxuICAgIHRoaXMub25Ub3VjaGVkKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogTGlzdGVuIHRvICdlc2MnIGtleXByZXNzIGFuZCBjbG9zZXMgZGF0ZXBpY2tlciBpZiBvcGVuLlxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGtleUxpc3RlbmVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xvc2VDYWxlbmRhck9uRXNjYXBlICYmIGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpXG4gICAgICB0aGlzLnNldFNob3duKGZhbHNlKVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICB0b2dnbGVEYXRlcGlja2VyKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0U2hvd24oIXRoaXMuc2hvd24pXG4gIH1cblxuICAvKiogVG8gZXh0ZXJuYWxseSB0cmlnZ2VyIHRoZSBkYXRlcGlja2VyIHRvIGNsb3NlLiAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFNob3duKGZhbHNlKVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc2hvd24gc3RhdGUgb2YgdGhlIGRhdGVwaWNrZXIgcG9wdXAuIElmIHRydWUgdGhlIHBvcHVwIHdpbGwgYmUgdmlzaWJsZS5cbiAgICogSWYgdGhlIHN0YXRlIGlzIHNldCB0byBmYWxzZSwgY2FsbCBvblRvdWNoZWQgdG8gbm90aWZ5IGFueSBzdGF0ZSBsaXN0ZW5lcnNcbiAgICogQHBhcmFtIHN0YXRlIHRoZSBzaG93biBzdGF0ZSB3aGljaCB0byBzZXQuXG4gICAqL1xuICBwcml2YXRlIHNldFNob3duKHN0YXRlID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuc2hvd24gPSBzdGF0ZVxuICAgIGlmICghdGhpcy5zaG93bikge1xuICAgICAgLy8gaWYgc2hvd24gaXMgc2V0IHRvIGZhbHNlLCBzdG9wIGxpc3RlbmluZyB0byBjbGlja3NcbiAgICAgIHRoaXMuZGF0ZXBpY2tlckNsb3NlZCQubmV4dCh0cnVlKVxuICAgICAgcmV0dXJuIHRoaXMub25Ub3VjaGVkKClcbiAgICB9XG4gICAgLy8gaWYgc2hvd24gaXMgc2V0IHRvIHRydWUsIHJlc2V0IHVuc3Vic2NyaWJlIHZhcmlhYmxlXG4gICAgdGhpcy5kYXRlcGlja2VyQ2xvc2VkJC5uZXh0KGZhbHNlKVxuICAgIC8vIHN0YXJ0IGxpc3RlbmluZyBmb3IgY2xpY2tzIG91dHNpZGUgdGhlIGNvbXBvbmVudFxuICAgIHRoaXMuZG9jdW1lbnRDbGljayQucGlwZSh0YWtlVW50aWwodGhpcy5kYXRlcGlja2VyQ2xvc2VkJCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIC8vIGNsaWNraW5nIG9uIGEgZ3JheSBkYXRlIGNhdXNlcyB0aGUgZGF0ZXBpY2tlciB0byByZWxvYWQgdGhlIGNhbGVuZGFyIGRhdGVzLFxuICAgICAgICAvLyBhbmQgdGhlIGJ1dHRvbiBlbGVtZW50IGNsaWNrZWQgd2lsbCBubyBsb25nZXIgYmUgY29uc2lkZXJlZCBhcyBhIGNoaWxkIG9mIHRoZSBkYXRlcGlja2VyLlxuICAgICAgICAvLyBidXQgdGhlIGV2ZW50IHRhcmdldCBwYXRoIHdpbGwgc3RpbGwgY29udGFpbiB0aGUgcGFyZW50IGVsZW1lbnRcbiAgICAgICAgLy8gaWYgdGFyZ2V0IGhhcyBkYXRlcGlja2VyIHBhcmVudCwga2VlcCBsaXN0ZW5pbmdcbiAgICAgICAgY29uc3QgZXZlbnRQYXRoID0gZXZlbnQuY29tcG9zZWRQYXRoKClcbiAgICAgICAgY29uc3QgaGFzRGF0ZXBpY2tlclBhcmVudCA9ICEhZXZlbnRQYXRoLmZpbmQoXG4gICAgICAgICAgKGUpID0+IGUgPT09IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICApXG4gICAgICAgIGlmIChoYXNEYXRlcGlja2VyUGFyZW50KSByZXR1cm5cbiAgICAgICAgLy8gZWxzZSB0aGUgY2xpY2sgaXMgY29uc2lkZXJlZCB0byBiZSBvdXRzaWRlLCBjbG9zZSBkYXRlcGlja2VyXG4gICAgICAgIHJldHVybiB0aGlzLnNldFNob3duKGZhbHNlKVxuICAgICAgfSxcbiAgICB9KVxuICB9XG59XG4iLCI8IS0tIExBQkVMIC0tPlxuPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHQ7IHJlYWQ6IHNjb3BlXCI+XG4gIDxsYWJlbFxuICAgIFtpZF09XCJpZCArICctbGFiZWwnXCJcbiAgICBjbGFzcz1cImdkcy1maWVsZC1sYWJlbCBoaWRlLWlmLWVtcHR5XCJcbiAgICBbYXR0ci5mb3JdPVwiaWQgKyAnLWlucHV0J1wiXG4gID5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibGFiZWxDb250ZW50VHBsIHx8IGJhc2ljTGFiZWxDb250ZW50VHBsXCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2Jhc2ljTGFiZWxDb250ZW50VHBsPlxuICAgICAgPCEtLSB0byB0cmlnZ2VyIGNzczplbXB0eSBpZiBubyBsYWJlbCB3YXMgYWRkZWQgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGFiZWxcIj5cbiAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cIm9wdGlvbmFsID09PSB0cnVlIHx8IChyZXF1aXJlZCAhPT0gdHJ1ZSAmJiBvcHRpb25hbCAhPT0gZmFsc2UpXCJcbiAgICAgICAgICBjbGFzcz1cImdkcy1maWVsZC1sYWJlbC0tb3B0aW9uYWxcIlxuICAgICAgICA+XG4gICAgICAgICAgKHt7IHQoJ2xhYmVsLm9wdGlvbmFsJykgfX0pXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbGFiZWw+XG5cbiAgPCEtLSBERVNDUklQVElPTiAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZ2RzLWZpZWxkLWxhYmVsLS1zbWFsbCBkZXNjcmlwdGlvbiBoaWRlLWlmLWVtcHR5XCJcbiAgICAqbmdJZj1cImRlc2NyaXB0aW9uXCJcbiAgPlxuICAgIHt7IGRlc2NyaXB0aW9uIH19XG4gIDwvZGl2PlxuXG4gIDwhLS0gTE9DS0VEIElOUFVUIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9ja2VkXCI+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICBsb2NrZWRUcGwgfHwgZGVmYXVsdExvY2tlZFRwbDtcbiAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHN0YXRlIH1cbiAgICAgIFwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TG9ja2VkVHBsPlxuICAgICAgPGRpdlxuICAgICAgICBbaWRdPVwiaWQgKyAnLWlucHV0J1wiXG4gICAgICAgIGNsYXNzPVwibmdndi1maWVsZC0tbG9ja2VkXCJcbiAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgICAgW2F0dHIudmFsdWVdPVwic3RhdGVcIlxuICAgICAgICBbYXR0ci5yb2xlXT1cInJvbGVcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFzdGF0ZVwiIGNsYXNzPVwidW5zZXQtc3RhdGVcIj4tPC9zcGFuPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RhdGVcIj5cbiAgICAgICAgICB7eyBzdGF0ZSB8IG5nZ3ZJbnB1dE1hc2tGb3JtYXQ6IGRhdGVJbnB1dE1hc2sgfX1cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIElOUFVUIFdSQVBQRVIgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9ja2VkXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmaWVsZC13cmFwXCJcbiAgICAgIFtjbGFzcy5uZ2d2LWZpZWxkLS1lcnJvcl09XCJpbnZhbGlkXCJcbiAgICAgICpuZ0lmPVwic2hvd0lucHV0JCB8IGFzeW5jXCJcbiAgICA+XG4gICAgICA8IS0tIElOUFVUIEZJRUxEIC0tPlxuICAgICAgPGlucHV0XG4gICAgICAgICNpbnB1dFxuICAgICAgICBbaWRdPVwiaWQgKyAnLWlucHV0J1wiXG4gICAgICAgIGNsYXNzPVwibmdndi1maWVsZC1kYXRlXCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgICBbYXR0ci5yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWFkT25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFthdHRyLnJvbGVdPVwicm9sZVwiXG4gICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkZXNjcmlwdGlvblwiXG4gICAgICAgIFtuZ2d2SW5wdXRNYXNrXT1cImRhdGVJbnB1dE1hc2tcIlxuICAgICAgICBbdmFsdWVdPVwic3RhdGVcIlxuICAgICAgICB0aXRsZT1cIlwiXG4gICAgICAgIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQudGFyZ2V0KVwiXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAvPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJ0b2dnbGUgY2FsZW5kYXJcIlxuICAgICAgICAjdG9nZ2xlQ2FsZW5kYXJCdXR0b25cbiAgICAgICAgY2xhc3M9XCJuZ2d2LWJ1dHRvbi1kYXRlXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGRhdGEtdGhvb2s9XCJ0b2dnbGUtY2FsZW5kYXItYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURhdGVwaWNrZXIoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICA+XG4gICAgICAgIDxnZHMtaWNvbi1jYWxlbmRhclxuICAgICAgICAgICpuZ2dDb3JlRWxlbWVudFxuICAgICAgICAgIHdpZHRoPVwiMjBcIlxuICAgICAgICAgIGhlaWdodD1cIjIwXCJcbiAgICAgICAgPjwvZ2RzLWljb24tY2FsZW5kYXI+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gREFURVBJQ0tFUiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibmdndi1kYXRlcGlja2VyXCIgKm5nSWY9XCJzaG93blwiPlxuICAgICAgPG5nZ3YtZGF0ZXBpY2tlclxuICAgICAgICAjaW5wdXRcbiAgICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAgIFtkaXNhYmxlRGF0ZXNdPVwiZGlzYWJsZURhdGVzXCJcbiAgICAgICAgW2Rpc2FibGVXZWVrRGF5c109XCJkaXNhYmxlV2Vla0RheXNcIlxuICAgICAgICBbc2VsZWN0ZWRdPVwic3RhdGVcIlxuICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICAgIFttaW5DYWxlbmRhclJvd3NdPVwibWluUm93c1wiXG4gICAgICAgIFtmaXJzdERheU9mV2Vla109XCJmaXJzdERheU9mV2Vla1wiXG4gICAgICAgIFtmaXJzdFZhbGlkXT1cImZpcnN0VmFsaWRcIlxuICAgICAgICBbbGFzdFZhbGlkXT1cImxhc3RWYWxpZFwiXG4gICAgICAgIFtjbG9zaW5nVGltZV09XCJjbG9zaW5nVGltZVwiXG4gICAgICAgIChuZ3ZEYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZ2d2LWRhdGVwaWNrZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEVSUk9SUyAtLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIlxuICAgICAgICBpbnZhbGlkICYmXG4gICAgICAgIChlcnJvciB8fCBuZ0NvbnRyb2w/LmludmFsaWQpICYmXG4gICAgICAgICghZXJyb3JMaXN0IHx8ICFlcnJvckxpc3QubGVuZ3RoKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJnZHMtZmllbGQtbm90aWNlIGdkcy1maWVsZC1ub3RpY2UtLWVycm9yXCJcbiAgICAgICAgW2F0dHIuZm9yXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW0tLWljb25cIj5cbiAgICAgICAgICAgIDxnZHMtaWNvbi10cmlhbmdsZS1leGNsYW1hdGlvblxuICAgICAgICAgICAgICAqbmdnQ29yZUVsZW1lbnRcbiAgICAgICAgICAgICAgW3NvbGlkXT1cInRydWVcIlxuICAgICAgICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICAgICAgPjwvZ2RzLWljb24tdHJpYW5nbGUtZXhjbGFtYXRpb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cImVycm9yOyBlbHNlIGVycm9yc1JlZlwiXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLWl0ZW0tLXRleHRcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctZXJyb3JsYWJlbCdcIlxuICAgICAgICAgICAgPnt7IGVycm9yIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZXJyb3JzUmVmPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgKm5nSWY9XCJmaXJzdEVycm9yIGFzIGVycm9yXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1pdGVtLS10ZXh0XCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctZXJyb3JsYWJlbCdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyB0KCdlcnJvci5maWVsZCcgKyBlcnJvcj8uY29kZSwgZXJyb3I/LnBhcmFtcykgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JMaXN0ID8/IFtdXCI+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJnZHMtZmllbGQtbm90aWNlIGdkcy1maWVsZC1ub3RpY2UtLWVycm9yXCJcbiAgICAgICAgW2F0dHIuZm9yXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgICAqbmdJZj1cImludmFsaWQgJiYgZXJyb3JcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW0tLWljb25cIj5cbiAgICAgICAgICAgIDxnZHMtaWNvbi10cmlhbmdsZS1leGNsYW1hdGlvblxuICAgICAgICAgICAgICAqbmdnQ29yZUVsZW1lbnRcbiAgICAgICAgICAgICAgW3NvbGlkXT1cInRydWVcIlxuICAgICAgICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICAgICAgPjwvZ2RzLWljb24tdHJpYW5nbGUtZXhjbGFtYXRpb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLWl0ZW0tLXRleHRcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctZXJyb3JsYWJlbCdcIlxuICAgICAgICAgICAgPnt7IGVycm9yIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL2NvbXBvbmVudHMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RhdGVwaWNrZXIvY29tcG9uZW50cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTywwQkFBMEIsQ0FBQTtBQUVqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDekMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxFQUNMLGVBQWUsRUFFZixnQkFBZ0IsR0FDakIsTUFBTSxvQkFBb0IsQ0FBQTtBQUMzQixPQUFPLEVBQUUsU0FBUyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXJELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHlFQUF5RSxDQUFBO0FBSTNILE9BQU8sd0RBQXdELENBQUE7QUFDL0QsT0FBTyxvRUFBb0UsQ0FBQTs7Ozs7Ozs7QUFFM0U7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFNSCxNQUFNLE9BQU8sa0JBQ1gsU0FBUSxpQ0FBaUM7SUFTekMsSUFBZ0MsT0FBTztR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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4uLy4uL2RhdGVwaWNrZXIuZ2xvYmFscydcblxuaW1wb3J0IHsgV2Vla0RheSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFNlbGYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHtcbiAgVFJBTlNMT0NPX1NDT1BFLFxuICBUcmFuc2xvY29TY29wZSxcbiAgVHJhbnNsb2NvU2VydmljZSxcbn0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJ1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IERhdGVDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RhdGUtY29udHJvbC12YWx1ZS1hY2Nlc3Nvci9kYXRlLWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IuY29tcG9uZW50J1xuXG5pbXBvcnQgdHlwZSB7IENhbGVuZGFyVHlwZSB9IGZyb20gJy4uLy4uL2RhdGVwaWNrZXIubW9kZWxzJ1xuXG5pbXBvcnQgJ0BzZWJncm91cC9ncmVlbi1jb3JlL2NvbXBvbmVudHMvaWNvbi9pY29ucy9jYWxlbmRhci5qcydcbmltcG9ydCAnQHNlYmdyb3VwL2dyZWVuLWNvcmUvY29tcG9uZW50cy9pY29uL2ljb25zL3RyaWFuZ2xlLWV4Y2xhbWF0aW9uLmpzJ1xuXG4vKipcbiAqIERhdGUgcGlja2VycyBzaW1wbGlmeSB0aGUgdGFzayBvZiBzZWxlY3RpbmcgYSBkYXRlIGluIGEgdmlzdWFsIHJlcHJlc2VudGF0aW9uIG9mIGEgY2FsZW5kYXIuXG4gKiBodHRwczovL2Rlc2lnbmxpYnJhcnkuc2ViZ3JvdXAuY29tL2NvbXBvbmVudHMvY29tcG9uZW50LWRhdGVwaWNrZXJcbiAqXG4gKiBTZWxlY3RvcjogYG5nZ3YtZGF0ZWlucHV0YFxuICpcbiAqIFdoZW4gZm9jdXNpbmcgYW4gZGF0ZSBlbGVtZW50LCB0aGUgY2FsZW5kYXIgYWxsb3dzIGZvciBuYXZpZ2F0aW9uIHVzaW5nIGJvdGggdGFiIGFuZCBhcnJvdyBrZXlzLlxuICogUHJlc3NpbmcgJ2VzYycgd2lsbCBjbG9zZSB0aGUgY2FsZW5kYXIuXG4gKlxuICogUmVxdWlyZXMgVHJhbnNsb2NvTG9jYWxlLCBidXQgaW4gdHVybiBhbGxvd3MgZm9yIHNldHRpbmcgbG9jYWxlIGR5bmFtaWNhbGx5OlxuICogaHR0cHM6Ly9qc3ZlcnNlLmdpdGh1Yi5pby90cmFuc2xvY28vZG9jcy9wbHVnaW5zL2xvY2FsZS8jbWFudWFsbHktc2V0dGluZy1sb2NhbGVcbiAqXG4gKiBUbyBjb25maWd1cmUgVHJhbnNsb2NvTG9jYWxlLCBmb2xsb3cgdGhpcyBndWlkZTpcbiAqIGh0dHBzOi8vanN2ZXJzZS5naXRodWIuaW8vdHJhbnNsb2NvL2RvY3MvcGx1Z2lucy9sb2NhbGUvI3NldHVwXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nZ3YtZGF0ZWlucHV0LG5nZ3YtaW5wdXRbdHlwZT1kYXRlXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlSW5wdXRDb21wb25lbnRcbiAgZXh0ZW5kcyBEYXRlQ29udHJvbFZhbHVlQWNjZXNzb3JDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3lcbntcbiAgQFZpZXdDaGlsZCgndG9nZ2xlQ2FsZW5kYXJCdXR0b24nKVxuICB0b2dnbGVCdXR0b25SZWY/OiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PlxuICAvKiogU3BlY2lhbCBwcm9wZXJ0eSB1c2VkIGZvciBzZWxlY3RpbmcgRE9NIGVsZW1lbnRzIGR1cmluZyBhdXRvbWF0ZWQgVUkgdGVzdGluZy4gKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtdGhvb2snKSBASW5wdXQoKSB0aG9vazogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9XG4gICAgJ2RhdGUtaW5wdXQnXG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zbWFsbCcpIGdldCBpc1NtYWxsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNpemUgPT09ICdzbWFsbCdcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MubGFyZ2UnKSBnZXQgaXNMYXJnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaXplID09PSAnbGFyZ2UnXG4gIH1cblxuICAvKiogU2V0IHR5cGUgb2YgY2FsZW5kYXI6IGVpdGhlciAnbm9ybWFsJyBvciAnZXhwYW5kZWQnLiBEZWZhdWx0IGlzICdub3JtYWwnLiAqL1xuICBASW5wdXQoKSB0eXBlOiBDYWxlbmRhclR5cGUgPSAnbm9ybWFsJ1xuICAvKiogSWYgc2V0IHRvIHRydWUsIHRoZSB2YWx1ZSB3aWxsIG5vdCBiZSBlZGl0YWJsZS4gKi9cbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZVxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgRGF0ZXMgb3IgcGFyc2FibGUgc3RyaW5ncyB0aGF0IGNvcnJlc3BvbmRzIHdpdGggZGF0ZXMgdGhhdCBzaG91bGQgbm90IGJlIHNlbGVjdGFibGUgaW4gdGhlIGNhbGVuZGFyLlxuICAgKiBJLmUuIGJhbmsgaG9saWRheXMuXG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlRGF0ZXM6IChzdHJpbmcgfCBEYXRlKVtdID0gW11cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIHdlZWtkYXlzIHRoYXQgc2hvdWxkIG5vdCBiZSBzZWxlY3RhYmxlIGluIHRoZSBjYWxlbmRhci5cbiAgICogQ2FuIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBvciBpbnN0ZWFkIG9mIEBJbnB1dCgpIGRpc2FibGVEYXRlcy5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVXZWVrRGF5czogV2Vla0RheVtdID0gW11cbiAgLyoqIE1pbmludW0gbnVtYmVyIG9mIHJvd3Mgc2hvd24gaW4gdGhlIGNhbGVuZGFyLiAqL1xuICBASW5wdXQoKSBtaW5Sb3dzID0gNVxuICAvKiogU2V0cyBhIGZyb20tZGF0ZSBvZiB3aGljaCBhbGwgZGF0ZXMgYmVmb3JlIHdpbGwgYmUgaW52YWxpZC4gKi9cbiAgQElucHV0KCkgZmlyc3RWYWxpZDogRGF0ZSB8IHVuZGVmaW5lZFxuICAvKiogU2V0cyBhIHRvLWRhdGUgb2Ygd2hpY2ggYWxsIGRhdGVzIGFmdGVyIHdpbGwgYmUgaW52YWxpZC4gKi9cbiAgQElucHV0KCkgbGFzdFZhbGlkOiBEYXRlIHwgdW5kZWZpbmVkXG4gIC8qKiBTZXRzIGEgY2xvc2luZyB0aW1lIGZvciB0b2RheSB0byB0b2dnbGUgYXZhaWxhYmlsaXR5IGZvciB0b2RheSdzIGRhdGUuICovXG4gIEBJbnB1dCgpIGNsb3NpbmdUaW1lOiBEYXRlIHwgdW5kZWZpbmVkXG4gIC8qKiBTZXRzIGZpcnN0IGRheSBvZiB3ZWVrIGluIGNhbGVuZGFyLiBEZWZhdWx0cyB0byBNb25kYXkuICovXG4gIEBJbnB1dCgpIGZpcnN0RGF5T2ZXZWVrOiBXZWVrRGF5ID0gV2Vla0RheS5Nb25kYXlcbiAgLyoqIElmIHNldCB0byB0cnVlLCBpdCB3aWxsIGFsbG93IHRvIGNsb3NlIHRoZSBjYWxlbmRhciBvbiBlc2NhcGUgYnV0dG9uIGNsaWNrLiAqL1xuICBASW5wdXQoKSBjbG9zZUNhbGVuZGFyT25Fc2NhcGUgPSB0cnVlXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRpc3BsYXllZCBzaXplIG9mIHRoZSBkYXRlIGlucHV0IGZpZWxkLlxuICAgKi9cbiAgQElucHV0KCkgc2l6ZTogJ3NtYWxsJyB8ICdsYXJnZScgPSAnbGFyZ2UnXG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICAvLyBjYWxlbmRhckljb246IEljb25EZWZpbml0aW9uID0gZmFDYWxlbmRhckRheXM7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBzaG93biA9IGZhbHNlXG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBzaG93SW5wdXQkID0gdGhpcy5zaG93SW5wdXREYXRlU3JjLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc3RhcnRXaXRoKHRydWUpKVxuXG4gIC8qKiBPYnNlcnZhYmxlIGZvciBsaXN0ZW5pbmcgdG8gY2xpY2tzIG91dHNpZGUgb2YgdGhlIGRhdGVwaWNrZXIuICovXG4gIHByaXZhdGUgZG9jdW1lbnRDbGljayQ6IE9ic2VydmFibGU8RXZlbnQ+ID0gZnJvbUV2ZW50KGRvY3VtZW50LCAnY2xpY2snKVxuICAvKiogU3ViamVjdCB1c2VkIGZvciB1bnN1YnNjcmliZSBwYXR0ZXJuIG9uIGFib3ZlIG9ic2VydmFibGUuICovXG4gIHByaXZhdGUgZGF0ZXBpY2tlckNsb3NlZCQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KFRSQU5TTE9DT19TQ09QRSlcbiAgICBwcm90ZWN0ZWQgdHJhbnNsb2NvU2NvcGU6IFRyYW5zbG9jb1Njb3BlLFxuICAgIHByb3RlY3RlZCB0cmFuc2xvY286IFRyYW5zbG9jb1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIHN1cGVyKG5nQ29udHJvbCwgdHJhbnNsb2NvU2NvcGUsIGVsZW1lbnRSZWYsIGNkciwgdHJhbnNsb2NvKVxuICAgIC8vIHRoaXMuc2hvd0lucHV0JCA9IHRoaXMuc2hvd0lucHV0RGF0ZVNyYy5hc09ic2VydmFibGUoKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlcGlja2VyQ2xvc2VkJC5uZXh0KHRydWUpXG4gICAgdGhpcy5kYXRlcGlja2VyQ2xvc2VkJC5jb21wbGV0ZSgpXG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIENhbGxlZCBmcm9tIHRoZSBkYXRlcGlja2VyLWNvbXBvbmVudCB3aGVuIGEgZGF0ZSBidXR0b24gaXMgY2xpY2tlZCBpbiB0aGUgY2FsZW5kYXIuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRlIGRhdGUgb2JqZWN0IGVtaXR0ZWQgd2hlbiBzZWxlY3RpbmcgYSBkYXRlIGluIHRoZSBkYXRlcGlja2VyLlxuICAgKi9cbiAgb25EYXRlQ2hhbmdlKGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICAvLyBjb250cm9sIHZhbHVlIGFjY2Vzc29yIHdpbGwgZW5zdXJlIGNvcnJlY3QgZm9ybWF0dGluZyBvZiBzdGF0ZVxuICAgIHRoaXMuc3RhdGUgPSBEYXRlQ29udHJvbFZhbHVlQWNjZXNzb3JDb21wb25lbnQucGFyc2VEYXRlTGlrZShkYXRlKVxuICAgIC8vIGVtaXQgc3RhdGVcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuc3RhdGUpXG4gICAgLy8gY2xvc2UgZGF0ZXBpY2tlciBhbmQgbW92ZSBmb2N1cyB0byBkYXRlcGlja2VyIGJ1dHRvblxuICAgIHRoaXMuc2V0U2hvd24oZmFsc2UpXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRvZ2dsZUJ1dHRvblJlZj8ubmF0aXZlRWxlbWVudC5mb2N1cygpLCAxKVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBDYWxsZWQgd2hlbiBlbnRlcmluZyBkYXRlIG1hbnVhbGx5IGluIGlucHV0IGZpZWxkLlxuICAgKi9cbiAgb25WYWx1ZUNoYW5nZShldmVudFRhcmdldDogYW55KTogdm9pZCB7XG4gICAgLy8gV2lsbCBiZSBpbiB0aGUgZm9ybWF0IHNlbGVjdGVkIGluIGlucHV0TWFza1xuICAgIGNvbnN0IHZhbHVlID0gYCR7ZXZlbnRUYXJnZXQuaW5wdXRtYXNrLnVuZG9WYWx1ZX1gID8/ICcnXG5cbiAgICAvLyBVc2UgcGFyc2VyZnVuY3Rpb24gZnJvbSBpbnB1dE1hc2sgdG8gcGFyc2UgdG8gYSBkYXRlIG9iamVjdCBzaW5jZSB2YWx1ZSBjYW4gYmUgaW4gbXVsdGlwbGUgZm9ybWF0c1xuICAgIC8vIFRoZW4gb250cm9sIHZhbHVlIGFjY2Vzc29yIHdpbGwgZW5zdXJlIGNvcnJlY3QgZm9ybWF0dGluZyBvZiBzdGF0ZVxuICAgIGNvbnN0IHBhcnNlZERhdGUgPSBEYXRlQ29udHJvbFZhbHVlQWNjZXNzb3JDb21wb25lbnQucGFyc2VEYXRlTGlrZShcbiAgICAgIHRoaXMuZGF0ZUlucHV0TWFzay5wYXJzZXIhKHZhbHVlKSxcbiAgICApXG5cbiAgICB0aGlzLnN0YXRlID0gcGFyc2VkRGF0ZVxuXG4gICAgLy8gZW1pdCBwYXJzZWQgZGF0ZVxuICAgIHRoaXMub25DaGFuZ2UocGFyc2VkRGF0ZSlcbiAgICB0aGlzLm9uVG91Y2hlZCgpXG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIExpc3RlbiB0byAnZXNjJyBrZXlwcmVzcyBhbmQgY2xvc2VzIGRhdGVwaWNrZXIgaWYgb3Blbi5cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBrZXlMaXN0ZW5lcihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsb3NlQ2FsZW5kYXJPbkVzY2FwZSAmJiBldmVudC5rZXkgPT09ICdFc2NhcGUnKVxuICAgICAgdGhpcy5zZXRTaG93bihmYWxzZSlcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgdG9nZ2xlRGF0ZXBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLnNldFNob3duKCF0aGlzLnNob3duKVxuICB9XG5cbiAgLyoqIFRvIGV4dGVybmFsbHkgdHJpZ2dlciB0aGUgZGF0ZXBpY2tlciB0byBjbG9zZS4gKi9cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTaG93bihmYWxzZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHNob3duIHN0YXRlIG9mIHRoZSBkYXRlcGlja2VyIHBvcHVwLiBJZiB0cnVlIHRoZSBwb3B1cCB3aWxsIGJlIHZpc2libGUuXG4gICAqIElmIHRoZSBzdGF0ZSBpcyBzZXQgdG8gZmFsc2UsIGNhbGwgb25Ub3VjaGVkIHRvIG5vdGlmeSBhbnkgc3RhdGUgbGlzdGVuZXJzXG4gICAqIEBwYXJhbSBzdGF0ZSB0aGUgc2hvd24gc3RhdGUgd2hpY2ggdG8gc2V0LlxuICAgKi9cbiAgcHJpdmF0ZSBzZXRTaG93bihzdGF0ZSA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLnNob3duID0gc3RhdGVcbiAgICBpZiAoIXRoaXMuc2hvd24pIHtcbiAgICAgIC8vIGlmIHNob3duIGlzIHNldCB0byBmYWxzZSwgc3RvcCBsaXN0ZW5pbmcgdG8gY2xpY2tzXG4gICAgICB0aGlzLmRhdGVwaWNrZXJDbG9zZWQkLm5leHQodHJ1ZSlcbiAgICAgIHJldHVybiB0aGlzLm9uVG91Y2hlZCgpXG4gICAgfVxuICAgIC8vIGlmIHNob3duIGlzIHNldCB0byB0cnVlLCByZXNldCB1bnN1YnNjcmliZSB2YXJpYWJsZVxuICAgIHRoaXMuZGF0ZXBpY2tlckNsb3NlZCQubmV4dChmYWxzZSlcbiAgICAvLyBzdGFydCBsaXN0ZW5pbmcgZm9yIGNsaWNrcyBvdXRzaWRlIHRoZSBjb21wb25lbnRcbiAgICB0aGlzLmRvY3VtZW50Q2xpY2skLnBpcGUodGFrZVVudGlsKHRoaXMuZGF0ZXBpY2tlckNsb3NlZCQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAvLyBjbGlja2luZyBvbiBhIGdyYXkgZGF0ZSBjYXVzZXMgdGhlIGRhdGVwaWNrZXIgdG8gcmVsb2FkIHRoZSBjYWxlbmRhciBkYXRlcyxcbiAgICAgICAgLy8gYW5kIHRoZSBidXR0b24gZWxlbWVudCBjbGlja2VkIHdpbGwgbm8gbG9uZ2VyIGJlIGNvbnNpZGVyZWQgYXMgYSBjaGlsZCBvZiB0aGUgZGF0ZXBpY2tlci5cbiAgICAgICAgLy8gYnV0IHRoZSBldmVudCB0YXJnZXQgcGF0aCB3aWxsIHN0aWxsIGNvbnRhaW4gdGhlIHBhcmVudCBlbGVtZW50XG4gICAgICAgIC8vIGlmIHRhcmdldCBoYXMgZGF0ZXBpY2tlciBwYXJlbnQsIGtlZXAgbGlzdGVuaW5nXG4gICAgICAgIGNvbnN0IGV2ZW50UGF0aCA9IGV2ZW50LmNvbXBvc2VkUGF0aCgpXG4gICAgICAgIGNvbnN0IGhhc0RhdGVwaWNrZXJQYXJlbnQgPSAhIWV2ZW50UGF0aC5maW5kKFxuICAgICAgICAgIChlKSA9PiBlID09PSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgKVxuICAgICAgICBpZiAoaGFzRGF0ZXBpY2tlclBhcmVudCkgcmV0dXJuXG4gICAgICAgIC8vIGVsc2UgdGhlIGNsaWNrIGlzIGNvbnNpZGVyZWQgdG8gYmUgb3V0c2lkZSwgY2xvc2UgZGF0ZXBpY2tlclxuICAgICAgICByZXR1cm4gdGhpcy5zZXRTaG93bihmYWxzZSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxufVxuIiwiPCEtLSBMQUJFTCAtLT5cbjxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0OyByZWFkOiBzY29wZVwiPlxuICA8bGFiZWxcbiAgICBbaWRdPVwiaWQgKyAnLWxhYmVsJ1wiXG4gICAgY2xhc3M9XCJnZHMtZmllbGQtbGFiZWwgaGlkZS1pZi1lbXB0eVwiXG4gICAgW2F0dHIuZm9yXT1cImlkICsgJy1pbnB1dCdcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsQ29udGVudFRwbCB8fCBiYXNpY0xhYmVsQ29udGVudFRwbFwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNiYXNpY0xhYmVsQ29udGVudFRwbD5cbiAgICAgIDwhLS0gdG8gdHJpZ2dlciBjc3M6ZW1wdHkgaWYgbm8gbGFiZWwgd2FzIGFkZGVkIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsXCI+XG4gICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nSWY9XCJvcHRpb25hbCA9PT0gdHJ1ZSB8fCAocmVxdWlyZWQgIT09IHRydWUgJiYgb3B0aW9uYWwgIT09IGZhbHNlKVwiXG4gICAgICAgICAgY2xhc3M9XCJnZHMtZmllbGQtbGFiZWwtLW9wdGlvbmFsXCJcbiAgICAgICAgPlxuICAgICAgICAgICh7eyB0KCdsYWJlbC5vcHRpb25hbCcpIH19KVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2xhYmVsPlxuXG4gIDwhLS0gREVTQ1JJUFRJT04gLS0+XG4gIDxkaXZcbiAgICBjbGFzcz1cImdkcy1maWVsZC1sYWJlbC0tc21hbGwgZGVzY3JpcHRpb24gaGlkZS1pZi1lbXB0eVwiXG4gICAgKm5nSWY9XCJkZXNjcmlwdGlvblwiXG4gID5cbiAgICB7eyBkZXNjcmlwdGlvbiB9fVxuICA8L2Rpdj5cblxuICA8IS0tIExPQ0tFRCBJTlBVVCAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvY2tlZFwiPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgbG9ja2VkVHBsIHx8IGRlZmF1bHRMb2NrZWRUcGw7XG4gICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBzdGF0ZSB9XG4gICAgICBcIlxuICAgID48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdExvY2tlZFRwbD5cbiAgICAgIDxkaXZcbiAgICAgICAgW2lkXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgICBjbGFzcz1cIm5nZ3YtZmllbGQtLWxvY2tlZFwiXG4gICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgIFthdHRyLnZhbHVlXT1cInN0YXRlXCJcbiAgICAgICAgW2F0dHIucm9sZV09XCJyb2xlXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhc3RhdGVcIiBjbGFzcz1cInVuc2V0LXN0YXRlXCI+LTwvc3Bhbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXRlXCI+XG4gICAgICAgICAge3sgc3RhdGUgfCBuZ2d2SW5wdXRNYXNrRm9ybWF0OiBkYXRlSW5wdXRNYXNrIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBJTlBVVCBXUkFQUEVSIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvY2tlZFwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZmllbGQtd3JhcFwiXG4gICAgICBbY2xhc3Mubmdndi1maWVsZC0tZXJyb3JdPVwiaW52YWxpZFwiXG4gICAgICAqbmdJZj1cInNob3dJbnB1dCQgfCBhc3luY1wiXG4gICAgPlxuICAgICAgPCEtLSBJTlBVVCBGSUVMRCAtLT5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRcbiAgICAgICAgW2lkXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgICBjbGFzcz1cIm5nZ3YtZmllbGQtZGF0ZVwiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgICAgW2F0dHIucmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcmVhZE9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICBbYXR0ci5yb2xlXT1cInJvbGVcIlxuICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICBbbmdndklucHV0TWFza109XCJkYXRlSW5wdXRNYXNrXCJcbiAgICAgICAgW3ZhbHVlXT1cInN0YXRlXCJcbiAgICAgICAgdGl0bGU9XCJcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50LnRhcmdldClcIlxuICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAgICAgLz5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwidG9nZ2xlIGNhbGVuZGFyXCJcbiAgICAgICAgI3RvZ2dsZUNhbGVuZGFyQnV0dG9uXG4gICAgICAgIGNsYXNzPVwibmdndi1idXR0b24tZGF0ZVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBkYXRhLXRob29rPVwidG9nZ2xlLWNhbGVuZGFyLWJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVEYXRlcGlja2VyKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgPlxuICAgICAgICBAaWYgKHNpemUgPT09ICdzbWFsbCcpIHtcbiAgICAgICAgICA8Z2RzLWljb24tY2FsZW5kYXIgKm5nZ0NvcmVFbGVtZW50IHNpemU9XCIxNnB4XCI+PC9nZHMtaWNvbi1jYWxlbmRhcj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoc2l6ZSA9PT0gJ2xhcmdlJykge1xuICAgICAgICAgIDxnZHMtaWNvbi1jYWxlbmRhciAqbmdnQ29yZUVsZW1lbnQgc2l6ZT1cIjIwcHhcIj48L2dkcy1pY29uLWNhbGVuZGFyPlxuICAgICAgICB9XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gREFURVBJQ0tFUiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibmdndi1kYXRlcGlja2VyXCIgKm5nSWY9XCJzaG93blwiPlxuICAgICAgPG5nZ3YtZGF0ZXBpY2tlclxuICAgICAgICAjaW5wdXRcbiAgICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAgIFtkaXNhYmxlRGF0ZXNdPVwiZGlzYWJsZURhdGVzXCJcbiAgICAgICAgW2Rpc2FibGVXZWVrRGF5c109XCJkaXNhYmxlV2Vla0RheXNcIlxuICAgICAgICBbc2VsZWN0ZWRdPVwic3RhdGVcIlxuICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICAgIFttaW5DYWxlbmRhclJvd3NdPVwibWluUm93c1wiXG4gICAgICAgIFtmaXJzdERheU9mV2Vla109XCJmaXJzdERheU9mV2Vla1wiXG4gICAgICAgIFtmaXJzdFZhbGlkXT1cImZpcnN0VmFsaWRcIlxuICAgICAgICBbbGFzdFZhbGlkXT1cImxhc3RWYWxpZFwiXG4gICAgICAgIFtjbG9zaW5nVGltZV09XCJjbG9zaW5nVGltZVwiXG4gICAgICAgIChuZ3ZEYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZ2d2LWRhdGVwaWNrZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEVSUk9SUyAtLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIlxuICAgICAgICBpbnZhbGlkICYmXG4gICAgICAgIChlcnJvciB8fCBuZ0NvbnRyb2w/LmludmFsaWQpICYmXG4gICAgICAgICghZXJyb3JMaXN0IHx8ICFlcnJvckxpc3QubGVuZ3RoKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJnZHMtZmllbGQtbm90aWNlIGdkcy1maWVsZC1ub3RpY2UtLWVycm9yXCJcbiAgICAgICAgW2F0dHIuZm9yXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW0tLWljb25cIj5cbiAgICAgICAgICAgIDxnZHMtaWNvbi10cmlhbmdsZS1leGNsYW1hdGlvblxuICAgICAgICAgICAgICAqbmdnQ29yZUVsZW1lbnRcbiAgICAgICAgICAgICAgW3NvbGlkXT1cInRydWVcIlxuICAgICAgICAgICAgICBzaXplPVwiMTZweFwiXG4gICAgICAgICAgICA+PC9nZHMtaWNvbi10cmlhbmdsZS1leGNsYW1hdGlvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiZXJyb3I7IGVsc2UgZXJyb3JzUmVmXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItaXRlbS0tdGV4dFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXRob29rXT1cInRob29rICsgJy1lcnJvcmxhYmVsJ1wiXG4gICAgICAgICAgICA+e3sgZXJyb3IgfX08L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNlcnJvcnNSZWY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAqbmdJZj1cImZpcnN0RXJyb3IgYXMgZXJyb3JcIlxuICAgICAgICAgICAgICBjbGFzcz1cImVycm9yLWl0ZW0tLXRleHRcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRob29rXT1cInRob29rICsgJy1lcnJvcmxhYmVsJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHQoJ2Vycm9yLmZpZWxkJyArIGVycm9yPy5jb2RlLCBlcnJvcj8ucGFyYW1zKSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JMaXN0ID8/IFtdXCI+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJnZHMtZmllbGQtbm90aWNlIGdkcy1maWVsZC1ub3RpY2UtLWVycm9yXCJcbiAgICAgICAgW2F0dHIuZm9yXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgICAqbmdJZj1cImludmFsaWQgJiYgZXJyb3JcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW0tLWljb25cIj5cbiAgICAgICAgICAgIDxnZHMtaWNvbi10cmlhbmdsZS1leGNsYW1hdGlvblxuICAgICAgICAgICAgICAqbmdnQ29yZUVsZW1lbnRcbiAgICAgICAgICAgICAgW3NvbGlkXT1cInRydWVcIlxuICAgICAgICAgICAgICBzaXplPVwiMTZweFwiXG4gICAgICAgICAgICA+PC9nZHMtaWNvbi10cmlhbmdsZS1leGNsYW1hdGlvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItaXRlbS0tdGV4dFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXRob29rXT1cInRob29rICsgJy1lcnJvcmxhYmVsJ1wiXG4gICAgICAgICAgICA+e3sgZXJyb3IgfX08L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|