@eui/components 17.0.2 → 17.0.3-snapshot-1703039070543

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/docs/components/EuiDatepickerComponent.html +459 -1518
  2. package/docs/components/EuiTimepickerComponent.html +73 -1
  3. package/docs/dependencies.html +2 -2
  4. package/docs/interfaces/EuiDateTimePickerConfig.html +117 -0
  5. package/docs/js/search/search_index.js +2 -2
  6. package/esm2022/directives/eui-tooltip/eui-tooltip.directive.mjs +2 -2
  7. package/esm2022/eui-datepicker/eui-datepicker.component.mjs +79 -105
  8. package/esm2022/eui-timepicker/eui-timepicker.component.mjs +25 -15
  9. package/esm2022/eui-timepicker/models/eui-date-time-picker.config.model.mjs +1 -1
  10. package/esm2022/layout/eui-app/eui-app-breadcrumb/breadcrumb.component.mjs +2 -2
  11. package/esm2022/layout/eui-breadcrumb/breadcrumb.component.mjs +2 -2
  12. package/esm2022/layout/eui-breadcrumb/collapsed-breadcrumb/collapsed-breadcrumb.component.mjs +2 -2
  13. package/esm2022/layout/eui-breadcrumb/item/breadcrumb-item.component.mjs +2 -2
  14. package/eui-datepicker/eui-datepicker.component.d.ts +31 -36
  15. package/eui-datepicker/eui-datepicker.component.d.ts.map +1 -1
  16. package/eui-timepicker/eui-timepicker.component.d.ts +7 -4
  17. package/eui-timepicker/eui-timepicker.component.d.ts.map +1 -1
  18. package/eui-timepicker/models/eui-date-time-picker.config.model.d.ts +3 -0
  19. package/eui-timepicker/models/eui-date-time-picker.config.model.d.ts.map +1 -1
  20. package/fesm2022/eui-components-directives.mjs +1 -1
  21. package/fesm2022/eui-components-directives.mjs.map +1 -1
  22. package/fesm2022/eui-components-eui-datepicker.mjs +78 -104
  23. package/fesm2022/eui-components-eui-datepicker.mjs.map +1 -1
  24. package/fesm2022/eui-components-eui-timepicker.mjs +24 -14
  25. package/fesm2022/eui-components-eui-timepicker.mjs.map +1 -1
  26. package/fesm2022/eui-components-layout.mjs +8 -8
  27. package/fesm2022/eui-components-layout.mjs.map +1 -1
  28. package/package.json +8 -8
@@ -39,19 +39,20 @@ export class EuiTimepickerComponent {
39
39
  this.minutesDownDisabled = false;
40
40
  this.secondsUpDisabled = false;
41
41
  this.secondsDownDisabled = false;
42
+ this.e2eAttr = 'eui-timepicker';
43
+ this.timeMask = 'Hh:m0';
44
+ this.stepHours = 1;
45
+ this.stepMinutes = 1;
46
+ this.stepSeconds = 1;
47
+ this._isreadOnly = false;
48
+ this._isOneInputField = false;
49
+ this._hasSeconds = false;
42
50
  this.propagatedValues = {
43
51
  hours: null,
44
52
  mins: null,
45
53
  secs: this.hasSeconds ? null : undefined,
46
54
  };
47
55
  this.destroy$ = new Subject();
48
- // eslint-disable-next-line
49
- this.e2eAttr = 'eui-timepicker';
50
- this._isreadOnly = false;
51
- this._isOneInputField = false;
52
- this._hasSeconds = false;
53
- // eslint-disable-next-line @typescript-eslint/member-ordering
54
- this.timeMask = 'Hh:m0';
55
56
  // eslint-disable-next-line @typescript-eslint/no-empty-function
56
57
  this.callbackFn = () => { };
57
58
  // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
@@ -64,6 +65,9 @@ export class EuiTimepickerComponent {
64
65
  this.isDatetimepicker = config?.isDatetimepicker;
65
66
  this.hasSeconds = config?.hasSeconds;
66
67
  this.isOneInputField = config?.isOneInputField;
68
+ this.stepHours = config?.stepHours;
69
+ this.stepMinutes = config?.stepMinutes;
70
+ this.stepSeconds = config?.stepSeconds;
67
71
  const hours = this.hours === 0 || null ? '00' : this.hours;
68
72
  const mins = this.mins === 0 || null ? '00' : this.mins;
69
73
  const secs = this.secs === 0 || null ? '00' : this.secs;
@@ -123,19 +127,19 @@ export class EuiTimepickerComponent {
123
127
  this.destroy$.unsubscribe();
124
128
  }
125
129
  changeHours(step) {
126
- if ((!this.hoursUpDisabled && step === 1) || (!this.hoursDownDisabled && step === -1)) {
130
+ if (!this.hoursUpDisabled || !this.hoursDownDisabled) {
127
131
  const val = (isNaN(this.hours) ? 0 : this.hours) + step;
128
132
  this.updateHours(val.toString());
129
133
  }
130
134
  }
131
135
  changeMinutes(step) {
132
- if ((!this.minutesUpDisabled && step === 1) || (!this.minutesDownDisabled && step === -1)) {
136
+ if (!this.minutesUpDisabled || !this.minutesDownDisabled) {
133
137
  const val = (isNaN(this.mins) ? 0 : this.mins) + step;
134
138
  this.updateMinutes(val.toString());
135
139
  }
136
140
  }
137
141
  changeSeconds(step) {
138
- if ((!this.secondsUpDisabled && step === 1) || (!this.secondsDownDisabled && step === -1)) {
142
+ if (!this.secondsUpDisabled || !this.secondsDownDisabled) {
139
143
  const val = (isNaN(this.secs) ? 0 : this.secs) + step;
140
144
  this.updateSeconds(val.toString());
141
145
  }
@@ -283,11 +287,11 @@ export class EuiTimepickerComponent {
283
287
  }
284
288
  }
285
289
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EuiTimepickerComponent, deps: [{ token: DYNAMIC_COMPONENT_CONFIG, optional: true }, { token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
286
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: EuiTimepickerComponent, selector: "eui-timepicker", inputs: { e2eAttr: "e2eAttr", isreadOnly: "isreadOnly", isOneInputField: "isOneInputField", hasSeconds: "hasSeconds", timeMask: "timeMask" }, viewQueries: [{ propertyName: "inputHoursElement", first: true, predicate: ["inputrefhours"], descendants: true, read: ElementRef }, { propertyName: "inputMinsElement", first: true, predicate: ["inputrefmins"], descendants: true, read: ElementRef }, { propertyName: "inputSecsElement", first: true, predicate: ["inputrefsecs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"eui-timepicker\" [class.eui-timepicker--centered]=\"isDatetimepicker\" attr.data-e2e=\"{{ e2eAttr }}\">\n <ng-container *ngIf=\"isOneInputField; else multipleInputs\">\n <input\n [class.eui-timepicker__input--one-field]=\"isDatetimepicker\"\n euiInputText\n mask=\"{{ timeMask }}\"\n [leadZeroDateTime]=\"true\"\n placeholder=\"{{ timeMask }}\"\n aria-label=\"Time Input Field\"\n [formControl]=\"oneInputFormControl\"\n (focusout)=\"onFocusOut()\"\n [dropSpecialCharacters]=\"false\"\n [readonly]=\"isreadOnly\" />\n </ng-container>\n\n <ng-template #multipleInputs>\n <div class=\"eui-timepicker__input-container\">\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__hours-up\">\n <eui-icon-svg\n (click)=\"changeHours(1)\"\n [class.time-control--disabled]=\"hoursUpDisabled\"\n icon=\"eui-chevron-up\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Increase Hours\">\n </eui-icon-svg>\n </div>\n <input\n #inputrefhours\n euiInputNumber\n [leadingZero]=\"2\"\n [digits]=\"2\"\n [fractionDigits]=\"0\"\n class=\"eui-timepicker__input\"\n placeholder=\"HH\"\n [ngModel]=\"hours\"\n (ngModelChange)=\"updateHours($event)\"\n [readonly]=\"isreadOnly\"\n aria-label=\"Hours\"\n (keydown.ArrowUp)=\"changeHours(1); $event.preventDefault()\"\n (keydown.ArrowDown)=\"changeHours(-1); $event.preventDefault()\" />\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__hours-down\">\n <eui-icon-svg\n (click)=\"changeHours(-1)\"\n [class.time-control--disabled]=\"hoursDownDisabled\"\n icon=\"eui-chevron-down\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Decrease Hours\">\n </eui-icon-svg>\n </div>\n </div>\n <div class=\"eui-timepicker__spacer\">:</div>\n <div class=\"eui-timepicker__input-container\">\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__minutes-up\">\n <eui-icon-svg\n (click)=\"changeMinutes(1)\"\n [class.time-control--disabled]=\"minutesUpDisabled\"\n icon=\"eui-chevron-up\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Increase Minutes\">\n </eui-icon-svg>\n </div>\n <input\n #inputrefmins\n euiInputNumber\n [leadingZero]=\"2\"\n [digits]=\"2\"\n [fractionDigits]=\"0\"\n class=\"eui-timepicker__input\"\n placeholder=\"MM\"\n [ngModel]=\"mins\"\n (ngModelChange)=\"updateMinutes($event)\"\n [readonly]=\"isreadOnly\"\n aria-label=\"Minutes\"\n (keydown.ArrowUp)=\"changeMinutes(1); $event.preventDefault()\"\n (keydown.ArrowDown)=\"changeMinutes(-1); $event.preventDefault()\" />\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__minutes-down\">\n <eui-icon-svg\n (click)=\"changeMinutes(-1)\"\n [class.time-control--disabled]=\"minutesDownDisabled\"\n icon=\"eui-chevron-down\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Decrease Minutes\">\n </eui-icon-svg>\n </div>\n </div>\n <ng-container *ngIf=\"hasSeconds\">\n <div class=\"eui-timepicker__spacer\">:</div>\n <div class=\"eui-timepicker__input-container\">\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__seconds-up\">\n <eui-icon-svg\n (click)=\"changeSeconds(1)\"\n [class.time-control--disabled]=\"secondsUpDisabled\"\n icon=\"eui-chevron-up\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Increase seconds\">\n </eui-icon-svg>\n </div>\n <input\n #inputrefsecs\n euiInputNumber\n [leadingZero]=\"2\"\n [digits]=\"2\"\n [fractionDigits]=\"0\"\n class=\"eui-timepicker__input\"\n placeholder=\"SS\"\n [ngModel]=\"secs\"\n (ngModelChange)=\"updateSeconds($event)\"\n [readonly]=\"isreadOnly\"\n aria-label=\"Seconds\"\n (keydown.ArrowUp)=\"changeSeconds(1); $event.preventDefault()\"\n (keydown.ArrowDown)=\"changeSeconds(-1); $event.preventDefault()\" />\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__seconds-down\">\n <eui-icon-svg\n (click)=\"changeSeconds(-1)\"\n [class.time-control--disabled]=\"secondsDownDisabled\"\n icon=\"eui-chevron-down\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Decrease seconds\">\n </eui-icon-svg>\n </div>\n </div>\n </ng-container>\n </ng-template>\n</div>\n", styles: [".eui-timepicker{align-items:center;display:flex}.eui-timepicker--centered{justify-content:center}.eui-timepicker__input-container{width:calc(4 * var(--eui-base-spacing-m))}.eui-timepicker__input{text-align:center;width:100%}.eui-timepicker__input--one-field{width:calc(6 * var(--eui-base-spacing-m));margin-bottom:var(--eui-base-spacing-2xs)}.eui-timepicker__spacer{text-align:center;width:var(--eui-base-spacing-m)}.eui-timepicker__chevron{display:flex;justify-content:center;padding:var(--eui-base-spacing-xs)}.eui-timepicker__chevron .eui-icon-svg:not(.time-control--disabled):hover{cursor:pointer;color:var(--eui-base-color-primary-100)}.eui-timepicker__chevron .eui-icon-svg.time-control--disabled{background-image:none;box-shadow:none;cursor:not-allowed!important;opacity:var(--eui-base-disabled-opacity)}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.EuiInputNumberComponent, selector: "input[euiInputNumber]", inputs: ["min", "max", "leadingZero", "isInvalid", "fractionDigits", "digits", "fillFraction", "roundUp", "noFormat", "value"] }, { kind: "directive", type: i3.EuiInputNumberDirective, selector: "input[euiInputNumber][formControl],input[euiInputNumber][formControlName],input[euiInputNumber][ngModel]" }, { kind: "component", type: i4.EuiInputTextComponent, selector: "input[euiInputText]", inputs: ["class", "isInvalid"] }, { kind: "component", type: i5.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "directive", type: i6.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }], encapsulation: i0.ViewEncapsulation.None }); }
290
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: EuiTimepickerComponent, selector: "eui-timepicker", inputs: { e2eAttr: "e2eAttr", timeMask: "timeMask", stepHours: "stepHours", stepMinutes: "stepMinutes", stepSeconds: "stepSeconds", isreadOnly: "isreadOnly", isOneInputField: "isOneInputField", hasSeconds: "hasSeconds" }, viewQueries: [{ propertyName: "inputHoursElement", first: true, predicate: ["inputrefhours"], descendants: true, read: ElementRef }, { propertyName: "inputMinsElement", first: true, predicate: ["inputrefmins"], descendants: true, read: ElementRef }, { propertyName: "inputSecsElement", first: true, predicate: ["inputrefsecs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"eui-timepicker\" [class.eui-timepicker--centered]=\"isDatetimepicker\" attr.data-e2e=\"{{ e2eAttr }}\">\n <ng-container *ngIf=\"isOneInputField; else multipleInputs\">\n <input\n [class.eui-timepicker__input--one-field]=\"isDatetimepicker\"\n euiInputText\n mask=\"{{ timeMask }}\"\n [leadZeroDateTime]=\"true\"\n placeholder=\"{{ timeMask }}\"\n aria-label=\"Time Input Field\"\n [formControl]=\"oneInputFormControl\"\n (focusout)=\"onFocusOut()\"\n [dropSpecialCharacters]=\"false\"\n [readonly]=\"isreadOnly\" />\n </ng-container>\n\n <ng-template #multipleInputs>\n <div class=\"eui-timepicker__input-container\">\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__hours-up\">\n <eui-icon-svg\n (click)=\"changeHours(stepHours)\"\n [class.time-control--disabled]=\"hoursUpDisabled\"\n icon=\"eui-chevron-up\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Increase Hours\">\n </eui-icon-svg>\n </div>\n <input\n #inputrefhours\n euiInputNumber\n [leadingZero]=\"2\"\n [digits]=\"2\"\n [fractionDigits]=\"0\"\n class=\"eui-timepicker__input\"\n placeholder=\"HH\"\n [ngModel]=\"hours\"\n (ngModelChange)=\"updateHours($event)\"\n [readonly]=\"isreadOnly\"\n aria-label=\"Hours\"\n (keydown.ArrowUp)=\"changeHours(stepHours); $event.preventDefault()\"\n (keydown.ArrowDown)=\"changeHours(-stepHours); $event.preventDefault()\" />\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__hours-down\">\n <eui-icon-svg\n (click)=\"changeHours(-stepHours)\"\n [class.time-control--disabled]=\"hoursDownDisabled\"\n icon=\"eui-chevron-down\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Decrease Hours\">\n </eui-icon-svg>\n </div>\n </div>\n <div class=\"eui-timepicker__spacer\">:</div>\n <div class=\"eui-timepicker__input-container\">\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__minutes-up\">\n <eui-icon-svg\n (click)=\"changeMinutes(stepMinutes)\"\n [class.time-control--disabled]=\"minutesUpDisabled\"\n icon=\"eui-chevron-up\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Increase Minutes\">\n </eui-icon-svg>\n </div>\n <input\n #inputrefmins\n euiInputNumber\n [leadingZero]=\"2\"\n [digits]=\"2\"\n [fractionDigits]=\"0\"\n class=\"eui-timepicker__input\"\n placeholder=\"MM\"\n [ngModel]=\"mins\"\n (ngModelChange)=\"updateMinutes($event)\"\n [readonly]=\"isreadOnly\"\n aria-label=\"Minutes\"\n (keydown.ArrowUp)=\"changeMinutes(stepMinutes); $event.preventDefault()\"\n (keydown.ArrowDown)=\"changeMinutes(-stepMinutes); $event.preventDefault()\" />\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__minutes-down\">\n <eui-icon-svg\n (click)=\"changeMinutes(-stepMinutes)\"\n [class.time-control--disabled]=\"minutesDownDisabled\"\n icon=\"eui-chevron-down\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Decrease Minutes\">\n </eui-icon-svg>\n </div>\n </div>\n <ng-container *ngIf=\"hasSeconds\">\n <div class=\"eui-timepicker__spacer\">:</div>\n <div class=\"eui-timepicker__input-container\">\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__seconds-up\">\n <eui-icon-svg\n (click)=\"changeSeconds(stepSeconds)\"\n [class.time-control--disabled]=\"secondsUpDisabled\"\n icon=\"eui-chevron-up\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Increase seconds\">\n </eui-icon-svg>\n </div>\n <input\n #inputrefsecs\n euiInputNumber\n [leadingZero]=\"2\"\n [digits]=\"2\"\n [fractionDigits]=\"0\"\n class=\"eui-timepicker__input\"\n placeholder=\"SS\"\n [ngModel]=\"secs\"\n (ngModelChange)=\"updateSeconds($event)\"\n [readonly]=\"isreadOnly\"\n aria-label=\"Seconds\"\n (keydown.ArrowUp)=\"changeSeconds(stepSeconds); $event.preventDefault()\"\n (keydown.ArrowDown)=\"changeSeconds(-stepSeconds); $event.preventDefault()\" />\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__seconds-down\">\n <eui-icon-svg\n (click)=\"changeSeconds(-stepSeconds)\"\n [class.time-control--disabled]=\"secondsDownDisabled\"\n icon=\"eui-chevron-down\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Decrease seconds\">\n </eui-icon-svg>\n </div>\n </div>\n </ng-container>\n </ng-template>\n</div>\n", styles: [".eui-timepicker{align-items:center;display:flex}.eui-timepicker--centered{justify-content:center}.eui-timepicker__input-container{width:calc(4 * var(--eui-base-spacing-m))}.eui-timepicker__input{text-align:center;width:100%}.eui-timepicker__input--one-field{width:calc(6 * var(--eui-base-spacing-m));margin-bottom:var(--eui-base-spacing-2xs)}.eui-timepicker__spacer{text-align:center;width:var(--eui-base-spacing-m)}.eui-timepicker__chevron{display:flex;justify-content:center;padding:var(--eui-base-spacing-xs)}.eui-timepicker__chevron .eui-icon-svg:not(.time-control--disabled):hover{cursor:pointer;color:var(--eui-base-color-primary-100)}.eui-timepicker__chevron .eui-icon-svg.time-control--disabled{background-image:none;box-shadow:none;cursor:not-allowed!important;opacity:var(--eui-base-disabled-opacity)}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.EuiInputNumberComponent, selector: "input[euiInputNumber]", inputs: ["min", "max", "leadingZero", "isInvalid", "fractionDigits", "digits", "fillFraction", "roundUp", "noFormat", "value"] }, { kind: "directive", type: i3.EuiInputNumberDirective, selector: "input[euiInputNumber][formControl],input[euiInputNumber][formControlName],input[euiInputNumber][ngModel]" }, { kind: "component", type: i4.EuiInputTextComponent, selector: "input[euiInputText]", inputs: ["class", "isInvalid"] }, { kind: "component", type: i5.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "directive", type: i6.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }], encapsulation: i0.ViewEncapsulation.None }); }
287
291
  }
288
292
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EuiTimepickerComponent, decorators: [{
289
293
  type: Component,
290
- args: [{ selector: 'eui-timepicker', encapsulation: ViewEncapsulation.None, template: "<div class=\"eui-timepicker\" [class.eui-timepicker--centered]=\"isDatetimepicker\" attr.data-e2e=\"{{ e2eAttr }}\">\n <ng-container *ngIf=\"isOneInputField; else multipleInputs\">\n <input\n [class.eui-timepicker__input--one-field]=\"isDatetimepicker\"\n euiInputText\n mask=\"{{ timeMask }}\"\n [leadZeroDateTime]=\"true\"\n placeholder=\"{{ timeMask }}\"\n aria-label=\"Time Input Field\"\n [formControl]=\"oneInputFormControl\"\n (focusout)=\"onFocusOut()\"\n [dropSpecialCharacters]=\"false\"\n [readonly]=\"isreadOnly\" />\n </ng-container>\n\n <ng-template #multipleInputs>\n <div class=\"eui-timepicker__input-container\">\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__hours-up\">\n <eui-icon-svg\n (click)=\"changeHours(1)\"\n [class.time-control--disabled]=\"hoursUpDisabled\"\n icon=\"eui-chevron-up\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Increase Hours\">\n </eui-icon-svg>\n </div>\n <input\n #inputrefhours\n euiInputNumber\n [leadingZero]=\"2\"\n [digits]=\"2\"\n [fractionDigits]=\"0\"\n class=\"eui-timepicker__input\"\n placeholder=\"HH\"\n [ngModel]=\"hours\"\n (ngModelChange)=\"updateHours($event)\"\n [readonly]=\"isreadOnly\"\n aria-label=\"Hours\"\n (keydown.ArrowUp)=\"changeHours(1); $event.preventDefault()\"\n (keydown.ArrowDown)=\"changeHours(-1); $event.preventDefault()\" />\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__hours-down\">\n <eui-icon-svg\n (click)=\"changeHours(-1)\"\n [class.time-control--disabled]=\"hoursDownDisabled\"\n icon=\"eui-chevron-down\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Decrease Hours\">\n </eui-icon-svg>\n </div>\n </div>\n <div class=\"eui-timepicker__spacer\">:</div>\n <div class=\"eui-timepicker__input-container\">\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__minutes-up\">\n <eui-icon-svg\n (click)=\"changeMinutes(1)\"\n [class.time-control--disabled]=\"minutesUpDisabled\"\n icon=\"eui-chevron-up\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Increase Minutes\">\n </eui-icon-svg>\n </div>\n <input\n #inputrefmins\n euiInputNumber\n [leadingZero]=\"2\"\n [digits]=\"2\"\n [fractionDigits]=\"0\"\n class=\"eui-timepicker__input\"\n placeholder=\"MM\"\n [ngModel]=\"mins\"\n (ngModelChange)=\"updateMinutes($event)\"\n [readonly]=\"isreadOnly\"\n aria-label=\"Minutes\"\n (keydown.ArrowUp)=\"changeMinutes(1); $event.preventDefault()\"\n (keydown.ArrowDown)=\"changeMinutes(-1); $event.preventDefault()\" />\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__minutes-down\">\n <eui-icon-svg\n (click)=\"changeMinutes(-1)\"\n [class.time-control--disabled]=\"minutesDownDisabled\"\n icon=\"eui-chevron-down\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Decrease Minutes\">\n </eui-icon-svg>\n </div>\n </div>\n <ng-container *ngIf=\"hasSeconds\">\n <div class=\"eui-timepicker__spacer\">:</div>\n <div class=\"eui-timepicker__input-container\">\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__seconds-up\">\n <eui-icon-svg\n (click)=\"changeSeconds(1)\"\n [class.time-control--disabled]=\"secondsUpDisabled\"\n icon=\"eui-chevron-up\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Increase seconds\">\n </eui-icon-svg>\n </div>\n <input\n #inputrefsecs\n euiInputNumber\n [leadingZero]=\"2\"\n [digits]=\"2\"\n [fractionDigits]=\"0\"\n class=\"eui-timepicker__input\"\n placeholder=\"SS\"\n [ngModel]=\"secs\"\n (ngModelChange)=\"updateSeconds($event)\"\n [readonly]=\"isreadOnly\"\n aria-label=\"Seconds\"\n (keydown.ArrowUp)=\"changeSeconds(1); $event.preventDefault()\"\n (keydown.ArrowDown)=\"changeSeconds(-1); $event.preventDefault()\" />\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__seconds-down\">\n <eui-icon-svg\n (click)=\"changeSeconds(-1)\"\n [class.time-control--disabled]=\"secondsDownDisabled\"\n icon=\"eui-chevron-down\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Decrease seconds\">\n </eui-icon-svg>\n </div>\n </div>\n </ng-container>\n </ng-template>\n</div>\n", styles: [".eui-timepicker{align-items:center;display:flex}.eui-timepicker--centered{justify-content:center}.eui-timepicker__input-container{width:calc(4 * var(--eui-base-spacing-m))}.eui-timepicker__input{text-align:center;width:100%}.eui-timepicker__input--one-field{width:calc(6 * var(--eui-base-spacing-m));margin-bottom:var(--eui-base-spacing-2xs)}.eui-timepicker__spacer{text-align:center;width:var(--eui-base-spacing-m)}.eui-timepicker__chevron{display:flex;justify-content:center;padding:var(--eui-base-spacing-xs)}.eui-timepicker__chevron .eui-icon-svg:not(.time-control--disabled):hover{cursor:pointer;color:var(--eui-base-color-primary-100)}.eui-timepicker__chevron .eui-icon-svg.time-control--disabled{background-image:none;box-shadow:none;cursor:not-allowed!important;opacity:var(--eui-base-disabled-opacity)}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"] }]
294
+ args: [{ selector: 'eui-timepicker', encapsulation: ViewEncapsulation.None, template: "<div class=\"eui-timepicker\" [class.eui-timepicker--centered]=\"isDatetimepicker\" attr.data-e2e=\"{{ e2eAttr }}\">\n <ng-container *ngIf=\"isOneInputField; else multipleInputs\">\n <input\n [class.eui-timepicker__input--one-field]=\"isDatetimepicker\"\n euiInputText\n mask=\"{{ timeMask }}\"\n [leadZeroDateTime]=\"true\"\n placeholder=\"{{ timeMask }}\"\n aria-label=\"Time Input Field\"\n [formControl]=\"oneInputFormControl\"\n (focusout)=\"onFocusOut()\"\n [dropSpecialCharacters]=\"false\"\n [readonly]=\"isreadOnly\" />\n </ng-container>\n\n <ng-template #multipleInputs>\n <div class=\"eui-timepicker__input-container\">\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__hours-up\">\n <eui-icon-svg\n (click)=\"changeHours(stepHours)\"\n [class.time-control--disabled]=\"hoursUpDisabled\"\n icon=\"eui-chevron-up\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Increase Hours\">\n </eui-icon-svg>\n </div>\n <input\n #inputrefhours\n euiInputNumber\n [leadingZero]=\"2\"\n [digits]=\"2\"\n [fractionDigits]=\"0\"\n class=\"eui-timepicker__input\"\n placeholder=\"HH\"\n [ngModel]=\"hours\"\n (ngModelChange)=\"updateHours($event)\"\n [readonly]=\"isreadOnly\"\n aria-label=\"Hours\"\n (keydown.ArrowUp)=\"changeHours(stepHours); $event.preventDefault()\"\n (keydown.ArrowDown)=\"changeHours(-stepHours); $event.preventDefault()\" />\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__hours-down\">\n <eui-icon-svg\n (click)=\"changeHours(-stepHours)\"\n [class.time-control--disabled]=\"hoursDownDisabled\"\n icon=\"eui-chevron-down\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Decrease Hours\">\n </eui-icon-svg>\n </div>\n </div>\n <div class=\"eui-timepicker__spacer\">:</div>\n <div class=\"eui-timepicker__input-container\">\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__minutes-up\">\n <eui-icon-svg\n (click)=\"changeMinutes(stepMinutes)\"\n [class.time-control--disabled]=\"minutesUpDisabled\"\n icon=\"eui-chevron-up\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Increase Minutes\">\n </eui-icon-svg>\n </div>\n <input\n #inputrefmins\n euiInputNumber\n [leadingZero]=\"2\"\n [digits]=\"2\"\n [fractionDigits]=\"0\"\n class=\"eui-timepicker__input\"\n placeholder=\"MM\"\n [ngModel]=\"mins\"\n (ngModelChange)=\"updateMinutes($event)\"\n [readonly]=\"isreadOnly\"\n aria-label=\"Minutes\"\n (keydown.ArrowUp)=\"changeMinutes(stepMinutes); $event.preventDefault()\"\n (keydown.ArrowDown)=\"changeMinutes(-stepMinutes); $event.preventDefault()\" />\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__minutes-down\">\n <eui-icon-svg\n (click)=\"changeMinutes(-stepMinutes)\"\n [class.time-control--disabled]=\"minutesDownDisabled\"\n icon=\"eui-chevron-down\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Decrease Minutes\">\n </eui-icon-svg>\n </div>\n </div>\n <ng-container *ngIf=\"hasSeconds\">\n <div class=\"eui-timepicker__spacer\">:</div>\n <div class=\"eui-timepicker__input-container\">\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__seconds-up\">\n <eui-icon-svg\n (click)=\"changeSeconds(stepSeconds)\"\n [class.time-control--disabled]=\"secondsUpDisabled\"\n icon=\"eui-chevron-up\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Increase seconds\">\n </eui-icon-svg>\n </div>\n <input\n #inputrefsecs\n euiInputNumber\n [leadingZero]=\"2\"\n [digits]=\"2\"\n [fractionDigits]=\"0\"\n class=\"eui-timepicker__input\"\n placeholder=\"SS\"\n [ngModel]=\"secs\"\n (ngModelChange)=\"updateSeconds($event)\"\n [readonly]=\"isreadOnly\"\n aria-label=\"Seconds\"\n (keydown.ArrowUp)=\"changeSeconds(stepSeconds); $event.preventDefault()\"\n (keydown.ArrowDown)=\"changeSeconds(-stepSeconds); $event.preventDefault()\" />\n <div *ngIf=\"!isreadOnly\" class=\"eui-timepicker__chevron eui-timepicker__seconds-down\">\n <eui-icon-svg\n (click)=\"changeSeconds(-stepSeconds)\"\n [class.time-control--disabled]=\"secondsDownDisabled\"\n icon=\"eui-chevron-down\"\n fillColor=\"grey-75\"\n size=\"l\"\n role=\"button\"\n aria-label=\"Decrease seconds\">\n </eui-icon-svg>\n </div>\n </div>\n </ng-container>\n </ng-template>\n</div>\n", styles: [".eui-timepicker{align-items:center;display:flex}.eui-timepicker--centered{justify-content:center}.eui-timepicker__input-container{width:calc(4 * var(--eui-base-spacing-m))}.eui-timepicker__input{text-align:center;width:100%}.eui-timepicker__input--one-field{width:calc(6 * var(--eui-base-spacing-m));margin-bottom:var(--eui-base-spacing-2xs)}.eui-timepicker__spacer{text-align:center;width:var(--eui-base-spacing-m)}.eui-timepicker__chevron{display:flex;justify-content:center;padding:var(--eui-base-spacing-xs)}.eui-timepicker__chevron .eui-icon-svg:not(.time-control--disabled):hover{cursor:pointer;color:var(--eui-base-color-primary-100)}.eui-timepicker__chevron .eui-icon-svg.time-control--disabled{background-image:none;box-shadow:none;cursor:not-allowed!important;opacity:var(--eui-base-disabled-opacity)}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"] }]
291
295
  }], ctorParameters: () => [{ type: undefined, decorators: [{
292
296
  type: Optional
293
297
  }, {
@@ -299,14 +303,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
299
303
  type: Optional
300
304
  }] }], propDecorators: { e2eAttr: [{
301
305
  type: Input
306
+ }], timeMask: [{
307
+ type: Input
308
+ }], stepHours: [{
309
+ type: Input
310
+ }], stepMinutes: [{
311
+ type: Input
312
+ }], stepSeconds: [{
313
+ type: Input
302
314
  }], isreadOnly: [{
303
315
  type: Input
304
316
  }], isOneInputField: [{
305
317
  type: Input
306
318
  }], hasSeconds: [{
307
319
  type: Input
308
- }], timeMask: [{
309
- type: Input
310
320
  }], inputHoursElement: [{
311
321
  type: ViewChild,
312
322
  args: ['inputrefhours', { read: ElementRef }]
@@ -317,4 +327,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
317
327
  type: ViewChild,
318
328
  args: ['inputrefsecs', { read: ElementRef }]
319
329
  }] } });
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRpbWVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLXRpbWVwaWNrZXIvZXVpLXRpbWVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLXRpbWVwaWNrZXIvZXVpLXRpbWVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsSUFBSSxHQUdQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUMsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7Ozs7OztBQVVyRCxNQUFNLE9BQU8sc0JBQXNCO0lBMkIvQixJQUNJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLEtBQW1CO1FBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUdELElBQ0ksZUFBZTtRQUNmLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ2pDLENBQUM7SUFDRCxJQUFJLGVBQWUsQ0FBQyxLQUFtQjtRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUdELElBQ0ksVUFBVTtRQUNWLE9BQU8sSUFBSSxD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QUM7SUFFRDs7Ozs7T0FLRztJQUNLLFNBQVMsQ0FBQyxLQUFhO1FBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQy9CLE9BQU8sSUFBSSxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoQzthQUFNO1lBQ0gsT0FBTyxFQUFFLENBQUM7U0FDYjtJQUNMLENBQUM7aUlBaFVRLHNCQUFzQixrQkE4RFAsd0JBQXdCO3FIQTlEdkMsc0JBQXNCLG1TQXlESyxVQUFVLDJHQUNYLFVBQVUsMkdBQ1YsVUFBVSw2QkN2RmpELCtvTUF3SUE7OzJGRDVHYSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0ksZ0JBQWdCLGlCQUdYLGlCQUFpQixDQUFDLElBQUk7OzBCQWdFaEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx3QkFBd0I7OzBCQUMzQyxJQUFJOzswQkFBSSxRQUFRO3lDQXRDWixPQUFPO3NCQUFmLEtBQUs7Z0JBR0YsVUFBVTtzQkFEYixLQUFLO2dCQVVGLGVBQWU7c0JBRGxCLEtBQUs7Z0JBVUYsVUFBVTtzQkFEYixLQUFLO2dCQVVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRXNELGlCQUFpQjtzQkFBNUUsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNXLGdCQUFnQjtzQkFBMUUsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNZLGdCQUFnQjtzQkFBMUUsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBTZWxmLFxuICAgIERvQ2hlY2ssXG4gICAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBEWU5BTUlDX0NPTVBPTkVOVF9DT05GSUcgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgRXVpRGF0ZVRpbWVQaWNrZXJDb25maWcgfSBmcm9tICcuL21vZGVscy9ldWktZGF0ZS10aW1lLXBpY2tlci5jb25maWcubW9kZWwnO1xuaW1wb3J0IHsgRXVpVGltZVBpY2tlciB9IGZyb20gJy4vbW9kZWxzL2V1aS10aW1lcGlja2VyLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktdGltZXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V1aS10aW1lcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHlsZXMvX2luZGV4LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlUaW1lcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgRG9DaGVjaywgT25EZXN0cm95IHtcbiAgICBob3VyczogbnVtYmVyO1xuICAgIG1pbnM6IG51bWJlcjtcbiAgICBzZWNzOiBudW1iZXI7XG4gICAgaXNEYXRldGltZXBpY2tlcjogYm9vbGVhbjtcbiAgICBvbmVJbnB1dEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gICAgb25lSW5wdXRIb3Vyczogc3RyaW5nO1xuICAgIG9uZUlucHV0TWluczogc3RyaW5nO1xuICAgIG9uZUlucHV0U2Vjczogc3RyaW5nO1xuXG4gICAgcHVibGljIGhvdXJzVXBEaXNhYmxlZCA9IGZhbHNlO1xuICAgIHB1YmxpYyBob3Vyc0Rvd25EaXNhYmxlZCA9IGZhbHNlO1xuICAgIHB1YmxpYyBtaW51dGVzVXBEaXNhYmxlZCA9IGZhbHNlO1xuICAgIHB1YmxpYyBtaW51dGVzRG93bkRpc2FibGVkID0gZmFsc2U7XG4gICAgcHVibGljIHNlY29uZHNVcERpc2FibGVkID0gZmFsc2U7XG4gICAgcHVibGljIHNlY29uZHNEb3duRGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgcHJvcGFnYXRlZFZhbHVlczogRXVpVGltZVBpY2tlciA9IHtcbiAgICAgICAgaG91cnM6IG51bGwsXG4gICAgICAgIG1pbnM6IG51bGwsXG4gICAgICAgIHNlY3M6IHRoaXMuaGFzU2Vjb25kcyA/IG51bGwgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIEBJbnB1dCgpIGUyZUF0dHIgPSAnZXVpLXRpbWVwaWNrZXInO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNyZWFkT25seSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzcmVhZE9ubHk7XG4gICAgfVxuICAgIHNldCBpc3JlYWRPbmx5KHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNyZWFkT25seSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzcmVhZE9ubHkgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzT25lSW5wdXRGaWVsZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzT25lSW5wdXRGaWVsZDtcbiAgICB9XG4gICAgc2V0IGlzT25lSW5wdXRGaWVsZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzT25lSW5wdXRGaWVsZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzT25lSW5wdXRGaWVsZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaGFzU2Vjb25kcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1NlY29uZHM7XG4gICAgfVxuICAgIHNldCBoYXNTZWNvbmRzKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faGFzU2Vjb25kcyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2hhc1NlY29uZHMgPSBmYWxzZTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gICAgQElucHV0KCkgdGltZU1hc2sgPSAnSGg6bTAnO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRyZWZob3VycycsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBwcm90ZWN0ZWQgaW5wdXRIb3Vyc0VsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnaW5wdXRyZWZtaW5zJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIHByb3RlY3RlZCBpbnB1dE1pbnNFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ2lucHV0cmVmc2VjcycsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBwcm90ZWN0ZWQgaW5wdXRTZWNzRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERZTkFNSUNfQ09NUE9ORU5UX0NPTkZJRykgY29uZmlnOiBFdWlEYXRlVGltZVBpY2tlckNvbmZpZyxcbiAgICAgICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2w6IE5nQ29udHJvbCxcbiAgICApIHtcbiAgICAgICAgdGhpcy5ob3VycyA9IGNvbmZpZz8uaG91cnMgfHwgMDtcbiAgICAgICAgdGhpcy5taW5zID0gY29uZmlnPy5taW5zIHx8IDA7XG4gICAgICAgIHRoaXMuc2VjcyA9IGNvbmZpZz8uc2VjcyB8fCAwO1xuICAgICAgICB0aGlzLmlzRGF0ZXRpbWVwaWNrZXIgPSBjb25maWc/LmlzRGF0ZXRpbWVwaWNrZXI7XG4gICAgICAgIHRoaXMuaGFzU2Vjb25kcyA9IGNvbmZpZz8uaGFzU2Vjb25kcztcbiAgICAgICAgdGhpcy5pc09uZUlucHV0RmllbGQgPSBjb25maWc/LmlzT25lSW5wdXRGaWVsZDtcbiAgICAgICAgY29uc3QgaG91cnMgPSB0aGlzLmhvdXJzID09PSAwIHx8IG51bGwgPyAnMDAnIDogdGhpcy5ob3VycztcbiAgICAgICAgY29uc3QgbWlucyA9IHRoaXMubWlucyA9PT0gMCB8fCBudWxsID8gJzAwJyA6IHRoaXMubWlucztcbiAgICAgICAgY29uc3Qgc2VjcyA9IHRoaXMuc2VjcyA9PT0gMCB8fCBudWxsID8gJzAwJyA6IHRoaXMuc2VjcztcbiAgICAgICAgdGhpcy5vbmVJbnB1dEZvcm1Db250cm9sLnNldFZhbHVlKCcnICsgaG91cnMgKyAnOicgKyBtaW5zICsgJzonICsgc2Vjcyk7XG4gICAgICAgIHRoaXMuY2FsbGJhY2tGbiA9IGNvbmZpZz8uY2FsbGJhY2tGbiB8fCB0aGlzLmNhbGxiYWNrRm47XG5cbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5jb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhhc1NlY29uZHMpIHtcbiAgICAgICAgICAgIHRoaXMudGltZU1hc2sgPSAnSGg6bTA6czAnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbmVJbnB1dEZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgLy8gc3BsaXRzIHRoZSBlbnRlcmVkIHRpbWUgaW50byAzIHBhcnRzIGJhc2VkIG9uIHRoZSA6IGFuZCBwcm9wYWdhdGVzIGJhY2sgdGhlIGNvcnJlc3BvbmRpbmcgcGFydHNcbiAgICAgICAgICAgIGNvbnN0IHRpbWVBcnJheSA9IHZhbHVlLnNwbGl0KCc6Jyk7XG4gICAgICAgICAgICB0aGlzLm9uZUlucHV0SG91cnMgPSB0aW1lQXJyYXlbMF07XG4gICAgICAgICAgICB0aGlzLm9uZUlucHV0TWlucyA9IHRpbWVBcnJheVsxXTtcbiAgICAgICAgICAgIHRoaXMub25lSW5wdXRTZWNzID0gdGltZUFycmF5WzJdO1xuICAgICAgICAgICAgY29uc3Qgc3BsaXR0ZWRob3VycyA9IHZhbHVlICE9PSAnJyA/IE51bWJlcih0aGlzLm9uZUlucHV0SG91cnMpIDogbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IHNwbGl0dGVkbWlucyA9IHZhbHVlICE9PSAnJyA/IE51bWJlcih0aGlzLm9uZUlucHV0TWlucykgOiBudWxsO1xuICAgICAgICAgICAgY29uc3Qgc3BsaXR0ZWRzZWNzID0gdmFsdWUgIT09ICcnID8gTnVtYmVyKHRoaXMub25lSW5wdXRTZWNzKSA6IG51bGw7XG4gICAgICAgICAgICBpZiAodGhpcy5oYXNTZWNvbmRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVkVmFsdWVzID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnByb3BhZ2F0ZWRWYWx1ZXMsXG4gICAgICAgICAgICAgICAgICAgIGhvdXJzOiBzcGxpdHRlZGhvdXJzLFxuICAgICAgICAgICAgICAgICAgICBtaW5zOiBzcGxpdHRlZG1pbnMsXG4gICAgICAgICAgICAgICAgICAgIHNlY3M6IHNwbGl0dGVkc2VjcyxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tGbihzcGxpdHRlZGhvdXJzLCBzcGxpdHRlZG1pbnMsIHNwbGl0dGVkc2Vjcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlZFZhbHVlcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5wcm9wYWdhdGVkVmFsdWVzLFxuICAgICAgICAgICAgICAgICAgICBob3Vyczogc3BsaXR0ZWRob3VycyxcbiAgICAgICAgICAgICAgICAgICAgbWluczogc3BsaXR0ZWRtaW5zLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsYmFja0ZuKHNwbGl0dGVkaG91cnMsIHNwbGl0dGVkbWlucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3BsaXR0ZWRob3VycyA9PT0gbnVsbCAmJiBzcGxpdHRlZG1pbnMgPT09IG51bGwgJiYgc3BsaXR0ZWRzZWNzID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UobnVsbCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMucHJvcGFnYXRlZFZhbHVlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAgICAgLy8gbWFya3MgdGhlIGlucHV0IGNvbnRyb2wgYXMgdG91Y2hlZC9pbnZhbGlkIGlmIHRoZSBmb3JtIGNvbnRyb2wgaXMgdG91Y2hlZC9pbnZhbGlkXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2w/LnRvdWNoZWQgPyB0aGlzLm9uZUlucHV0Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpIDogdGhpcy5vbmVJbnB1dEZvcm1Db250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICAgICAgdGhpcy5jb250cm9sPy5pbnZhbGlkID8gdGhpcy5vbmVJbnB1dEZvcm1Db250cm9sLnNldEVycm9ycyh0aGlzLmNvbnRyb2wuZXJyb3JzKSA6IHRoaXMub25lSW5wdXRGb3JtQ29udHJvbC5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgY2hhbmdlSG91cnMoc3RlcDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICgoIXRoaXMuaG91cnNVcERpc2FibGVkICYmIHN0ZXAgPT09IDEpIHx8ICghdGhpcy5ob3Vyc0Rvd25EaXNhYmxlZCAmJiBzdGVwID09PSAtMSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IChpc05hTih0aGlzLmhvdXJzKSA/IDAgOiB0aGlzLmhvdXJzKSArIHN0ZXA7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUhvdXJzKHZhbC50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZU1pbnV0ZXMoc3RlcDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICgoIXRoaXMubWludXRlc1VwRGlzYWJsZWQgJiYgc3RlcCA9PT0gMSkgfHwgKCF0aGlzLm1pbnV0ZXNEb3duRGlzYWJsZWQgJiYgc3RlcCA9PT0gLTEpKSB7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSAoaXNOYU4odGhpcy5taW5zKSA/IDAgOiB0aGlzLm1pbnMpICsgc3RlcDtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTWludXRlcyh2YWwudG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGFuZ2VTZWNvbmRzKHN0ZXA6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoKCF0aGlzLnNlY29uZHNVcERpc2FibGVkICYmIHN0ZXAgPT09IDEpIHx8ICghdGhpcy5zZWNvbmRzRG93bkRpc2FibGVkICYmIHN0ZXAgPT09IC0xKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsID0gKGlzTmFOKHRoaXMuc2VjcykgPyAwIDogdGhpcy5zZWNzKSArIHN0ZXA7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlY29uZHModmFsLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlSG91cnMobmV3VmFsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZW50ZXJlZEhvdXIgPSB0aGlzLnRvSW50ZWdlcihuZXdWYWwpO1xuXG4gICAgICAgIGlmICghaXNOYU4oZW50ZXJlZEhvdXIpKSB7XG4gICAgICAgICAgICB0aGlzLmhvdXJzID0gKGVudGVyZWRIb3VyIDwgMCA/IDI0ICsgZW50ZXJlZEhvdXIgOiBlbnRlcmVkSG91cikgJSAyNDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaG91cnMgPSBOYU47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNhbGxiYWNrRm4odGhpcy5ob3VycywgdGhpcy5taW5zLCB0aGlzLnNlY3MpO1xuXG4gICAgICAgIHRoaXMucHJvcGFnYXRlZFZhbHVlcyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMucHJvcGFnYXRlZFZhbHVlcyxcbiAgICAgICAgICAgIGhvdXJzOiB0aGlzLmhvdXJzLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnByb3BhZ2F0ZWRWYWx1ZXMpO1xuICAgIH1cblxuICAgIHVwZGF0ZU1pbnV0ZXMobmV3VmFsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZW50ZXJlZE1pbiA9IHRoaXMudG9JbnRlZ2VyKG5ld1ZhbCk7XG5cbiAgICAgICAgaWYgKCFpc05hTihlbnRlcmVkTWluKSkge1xuICAgICAgICAgICAgdGhpcy5taW5zID0gZW50ZXJlZE1pbiAlIDYwIDwgMCA/IDYwICsgKGVudGVyZWRNaW4gJSA2MCkgOiBlbnRlcmVkTWluICUgNjA7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZUhvdXJzKE1hdGguZmxvb3IoZW50ZXJlZE1pbiAvIDYwKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1pbnMgPSBOYU47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNhbGxiYWNrRm4odGhpcy5ob3VycywgdGhpcy5taW5zLCB0aGlzLnNlY3MpO1xuXG4gICAgICAgIHRoaXMucHJvcGFnYXRlZFZhbHVlcyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMucHJvcGFnYXRlZFZhbHVlcyxcbiAgICAgICAgICAgIG1pbnM6IHRoaXMubWlucyxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5wcm9wYWdhdGVkVmFsdWVzKTtcbiAgICB9XG5cbiAgICB1cGRhdGVTZWNvbmRzKG5ld1ZhbDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVudGVyZWRTZWMgPSB0aGlzLnRvSW50ZWdlcihuZXdWYWwpO1xuXG4gICAgICAgIGlmICghaXNOYU4oZW50ZXJlZFNlYykpIHtcbiAgICAgICAgICAgIHRoaXMuc2VjcyA9IGVudGVyZWRTZWMgJSA2MCA8IDAgPyA2MCArIChlbnRlcmVkU2VjICUgNjApIDogZW50ZXJlZFNlYyAlIDYwO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VNaW51dGVzKE1hdGguZmxvb3IoZW50ZXJlZFNlYyAvIDYwKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlY3MgPSBOYU47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNhbGxiYWNrRm4odGhpcy5ob3VycywgdGhpcy5taW5zLCB0aGlzLnNlY3MpO1xuXG4gICAgICAgIHRoaXMucHJvcGFnYXRlZFZhbHVlcyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMucHJvcGFnYXRlZFZhbHVlcyxcbiAgICAgICAgICAgIHNlY3M6IHRoaXMuc2VjcyxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnByb3BhZ2F0ZWRWYWx1ZXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBdXRvZmlsbHMgbWlucyBhbmQgc2VjcyB3aXRoIDAwcyBpZiB0aGUgdXNlciB0YWJzIGFmdGVyIGVudGVyaW5nIGhvdXJzIGFuZCBtYXJrcyB0aGUgaW5wdXQgYXMgdG91Y2hlZFxuICAgICAqL1xuICAgIG9uRm9jdXNPdXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9uZUlucHV0SG91cnMgJiYgIXRoaXMub25lSW5wdXRNaW5zICYmICF0aGlzLm9uZUlucHV0U2Vjcykge1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLm9uZUlucHV0SG91cnMpIHtcbiAgICAgICAgICAgICAgICBjYXNlICcwJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmVJbnB1dEhvdXJzID0gJzAwJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnMSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25lSW5wdXRIb3VycyA9ICcwMSc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJzInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uZUlucHV0SG91cnMgPSAnMDInO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub25lSW5wdXRGb3JtQ29udHJvbC5wYXRjaFZhbHVlKGAke3RoaXMub25lSW5wdXRIb3Vyc30gOiAwMCA6IDAwYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQoKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlczogRXVpVGltZVBpY2tlcik6IHZvaWQge1xuICAgICAgICBpZiAoIXZhbHVlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWVzICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHZhbHVlcykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndmFsdWUgbXVzdCBiZSBhbiBFdWlUaW1lUGlja2VyIE9iamVjdCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZXMuaG91cnMgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZXMuaG91cnMgPCAwIHx8IHZhbHVlcy5ob3VycyA+IDIzIHx8IHR5cGVvZiB2YWx1ZXMuaG91cnMgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2hvdXJzIG11c3QgYmUgZGVmaW5lZCBhbmQgYmUgYSBudW1iZXIgd2l0aCByYW5nZSAwLTIzJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlcy5taW5zID09PSB1bmRlZmluZWQgfHwgdmFsdWVzLm1pbnMgPCAwIHx8IHZhbHVlcy5taW5zID4gNTkgfHwgdHlwZW9mIHZhbHVlcy5taW5zICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaW5zIG11c3QgYmUgZGVmaW5lZCBhbmQgYmUgYSBudW1iZXIgd2l0aCByYW5nZSAwLTU5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaGFzU2Vjb25kcyAmJiAodmFsdWVzLnNlY3MgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZXMuc2VjcyA8IDAgfHwgdmFsdWVzLnNlY3MgPiA1OSB8fCB0eXBlb2YgdmFsdWVzLnNlY3MgIT09ICdudW1iZXInKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZWNzIG11c3QgYmUgZGVmaW5lZCBhbmQgYmUgYSBudW1iZXIgd2l0aCByYW5nZSAwLTU5Jyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUhvdXJzKHZhbHVlcy5ob3Vycy50b1N0cmluZygpKTtcbiAgICAgICAgdGhpcy51cGRhdGVNaW51dGVzKHZhbHVlcy5taW5zLnRvU3RyaW5nKCkpO1xuICAgICAgICBpZiAodmFsdWVzLnNlY3MpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2Vjb25kcyh2YWx1ZXMuc2Vjcy50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc09uZUlucHV0RmllbGQpIHtcbiAgICAgICAgICAgIGNvbnN0IGhvdXJzID0gdGhpcy5wYWROdW1iZXIodmFsdWVzLmhvdXJzKTtcbiAgICAgICAgICAgIGNvbnN0IG1pbnMgPSB0aGlzLnBhZE51bWJlcih2YWx1ZXMubWlucyk7XG4gICAgICAgICAgICBjb25zdCBzZWNzID0gdGhpcy5wYWROdW1iZXIodmFsdWVzLnNlY3MpO1xuXG4gICAgICAgICAgICB0aGlzLm9uZUlucHV0Rm9ybUNvbnRyb2wucGF0Y2hWYWx1ZSgnJyArIGhvdXJzICsgJzonICsgbWlucyArICc6JyArIHNlY3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhvdXJzVXBEaXNhYmxlKHN0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaG91cnNVcERpc2FibGVkID0gc3RhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIGhvdXJzRG93bkRpc2FibGUoc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3Vyc0Rvd25EaXNhYmxlZCA9IHN0YXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBtaW51dGVzVXBEaXNhYmxlKHN0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWludXRlc1VwRGlzYWJsZWQgPSBzdGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWludXRlc0Rvd25EaXNhYmxlKHN0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWludXRlc0Rvd25EaXNhYmxlZCA9IHN0YXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWNvbmRzVXBEaXNhYmxlKHN0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2Vjb25kc1VwRGlzYWJsZWQgPSBzdGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2Vjb25kc0Rvd25EaXNhYmxlKHN0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2Vjb25kc0Rvd25EaXNhYmxlZCA9IHN0YXRlO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByaXZhdGUgY2FsbGJhY2tGbjogKGhvdXJzOiBudW1iZXIsIG1pbnM6IG51bWJlciwgc2Vjcz86IG51bWJlcikgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSB0b0ludGVnZXIodmFsdWU6IGFueSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBwYXJzZUludChgJHt2YWx1ZX1gLCAxMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFkcyBsZWFkaW5nIHplcm8gdG8gdGhlIHByb3ZpZGVkIG51bWJlciB3aGVuIGlzT25lSW5wdXRGaWVsZFxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBhZGQgbGVhZGluZyB6ZXJvIHRvXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHBhZE51bWJlcih2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFpc05hTih0aGlzLnRvSW50ZWdlcih2YWx1ZSkpKSB7XG4gICAgICAgICAgICByZXR1cm4gYDAke3ZhbHVlfWAuc2xpY2UoLTIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KTogdm9pZCA9PiB7LyogZW1wdHkgKi99O1xuXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVUb3VjaGVkID0gKCk6IHZvaWQgPT4gey8qIGVtcHR5ICovfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJldWktdGltZXBpY2tlclwiIFtjbGFzcy5ldWktdGltZXBpY2tlci0tY2VudGVyZWRdPVwiaXNEYXRldGltZXBpY2tlclwiIGF0dHIuZGF0YS1lMmU9XCJ7eyBlMmVBdHRyIH19XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT25lSW5wdXRGaWVsZDsgZWxzZSBtdWx0aXBsZUlucHV0c1wiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIFtjbGFzcy5ldWktdGltZXBpY2tlcl9faW5wdXQtLW9uZS1maWVsZF09XCJpc0RhdGV0aW1lcGlja2VyXCJcbiAgICAgICAgICAgIGV1aUlucHV0VGV4dFxuICAgICAgICAgICAgbWFzaz1cInt7IHRpbWVNYXNrIH19XCJcbiAgICAgICAgICAgIFtsZWFkWmVyb0RhdGVUaW1lXT1cInRydWVcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyB0aW1lTWFzayB9fVwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiVGltZSBJbnB1dCBGaWVsZFwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwib25lSW5wdXRGb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgpXCJcbiAgICAgICAgICAgIFtkcm9wU3BlY2lhbENoYXJhY3RlcnNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cImlzcmVhZE9ubHlcIiAvPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNtdWx0aXBsZUlucHV0cz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV1aS10aW1lcGlja2VyX19pbnB1dC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNyZWFkT25seVwiIGNsYXNzPVwiZXVpLXRpbWVwaWNrZXJfX2NoZXZyb24gZXVpLXRpbWVwaWNrZXJfX2hvdXJzLXVwXCI+XG4gICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2Z1xuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlSG91cnMoMSlcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MudGltZS1jb250cm9sLS1kaXNhYmxlZF09XCJob3Vyc1VwRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiZXVpLWNoZXZyb24tdXBcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I9XCJncmV5LTc1XCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkluY3JlYXNlIEhvdXJzXCI+XG4gICAgICAgICAgICAgICAgPC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICNpbnB1dHJlZmhvdXJzXG4gICAgICAgICAgICAgICAgZXVpSW5wdXROdW1iZXJcbiAgICAgICAgICAgICAgICBbbGVhZGluZ1plcm9dPVwiMlwiXG4gICAgICAgICAgICAgICAgW2RpZ2l0c109XCIyXCJcbiAgICAgICAgICAgICAgICBbZnJhY3Rpb25EaWdpdHNdPVwiMFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJldWktdGltZXBpY2tlcl9faW5wdXRcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiSEhcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImhvdXJzXCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVIb3VycygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiaXNyZWFkT25seVwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkhvdXJzXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5BcnJvd1VwKT1cImNoYW5nZUhvdXJzKDEpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uQXJyb3dEb3duKT1cImNoYW5nZUhvdXJzKC0xKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiAvPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpc3JlYWRPbmx5XCIgY2xhc3M9XCJldWktdGltZXBpY2tlcl9fY2hldnJvbiBldWktdGltZXBpY2tlcl9faG91cnMtZG93blwiPlxuICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmdcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZUhvdXJzKC0xKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy50aW1lLWNvbnRyb2wtLWRpc2FibGVkXT1cImhvdXJzRG93bkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImV1aS1jaGV2cm9uLWRvd25cIlxuICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I9XCJncmV5LTc1XCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkRlY3JlYXNlIEhvdXJzXCI+XG4gICAgICAgICAgICAgICAgPC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldWktdGltZXBpY2tlcl9fc3BhY2VyXCI+OjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXRpbWVwaWNrZXJfX2lucHV0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpc3JlYWRPbmx5XCIgY2xhc3M9XCJldWktdGltZXBpY2tlcl9fY2hldnJvbiBldWktdGltZXBpY2tlcl9fbWludXRlcy11cFwiPlxuICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmdcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZU1pbnV0ZXMoMSlcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MudGltZS1jb250cm9sLS1kaXNhYmxlZF09XCJtaW51dGVzVXBEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJldWktY2hldnJvbi11cFwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcj1cImdyZXktNzVcIlxuICAgICAgICAgICAgICAgICAgICBzaXplPVwibFwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiSW5jcmVhc2UgTWludXRlc1wiPlxuICAgICAgICAgICAgICAgIDwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAjaW5wdXRyZWZtaW5zXG4gICAgICAgICAgICAgICAgZXVpSW5wdXROdW1iZXJcbiAgICAgICAgICAgICAgICBbbGVhZGluZ1plcm9dPVwiMlwiXG4gICAgICAgICAgICAgICAgW2RpZ2l0c109XCIyXCJcbiAgICAgICAgICAgICAgICBbZnJhY3Rpb25EaWdpdHNdPVwiMFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJldWktdGltZXBpY2tlcl9faW5wdXRcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTU1cIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm1pbnNcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZU1pbnV0ZXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImlzcmVhZE9ubHlcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJNaW51dGVzXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5BcnJvd1VwKT1cImNoYW5nZU1pbnV0ZXMoMSk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5BcnJvd0Rvd24pPVwiY2hhbmdlTWludXRlcygtMSk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCIgLz5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNyZWFkT25seVwiIGNsYXNzPVwiZXVpLXRpbWVwaWNrZXJfX2NoZXZyb24gZXVpLXRpbWVwaWNrZXJfX21pbnV0ZXMtZG93blwiPlxuICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmdcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZU1pbnV0ZXMoLTEpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnRpbWUtY29udHJvbC0tZGlzYWJsZWRdPVwibWludXRlc0Rvd25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJldWktY2hldnJvbi1kb3duXCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yPVwiZ3JleS03NVwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJsXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJEZWNyZWFzZSBNaW51dGVzXCI+XG4gICAgICAgICAgICAgICAgPC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNTZWNvbmRzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXRpbWVwaWNrZXJfX3NwYWNlclwiPjo8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldWktdGltZXBpY2tlcl9faW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpc3JlYWRPbmx5XCIgY2xhc3M9XCJldWktdGltZXBpY2tlcl9fY2hldnJvbiBldWktdGltZXBpY2tlcl9fc2Vjb25kcy11cFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlU2Vjb25kcygxKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudGltZS1jb250cm9sLS1kaXNhYmxlZF09XCJzZWNvbmRzVXBEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZXVpLWNoZXZyb24tdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yPVwiZ3JleS03NVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibFwiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJJbmNyZWFzZSBzZWNvbmRzXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAjaW5wdXRyZWZzZWNzXG4gICAgICAgICAgICAgICAgICAgIGV1aUlucHV0TnVtYmVyXG4gICAgICAgICAgICAgICAgICAgIFtsZWFkaW5nWmVyb109XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgW2RpZ2l0c109XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZyYWN0aW9uRGlnaXRzXT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS10aW1lcGlja2VyX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU1NcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJzZWNzXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU2Vjb25kcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImlzcmVhZE9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2Vjb25kc1wiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duLkFycm93VXApPVwiY2hhbmdlU2Vjb25kcygxKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5BcnJvd0Rvd24pPVwiY2hhbmdlU2Vjb25kcygtMSk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCIgLz5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzcmVhZE9ubHlcIiBjbGFzcz1cImV1aS10aW1lcGlja2VyX19jaGV2cm9uIGV1aS10aW1lcGlja2VyX19zZWNvbmRzLWRvd25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVNlY29uZHMoLTEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy50aW1lLWNvbnRyb2wtLWRpc2FibGVkXT1cInNlY29uZHNEb3duRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImV1aS1jaGV2cm9uLWRvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yPVwiZ3JleS03NVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibFwiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJEZWNyZWFzZSBzZWNvbmRzXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
330
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRpbWVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLXRpbWVwaWNrZXIvZXVpLXRpbWVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLXRpbWVwaWNrZXIvZXVpLXRpbWVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsSUFBSSxHQUdQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUMsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7Ozs7OztBQVVyRCxNQUFNLE9BQU8sc0JBQXNCO0lBeUIvQixJQUNJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLEtBQW1CO1FBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUdELElBQ0ksZUFBZTtRQUNmLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ2pDLENBQUM7SUFDRCxJQUFJLGVBQWUsQ0FBQyxLQUFtQjtRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUdELElBQ0ksVUFBVTtRQUNWLE9BQU8sSUFBSSxD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QUVEOzs7OztPQUtHO0lBQ0ssU0FBUyxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDL0IsT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2hDO2FBQU07WUFDSCxPQUFPLEVBQUUsQ0FBQztTQUNiO0lBQ0wsQ0FBQztpSUFyVVEsc0JBQXNCLGtCQWdFUCx3QkFBd0I7cUhBaEV2QyxzQkFBc0IsbVhBMkRLLFVBQVUsMkdBQ1gsVUFBVSwyR0FDVixVQUFVLDZCQ3pGakQsK3ZNQXdJQTs7MkZENUdhLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDSSxnQkFBZ0IsaUJBR1gsaUJBQWlCLENBQUMsSUFBSTs7MEJBa0VoQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHdCQUF3Qjs7MEJBQzNDLElBQUk7OzBCQUFJLFFBQVE7eUNBaERaLE9BQU87c0JBQWYsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdGLFVBQVU7c0JBRGIsS0FBSztnQkFVRixlQUFlO3NCQURsQixLQUFLO2dCQVVGLFVBQVU7c0JBRGIsS0FBSztnQkFnQnNELGlCQUFpQjtzQkFBNUUsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNXLGdCQUFnQjtzQkFBMUUsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNZLGdCQUFnQjtzQkFBMUUsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBTZWxmLFxuICAgIERvQ2hlY2ssXG4gICAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBEWU5BTUlDX0NPTVBPTkVOVF9DT05GSUcgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgRXVpRGF0ZVRpbWVQaWNrZXJDb25maWcgfSBmcm9tICcuL21vZGVscy9ldWktZGF0ZS10aW1lLXBpY2tlci5jb25maWcubW9kZWwnO1xuaW1wb3J0IHsgRXVpVGltZVBpY2tlciB9IGZyb20gJy4vbW9kZWxzL2V1aS10aW1lcGlja2VyLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktdGltZXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V1aS10aW1lcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHlsZXMvX2luZGV4LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlUaW1lcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgRG9DaGVjaywgT25EZXN0cm95IHtcbiAgICBob3VyczogbnVtYmVyO1xuICAgIG1pbnM6IG51bWJlcjtcbiAgICBzZWNzOiBudW1iZXI7XG4gICAgaXNEYXRldGltZXBpY2tlcjogYm9vbGVhbjtcbiAgICBvbmVJbnB1dEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gICAgb25lSW5wdXRIb3Vyczogc3RyaW5nO1xuICAgIG9uZUlucHV0TWluczogc3RyaW5nO1xuICAgIG9uZUlucHV0U2Vjczogc3RyaW5nO1xuXG4gICAgcHVibGljIGhvdXJzVXBEaXNhYmxlZCA9IGZhbHNlO1xuICAgIHB1YmxpYyBob3Vyc0Rvd25EaXNhYmxlZCA9IGZhbHNlO1xuICAgIHB1YmxpYyBtaW51dGVzVXBEaXNhYmxlZCA9IGZhbHNlO1xuICAgIHB1YmxpYyBtaW51dGVzRG93bkRpc2FibGVkID0gZmFsc2U7XG4gICAgcHVibGljIHNlY29uZHNVcERpc2FibGVkID0gZmFsc2U7XG4gICAgcHVibGljIHNlY29uZHNEb3duRGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGUyZUF0dHIgPSAnZXVpLXRpbWVwaWNrZXInO1xuXG4gICAgQElucHV0KCkgdGltZU1hc2sgPSAnSGg6bTAnXG5cbiAgICBASW5wdXQoKSBzdGVwSG91cnMgPSAxO1xuICAgIEBJbnB1dCgpIHN0ZXBNaW51dGVzID0gMTtcbiAgICBASW5wdXQoKSBzdGVwU2Vjb25kcyA9IDE7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBpc3JlYWRPbmx5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNyZWFkT25seTtcbiAgICB9XG4gICAgc2V0IGlzcmVhZE9ubHkodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc3JlYWRPbmx5ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNyZWFkT25seSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNPbmVJbnB1dEZpZWxkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNPbmVJbnB1dEZpZWxkO1xuICAgIH1cbiAgICBzZXQgaXNPbmVJbnB1dEZpZWxkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNPbmVJbnB1dEZpZWxkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNPbmVJbnB1dEZpZWxkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBoYXNTZWNvbmRzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzU2Vjb25kcztcbiAgICB9XG4gICAgc2V0IGhhc1NlY29uZHModmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9oYXNTZWNvbmRzID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaGFzU2Vjb25kcyA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVkVmFsdWVzOiBFdWlUaW1lUGlja2VyID0ge1xuICAgICAgICBob3VyczogbnVsbCxcbiAgICAgICAgbWluczogbnVsbCxcbiAgICAgICAgc2VjczogdGhpcy5oYXNTZWNvbmRzID8gbnVsbCA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICAgIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRyZWZob3VycycsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBwcm90ZWN0ZWQgaW5wdXRIb3Vyc0VsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnaW5wdXRyZWZtaW5zJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIHByb3RlY3RlZCBpbnB1dE1pbnNFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ2lucHV0cmVmc2VjcycsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBwcm90ZWN0ZWQgaW5wdXRTZWNzRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERZTkFNSUNfQ09NUE9ORU5UX0NPTkZJRykgY29uZmlnOiBFdWlEYXRlVGltZVBpY2tlckNvbmZpZyxcbiAgICAgICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2w6IE5nQ29udHJvbCxcbiAgICApIHtcbiAgICAgICAgdGhpcy5ob3VycyA9IGNvbmZpZz8uaG91cnMgfHwgMDtcbiAgICAgICAgdGhpcy5taW5zID0gY29uZmlnPy5taW5zIHx8IDA7XG4gICAgICAgIHRoaXMuc2VjcyA9IGNvbmZpZz8uc2VjcyB8fCAwO1xuICAgICAgICB0aGlzLmlzRGF0ZXRpbWVwaWNrZXIgPSBjb25maWc/LmlzRGF0ZXRpbWVwaWNrZXI7XG4gICAgICAgIHRoaXMuaGFzU2Vjb25kcyA9IGNvbmZpZz8uaGFzU2Vjb25kcztcbiAgICAgICAgdGhpcy5pc09uZUlucHV0RmllbGQgPSBjb25maWc/LmlzT25lSW5wdXRGaWVsZDtcbiAgICAgICAgdGhpcy5zdGVwSG91cnMgPSBjb25maWc/LnN0ZXBIb3VycztcbiAgICAgICAgdGhpcy5zdGVwTWludXRlcyA9IGNvbmZpZz8uc3RlcE1pbnV0ZXM7XG4gICAgICAgIHRoaXMuc3RlcFNlY29uZHMgPSBjb25maWc/LnN0ZXBTZWNvbmRzO1xuICAgICAgICBjb25zdCBob3VycyA9IHRoaXMuaG91cnMgPT09IDAgfHwgbnVsbCA/ICcwMCcgOiB0aGlzLmhvdXJzO1xuICAgICAgICBjb25zdCBtaW5zID0gdGhpcy5taW5zID09PSAwIHx8IG51bGwgPyAnMDAnIDogdGhpcy5taW5zO1xuICAgICAgICBjb25zdCBzZWNzID0gdGhpcy5zZWNzID09PSAwIHx8IG51bGwgPyAnMDAnIDogdGhpcy5zZWNzO1xuICAgICAgICB0aGlzLm9uZUlucHV0Rm9ybUNvbnRyb2wuc2V0VmFsdWUoJycgKyBob3VycyArICc6JyArIG1pbnMgKyAnOicgKyBzZWNzKTtcbiAgICAgICAgdGhpcy5jYWxsYmFja0ZuID0gY29uZmlnPy5jYWxsYmFja0ZuIHx8IHRoaXMuY2FsbGJhY2tGbjtcblxuICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzU2Vjb25kcykge1xuICAgICAgICAgICAgdGhpcy50aW1lTWFzayA9ICdIaDptMDpzMCc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uZUlucHV0Rm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAvLyBzcGxpdHMgdGhlIGVudGVyZWQgdGltZSBpbnRvIDMgcGFydHMgYmFzZWQgb24gdGhlIDogYW5kIHByb3BhZ2F0ZXMgYmFjayB0aGUgY29ycmVzcG9uZGluZyBwYXJ0c1xuICAgICAgICAgICAgY29uc3QgdGltZUFycmF5ID0gdmFsdWUuc3BsaXQoJzonKTtcbiAgICAgICAgICAgIHRoaXMub25lSW5wdXRIb3VycyA9IHRpbWVBcnJheVswXTtcbiAgICAgICAgICAgIHRoaXMub25lSW5wdXRNaW5zID0gdGltZUFycmF5WzFdO1xuICAgICAgICAgICAgdGhpcy5vbmVJbnB1dFNlY3MgPSB0aW1lQXJyYXlbMl07XG4gICAgICAgICAgICBjb25zdCBzcGxpdHRlZGhvdXJzID0gdmFsdWUgIT09ICcnID8gTnVtYmVyKHRoaXMub25lSW5wdXRIb3VycykgOiBudWxsO1xuICAgICAgICAgICAgY29uc3Qgc3BsaXR0ZWRtaW5zID0gdmFsdWUgIT09ICcnID8gTnVtYmVyKHRoaXMub25lSW5wdXRNaW5zKSA6IG51bGw7XG4gICAgICAgICAgICBjb25zdCBzcGxpdHRlZHNlY3MgPSB2YWx1ZSAhPT0gJycgPyBOdW1iZXIodGhpcy5vbmVJbnB1dFNlY3MpIDogbnVsbDtcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc1NlY29uZHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZWRWYWx1ZXMgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMucHJvcGFnYXRlZFZhbHVlcyxcbiAgICAgICAgICAgICAgICAgICAgaG91cnM6IHNwbGl0dGVkaG91cnMsXG4gICAgICAgICAgICAgICAgICAgIG1pbnM6IHNwbGl0dGVkbWlucyxcbiAgICAgICAgICAgICAgICAgICAgc2Vjczogc3BsaXR0ZWRzZWNzLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsYmFja0ZuKHNwbGl0dGVkaG91cnMsIHNwbGl0dGVkbWlucywgc3BsaXR0ZWRzZWNzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVkVmFsdWVzID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnByb3BhZ2F0ZWRWYWx1ZXMsXG4gICAgICAgICAgICAgICAgICAgIGhvdXJzOiBzcGxpdHRlZGhvdXJzLFxuICAgICAgICAgICAgICAgICAgICBtaW5zOiBzcGxpdHRlZG1pbnMsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxiYWNrRm4oc3BsaXR0ZWRob3Vycywgc3BsaXR0ZWRtaW5zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzcGxpdHRlZGhvdXJzID09PSBudWxsICYmIHNwbGl0dGVkbWlucyA9PT0gbnVsbCAmJiBzcGxpdHRlZHNlY3MgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShudWxsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5wcm9wYWdhdGVkVmFsdWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICAvLyBtYXJrcyB0aGUgaW5wdXQgY29udHJvbCBhcyB0b3VjaGVkL2ludmFsaWQgaWYgdGhlIGZvcm0gY29udHJvbCBpcyB0b3VjaGVkL2ludmFsaWRcbiAgICAgICAgICAgIHRoaXMuY29udHJvbD8udG91Y2hlZCA/IHRoaXMub25lSW5wdXRGb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCkgOiB0aGlzLm9uZUlucHV0Rm9ybUNvbnRyb2wubWFya0FzVW50b3VjaGVkKCk7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2w/LmludmFsaWQgPyB0aGlzLm9uZUlucHV0Rm9ybUNvbnRyb2wuc2V0RXJyb3JzKHRoaXMuY29udHJvbC5lcnJvcnMpIDogdGhpcy5vbmVJbnB1dEZvcm1Db250cm9sLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VIb3VycyhzdGVwOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmhvdXJzVXBEaXNhYmxlZCB8fCAhdGhpcy5ob3Vyc0Rvd25EaXNhYmxlZCkge1xuICAgICAgICAgICAgY29uc3QgdmFsID0gKGlzTmFOKHRoaXMuaG91cnMpID8gMCA6IHRoaXMuaG91cnMpICsgc3RlcDtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSG91cnModmFsLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hhbmdlTWludXRlcyhzdGVwOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm1pbnV0ZXNVcERpc2FibGVkIHx8ICF0aGlzLm1pbnV0ZXNEb3duRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IChpc05hTih0aGlzLm1pbnMpID8gMCA6IHRoaXMubWlucykgKyBzdGVwO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVNaW51dGVzKHZhbC50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZVNlY29uZHMoc3RlcDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zZWNvbmRzVXBEaXNhYmxlZCB8fCAhdGhpcy5zZWNvbmRzRG93bkRpc2FibGVkKSB7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSAoaXNOYU4odGhpcy5zZWNzKSA/IDAgOiB0aGlzLnNlY3MpICsgc3RlcDtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2Vjb25kcyh2YWwudG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVIb3VycyhuZXdWYWw6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbnRlcmVkSG91ciA9IHRoaXMudG9JbnRlZ2VyKG5ld1ZhbCk7XG5cbiAgICAgICAgaWYgKCFpc05hTihlbnRlcmVkSG91cikpIHtcbiAgICAgICAgICAgIHRoaXMuaG91cnMgPSAoZW50ZXJlZEhvdXIgPCAwID8gMjQgKyBlbnRlcmVkSG91ciA6IGVudGVyZWRIb3VyKSAlIDI0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ob3VycyA9IE5hTjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2FsbGJhY2tGbih0aGlzLmhvdXJzLCB0aGlzLm1pbnMsIHRoaXMuc2Vjcyk7XG5cbiAgICAgICAgdGhpcy5wcm9wYWdhdGVkVmFsdWVzID0ge1xuICAgICAgICAgICAgLi4udGhpcy5wcm9wYWdhdGVkVmFsdWVzLFxuICAgICAgICAgICAgaG91cnM6IHRoaXMuaG91cnMsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMucHJvcGFnYXRlZFZhbHVlcyk7XG4gICAgfVxuXG4gICAgdXBkYXRlTWludXRlcyhuZXdWYWw6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbnRlcmVkTWluID0gdGhpcy50b0ludGVnZXIobmV3VmFsKTtcblxuICAgICAgICBpZiAoIWlzTmFOKGVudGVyZWRNaW4pKSB7XG4gICAgICAgICAgICB0aGlzLm1pbnMgPSBlbnRlcmVkTWluICUgNjAgPCAwID8gNjAgKyAoZW50ZXJlZE1pbiAlIDYwKSA6IGVudGVyZWRNaW4gJSA2MDtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlSG91cnMoTWF0aC5mbG9vcihlbnRlcmVkTWluIC8gNjApKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubWlucyA9IE5hTjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2FsbGJhY2tGbih0aGlzLmhvdXJzLCB0aGlzLm1pbnMsIHRoaXMuc2Vjcyk7XG5cbiAgICAgICAgdGhpcy5wcm9wYWdhdGVkVmFsdWVzID0ge1xuICAgICAgICAgICAgLi4udGhpcy5wcm9wYWdhdGVkVmFsdWVzLFxuICAgICAgICAgICAgbWluczogdGhpcy5taW5zLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnByb3BhZ2F0ZWRWYWx1ZXMpO1xuICAgIH1cblxuICAgIHVwZGF0ZVNlY29uZHMobmV3VmFsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZW50ZXJlZFNlYyA9IHRoaXMudG9JbnRlZ2VyKG5ld1ZhbCk7XG5cbiAgICAgICAgaWYgKCFpc05hTihlbnRlcmVkU2VjKSkge1xuICAgICAgICAgICAgdGhpcy5zZWNzID0gZW50ZXJlZFNlYyAlIDYwIDwgMCA/IDYwICsgKGVudGVyZWRTZWMgJSA2MCkgOiBlbnRlcmVkU2VjICUgNjA7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZU1pbnV0ZXMoTWF0aC5mbG9vcihlbnRlcmVkU2VjIC8gNjApKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VjcyA9IE5hTjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2FsbGJhY2tGbih0aGlzLmhvdXJzLCB0aGlzLm1pbnMsIHRoaXMuc2Vjcyk7XG5cbiAgICAgICAgdGhpcy5wcm9wYWdhdGVkVmFsdWVzID0ge1xuICAgICAgICAgICAgLi4udGhpcy5wcm9wYWdhdGVkVmFsdWVzLFxuICAgICAgICAgICAgc2VjczogdGhpcy5zZWNzLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMucHJvcGFnYXRlZFZhbHVlcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEF1dG9maWxscyBtaW5zIGFuZCBzZWNzIHdpdGggMDBzIGlmIHRoZSB1c2VyIHRhYnMgYWZ0ZXIgZW50ZXJpbmcgaG91cnMgYW5kIG1hcmtzIHRoZSBpbnB1dCBhcyB0b3VjaGVkXG4gICAgICovXG4gICAgb25Gb2N1c091dCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub25lSW5wdXRIb3VycyAmJiAhdGhpcy5vbmVJbnB1dE1pbnMgJiYgIXRoaXMub25lSW5wdXRTZWNzKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMub25lSW5wdXRIb3Vycykge1xuICAgICAgICAgICAgICAgIGNhc2UgJzAnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uZUlucHV0SG91cnMgPSAnMDAnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICcxJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmVJbnB1dEhvdXJzID0gJzAxJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnMic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25lSW5wdXRIb3VycyA9ICcwMic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vbmVJbnB1dEZvcm1Db250cm9sLnBhdGNoVmFsdWUoYCR7dGhpcy5vbmVJbnB1dEhvdXJzfSA6IDAwIDogMDBgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJvcGFnYXRlVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWVzOiBFdWlUaW1lUGlja2VyKTogdm9pZCB7XG4gICAgICAgIGlmICghdmFsdWVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZXMgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkodmFsdWVzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd2YWx1ZSBtdXN0IGJlIGFuIEV1aVRpbWVQaWNrZXIgT2JqZWN0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlcy5ob3VycyA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlcy5ob3VycyA8IDAgfHwgdmFsdWVzLmhvdXJzID4gMjMgfHwgdHlwZW9mIHZhbHVlcy5ob3VycyAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaG91cnMgbXVzdCBiZSBkZWZpbmVkIGFuZCBiZSBhIG51bWJlciB3aXRoIHJhbmdlIDAtMjMnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWVzLm1pbnMgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZXMubWlucyA8IDAgfHwgdmFsdWVzLm1pbnMgPiA1OSB8fCB0eXBlb2YgdmFsdWVzLm1pbnMgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pbnMgbXVzdCBiZSBkZWZpbmVkIGFuZCBiZSBhIG51bWJlciB3aXRoIHJhbmdlIDAtNTknKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5oYXNTZWNvbmRzICYmICh2YWx1ZXMuc2VjcyA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlcy5zZWNzIDwgMCB8fCB2YWx1ZXMuc2VjcyA+IDU5IHx8IHR5cGVvZiB2YWx1ZXMuc2VjcyAhPT0gJ251bWJlcicpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3NlY3MgbXVzdCBiZSBkZWZpbmVkIGFuZCBiZSBhIG51bWJlciB3aXRoIHJhbmdlIDAtNTknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlSG91cnModmFsdWVzLmhvdXJzLnRvU3RyaW5nKCkpO1xuICAgICAgICB0aGlzLnVwZGF0ZU1pbnV0ZXModmFsdWVzLm1pbnMudG9TdHJpbmcoKSk7XG4gICAgICAgIGlmICh2YWx1ZXMuc2Vjcykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTZWNvbmRzKHZhbHVlcy5zZWNzLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzT25lSW5wdXRGaWVsZCkge1xuICAgICAgICAgICAgY29uc3QgaG91cnMgPSB0aGlzLnBhZE51bWJlcih2YWx1ZXMuaG91cnMpO1xuICAgICAgICAgICAgY29uc3QgbWlucyA9IHRoaXMucGFkTnVtYmVyKHZhbHVlcy5taW5zKTtcbiAgICAgICAgICAgIGNvbnN0IHNlY3MgPSB0aGlzLnBhZE51bWJlcih2YWx1ZXMuc2Vjcyk7XG5cbiAgICAgICAgICAgIHRoaXMub25lSW5wdXRGb3JtQ29udHJvbC5wYXRjaFZhbHVlKCcnICsgaG91cnMgKyAnOicgKyBtaW5zICsgJzonICsgc2Vjcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaG91cnNVcERpc2FibGUoc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3Vyc1VwRGlzYWJsZWQgPSBzdGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaG91cnNEb3duRGlzYWJsZShzdGF0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmhvdXJzRG93bkRpc2FibGVkID0gc3RhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIG1pbnV0ZXNVcERpc2FibGUoc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5taW51dGVzVXBEaXNhYmxlZCA9IHN0YXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBtaW51dGVzRG93bkRpc2FibGUoc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5taW51dGVzRG93bkRpc2FibGVkID0gc3RhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIHNlY29uZHNVcERpc2FibGUoc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWNvbmRzVXBEaXNhYmxlZCA9IHN0YXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWNvbmRzRG93bkRpc2FibGUoc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWNvbmRzRG93bkRpc2FibGVkID0gc3RhdGU7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBjYWxsYmFja0ZuOiAoaG91cnM6IG51bWJlciwgbWluczogbnVtYmVyLCBzZWNzPzogbnVtYmVyKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIHRvSW50ZWdlcih2YWx1ZTogYW55KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KGAke3ZhbHVlfWAsIDEwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYWRzIGxlYWRpbmcgemVybyB0byB0aGUgcHJvdmlkZWQgbnVtYmVyIHdoZW4gaXNPbmVJbnB1dEZpZWxkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGFkZCBsZWFkaW5nIHplcm8gdG9cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgcGFkTnVtYmVyKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWlzTmFOKHRoaXMudG9JbnRlZ2VyKHZhbHVlKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBgMCR7dmFsdWV9YC5zbGljZSgtMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpOiB2b2lkID0+IHsvKiBlbXB0eSAqL307XG5cbiAgICBwcml2YXRlIHByb3BhZ2F0ZVRvdWNoZWQgPSAoKTogdm9pZCA9PiB7LyogZW1wdHkgKi99O1xufVxuIiwiPGRpdiBjbGFzcz1cImV1aS10aW1lcGlja2VyXCIgW2NsYXNzLmV1aS10aW1lcGlja2VyLS1jZW50ZXJlZF09XCJpc0RhdGV0aW1lcGlja2VyXCIgYXR0ci5kYXRhLWUyZT1cInt7IGUyZUF0dHIgfX1cIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPbmVJbnB1dEZpZWxkOyBlbHNlIG11bHRpcGxlSW5wdXRzXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgW2NsYXNzLmV1aS10aW1lcGlja2VyX19pbnB1dC0tb25lLWZpZWxkXT1cImlzRGF0ZXRpbWVwaWNrZXJcIlxuICAgICAgICAgICAgZXVpSW5wdXRUZXh0XG4gICAgICAgICAgICBtYXNrPVwie3sgdGltZU1hc2sgfX1cIlxuICAgICAgICAgICAgW2xlYWRaZXJvRGF0ZVRpbWVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHRpbWVNYXNrIH19XCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJUaW1lIElucHV0IEZpZWxkXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJvbmVJbnB1dEZvcm1Db250cm9sXCJcbiAgICAgICAgICAgIChmb2N1c291dCk9XCJvbkZvY3VzT3V0KClcIlxuICAgICAgICAgICAgW2Ryb3BTcGVjaWFsQ2hhcmFjdGVyc109XCJmYWxzZVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwiaXNyZWFkT25seVwiIC8+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI211bHRpcGxlSW5wdXRzPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXRpbWVwaWNrZXJfX2lucHV0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpc3JlYWRPbmx5XCIgY2xhc3M9XCJldWktdGltZXBpY2tlcl9fY2hldnJvbiBldWktdGltZXBpY2tlcl9faG91cnMtdXBcIj5cbiAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VIb3VycyhzdGVwSG91cnMpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnRpbWUtY29udHJvbC0tZGlzYWJsZWRdPVwiaG91cnNVcERpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImV1aS1jaGV2cm9uLXVwXCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yPVwiZ3JleS03NVwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJsXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJJbmNyZWFzZSBIb3Vyc1wiPlxuICAgICAgICAgICAgICAgIDwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAjaW5wdXRyZWZob3Vyc1xuICAgICAgICAgICAgICAgIGV1aUlucHV0TnVtYmVyXG4gICAgICAgICAgICAgICAgW2xlYWRpbmdaZXJvXT1cIjJcIlxuICAgICAgICAgICAgICAgIFtkaWdpdHNdPVwiMlwiXG4gICAgICAgICAgICAgICAgW2ZyYWN0aW9uRGlnaXRzXT1cIjBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLXRpbWVwaWNrZXJfX2lucHV0XCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkhIXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJob3Vyc1wiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlSG91cnMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImlzcmVhZE9ubHlcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJIb3Vyc1wiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uQXJyb3dVcCk9XCJjaGFuZ2VIb3VycyhzdGVwSG91cnMpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uQXJyb3dEb3duKT1cImNoYW5nZUhvdXJzKC1zdGVwSG91cnMpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiIC8+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzcmVhZE9ubHlcIiBjbGFzcz1cImV1aS10aW1lcGlja2VyX19jaGV2cm9uIGV1aS10aW1lcGlja2VyX19ob3Vycy1kb3duXCI+XG4gICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2Z1xuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlSG91cnMoLXN0ZXBIb3VycylcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MudGltZS1jb250cm9sLS1kaXNhYmxlZF09XCJob3Vyc0Rvd25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJldWktY2hldnJvbi1kb3duXCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yPVwiZ3JleS03NVwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJsXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJEZWNyZWFzZSBIb3Vyc1wiPlxuICAgICAgICAgICAgICAgIDwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXRpbWVwaWNrZXJfX3NwYWNlclwiPjo8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV1aS10aW1lcGlja2VyX19pbnB1dC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNyZWFkT25seVwiIGNsYXNzPVwiZXVpLXRpbWVwaWNrZXJfX2NoZXZyb24gZXVpLXRpbWVwaWNrZXJfX21pbnV0ZXMtdXBcIj5cbiAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VNaW51dGVzKHN0ZXBNaW51dGVzKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy50aW1lLWNvbnRyb2wtLWRpc2FibGVkXT1cIm1pbnV0ZXNVcERpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImV1aS1jaGV2cm9uLXVwXCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yPVwiZ3JleS03NVwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJsXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJJbmNyZWFzZSBNaW51dGVzXCI+XG4gICAgICAgICAgICAgICAgPC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICNpbnB1dHJlZm1pbnNcbiAgICAgICAgICAgICAgICBldWlJbnB1dE51bWJlclxuICAgICAgICAgICAgICAgIFtsZWFkaW5nWmVyb109XCIyXCJcbiAgICAgICAgICAgICAgICBbZGlnaXRzXT1cIjJcIlxuICAgICAgICAgICAgICAgIFtmcmFjdGlvbkRpZ2l0c109XCIwXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS10aW1lcGlja2VyX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJNTVwiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxdPVwibWluc1wiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlTWludXRlcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiaXNyZWFkT25seVwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk1pbnV0ZXNcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLkFycm93VXApPVwiY2hhbmdlTWludXRlcyhzdGVwTWludXRlcyk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5BcnJvd0Rvd24pPVwiY2hhbmdlTWludXRlcygtc3RlcE1pbnV0ZXMpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiIC8+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzcmVhZE9ubHlcIiBjbGFzcz1cImV1aS10aW1lcGlja2VyX19jaGV2cm9uIGV1aS10aW1lcGlja2VyX19taW51dGVzLWRvd25cIj5cbiAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VNaW51dGVzKC1zdGVwTWludXRlcylcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MudGltZS1jb250cm9sLS1kaXNhYmxlZF09XCJtaW51dGVzRG93bkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImV1aS1jaGV2cm9uLWRvd25cIlxuICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I9XCJncmV5LTc1XCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkRlY3JlYXNlIE1pbnV0ZXNcIj5cbiAgICAgICAgICAgICAgICA8L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1NlY29uZHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldWktdGltZXBpY2tlcl9fc3BhY2VyXCI+OjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV1aS10aW1lcGlja2VyX19pbnB1dC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzcmVhZE9ubHlcIiBjbGFzcz1cImV1aS10aW1lcGlja2VyX19jaGV2cm9uIGV1aS10aW1lcGlja2VyX19zZWNvbmRzLXVwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmdcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VTZWNvbmRzKHN0ZXBTZWNvbmRzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudGltZS1jb250cm9sLS1kaXNhYmxlZF09XCJzZWNvbmRzVXBEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZXVpLWNoZXZyb24tdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yPVwiZ3JleS03NVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibFwiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJJbmNyZWFzZSBzZWNvbmRzXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAjaW5wdXRyZWZzZWNzXG4gICAgICAgICAgICAgICAgICAgIGV1aUlucHV0TnVtYmVyXG4gICAgICAgICAgICAgICAgICAgIFtsZWFkaW5nWmVyb109XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgW2RpZ2l0c109XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZyYWN0aW9uRGlnaXRzXT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS10aW1lcGlja2VyX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU1NcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJzZWNzXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU2Vjb25kcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImlzcmVhZE9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2Vjb25kc1wiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duLkFycm93VXApPVwiY2hhbmdlU2Vjb25kcyhzdGVwU2Vjb25kcyk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uQXJyb3dEb3duKT1cImNoYW5nZVNlY29uZHMoLXN0ZXBTZWNvbmRzKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiAvPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNyZWFkT25seVwiIGNsYXNzPVwiZXVpLXRpbWVwaWNrZXJfX2NoZXZyb24gZXVpLXRpbWVwaWNrZXJfX3NlY29uZHMtZG93blwiPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlU2Vjb25kcygtc3RlcFNlY29uZHMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy50aW1lLWNvbnRyb2wtLWRpc2FibGVkXT1cInNlY29uZHNEb3duRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImV1aS1jaGV2cm9uLWRvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yPVwiZ3JleS03NVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibFwiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJEZWNyZWFzZSBzZWNvbmRzXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWRhdGUtdGltZS1waWNrZXIuY29uZmlnLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZXVpLXRpbWVwaWNrZXIvbW9kZWxzL2V1aS1kYXRlLXRpbWUtcGlja2VyLmNvbmZpZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBFdWlEYXRlVGltZVBpY2tlckNvbmZpZyB7XG4gICAgaG91cnM6IG51bWJlcjtcbiAgICBtaW5zOiBudW1iZXI7XG4gICAgc2Vjcz86IG51bWJlcjtcbiAgICBpc0RhdGV0aW1lcGlja2VyOiBib29sZWFuO1xuICAgIGhhc1NlY29uZHM6IGJvb2xlYW47XG4gICAgaXNPbmVJbnB1dEZpZWxkOiBib29sZWFuO1xuICAgIGNhbGxiYWNrRm46IChob3VyczogbnVtYmVyLCBtaW5zOiBudW1iZXIsIHNlY3M/OiBudW1iZXIpID0+IHZvaWQ7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWRhdGUtdGltZS1waWNrZXIuY29uZmlnLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZXVpLXRpbWVwaWNrZXIvbW9kZWxzL2V1aS1kYXRlLXRpbWUtcGlja2VyLmNvbmZpZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBFdWlEYXRlVGltZVBpY2tlckNvbmZpZyB7XG4gICAgaG91cnM6IG51bWJlcjtcbiAgICBtaW5zOiBudW1iZXI7XG4gICAgc2Vjcz86IG51bWJlcjtcbiAgICBpc0RhdGV0aW1lcGlja2VyOiBib29sZWFuO1xuICAgIGhhc1NlY29uZHM6IGJvb2xlYW47XG4gICAgaXNPbmVJbnB1dEZpZWxkOiBib29sZWFuO1xuICAgIHN0ZXBIb3VyczogbnVtYmVyO1xuICAgIHN0ZXBNaW51dGVzOiBudW1iZXI7XG4gICAgc3RlcFNlY29uZHM6IG51bWJlcjtcbiAgICBjYWxsYmFja0ZuOiAoaG91cnM6IG51bWJlciwgbWluczogbnVtYmVyLCBzZWNzPzogbnVtYmVyKSA9PiB2b2lkO1xufVxuIl19
@@ -16,11 +16,11 @@ export class EuiAppBreadcrumbComponent {
16
16
  return ['eui-app-breadcrumb'].join(' ');
17
17
  }
18
18
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EuiAppBreadcrumbComponent, deps: [{ token: i1.EuiAppShellService }], target: i0.ɵɵFactoryTarget.Component }); }
19
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: EuiAppBreadcrumbComponent, selector: "eui-app-breadcrumb", host: { properties: { "class": "this.cssClasses", "attr.role": "this.role" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".eui-app-breadcrumb{align-items:center;display:flex;flex-direction:row;height:var(--eui-app-breadcrumb-height);top:calc(var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height));position:relative;margin:var(--eui-base-spacing-m) 0 var(--eui-base-spacing-xs) 0;width:100%;z-index:10}@media screen and (max-width: 767px){.eui-app-breadcrumb{visibility:hidden}}\n"], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
19
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: EuiAppBreadcrumbComponent, selector: "eui-app-breadcrumb", host: { properties: { "class": "this.cssClasses", "attr.role": "this.role" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".eui-app-breadcrumb{align-items:center;display:flex;flex-direction:row;height:var(--eui-app-breadcrumb-height);top:calc(var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height));position:relative;margin:var(--eui-base-spacing-m) 0 var(--eui-base-spacing-xs) 0;width:100%}@media screen and (max-width: 767px){.eui-app-breadcrumb{visibility:hidden}}\n"], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
20
20
  }
21
21
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EuiAppBreadcrumbComponent, decorators: [{
22
22
  type: Component,
23
- args: [{ selector: 'eui-app-breadcrumb', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<ng-content></ng-content>\n", styles: [".eui-app-breadcrumb{align-items:center;display:flex;flex-direction:row;height:var(--eui-app-breadcrumb-height);top:calc(var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height));position:relative;margin:var(--eui-base-spacing-m) 0 var(--eui-base-spacing-xs) 0;width:100%;z-index:10}@media screen and (max-width: 767px){.eui-app-breadcrumb{visibility:hidden}}\n"] }]
23
+ args: [{ selector: 'eui-app-breadcrumb', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<ng-content></ng-content>\n", styles: [".eui-app-breadcrumb{align-items:center;display:flex;flex-direction:row;height:var(--eui-app-breadcrumb-height);top:calc(var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height));position:relative;margin:var(--eui-base-spacing-m) 0 var(--eui-base-spacing-xs) 0;width:100%}@media screen and (max-width: 767px){.eui-app-breadcrumb{visibility:hidden}}\n"] }]
24
24
  }], ctorParameters: () => [{ type: i1.EuiAppShellService }], propDecorators: { cssClasses: [{
25
25
  type: HostBinding,
26
26
  args: ['class']
@@ -195,11 +195,11 @@ export class EuiBreadcrumbComponent {
195
195
  }
196
196
  }
197
197
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EuiBreadcrumbComponent, deps: [{ token: i1.EuiAppShellService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i2.ViewportRuler }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
198
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: EuiBreadcrumbComponent, selector: "eui-breadcrumb", host: { properties: { "class": "this.string" } }, queries: [{ propertyName: "breadcrumbItems", predicate: i0.forwardRef(() => EuiBreadcrumbItemComponent) }], viewQueries: [{ propertyName: "vcr", first: true, predicate: ["vcr"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div class=\"eui-breadcrumb__items\">\n <ng-container #vcr>\n <ng-content></ng-content>\n </ng-container>\n</div>\n", styles: [".eui-breadcrumb{align-items:center;display:flex;width:100%;position:relative}.eui-breadcrumb__items{align-items:center;box-sizing:border-box;display:flex;flex-wrap:nowrap;list-style:none;margin:0;padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-m)}.eui-breadcrumb+.eui-breadcrumb-item:before{color:var(--eui-base-color-grey-25);height:1rem;width:1rem;content:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Ctitle%3EChevron Forward%3C/title%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M184 112l144 144-144 144'/%3E%3C/svg%3E\");display:inline-block;padding-left:var(--eui-base-spacing-xs);padding-right:var(--eui-base-spacing-xs)}.cdk-overlay-container .eui-breadcrumb-separator{margin:0 var(--eui-base-spacing-xs) 0 0}@media screen and (max-width: 767px){eui-breadcrumb,.eui-breadcrumb{display:none}}.eui-breadcrumb-item{align-items:center;display:flex;font-size:var(--eui-base-font-size-s);font-weight:700}.eui-breadcrumb-item__separator{align-items:center;display:flex;padding:0 var(--eui-base-spacing-2xs)}.eui-breadcrumb-item .eui-button{background-color:transparent;border:1px solid transparent;font-size:var(--eui-base-font-size-s);font-weight:700;padding:0 var(--eui-base-spacing-2xs) 0 0}.eui-breadcrumb-item .eui-button:hover{background-color:transparent!important}.eui-breadcrumb-item .eui-label{white-space:nowrap;text-decoration:none!important}.eui-breadcrumb-item .eui-label--secondary{color:var(--eui-base-color-grey-75);cursor:none;pointer-events:none}\n"], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
198
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: EuiBreadcrumbComponent, selector: "eui-breadcrumb", host: { properties: { "class": "this.string" } }, queries: [{ propertyName: "breadcrumbItems", predicate: i0.forwardRef(() => EuiBreadcrumbItemComponent) }], viewQueries: [{ propertyName: "vcr", first: true, predicate: ["vcr"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div class=\"eui-breadcrumb__items\">\n <ng-container #vcr>\n <ng-content></ng-content>\n </ng-container>\n</div>\n", styles: [".eui-breadcrumb{align-items:center;display:flex;width:100%;position:relative}.eui-breadcrumb__items{align-items:center;box-sizing:border-box;display:flex;flex-wrap:nowrap;list-style:none;margin:0;padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-m)}.eui-breadcrumb+.eui-breadcrumb-item:before{color:var(--eui-base-color-grey-25);height:1rem;width:1rem;content:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Ctitle%3EChevron Forward%3C/title%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M184 112l144 144-144 144'/%3E%3C/svg%3E\");display:inline-block;padding-left:var(--eui-base-spacing-xs);padding-right:var(--eui-base-spacing-xs)}.cdk-overlay-container .eui-breadcrumb-separator{margin:0 var(--eui-base-spacing-xs) 0 0}@media screen and (max-width: 767px){eui-breadcrumb,.eui-breadcrumb{display:none}}.eui-breadcrumb-item{align-items:center;display:flex;font-size:var(--eui-base-font-size-s);font-weight:700;z-index:9}.eui-breadcrumb-item__separator{align-items:center;display:flex;padding:0 var(--eui-base-spacing-2xs)}.eui-breadcrumb-item .eui-button{background-color:transparent;border:1px solid transparent;font-size:var(--eui-base-font-size-s);font-weight:700;padding:0 var(--eui-base-spacing-2xs) 0 0}.eui-breadcrumb-item .eui-button:hover{background-color:transparent!important}.eui-breadcrumb-item .eui-label{white-space:nowrap;text-decoration:none!important}.eui-breadcrumb-item .eui-label--secondary{color:var(--eui-base-color-grey-75);cursor:none;pointer-events:none}\n"], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
199
199
  }
200
200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EuiBreadcrumbComponent, decorators: [{
201
201
  type: Component,
202
- args: [{ selector: 'eui-breadcrumb', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<div class=\"eui-breadcrumb__items\">\n <ng-container #vcr>\n <ng-content></ng-content>\n </ng-container>\n</div>\n", styles: [".eui-breadcrumb{align-items:center;display:flex;width:100%;position:relative}.eui-breadcrumb__items{align-items:center;box-sizing:border-box;display:flex;flex-wrap:nowrap;list-style:none;margin:0;padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-m)}.eui-breadcrumb+.eui-breadcrumb-item:before{color:var(--eui-base-color-grey-25);height:1rem;width:1rem;content:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Ctitle%3EChevron Forward%3C/title%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M184 112l144 144-144 144'/%3E%3C/svg%3E\");display:inline-block;padding-left:var(--eui-base-spacing-xs);padding-right:var(--eui-base-spacing-xs)}.cdk-overlay-container .eui-breadcrumb-separator{margin:0 var(--eui-base-spacing-xs) 0 0}@media screen and (max-width: 767px){eui-breadcrumb,.eui-breadcrumb{display:none}}.eui-breadcrumb-item{align-items:center;display:flex;font-size:var(--eui-base-font-size-s);font-weight:700}.eui-breadcrumb-item__separator{align-items:center;display:flex;padding:0 var(--eui-base-spacing-2xs)}.eui-breadcrumb-item .eui-button{background-color:transparent;border:1px solid transparent;font-size:var(--eui-base-font-size-s);font-weight:700;padding:0 var(--eui-base-spacing-2xs) 0 0}.eui-breadcrumb-item .eui-button:hover{background-color:transparent!important}.eui-breadcrumb-item .eui-label{white-space:nowrap;text-decoration:none!important}.eui-breadcrumb-item .eui-label--secondary{color:var(--eui-base-color-grey-75);cursor:none;pointer-events:none}\n"] }]
202
+ args: [{ selector: 'eui-breadcrumb', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<div class=\"eui-breadcrumb__items\">\n <ng-container #vcr>\n <ng-content></ng-content>\n </ng-container>\n</div>\n", styles: [".eui-breadcrumb{align-items:center;display:flex;width:100%;position:relative}.eui-breadcrumb__items{align-items:center;box-sizing:border-box;display:flex;flex-wrap:nowrap;list-style:none;margin:0;padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-m)}.eui-breadcrumb+.eui-breadcrumb-item:before{color:var(--eui-base-color-grey-25);height:1rem;width:1rem;content:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Ctitle%3EChevron Forward%3C/title%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M184 112l144 144-144 144'/%3E%3C/svg%3E\");display:inline-block;padding-left:var(--eui-base-spacing-xs);padding-right:var(--eui-base-spacing-xs)}.cdk-overlay-container .eui-breadcrumb-separator{margin:0 var(--eui-base-spacing-xs) 0 0}@media screen and (max-width: 767px){eui-breadcrumb,.eui-breadcrumb{display:none}}.eui-breadcrumb-item{align-items:center;display:flex;font-size:var(--eui-base-font-size-s);font-weight:700;z-index:9}.eui-breadcrumb-item__separator{align-items:center;display:flex;padding:0 var(--eui-base-spacing-2xs)}.eui-breadcrumb-item .eui-button{background-color:transparent;border:1px solid transparent;font-size:var(--eui-base-font-size-s);font-weight:700;padding:0 var(--eui-base-spacing-2xs) 0 0}.eui-breadcrumb-item .eui-button:hover{background-color:transparent!important}.eui-breadcrumb-item .eui-label{white-space:nowrap;text-decoration:none!important}.eui-breadcrumb-item .eui-label--secondary{color:var(--eui-base-color-grey-75);cursor:none;pointer-events:none}\n"] }]
203
203
  }], ctorParameters: () => [{ type: i1.EuiAppShellService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i2.ViewportRuler }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }], propDecorators: { string: [{
204
204
  type: HostBinding,
205
205
  args: ['class']
@@ -67,11 +67,11 @@ export class CollapsedBreadcrumbComponent {
67
67
  return !!this.customButton;
68
68
  }
69
69
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CollapsedBreadcrumbComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
70
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: CollapsedBreadcrumbComponent, selector: "eui-collapsed-breadcrumb", queries: [{ propertyName: "customButton", first: true, predicate: i0.forwardRef(() => CollapsedButtonDirective), descendants: true, static: true }, { propertyName: "listItemComponents", predicate: i0.forwardRef(() => EuiListItemComponent) }], viewQueries: [{ propertyName: "list", first: true, predicate: EuiListComponent, descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<eui-dropdown>\n <!-- render default collapsed button if no custom is provided -->\n <ng-container *ngIf=\"!hasCustomButton()\">\n <button type=\"button\" euiButton euiRounded euiSizeS euiIconButton euiOutline euiAccent>\n <eui-icon-svg icon=\"eui-ellipsis-horizontal\"></eui-icon-svg>\n </button>\n </ng-container>\n <!-- provide customizations for the collapsed button -->\n <ng-content select=\"collapsed-button\"></ng-content>\n <eui-dropdown-content>\n <ul euiList>\n <ng-content></ng-content>\n </ul>\n </eui-dropdown-content>\n</eui-dropdown>\n\n<!-- SAMPLE aligned with Design System\n<eui-dropdown>\n <button type=\"button\" euiButton euiRounded euiIconButton euiBasicButton euiPrimary euiSizeS euiTooltip=\"Other links menu\" [attr.aria-label]=\"'Other links menu'\">\n <eui-icon-svg icon=\"ellipsis-horizontal\" fillColor=\"grey-100\"></eui-icon-svg>\n </button>\n <eui-dropdown-content>\n <ul euiList>\n <li euiListItem>\n <eui-icon-svg icon=\"chevron-forward\" size=\"xs\" fillColor=\"grey-75\"></eui-icon-svg>\n <button type=\"button\" euiSizeXS euiListItem>Item 1</button>\n </li>\n <li euiListItem>\n <eui-icon-svg icon=\"chevron-forward\" size=\"xs\" fillColor=\"grey-75\"></eui-icon-svg>\n <button type=\"button\" euiSizeXS euiListItem>Item 2</button>\n </li>\n </ul>\n </eui-dropdown-content>\n</eui-dropdown>\n-->\n", styles: [".eui-breadcrumb-item{align-items:center;display:flex;font-size:v(eui-base-font-size-s);font-weight:700}.eui-breadcrumb-item__separator{align-items:center;display:flex;padding:0 v(eui-base-spacing-2xs)}.eui-breadcrumb-item .eui-button{background-color:transparent;border:1px solid transparent;font-size:v(eui-base-font-size-s);font-weight:700;padding:0 v(eui-base-spacing-2xs) 0 0}.eui-breadcrumb-item .eui-button:hover{background-color:transparent!important}.eui-breadcrumb-item .eui-label{white-space:nowrap;text-decoration:none!important}.eui-breadcrumb-item .eui-label--secondary{color:v(eui-base-color-grey-75);cursor:none;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i3.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i4.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "isDropDownRightAligned", "isClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover", "hasTabNavigation"] }, { kind: "directive", type: i4.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "component", type: i5.EuiListComponent, selector: "[euiList], eui-list", inputs: ["isCollapsible"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
70
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: CollapsedBreadcrumbComponent, selector: "eui-collapsed-breadcrumb", queries: [{ propertyName: "customButton", first: true, predicate: i0.forwardRef(() => CollapsedButtonDirective), descendants: true, static: true }, { propertyName: "listItemComponents", predicate: i0.forwardRef(() => EuiListItemComponent) }], viewQueries: [{ propertyName: "list", first: true, predicate: EuiListComponent, descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<eui-dropdown>\n <!-- render default collapsed button if no custom is provided -->\n <ng-container *ngIf=\"!hasCustomButton()\">\n <button type=\"button\" euiButton euiRounded euiSizeS euiIconButton euiOutline euiAccent>\n <eui-icon-svg icon=\"eui-ellipsis-horizontal\"></eui-icon-svg>\n </button>\n </ng-container>\n <!-- provide customizations for the collapsed button -->\n <ng-content select=\"collapsed-button\"></ng-content>\n <eui-dropdown-content>\n <ul euiList>\n <ng-content></ng-content>\n </ul>\n </eui-dropdown-content>\n</eui-dropdown>\n\n<!-- SAMPLE aligned with Design System\n<eui-dropdown>\n <button type=\"button\" euiButton euiRounded euiIconButton euiBasicButton euiPrimary euiSizeS euiTooltip=\"Other links menu\" [attr.aria-label]=\"'Other links menu'\">\n <eui-icon-svg icon=\"ellipsis-horizontal\" fillColor=\"grey-100\"></eui-icon-svg>\n </button>\n <eui-dropdown-content>\n <ul euiList>\n <li euiListItem>\n <eui-icon-svg icon=\"chevron-forward\" size=\"xs\" fillColor=\"grey-75\"></eui-icon-svg>\n <button type=\"button\" euiSizeXS euiListItem>Item 1</button>\n </li>\n <li euiListItem>\n <eui-icon-svg icon=\"chevron-forward\" size=\"xs\" fillColor=\"grey-75\"></eui-icon-svg>\n <button type=\"button\" euiSizeXS euiListItem>Item 2</button>\n </li>\n </ul>\n </eui-dropdown-content>\n</eui-dropdown>\n-->\n", styles: [".eui-breadcrumb-item{align-items:center;display:flex;font-size:v(eui-base-font-size-s);font-weight:700;z-index:9}.eui-breadcrumb-item__separator{align-items:center;display:flex;padding:0 v(eui-base-spacing-2xs)}.eui-breadcrumb-item .eui-button{background-color:transparent;border:1px solid transparent;font-size:v(eui-base-font-size-s);font-weight:700;padding:0 v(eui-base-spacing-2xs) 0 0}.eui-breadcrumb-item .eui-button:hover{background-color:transparent!important}.eui-breadcrumb-item .eui-label{white-space:nowrap;text-decoration:none!important}.eui-breadcrumb-item .eui-label--secondary{color:v(eui-base-color-grey-75);cursor:none;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i3.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i4.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "isDropDownRightAligned", "isClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover", "hasTabNavigation"] }, { kind: "directive", type: i4.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "component", type: i5.EuiListComponent, selector: "[euiList], eui-list", inputs: ["isCollapsible"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
71
71
  }
72
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CollapsedBreadcrumbComponent, decorators: [{
73
73
  type: Component,
74
- args: [{ selector: 'eui-collapsed-breadcrumb', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<eui-dropdown>\n <!-- render default collapsed button if no custom is provided -->\n <ng-container *ngIf=\"!hasCustomButton()\">\n <button type=\"button\" euiButton euiRounded euiSizeS euiIconButton euiOutline euiAccent>\n <eui-icon-svg icon=\"eui-ellipsis-horizontal\"></eui-icon-svg>\n </button>\n </ng-container>\n <!-- provide customizations for the collapsed button -->\n <ng-content select=\"collapsed-button\"></ng-content>\n <eui-dropdown-content>\n <ul euiList>\n <ng-content></ng-content>\n </ul>\n </eui-dropdown-content>\n</eui-dropdown>\n\n<!-- SAMPLE aligned with Design System\n<eui-dropdown>\n <button type=\"button\" euiButton euiRounded euiIconButton euiBasicButton euiPrimary euiSizeS euiTooltip=\"Other links menu\" [attr.aria-label]=\"'Other links menu'\">\n <eui-icon-svg icon=\"ellipsis-horizontal\" fillColor=\"grey-100\"></eui-icon-svg>\n </button>\n <eui-dropdown-content>\n <ul euiList>\n <li euiListItem>\n <eui-icon-svg icon=\"chevron-forward\" size=\"xs\" fillColor=\"grey-75\"></eui-icon-svg>\n <button type=\"button\" euiSizeXS euiListItem>Item 1</button>\n </li>\n <li euiListItem>\n <eui-icon-svg icon=\"chevron-forward\" size=\"xs\" fillColor=\"grey-75\"></eui-icon-svg>\n <button type=\"button\" euiSizeXS euiListItem>Item 2</button>\n </li>\n </ul>\n </eui-dropdown-content>\n</eui-dropdown>\n-->\n", styles: [".eui-breadcrumb-item{align-items:center;display:flex;font-size:v(eui-base-font-size-s);font-weight:700}.eui-breadcrumb-item__separator{align-items:center;display:flex;padding:0 v(eui-base-spacing-2xs)}.eui-breadcrumb-item .eui-button{background-color:transparent;border:1px solid transparent;font-size:v(eui-base-font-size-s);font-weight:700;padding:0 v(eui-base-spacing-2xs) 0 0}.eui-breadcrumb-item .eui-button:hover{background-color:transparent!important}.eui-breadcrumb-item .eui-label{white-space:nowrap;text-decoration:none!important}.eui-breadcrumb-item .eui-label--secondary{color:v(eui-base-color-grey-75);cursor:none;pointer-events:none}\n"] }]
74
+ args: [{ selector: 'eui-collapsed-breadcrumb', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<eui-dropdown>\n <!-- render default collapsed button if no custom is provided -->\n <ng-container *ngIf=\"!hasCustomButton()\">\n <button type=\"button\" euiButton euiRounded euiSizeS euiIconButton euiOutline euiAccent>\n <eui-icon-svg icon=\"eui-ellipsis-horizontal\"></eui-icon-svg>\n </button>\n </ng-container>\n <!-- provide customizations for the collapsed button -->\n <ng-content select=\"collapsed-button\"></ng-content>\n <eui-dropdown-content>\n <ul euiList>\n <ng-content></ng-content>\n </ul>\n </eui-dropdown-content>\n</eui-dropdown>\n\n<!-- SAMPLE aligned with Design System\n<eui-dropdown>\n <button type=\"button\" euiButton euiRounded euiIconButton euiBasicButton euiPrimary euiSizeS euiTooltip=\"Other links menu\" [attr.aria-label]=\"'Other links menu'\">\n <eui-icon-svg icon=\"ellipsis-horizontal\" fillColor=\"grey-100\"></eui-icon-svg>\n </button>\n <eui-dropdown-content>\n <ul euiList>\n <li euiListItem>\n <eui-icon-svg icon=\"chevron-forward\" size=\"xs\" fillColor=\"grey-75\"></eui-icon-svg>\n <button type=\"button\" euiSizeXS euiListItem>Item 1</button>\n </li>\n <li euiListItem>\n <eui-icon-svg icon=\"chevron-forward\" size=\"xs\" fillColor=\"grey-75\"></eui-icon-svg>\n <button type=\"button\" euiSizeXS euiListItem>Item 2</button>\n </li>\n </ul>\n </eui-dropdown-content>\n</eui-dropdown>\n-->\n", styles: [".eui-breadcrumb-item{align-items:center;display:flex;font-size:v(eui-base-font-size-s);font-weight:700;z-index:9}.eui-breadcrumb-item__separator{align-items:center;display:flex;padding:0 v(eui-base-spacing-2xs)}.eui-breadcrumb-item .eui-button{background-color:transparent;border:1px solid transparent;font-size:v(eui-base-font-size-s);font-weight:700;padding:0 v(eui-base-spacing-2xs) 0 0}.eui-breadcrumb-item .eui-button:hover{background-color:transparent!important}.eui-breadcrumb-item .eui-label{white-space:nowrap;text-decoration:none!important}.eui-breadcrumb-item .eui-label--secondary{color:v(eui-base-color-grey-75);cursor:none;pointer-events:none}\n"] }]
75
75
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }], propDecorators: { customButton: [{
76
76
  type: ContentChild,
77
77
  args: [forwardRef(() => CollapsedButtonDirective), { static: true }]
@@ -98,11 +98,11 @@ export class EuiBreadcrumbItemComponent {
98
98
  return !this.nextCrumb;
99
99
  }
100
100
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EuiBreadcrumbItemComponent, deps: [{ token: i0.ElementRef }, { token: i1.Router }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i2.LogService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
101
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: EuiBreadcrumbItemComponent, selector: "eui-breadcrumb-item", inputs: { id: "id", label: "label", link: "link", navigationExtras: "navigationExtras" }, host: { properties: { "class": "this.string" } }, ngImport: i0, template: "<!-- render the separator if should have one -->\n<div *ngIf=\"hasPrevious\" class=\"eui-breadcrumb-item__separator\">\n <eui-icon-svg icon=\"eui-chevron-forward\" size=\"xs\" fillColor=\"grey-100\"></eui-icon-svg>\n</div>\n<button type=\"button\" *ngIf=\"link\" euiButton euiBasicButton euiSizeS [euiSecondary]=\"!hasNext\" [euiPrimary]=\"hasNext\" (click)=\"onClick()\">\n {{ label }}\n</button>\n<span *ngIf=\"!link\" euiLabel euiSizeS [euiSecondary]=\"!hasNext\" [euiPrimary]=\"hasNext\">{{ label }}</span>\n", styles: [".eui-breadcrumb{align-items:center;display:flex;width:100%;position:relative}.eui-breadcrumb__items{align-items:center;box-sizing:border-box;display:flex;flex-wrap:nowrap;list-style:none;margin:0;padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-m)}.eui-breadcrumb+.eui-breadcrumb-item:before{color:var(--eui-base-color-grey-25);height:1rem;width:1rem;content:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Ctitle%3EChevron Forward%3C/title%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M184 112l144 144-144 144'/%3E%3C/svg%3E\");display:inline-block;padding-left:var(--eui-base-spacing-xs);padding-right:var(--eui-base-spacing-xs)}.cdk-overlay-container .eui-breadcrumb-separator{margin:0 var(--eui-base-spacing-xs) 0 0}@media screen and (max-width: 767px){eui-breadcrumb,.eui-breadcrumb{display:none}}.eui-breadcrumb-item{align-items:center;display:flex;font-size:var(--eui-base-font-size-s);font-weight:700}.eui-breadcrumb-item__separator{align-items:center;display:flex;padding:0 var(--eui-base-spacing-2xs)}.eui-breadcrumb-item .eui-button{background-color:transparent;border:1px solid transparent;font-size:var(--eui-base-font-size-s);font-weight:700;padding:0 var(--eui-base-spacing-2xs) 0 0}.eui-breadcrumb-item .eui-button:hover{background-color:transparent!important}.eui-breadcrumb-item .eui-label{white-space:nowrap;text-decoration:none!important}.eui-breadcrumb-item .eui-label--secondary{color:var(--eui-base-color-grey-75);cursor:none;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i5.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i6.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
101
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: EuiBreadcrumbItemComponent, selector: "eui-breadcrumb-item", inputs: { id: "id", label: "label", link: "link", navigationExtras: "navigationExtras" }, host: { properties: { "class": "this.string" } }, ngImport: i0, template: "<!-- render the separator if should have one -->\n<div *ngIf=\"hasPrevious\" class=\"eui-breadcrumb-item__separator\">\n <eui-icon-svg icon=\"eui-chevron-forward\" size=\"xs\" fillColor=\"grey-100\"></eui-icon-svg>\n</div>\n<button type=\"button\" *ngIf=\"link\" euiButton euiBasicButton euiSizeS [euiSecondary]=\"!hasNext\" [euiPrimary]=\"hasNext\" (click)=\"onClick()\">\n {{ label }}\n</button>\n<span *ngIf=\"!link\" euiLabel euiSizeS [euiSecondary]=\"!hasNext\" [euiPrimary]=\"hasNext\">{{ label }}</span>\n", styles: [".eui-breadcrumb{align-items:center;display:flex;width:100%;position:relative}.eui-breadcrumb__items{align-items:center;box-sizing:border-box;display:flex;flex-wrap:nowrap;list-style:none;margin:0;padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-m)}.eui-breadcrumb+.eui-breadcrumb-item:before{color:var(--eui-base-color-grey-25);height:1rem;width:1rem;content:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Ctitle%3EChevron Forward%3C/title%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M184 112l144 144-144 144'/%3E%3C/svg%3E\");display:inline-block;padding-left:var(--eui-base-spacing-xs);padding-right:var(--eui-base-spacing-xs)}.cdk-overlay-container .eui-breadcrumb-separator{margin:0 var(--eui-base-spacing-xs) 0 0}@media screen and (max-width: 767px){eui-breadcrumb,.eui-breadcrumb{display:none}}.eui-breadcrumb-item{align-items:center;display:flex;font-size:var(--eui-base-font-size-s);font-weight:700;z-index:9}.eui-breadcrumb-item__separator{align-items:center;display:flex;padding:0 var(--eui-base-spacing-2xs)}.eui-breadcrumb-item .eui-button{background-color:transparent;border:1px solid transparent;font-size:var(--eui-base-font-size-s);font-weight:700;padding:0 var(--eui-base-spacing-2xs) 0 0}.eui-breadcrumb-item .eui-button:hover{background-color:transparent!important}.eui-breadcrumb-item .eui-label{white-space:nowrap;text-decoration:none!important}.eui-breadcrumb-item .eui-label--secondary{color:var(--eui-base-color-grey-75);cursor:none;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i5.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i6.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
102
102
  }
103
103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EuiBreadcrumbItemComponent, decorators: [{
104
104
  type: Component,
105
- args: [{ selector: 'eui-breadcrumb-item', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<!-- render the separator if should have one -->\n<div *ngIf=\"hasPrevious\" class=\"eui-breadcrumb-item__separator\">\n <eui-icon-svg icon=\"eui-chevron-forward\" size=\"xs\" fillColor=\"grey-100\"></eui-icon-svg>\n</div>\n<button type=\"button\" *ngIf=\"link\" euiButton euiBasicButton euiSizeS [euiSecondary]=\"!hasNext\" [euiPrimary]=\"hasNext\" (click)=\"onClick()\">\n {{ label }}\n</button>\n<span *ngIf=\"!link\" euiLabel euiSizeS [euiSecondary]=\"!hasNext\" [euiPrimary]=\"hasNext\">{{ label }}</span>\n", styles: [".eui-breadcrumb{align-items:center;display:flex;width:100%;position:relative}.eui-breadcrumb__items{align-items:center;box-sizing:border-box;display:flex;flex-wrap:nowrap;list-style:none;margin:0;padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-m)}.eui-breadcrumb+.eui-breadcrumb-item:before{color:var(--eui-base-color-grey-25);height:1rem;width:1rem;content:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Ctitle%3EChevron Forward%3C/title%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M184 112l144 144-144 144'/%3E%3C/svg%3E\");display:inline-block;padding-left:var(--eui-base-spacing-xs);padding-right:var(--eui-base-spacing-xs)}.cdk-overlay-container .eui-breadcrumb-separator{margin:0 var(--eui-base-spacing-xs) 0 0}@media screen and (max-width: 767px){eui-breadcrumb,.eui-breadcrumb{display:none}}.eui-breadcrumb-item{align-items:center;display:flex;font-size:var(--eui-base-font-size-s);font-weight:700}.eui-breadcrumb-item__separator{align-items:center;display:flex;padding:0 var(--eui-base-spacing-2xs)}.eui-breadcrumb-item .eui-button{background-color:transparent;border:1px solid transparent;font-size:var(--eui-base-font-size-s);font-weight:700;padding:0 var(--eui-base-spacing-2xs) 0 0}.eui-breadcrumb-item .eui-button:hover{background-color:transparent!important}.eui-breadcrumb-item .eui-label{white-space:nowrap;text-decoration:none!important}.eui-breadcrumb-item .eui-label--secondary{color:var(--eui-base-color-grey-75);cursor:none;pointer-events:none}\n"] }]
105
+ args: [{ selector: 'eui-breadcrumb-item', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<!-- render the separator if should have one -->\n<div *ngIf=\"hasPrevious\" class=\"eui-breadcrumb-item__separator\">\n <eui-icon-svg icon=\"eui-chevron-forward\" size=\"xs\" fillColor=\"grey-100\"></eui-icon-svg>\n</div>\n<button type=\"button\" *ngIf=\"link\" euiButton euiBasicButton euiSizeS [euiSecondary]=\"!hasNext\" [euiPrimary]=\"hasNext\" (click)=\"onClick()\">\n {{ label }}\n</button>\n<span *ngIf=\"!link\" euiLabel euiSizeS [euiSecondary]=\"!hasNext\" [euiPrimary]=\"hasNext\">{{ label }}</span>\n", styles: [".eui-breadcrumb{align-items:center;display:flex;width:100%;position:relative}.eui-breadcrumb__items{align-items:center;box-sizing:border-box;display:flex;flex-wrap:nowrap;list-style:none;margin:0;padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-m)}.eui-breadcrumb+.eui-breadcrumb-item:before{color:var(--eui-base-color-grey-25);height:1rem;width:1rem;content:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Ctitle%3EChevron Forward%3C/title%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M184 112l144 144-144 144'/%3E%3C/svg%3E\");display:inline-block;padding-left:var(--eui-base-spacing-xs);padding-right:var(--eui-base-spacing-xs)}.cdk-overlay-container .eui-breadcrumb-separator{margin:0 var(--eui-base-spacing-xs) 0 0}@media screen and (max-width: 767px){eui-breadcrumb,.eui-breadcrumb{display:none}}.eui-breadcrumb-item{align-items:center;display:flex;font-size:var(--eui-base-font-size-s);font-weight:700;z-index:9}.eui-breadcrumb-item__separator{align-items:center;display:flex;padding:0 var(--eui-base-spacing-2xs)}.eui-breadcrumb-item .eui-button{background-color:transparent;border:1px solid transparent;font-size:var(--eui-base-font-size-s);font-weight:700;padding:0 var(--eui-base-spacing-2xs) 0 0}.eui-breadcrumb-item .eui-button:hover{background-color:transparent!important}.eui-breadcrumb-item .eui-label{white-space:nowrap;text-decoration:none!important}.eui-breadcrumb-item .eui-label--secondary{color:var(--eui-base-color-grey-75);cursor:none;pointer-events:none}\n"] }]
106
106
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.Router }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i2.LogService, decorators: [{
107
107
  type: Optional
108
108
  }] }], propDecorators: { string: [{