@gravitee/ui-particles-angular 7.33.0 → 7.34.0-form-cron-p2-a72ff85

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.
@@ -0,0 +1,29 @@
1
+ /*
2
+ * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Component } from '@angular/core';
17
+ import * as i0 from "@angular/core";
18
+ export class GioFormCronHintComponent {
19
+ }
20
+ GioFormCronHintComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioFormCronHintComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
+ GioFormCronHintComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioFormCronHintComponent, selector: "gio-form-cron-hint", ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioFormCronHintComponent, decorators: [{
23
+ type: Component,
24
+ args: [{
25
+ selector: 'gio-form-cron-hint',
26
+ template: `<ng-content></ng-content>`,
27
+ }]
28
+ }] });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWZvcm0tY3Jvbi1oaW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBhcnRpY2xlcy1hbmd1bGFyL3NyYy9saWIvZ2lvLWZvcm0tY3Jvbi9naW8tZm9ybS1jcm9uLWhpbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNMUMsTUFBTSxPQUFPLHdCQUF3Qjs7c0hBQXhCLHdCQUF3QjswR0FBeEIsd0JBQXdCLDBEQUZ6QiwyQkFBMkI7NEZBRTFCLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsMkJBQTJCO2lCQUN0QyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2lvLWZvcm0tY3Jvbi1oaW50JyxcbiAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcbn0pXG5leHBvcnQgY2xhc3MgR2lvRm9ybUNyb25IaW50Q29tcG9uZW50IHt9XG4iXX0=
@@ -0,0 +1,29 @@
1
+ /*
2
+ * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Component } from '@angular/core';
17
+ import * as i0 from "@angular/core";
18
+ export class GioFormCronLabelComponent {
19
+ }
20
+ GioFormCronLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioFormCronLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
+ GioFormCronLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioFormCronLabelComponent, selector: "gio-form-cron-label", ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioFormCronLabelComponent, decorators: [{
23
+ type: Component,
24
+ args: [{
25
+ selector: 'gio-form-cron-label',
26
+ template: `<ng-content></ng-content>`,
27
+ }]
28
+ }] });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWZvcm0tY3Jvbi1sYWJlbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1mb3JtLWNyb24vZ2lvLWZvcm0tY3Jvbi1sYWJlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0xQyxNQUFNLE9BQU8seUJBQXlCOzt1SEFBekIseUJBQXlCOzJHQUF6Qix5QkFBeUIsMkRBRjFCLDJCQUEyQjs0RkFFMUIseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFFBQVEsRUFBRSwyQkFBMkI7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tZm9ybS1jcm9uLWxhYmVsJyxcbiAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcbn0pXG5leHBvcnQgY2xhc3MgR2lvRm9ybUNyb25MYWJlbENvbXBvbmVudCB7fVxuIl19
@@ -141,28 +141,34 @@ export class GioFormCronComponent {
141
141
  validate(_) {
142
142
  return this.hasError ? { invalid: true } : null;
143
143
  }
144
- onClear() {
144
+ onClear({ touched } = {}) {
145
145
  this.value = undefined;
146
146
  this.cronDisplay = undefined;
147
147
  this.internalFormGroup?.reset({}, { emitEvent: true });
148
+ if (touched) {
149
+ this.touched = true;
150
+ this._onTouched();
151
+ }
148
152
  }
149
153
  refreshInternalForm() {
150
- const d = this.cronDisplay;
151
- if (!d || !this.internalFormGroup)
154
+ if (!this.internalFormGroup)
152
155
  return;
153
- this.internalFormGroup.patchValue({
154
- mode: d.mode,
155
- customExpression: d.customExpression,
156
- secondInterval: d.secondInterval,
157
- minuteInterval: d.minuteInterval,
158
- hourInterval: d.hourInterval,
159
- dayInterval: d.dayInterval,
160
- dayOfWeek: d.dayOfWeek,
161
- dayOfMonth: d.dayOfMonth,
162
- hours: d.hours,
163
- minutes: d.minutes,
164
- }, { emitEvent: false });
165
156
  this.isDisabled ? this.internalFormGroup.disable({ emitEvent: false }) : this.internalFormGroup.enable({ emitEvent: false });
157
+ const d = this.cronDisplay;
158
+ if (d) {
159
+ this.internalFormGroup.patchValue({
160
+ mode: d.mode,
161
+ customExpression: d.customExpression,
162
+ secondInterval: d.secondInterval,
163
+ minuteInterval: d.minuteInterval,
164
+ hourInterval: d.hourInterval,
165
+ dayInterval: d.dayInterval,
166
+ dayOfWeek: d.dayOfWeek,
167
+ dayOfMonth: d.dayOfMonth,
168
+ hours: d.hours,
169
+ minutes: d.minutes,
170
+ }, { emitEvent: false });
171
+ }
166
172
  }
167
173
  }
168
174
  GioFormCronComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioFormCronComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
@@ -177,7 +183,7 @@ GioFormCronComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
177
183
  useExisting: forwardRef(() => GioFormCronComponent),
178
184
  multi: true,
179
185
  },
180
- ], ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"wrapper\" [class.smallDisplay]=\"smallDisplay\">\n <ng-container *ngIf=\"internalFormGroup\" [formGroup]=\"internalFormGroup\">\n <div class=\"menu\">\n <mat-button-toggle-group class=\"gio-button-toggle-group menu__mode\" name=\"mode\" aria-label=\"Cron mode\" formControlName=\"mode\">\n <mat-button-toggle value=\"secondly\" matTooltip=\"Secondly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 's' : 'Secondly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"minutely\" matTooltip=\"Minutely\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'm' : 'Minutely'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"hourly\" matTooltip=\"Hourly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'h' : 'Hourly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"daily\" matTooltip=\"Daily\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'D' : 'Daily'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"weekly\" matTooltip=\"Weekly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'W' : 'Weekly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"monthly\" matTooltip=\"Monthly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'M' : 'Monthly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"custom\" matTooltip=\"Custom\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'C' : 'Custom'\n }}</mat-button-toggle>\n </mat-button-toggle-group>\n <button *ngIf=\"value && !isDisabled\" mat-icon-button aria-label=\"Clear\" matTooltip=\"Clear\" type=\"button\" (click)=\"onClear()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <ng-container [ngSwitch]=\"internalFormGroup.get('mode')?.value\">\n <ng-container *ngSwitchCase=\"'secondly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Second</mat-label>\n <mat-select formControlName=\"secondInterval\">\n <mat-option *ngFor=\"let second of seconds\" [value]=\"second\">{{ second }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'minutely'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minuteInterval\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'hourly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hour(s)</mat-label>\n <mat-select formControlName=\"hourInterval\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'daily'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Day(s)</mat-label>\n <mat-select formControlName=\"dayInterval\">\n <mat-option *ngFor=\"let day of daysOfMonth\" [value]=\"day\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hour(s)</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'weekly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-medium\">\n <mat-label>Day of the week</mat-label>\n <mat-select formControlName=\"dayOfWeek\">\n <mat-option *ngFor=\"let day of daysOfWeek; let index = index\" [value]=\"index\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hours</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minutes</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'monthly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">On the </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Day(s)</mat-label>\n <mat-select formControlName=\"dayOfMonth\">\n <mat-option *ngFor=\"let day of daysOfMonth\" [value]=\"day\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> of every month at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hours</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minutes</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'custom'\">\n <div class=\"modeForm\">\n <mat-form-field class=\"modeForm__field-custom\">\n <mat-label>Cron expression</mat-label>\n <input matInput formControlName=\"customExpression\" placeholder=\"* * * * * *\" />\n </mat-form-field>\n </div>\n </ng-container>\n </ng-container>\n\n <div *ngIf=\"value; else placeholder\" class=\"preview\">\n <span *ngIf=\"internalFormGroup.get('mode')?.value !== 'custom'\" class=\"preview__value\">\n {{ value }}\n </span>\n <span class=\"preview__hint\">{{ expressionDescription }}</span>\n </div>\n </ng-container>\n\n <ng-template #placeholder>\n <div class=\"placeholder\">No cron expression defined.</div>\n </ng-template>\n</div>\n", styles: [":host{display:block}.wrapper{display:inline-flex;flex-direction:column;padding:8px;border:1px solid #d3d5dc;border-radius:8px}.wrapper .menu{display:inline-flex;margin-bottom:4px}.wrapper .menu__mode{border:none;margin-bottom:0}.wrapper .modeForm{margin-bottom:8px}.wrapper .modeForm__field-small,.wrapper .modeForm__field-medium,.wrapper .modeForm__field-custom{display:inline-block;height:52px}.wrapper .modeForm__field-small{width:80px}.wrapper .modeForm__field-medium{width:120px}.wrapper .modeForm__field-custom{width:100%}.wrapper .preview,.wrapper .placeholder{display:flex;flex-direction:column;align-items:center;padding:8px;border-radius:8px;background-color:#e7e8ef;color:#000}.wrapper .preview__hint,.wrapper .placeholder{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}:host-context(.disabled) .wrapper .preview,:host-context(.disabled) .wrapper .placeholder{opacity:.4}:host-context(.ng-invalid:not(.ng-pristine)) .wrapper{border-color:#ec4899}:host-context(.ng-invalid:not(.ng-pristine)) .wrapper .preview,:host-context(.ng-invalid:not(.ng-pristine)) .wrapper .placeholder{color:#ec4899}\n"], components: [{ type: i2.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i8.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i8.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i5.MatLabel, selector: "mat-label" }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }] });
186
+ ], ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"label\"><ng-content select=\"gio-form-cron-label\"></ng-content></div>\n<div class=\"wrapper\" [class.smallDisplay]=\"smallDisplay\" [class.disabled]=\"isDisabled\">\n <ng-container *ngIf=\"internalFormGroup\" [formGroup]=\"internalFormGroup\">\n <div class=\"menu\">\n <mat-button-toggle-group class=\"gio-button-toggle-group menu__mode\" name=\"mode\" aria-label=\"Cron mode\" formControlName=\"mode\">\n <mat-button-toggle value=\"secondly\" matTooltip=\"Secondly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 's' : 'Secondly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"minutely\" matTooltip=\"Minutely\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'm' : 'Minutely'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"hourly\" matTooltip=\"Hourly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'h' : 'Hourly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"daily\" matTooltip=\"Daily\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'D' : 'Daily'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"weekly\" matTooltip=\"Weekly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'W' : 'Weekly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"monthly\" matTooltip=\"Monthly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'M' : 'Monthly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"custom\" matTooltip=\"Custom\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'C' : 'Custom'\n }}</mat-button-toggle>\n </mat-button-toggle-group>\n <button\n *ngIf=\"value && !isDisabled\"\n mat-icon-button\n aria-label=\"Clear\"\n matTooltip=\"Clear\"\n type=\"button\"\n (click)=\"onClear({ touched: true })\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <ng-container [ngSwitch]=\"internalFormGroup.get('mode')?.value\">\n <ng-container *ngSwitchCase=\"'secondly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Second</mat-label>\n <mat-select formControlName=\"secondInterval\">\n <mat-option *ngFor=\"let second of seconds\" [value]=\"second\">{{ second }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'minutely'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minuteInterval\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'hourly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hour(s)</mat-label>\n <mat-select formControlName=\"hourInterval\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'daily'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Day(s)</mat-label>\n <mat-select formControlName=\"dayInterval\">\n <mat-option *ngFor=\"let day of daysOfMonth\" [value]=\"day\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hour(s)</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'weekly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-medium\">\n <mat-label>Day of the week</mat-label>\n <mat-select formControlName=\"dayOfWeek\">\n <mat-option *ngFor=\"let day of daysOfWeek; let index = index\" [value]=\"index\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hours</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minutes</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'monthly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">On the </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Day(s)</mat-label>\n <mat-select formControlName=\"dayOfMonth\">\n <mat-option *ngFor=\"let day of daysOfMonth\" [value]=\"day\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> of every month at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hours</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minutes</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'custom'\">\n <div class=\"modeForm\">\n <mat-form-field class=\"modeForm__field-custom\">\n <mat-label>Cron expression</mat-label>\n <input matInput formControlName=\"customExpression\" placeholder=\"* * * * * *\" />\n </mat-form-field>\n </div>\n </ng-container>\n </ng-container>\n\n <div *ngIf=\"value; else placeholder\" class=\"preview\">\n <span *ngIf=\"internalFormGroup.get('mode')?.value !== 'custom'\" class=\"preview__value\">\n {{ value }}\n </span>\n <span class=\"preview__hint\">{{ expressionDescription }}</span>\n </div>\n </ng-container>\n\n <ng-template #placeholder>\n <div class=\"placeholder\">No cron expression defined.</div>\n </ng-template>\n</div>\n<div class=\"hint\"><ng-content select=\"gio-form-cron-hint\"></ng-content></div>\n", styles: [":host{display:flex;flex-direction:column}.label{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;padding-left:10px;color:#7a7b80}.label:empty{display:none}.wrapper{display:inline-flex;flex-direction:column;padding:8px;border:1px solid #d3d5dc;border-radius:8px}.wrapper:hover:not(.disabled){padding:7px;border:2px solid #313133}.wrapper .menu{display:inline-flex;margin-bottom:4px}.wrapper .menu__mode{border:none;margin-bottom:0}.wrapper .modeForm{margin-bottom:8px}.wrapper .modeForm__field-small,.wrapper .modeForm__field-medium,.wrapper .modeForm__field-custom{display:inline-block;height:52px}.wrapper .modeForm__field-small{width:80px}.wrapper .modeForm__field-medium{width:120px}.wrapper .modeForm__field-custom{width:100%}.wrapper .preview,.wrapper .placeholder{display:flex;flex-direction:column;align-items:center;padding:8px;border-radius:8px;background-color:#e7e8ef;color:#000}.wrapper .preview__hint,.wrapper .placeholder{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.wrapper.disabled .preview,.wrapper.disabled .placeholder{opacity:.4}.hint{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;padding-top:2px;padding-left:10px;color:#7a7b80}.hint:empty{display:none}:host(.ng-invalid.ng-touched) .wrapper{padding:7px;border-width:2px;border-color:#ec4899}:host(.ng-invalid.ng-touched) .wrapper .preview,:host(.ng-invalid.ng-touched) .wrapper .placeholder{color:#ec4899}\n"], components: [{ type: i2.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i8.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i8.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i5.MatLabel, selector: "mat-label" }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }] });
181
187
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioFormCronComponent, decorators: [{
182
188
  type: Component,
183
189
  args: [{ selector: 'gio-form-cron', providers: [
@@ -191,7 +197,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
191
197
  useExisting: forwardRef(() => GioFormCronComponent),
192
198
  multi: true,
193
199
  },
194
- ], template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"wrapper\" [class.smallDisplay]=\"smallDisplay\">\n <ng-container *ngIf=\"internalFormGroup\" [formGroup]=\"internalFormGroup\">\n <div class=\"menu\">\n <mat-button-toggle-group class=\"gio-button-toggle-group menu__mode\" name=\"mode\" aria-label=\"Cron mode\" formControlName=\"mode\">\n <mat-button-toggle value=\"secondly\" matTooltip=\"Secondly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 's' : 'Secondly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"minutely\" matTooltip=\"Minutely\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'm' : 'Minutely'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"hourly\" matTooltip=\"Hourly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'h' : 'Hourly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"daily\" matTooltip=\"Daily\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'D' : 'Daily'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"weekly\" matTooltip=\"Weekly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'W' : 'Weekly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"monthly\" matTooltip=\"Monthly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'M' : 'Monthly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"custom\" matTooltip=\"Custom\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'C' : 'Custom'\n }}</mat-button-toggle>\n </mat-button-toggle-group>\n <button *ngIf=\"value && !isDisabled\" mat-icon-button aria-label=\"Clear\" matTooltip=\"Clear\" type=\"button\" (click)=\"onClear()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <ng-container [ngSwitch]=\"internalFormGroup.get('mode')?.value\">\n <ng-container *ngSwitchCase=\"'secondly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Second</mat-label>\n <mat-select formControlName=\"secondInterval\">\n <mat-option *ngFor=\"let second of seconds\" [value]=\"second\">{{ second }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'minutely'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minuteInterval\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'hourly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hour(s)</mat-label>\n <mat-select formControlName=\"hourInterval\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'daily'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Day(s)</mat-label>\n <mat-select formControlName=\"dayInterval\">\n <mat-option *ngFor=\"let day of daysOfMonth\" [value]=\"day\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hour(s)</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'weekly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-medium\">\n <mat-label>Day of the week</mat-label>\n <mat-select formControlName=\"dayOfWeek\">\n <mat-option *ngFor=\"let day of daysOfWeek; let index = index\" [value]=\"index\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hours</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minutes</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'monthly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">On the </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Day(s)</mat-label>\n <mat-select formControlName=\"dayOfMonth\">\n <mat-option *ngFor=\"let day of daysOfMonth\" [value]=\"day\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> of every month at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hours</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minutes</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'custom'\">\n <div class=\"modeForm\">\n <mat-form-field class=\"modeForm__field-custom\">\n <mat-label>Cron expression</mat-label>\n <input matInput formControlName=\"customExpression\" placeholder=\"* * * * * *\" />\n </mat-form-field>\n </div>\n </ng-container>\n </ng-container>\n\n <div *ngIf=\"value; else placeholder\" class=\"preview\">\n <span *ngIf=\"internalFormGroup.get('mode')?.value !== 'custom'\" class=\"preview__value\">\n {{ value }}\n </span>\n <span class=\"preview__hint\">{{ expressionDescription }}</span>\n </div>\n </ng-container>\n\n <ng-template #placeholder>\n <div class=\"placeholder\">No cron expression defined.</div>\n </ng-template>\n</div>\n", styles: [":host{display:block}.wrapper{display:inline-flex;flex-direction:column;padding:8px;border:1px solid #d3d5dc;border-radius:8px}.wrapper .menu{display:inline-flex;margin-bottom:4px}.wrapper .menu__mode{border:none;margin-bottom:0}.wrapper .modeForm{margin-bottom:8px}.wrapper .modeForm__field-small,.wrapper .modeForm__field-medium,.wrapper .modeForm__field-custom{display:inline-block;height:52px}.wrapper .modeForm__field-small{width:80px}.wrapper .modeForm__field-medium{width:120px}.wrapper .modeForm__field-custom{width:100%}.wrapper .preview,.wrapper .placeholder{display:flex;flex-direction:column;align-items:center;padding:8px;border-radius:8px;background-color:#e7e8ef;color:#000}.wrapper .preview__hint,.wrapper .placeholder{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}:host-context(.disabled) .wrapper .preview,:host-context(.disabled) .wrapper .placeholder{opacity:.4}:host-context(.ng-invalid:not(.ng-pristine)) .wrapper{border-color:#ec4899}:host-context(.ng-invalid:not(.ng-pristine)) .wrapper .preview,:host-context(.ng-invalid:not(.ng-pristine)) .wrapper .placeholder{color:#ec4899}\n"] }]
200
+ ], template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"label\"><ng-content select=\"gio-form-cron-label\"></ng-content></div>\n<div class=\"wrapper\" [class.smallDisplay]=\"smallDisplay\" [class.disabled]=\"isDisabled\">\n <ng-container *ngIf=\"internalFormGroup\" [formGroup]=\"internalFormGroup\">\n <div class=\"menu\">\n <mat-button-toggle-group class=\"gio-button-toggle-group menu__mode\" name=\"mode\" aria-label=\"Cron mode\" formControlName=\"mode\">\n <mat-button-toggle value=\"secondly\" matTooltip=\"Secondly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 's' : 'Secondly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"minutely\" matTooltip=\"Minutely\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'm' : 'Minutely'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"hourly\" matTooltip=\"Hourly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'h' : 'Hourly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"daily\" matTooltip=\"Daily\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'D' : 'Daily'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"weekly\" matTooltip=\"Weekly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'W' : 'Weekly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"monthly\" matTooltip=\"Monthly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'M' : 'Monthly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"custom\" matTooltip=\"Custom\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'C' : 'Custom'\n }}</mat-button-toggle>\n </mat-button-toggle-group>\n <button\n *ngIf=\"value && !isDisabled\"\n mat-icon-button\n aria-label=\"Clear\"\n matTooltip=\"Clear\"\n type=\"button\"\n (click)=\"onClear({ touched: true })\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <ng-container [ngSwitch]=\"internalFormGroup.get('mode')?.value\">\n <ng-container *ngSwitchCase=\"'secondly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Second</mat-label>\n <mat-select formControlName=\"secondInterval\">\n <mat-option *ngFor=\"let second of seconds\" [value]=\"second\">{{ second }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'minutely'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minuteInterval\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'hourly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hour(s)</mat-label>\n <mat-select formControlName=\"hourInterval\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'daily'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Day(s)</mat-label>\n <mat-select formControlName=\"dayInterval\">\n <mat-option *ngFor=\"let day of daysOfMonth\" [value]=\"day\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hour(s)</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'weekly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-medium\">\n <mat-label>Day of the week</mat-label>\n <mat-select formControlName=\"dayOfWeek\">\n <mat-option *ngFor=\"let day of daysOfWeek; let index = index\" [value]=\"index\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hours</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minutes</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'monthly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">On the </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Day(s)</mat-label>\n <mat-select formControlName=\"dayOfMonth\">\n <mat-option *ngFor=\"let day of daysOfMonth\" [value]=\"day\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> of every month at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hours</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minutes</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'custom'\">\n <div class=\"modeForm\">\n <mat-form-field class=\"modeForm__field-custom\">\n <mat-label>Cron expression</mat-label>\n <input matInput formControlName=\"customExpression\" placeholder=\"* * * * * *\" />\n </mat-form-field>\n </div>\n </ng-container>\n </ng-container>\n\n <div *ngIf=\"value; else placeholder\" class=\"preview\">\n <span *ngIf=\"internalFormGroup.get('mode')?.value !== 'custom'\" class=\"preview__value\">\n {{ value }}\n </span>\n <span class=\"preview__hint\">{{ expressionDescription }}</span>\n </div>\n </ng-container>\n\n <ng-template #placeholder>\n <div class=\"placeholder\">No cron expression defined.</div>\n </ng-template>\n</div>\n<div class=\"hint\"><ng-content select=\"gio-form-cron-hint\"></ng-content></div>\n", styles: [":host{display:flex;flex-direction:column}.label{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;padding-left:10px;color:#7a7b80}.label:empty{display:none}.wrapper{display:inline-flex;flex-direction:column;padding:8px;border:1px solid #d3d5dc;border-radius:8px}.wrapper:hover:not(.disabled){padding:7px;border:2px solid #313133}.wrapper .menu{display:inline-flex;margin-bottom:4px}.wrapper .menu__mode{border:none;margin-bottom:0}.wrapper .modeForm{margin-bottom:8px}.wrapper .modeForm__field-small,.wrapper .modeForm__field-medium,.wrapper .modeForm__field-custom{display:inline-block;height:52px}.wrapper .modeForm__field-small{width:80px}.wrapper .modeForm__field-medium{width:120px}.wrapper .modeForm__field-custom{width:100%}.wrapper .preview,.wrapper .placeholder{display:flex;flex-direction:column;align-items:center;padding:8px;border-radius:8px;background-color:#e7e8ef;color:#000}.wrapper .preview__hint,.wrapper .placeholder{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.wrapper.disabled .preview,.wrapper.disabled .placeholder{opacity:.4}.hint{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;padding-top:2px;padding-left:10px;color:#7a7b80}.hint:empty{display:none}:host(.ng-invalid.ng-touched) .wrapper{padding:7px;border-width:2px;border-color:#ec4899}:host(.ng-invalid.ng-touched) .wrapper .preview,:host(.ng-invalid.ng-touched) .wrapper .placeholder{color:#ec4899}\n"] }]
195
201
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FocusMonitor }, { type: i0.NgZone }]; }, propDecorators: { smallDisplay: [{
196
202
  type: HostBinding,
197
203
  args: ['class.smallDisplay']
@@ -199,4 +205,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
199
205
  type: HostBinding,
200
206
  args: ['class.disabled']
201
207
  }] } });
202
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWZvcm0tY3Jvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1mb3JtLWNyb24vZ2lvLWZvcm0tY3Jvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1mb3JtLWNyb24vZ2lvLWZvcm0tY3Jvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsT0FBTyxFQUFFLFNBQVMsRUFBYyxXQUFXLEVBQTZCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBR0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxhQUFhLEVBQ2IsaUJBQWlCLEdBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBQWUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQW1CdkksTUFBTSxPQUFPLG9CQUFvQjtJQTJCL0IsWUFBNkIsS0FBaUIsRUFBbUIsRUFBZ0IsRUFBbUIsTUFBYztRQUFyRixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQW1CLE9BQUUsR0FBRixFQUFFLENBQWM7UUFBbUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTFCM0csY0FBUyxHQUFtQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXZELGVBQVUsR0FBZSxHQUFHLEVB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RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lKQWlCTSxZQUFZO3NCQURsQixXQUFXO3VCQUFDLG9CQUFvQjtnQkFNekIsUUFBUTtzQkFEZixXQUFXO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGlzRW1wdHksIHJhbmdlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IENyb25EaXNwbGF5LCBnZXREZWZhdWx0Q3JvbkRpc3BsYXksIHBhcnNlQ3JvbkV4cHJlc3Npb24sIHRvQ3JvbkRlc2NyaXB0aW9uLCB0b0Nyb25FeHByZXNzaW9uIH0gZnJvbSAnLi9naW8tZm9ybS1jcm9uLmFkYXB0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tZm9ybS1jcm9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dpby1mb3JtLWNyb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tZm9ybS1jcm9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gR2lvRm9ybUNyb25Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gR2lvRm9ybUNyb25Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvRm9ybUNyb25Db21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkRlc3Ryb3ksIFZhbGlkYXRvciB7XG4gIHB1YmxpYyBfb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZCA9ICgpID0+ICh7fSk7XG5cbiAgcHVibGljIF9vblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiAoe30pO1xuXG4gIHB1YmxpYyBzZWNvbmRzID0gWy4uLnJhbmdlKDAsIDYwKV07XG4gIHB1YmxpYyBtaW51dGVzID0gWy4uLnJhbmdlKDAsIDYwKV07XG4gIHB1YmxpYyBob3VycyA9IFsuLi5yYW5nZSgwLCAyNCldO1xuICBwdWJsaWMgZGF5c09mTW9udGggPSBbLi4ucmFuZ2UoMSwgMzIpXTtcbiAgcHVibGljIGRheXNPZldlZWsgPSBbJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknLCAnU3VuZGF5J107XG4gIHB1YmxpYyBpbnRlcm5hbEZvcm1Hcm91cD86IEZvcm1Hcm91cDtcbiAgcHVibGljIHZhbHVlPzogc3RyaW5nO1xuICBwdWJsaWMgZXhwcmVzc2lvbkRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBwdWJsaWMgaXNEaXNhYmxlZCA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNtYWxsRGlzcGxheScpXG4gIHB1YmxpYyBzbWFsbERpc3BsYXkgPSBmYWxzZTtcblxuICBwcml2YXRlIHRvdWNoZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBmb2N1c2VkID0gZmFsc2U7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGlzYWJsZWQnKVxuICBwcml2YXRlIGhhc0Vycm9yID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBjcm9uRGlzcGxheT86IENyb25EaXNwbGF5O1xuXG4gIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlcj86IFJlc2l6ZU9ic2VydmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZWxSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVhZG9ubHkgZm06IEZvY3VzTW9uaXRvciwgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgIGZtLm1vbml0b3IoZWxSZWYubmF0aXZlRWxlbWVudCwgdHJ1ZSkuc3Vic2NyaWJlKG9yaWdpbiA9PiB7XG4gICAgICB0aGlzLmZvY3VzZWQgPSAhIW9yaWdpbjtcbiAgICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgICAgdGhpcy50b3VjaGVkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAod2luZG93LlJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHdpZHRoID0gZW50cmllc1swXS5jb250ZW50UmVjdC53aWR0aDtcbiAgICAgICAgICB0aGlzLnNtYWxsRGlzcGxheSA9IHdpZHRoIDwgNTgwO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5pbnRlcm5hbEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgbW9kZTogbmV3IEZvcm1Db250cm9sKCksXG4gICAgICBzZWNvbmRJbnRlcnZhbDogbmV3IEZvcm1Db250cm9sKCksXG4gICAgICBtaW51dGVJbnRlcnZhbDogbmV3IEZvcm1Db250cm9sKCksXG4gICAgICBob3VySW50ZXJ2YWw6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgZGF5SW50ZXJ2YWw6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgZGF5T2ZXZWVrOiBuZXcgRm9ybUNvbnRyb2woKSxcbiAgICAgIGRheU9mTW9udGg6IG5ldyBGb3JtQ29udHJvbCgpLFxuXG4gICAgICBob3VyczogbmV3IEZvcm1Db250cm9sKCksXG4gICAgICBtaW51dGVzOiBuZXcgRm9ybUNvbnRyb2woKSxcbiAgICAgIGN1c3RvbUV4cHJlc3Npb246IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgIH0pO1xuICAgIHRoaXMuaXNEaXNhYmxlZCA/IHRoaXMuaW50ZXJuYWxGb3JtR3JvdXAuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSkgOiB0aGlzLmludGVybmFsRm9ybUdyb3VwLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cbiAgICB0aGlzLmludGVybmFsRm9ybUdyb3VwXG4gICAgICAuZ2V0KCdtb2RlJylcbiAgICAgID8udmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgIGZpbHRlcihtb2RlID0+ICEhbW9kZSksXG4gICAgICAgIHRhcChtb2RlID0+IHtcbiAgICAgICAgICB0aGlzLmNyb25EaXNwbGF5ID0gZ2V0RGVmYXVsdENyb25EaXNwbGF5KG1vZGUpO1xuXG4gICAgICAgICAgdGhpcy5yZWZyZXNoSW50ZXJuYWxGb3JtKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5pbnRlcm5hbEZvcm1Hcm91cC52YWx1ZUNoYW5nZXNcbiAgICAgID8ucGlwZShcbiAgICAgICAgdGFwKHZhbHVlID0+IHtcbiAgICAgICAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XG4gICAgICAgICAgaWYgKCF2YWx1ZT8ubW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2UobnVsbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdG9Dcm9uRXhwcmVzc2lvbih7XG4gICAgICAgICAgICAgIG1vZGU6IHZhbHVlLm1vZGUsXG4gICAgICAgICAgICAgIHNlY29uZEludGVydmFsOiB2YWx1ZS5zZWNvbmRJbnRlcnZhbCxcbiAgICAgICAgICAgICAgbWludXRlSW50ZXJ2YWw6IHZhbHVlLm1pbnV0ZUludGVydmFsLFxuICAgICAgICAgICAgICBob3VySW50ZXJ2YWw6IHZhbHVlLmhvdXJJbnRlcnZhbCxcbiAgICAgICAgICAgICAgZGF5SW50ZXJ2YWw6IHZhbHVlLmRheUludGVydmFsLFxuICAgICAgICAgICAgICBkYXlPZldlZWs6IHZhbHVlLmRheU9mV2VlayxcbiAgICAgICAgICAgICAgZGF5T2ZNb250aDogdmFsdWUuZGF5T2ZNb250aCxcbiAgICAgICAgICAgICAgY3VzdG9tRXhwcmVzc2lvbjogdmFsdWUuY3VzdG9tRXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgaG91cnM6IHZhbHVlLmhvdXJzLFxuICAgICAgICAgICAgICBtaW51dGVzOiB2YWx1ZS5taW51dGVzLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbkRlc2NyaXB0aW9uID0gdG9Dcm9uRGVzY3JpcHRpb24odGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5oYXNFcnJvciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25EZXNjcmlwdGlvbiA9IGAke2Vycm9yfWAgPz8gJ0ludmFsaWQgY3JvbiBleHByZXNzaW9uLic7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZShudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5yZWZyZXNoSW50ZXJuYWxGb3JtKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5mbS5zdG9wTW9uaXRvcmluZyh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXI/LnVub2JzZXJ2ZSh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgdGhpcy5vbkNsZWFyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLmNyb25EaXNwbGF5ID0gcGFyc2VDcm9uRXhwcmVzc2lvbih2YWx1ZSk7XG5cbiAgICAgIHRoaXMuZXhwcmVzc2lvbkRlc2NyaXB0aW9uID0gdG9Dcm9uRGVzY3JpcHRpb24odGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLnJlZnJlc2hJbnRlcm5hbEZvcm0oKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5oYXNFcnJvciA9IHRydWU7XG4gICAgICB0aGlzLmV4cHJlc3Npb25EZXNjcmlwdGlvbiA9IGAke2Vycm9yfWAgPz8gJ0ludmFsaWQgY3JvbiBleHByZXNzaW9uLic7XG4gICAgfVxuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMucmVmcmVzaEludGVybmFsRm9ybSgpO1xuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlKF86IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5oYXNFcnJvciA/IHsgaW52YWxpZDogdHJ1ZSB9IDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsZWFyKCkge1xuICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jcm9uRGlzcGxheSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmludGVybmFsRm9ybUdyb3VwPy5yZXNldCh7fSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hJbnRlcm5hbEZvcm0oKTogdm9pZCB7XG4gICAgY29uc3QgZCA9IHRoaXMuY3JvbkRpc3BsYXk7XG4gICAgaWYgKCFkIHx8ICF0aGlzLmludGVybmFsRm9ybUdyb3VwKSByZXR1cm47XG5cbiAgICB0aGlzLmludGVybmFsRm9ybUdyb3VwLnBhdGNoVmFsdWUoXG4gICAgICB7XG4gICAgICAgIG1vZGU6IGQubW9kZSxcbiAgICAgICAgY3VzdG9tRXhwcmVzc2lvbjogZC5jdXN0b21FeHByZXNzaW9uLFxuICAgICAgICBzZWNvbmRJbnRlcnZhbDogZC5zZWNvbmRJbnRlcnZhbCxcbiAgICAgICAgbWludXRlSW50ZXJ2YWw6IGQubWludXRlSW50ZXJ2YWwsXG4gICAgICAgIGhvdXJJbnRlcnZhbDogZC5ob3VySW50ZXJ2YWwsXG4gICAgICAgIGRheUludGVydmFsOiBkLmRheUludGVydmFsLFxuICAgICAgICBkYXlPZldlZWs6IGQuZGF5T2ZXZWVrLFxuICAgICAgICBkYXlPZk1vbnRoOiBkLmRheU9mTW9udGgsXG5cbiAgICAgICAgaG91cnM6IGQuaG91cnMsXG4gICAgICAgIG1pbnV0ZXM6IGQubWludXRlcyxcbiAgICAgIH0sXG4gICAgICB7IGVtaXRFdmVudDogZmFsc2UgfSxcbiAgICApO1xuXG4gICAgdGhpcy5pc0Rpc2FibGVkID8gdGhpcy5pbnRlcm5hbEZvcm1Hcm91cC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KSA6IHRoaXMuaW50ZXJuYWxGb3JtR3JvdXAuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgfVxufVxuIiwiPCEtLVxuXG4gICAgQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuLS0+XG48ZGl2IGNsYXNzPVwid3JhcHBlclwiIFtjbGFzcy5zbWFsbERpc3BsYXldPVwic21hbGxEaXNwbGF5XCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnRlcm5hbEZvcm1Hcm91cFwiIFtmb3JtR3JvdXBdPVwiaW50ZXJuYWxGb3JtR3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWVudVwiPlxuICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIGNsYXNzPVwiZ2lvLWJ1dHRvbi10b2dnbGUtZ3JvdXAgbWVudV9fbW9kZVwiIG5hbWU9XCJtb2RlXCIgYXJpYS1sYWJlbD1cIkNyb24gbW9kZVwiIGZvcm1Db250cm9sTmFtZT1cIm1vZGVcIj5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwic2Vjb25kbHlcIiBtYXRUb29sdGlwPVwiU2Vjb25kbHlcIiBbbWF0VG9vbHRpcERpc2FibGVkXT1cIiFzbWFsbERpc3BsYXlcIj57e1xuICAgICAgICAgIHNtYWxsRGlzcGxheSA/ICdzJyA6ICdTZWNvbmRseSdcbiAgICAgICAgfX08L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJtaW51dGVseVwiIG1hdFRvb2x0aXA9XCJNaW51dGVseVwiIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiIXNtYWxsRGlzcGxheVwiPnt7XG4gICAgICAgICAgc21hbGxEaXNwbGF5ID8gJ20nIDogJ01pbnV0ZWx5J1xuICAgICAgICB9fTwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cImhvdXJseVwiIG1hdFRvb2x0aXA9XCJIb3VybHlcIiBbbWF0VG9vbHRpcERpc2FibGVkXT1cIiFzbWFsbERpc3BsYXlcIj57e1xuICAgICAgICAgIHNtYWxsRGlzcGxheSA/ICdoJyA6ICdIb3VybHknXG4gICAgICAgIH19PC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiZGFpbHlcIiBtYXRUb29sdGlwPVwiRGFpbHlcIiBbbWF0VG9vbHRpcERpc2FibGVkXT1cIiFzbWFsbERpc3BsYXlcIj57e1xuICAgICAgICAgIHNtYWxsRGlzcGxheSA/ICdEJyA6ICdEYWlseSdcbiAgICAgICAgfX08L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJ3ZWVrbHlcIiBtYXRUb29sdGlwPVwiV2Vla2x5XCIgW21hdFRvb2x0aXBEaXNhYmxlZF09XCIhc21hbGxEaXNwbGF5XCI+e3tcbiAgICAgICAgICBzbWFsbERpc3BsYXkgPyAnVycgOiAnV2Vla2x5J1xuICAgICAgICB9fTwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cIm1vbnRobHlcIiBtYXRUb29sdGlwPVwiTW9udGhseVwiIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiIXNtYWxsRGlzcGxheVwiPnt7XG4gICAgICAgICAgc21hbGxEaXNwbGF5ID8gJ00nIDogJ01vbnRobHknXG4gICAgICAgIH19PC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiY3VzdG9tXCIgbWF0VG9vbHRpcD1cIkN1c3RvbVwiIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiIXNtYWxsRGlzcGxheVwiPnt7XG4gICAgICAgICAgc21hbGxEaXNwbGF5ID8gJ0MnIDogJ0N1c3RvbSdcbiAgICAgICAgfX08L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJ2YWx1ZSAmJiAhaXNEaXNhYmxlZFwiIG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiQ2xlYXJcIiBtYXRUb29sdGlwPVwiQ2xlYXJcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQ2xlYXIoKVwiPlxuICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJpbnRlcm5hbEZvcm1Hcm91cC5nZXQoJ21vZGUnKT8udmFsdWVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzZWNvbmRseSdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGVGb3JtXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj5FdmVyeSA8L3NwYW4+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibW9kZUZvcm1fX2ZpZWxkLXNtYWxsXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPlNlY29uZDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwic2Vjb25kSW50ZXJ2YWxcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHNlY29uZCBvZiBzZWNvbmRzXCIgW3ZhbHVlXT1cInNlY29uZFwiPnt7IHNlY29uZCB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbWludXRlbHknXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RlRm9ybVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Jvbi1mb3JtLWxhYmVsXCI+RXZlcnkgPC9zcGFuPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1zbWFsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5NaW51dGUocyk8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cIm1pbnV0ZUludGVydmFsXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBtaW51dGUgb2YgbWludXRlc1wiIFt2YWx1ZV09XCJtaW51dGVcIj57eyBtaW51dGUgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2hvdXJseSdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGVGb3JtXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj5FdmVyeSA8L3NwYW4+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibW9kZUZvcm1fX2ZpZWxkLXNtYWxsXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPkhvdXIocyk8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImhvdXJJbnRlcnZhbFwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaG91ciBvZiBob3Vyc1wiIFt2YWx1ZV09XCJob3VyXCI+e3sgaG91ciB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Jvbi1mb3JtLWxhYmVsXCI+Ojwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtc21hbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+TWludXRlKHMpPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJtaW51dGVzXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBtaW51dGUgb2YgbWludXRlc1wiIFt2YWx1ZV09XCJtaW51dGVcIj57eyBtaW51dGUgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RhaWx5J1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kZUZvcm1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyb24tZm9ybS1sYWJlbFwiPkV2ZXJ5IDwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtc21hbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+RGF5KHMpPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJkYXlJbnRlcnZhbFwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNPZk1vbnRoXCIgW3ZhbHVlXT1cImRheVwiPnt7IGRheSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Jvbi1mb3JtLWxhYmVsXCI+IGF0IDwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtc21hbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+SG91cihzKTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaG91cnNcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGhvdXIgb2YgaG91cnNcIiBbdmFsdWVdPVwiaG91clwiPnt7IGhvdXIgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyb24tZm9ybS1sYWJlbFwiPjo8L3NwYW4+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibW9kZUZvcm1fX2ZpZWxkLXNtYWxsXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPk1pbnV0ZShzKTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwibWludXRlc1wiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbWludXRlIG9mIG1pbnV0ZXNcIiBbdmFsdWVdPVwibWludXRlXCI+e3sgbWludXRlIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid3ZWVrbHknXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RlRm9ybVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Jvbi1mb3JtLWxhYmVsXCI+RXZlcnkgPC9zcGFuPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1tZWRpdW1cIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+RGF5IG9mIHRoZSB3ZWVrPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJkYXlPZldlZWtcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGRheSBvZiBkYXlzT2ZXZWVrOyBsZXQgaW5kZXggPSBpbmRleFwiIFt2YWx1ZV09XCJpbmRleFwiPnt7IGRheSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Jvbi1mb3JtLWxhYmVsXCI+IGF0IDwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtc21hbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+SG91cnM8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImhvdXJzXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBob3VyIG9mIGhvdXJzXCIgW3ZhbHVlXT1cImhvdXJcIj57eyBob3VyIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj46PC9zcGFuPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1zbWFsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5NaW51dGVzPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJtaW51dGVzXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBtaW51dGUgb2YgbWludXRlc1wiIFt2YWx1ZV09XCJtaW51dGVcIj57eyBtaW51dGUgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ21vbnRobHknXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RlRm9ybVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Jvbi1mb3JtLWxhYmVsXCI+T24gdGhlIDwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtc21hbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+RGF5KHMpPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJkYXlPZk1vbnRoXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5c09mTW9udGhcIiBbdmFsdWVdPVwiZGF5XCI+e3sgZGF5IH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj4gb2YgZXZlcnkgbW9udGggYXQgPC9zcGFuPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1zbWFsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5Ib3VyczwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaG91cnNcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGhvdXIgb2YgaG91cnNcIiBbdmFsdWVdPVwiaG91clwiPnt7IGhvdXIgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyb24tZm9ybS1sYWJlbFwiPjo8L3NwYW4+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibW9kZUZvcm1fX2ZpZWxkLXNtYWxsXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPk1pbnV0ZXM8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cIm1pbnV0ZXNcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG1pbnV0ZSBvZiBtaW51dGVzXCIgW3ZhbHVlXT1cIm1pbnV0ZVwiPnt7IG1pbnV0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY3VzdG9tJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kZUZvcm1cIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtY3VzdG9tXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPkNyb24gZXhwcmVzc2lvbjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImN1c3RvbUV4cHJlc3Npb25cIiBwbGFjZWhvbGRlcj1cIiogKiAqICogKiAqXCIgLz5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiAqbmdJZj1cInZhbHVlOyBlbHNlIHBsYWNlaG9sZGVyXCIgY2xhc3M9XCJwcmV2aWV3XCI+XG4gICAgICA8c3BhbiAqbmdJZj1cImludGVybmFsRm9ybUdyb3VwLmdldCgnbW9kZScpPy52YWx1ZSAhPT0gJ2N1c3RvbSdcIiBjbGFzcz1cInByZXZpZXdfX3ZhbHVlXCI+XG4gICAgICAgIHt7IHZhbHVlIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInByZXZpZXdfX2hpbnRcIj57eyBleHByZXNzaW9uRGVzY3JpcHRpb24gfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXI+XG4gICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyXCI+Tm8gY3JvbiBleHByZXNzaW9uIGRlZmluZWQuPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWZvcm0tY3Jvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1mb3JtLWNyb24vZ2lvLWZvcm0tY3Jvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1mb3JtLWNyb24vZ2lvLWZvcm0tY3Jvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsT0FBTyxFQUFFLFNBQVMsRUFBYyxXQUFXLEVBQTZCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBR0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxhQUFhLEVBQ2IsaUJBQWlCLEdBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBQWUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQW1CdkksTUFBTSxPQUFPLG9CQUFvQjtJQTJCL0IsWUFBNkIsS0FBaUIsRUFBbUIsRUFBZ0IsRUFBbUIsTUFBYztRQUFyRixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQW1CLE9BQUUsR0FBRixFQUFFLENBQWM7UUFBbUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTFCM0csY0FBUyxHQUFtQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXZELGVBQVUsR0FBZSxHQUFHLEVB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Q2pESCwya1NBeU1BOzRGRHRKYSxvQkFBb0I7a0JBakJoQyxTQUFTOytCQUNFLGVBQWUsYUFHZDt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzs0QkFDbkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpSkFpQk0sWUFBWTtzQkFEbEIsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBTXpCLFFBQVE7c0JBRGYsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBpc0VtcHR5LCByYW5nZSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDcm9uRGlzcGxheSwgZ2V0RGVmYXVsdENyb25EaXNwbGF5LCBwYXJzZUNyb25FeHByZXNzaW9uLCB0b0Nyb25EZXNjcmlwdGlvbiwgdG9Dcm9uRXhwcmVzc2lvbiB9IGZyb20gJy4vZ2lvLWZvcm0tY3Jvbi5hZGFwdGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2lvLWZvcm0tY3JvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9naW8tZm9ybS1jcm9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2lvLWZvcm0tY3Jvbi5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEdpb0Zvcm1Dcm9uQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEdpb0Zvcm1Dcm9uQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEdpb0Zvcm1Dcm9uQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95LCBWYWxpZGF0b3Ige1xuICBwdWJsaWMgX29uQ2hhbmdlOiAodmFsdWU6IHN0cmluZyB8IG51bGwpID0+IHZvaWQgPSAoKSA9PiAoe30pO1xuXG4gIHB1YmxpYyBfb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4gKHt9KTtcblxuICBwdWJsaWMgc2Vjb25kcyA9IFsuLi5yYW5nZSgwLCA2MCldO1xuICBwdWJsaWMgbWludXRlcyA9IFsuLi5yYW5nZSgwLCA2MCldO1xuICBwdWJsaWMgaG91cnMgPSBbLi4ucmFuZ2UoMCwgMjQpXTtcbiAgcHVibGljIGRheXNPZk1vbnRoID0gWy4uLnJhbmdlKDEsIDMyKV07XG4gIHB1YmxpYyBkYXlzT2ZXZWVrID0gWydNb25kYXknLCAnVHVlc2RheScsICdXZWRuZXNkYXknLCAnVGh1cnNkYXknLCAnRnJpZGF5JywgJ1NhdHVyZGF5JywgJ1N1bmRheSddO1xuICBwdWJsaWMgaW50ZXJuYWxGb3JtR3JvdXA/OiBGb3JtR3JvdXA7XG4gIHB1YmxpYyB2YWx1ZT86IHN0cmluZztcbiAgcHVibGljIGV4cHJlc3Npb25EZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcHVibGljIGlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zbWFsbERpc3BsYXknKVxuICBwdWJsaWMgc21hbGxEaXNwbGF5ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSB0b3VjaGVkID0gZmFsc2U7XG4gIHByaXZhdGUgZm9jdXNlZCA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRpc2FibGVkJylcbiAgcHJpdmF0ZSBoYXNFcnJvciA9IGZhbHNlO1xuXG4gIHByaXZhdGUgY3JvbkRpc3BsYXk/OiBDcm9uRGlzcGxheTtcblxuICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI/OiBSZXNpemVPYnNlcnZlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGVsUmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlYWRvbmx5IGZtOiBGb2N1c01vbml0b3IsIHByaXZhdGUgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUpIHtcbiAgICBmbS5tb25pdG9yKGVsUmVmLm5hdGl2ZUVsZW1lbnQsIHRydWUpLnN1YnNjcmliZShvcmlnaW4gPT4ge1xuICAgICAgdGhpcy5mb2N1c2VkID0gISFvcmlnaW47XG4gICAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMudG91Y2hlZCA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHdpbmRvdy5SZXNpemVPYnNlcnZlcikge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihlbnRyaWVzID0+IHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICBjb25zdCB3aWR0aCA9IGVudHJpZXNbMF0uY29udGVudFJlY3Qud2lkdGg7XG4gICAgICAgICAgdGhpcy5zbWFsbERpc3BsYXkgPSB3aWR0aCA8IDU4MDtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHRoaXMuaW50ZXJuYWxGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIG1vZGU6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgc2Vjb25kSW50ZXJ2YWw6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgbWludXRlSW50ZXJ2YWw6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgaG91ckludGVydmFsOiBuZXcgRm9ybUNvbnRyb2woKSxcbiAgICAgIGRheUludGVydmFsOiBuZXcgRm9ybUNvbnRyb2woKSxcbiAgICAgIGRheU9mV2VlazogbmV3IEZvcm1Db250cm9sKCksXG4gICAgICBkYXlPZk1vbnRoOiBuZXcgRm9ybUNvbnRyb2woKSxcblxuICAgICAgaG91cnM6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgbWludXRlczogbmV3IEZvcm1Db250cm9sKCksXG4gICAgICBjdXN0b21FeHByZXNzaW9uOiBuZXcgRm9ybUNvbnRyb2woKSxcbiAgICB9KTtcblxuICAgIHRoaXMuaXNEaXNhYmxlZCA/IHRoaXMuaW50ZXJuYWxGb3JtR3JvdXAuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSkgOiB0aGlzLmludGVybmFsRm9ybUdyb3VwLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cbiAgICB0aGlzLmludGVybmFsRm9ybUdyb3VwXG4gICAgICAuZ2V0KCdtb2RlJylcbiAgICAgID8udmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgIGZpbHRlcihtb2RlID0+ICEhbW9kZSksXG4gICAgICAgIHRhcChtb2RlID0+IHtcbiAgICAgICAgICB0aGlzLmNyb25EaXNwbGF5ID0gZ2V0RGVmYXVsdENyb25EaXNwbGF5KG1vZGUpO1xuXG4gICAgICAgICAgdGhpcy5yZWZyZXNoSW50ZXJuYWxGb3JtKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5pbnRlcm5hbEZvcm1Hcm91cC52YWx1ZUNoYW5nZXNcbiAgICAgID8ucGlwZShcbiAgICAgICAgdGFwKHZhbHVlID0+IHtcbiAgICAgICAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XG4gICAgICAgICAgaWYgKCF2YWx1ZT8ubW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2UobnVsbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdG9Dcm9uRXhwcmVzc2lvbih7XG4gICAgICAgICAgICAgIG1vZGU6IHZhbHVlLm1vZGUsXG4gICAgICAgICAgICAgIHNlY29uZEludGVydmFsOiB2YWx1ZS5zZWNvbmRJbnRlcnZhbCxcbiAgICAgICAgICAgICAgbWludXRlSW50ZXJ2YWw6IHZhbHVlLm1pbnV0ZUludGVydmFsLFxuICAgICAgICAgICAgICBob3VySW50ZXJ2YWw6IHZhbHVlLmhvdXJJbnRlcnZhbCxcbiAgICAgICAgICAgICAgZGF5SW50ZXJ2YWw6IHZhbHVlLmRheUludGVydmFsLFxuICAgICAgICAgICAgICBkYXlPZldlZWs6IHZhbHVlLmRheU9mV2VlayxcbiAgICAgICAgICAgICAgZGF5T2ZNb250aDogdmFsdWUuZGF5T2ZNb250aCxcbiAgICAgICAgICAgICAgY3VzdG9tRXhwcmVzc2lvbjogdmFsdWUuY3VzdG9tRXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgaG91cnM6IHZhbHVlLmhvdXJzLFxuICAgICAgICAgICAgICBtaW51dGVzOiB2YWx1ZS5taW51dGVzLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbkRlc2NyaXB0aW9uID0gdG9Dcm9uRGVzY3JpcHRpb24odGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5oYXNFcnJvciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25EZXNjcmlwdGlvbiA9IGAke2Vycm9yfWAgPz8gJ0ludmFsaWQgY3JvbiBleHByZXNzaW9uLic7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZShudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5yZWZyZXNoSW50ZXJuYWxGb3JtKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5mbS5zdG9wTW9uaXRvcmluZyh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXI/LnVub2JzZXJ2ZSh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgdGhpcy5vbkNsZWFyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLmNyb25EaXNwbGF5ID0gcGFyc2VDcm9uRXhwcmVzc2lvbih2YWx1ZSk7XG5cbiAgICAgIHRoaXMuZXhwcmVzc2lvbkRlc2NyaXB0aW9uID0gdG9Dcm9uRGVzY3JpcHRpb24odGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLnJlZnJlc2hJbnRlcm5hbEZvcm0oKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5oYXNFcnJvciA9IHRydWU7XG4gICAgICB0aGlzLmV4cHJlc3Npb25EZXNjcmlwdGlvbiA9IGAke2Vycm9yfWAgPz8gJ0ludmFsaWQgY3JvbiBleHByZXNzaW9uLic7XG4gICAgfVxuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuXG4gICAgdGhpcy5yZWZyZXNoSW50ZXJuYWxGb3JtKCk7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoXzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmhhc0Vycm9yID8geyBpbnZhbGlkOiB0cnVlIH0gOiBudWxsO1xuICB9XG5cbiAgcHVibGljIG9uQ2xlYXIoeyB0b3VjaGVkIH06IHsgdG91Y2hlZD86IGJvb2xlYW4gfSA9IHt9KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNyb25EaXNwbGF5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaW50ZXJuYWxGb3JtR3JvdXA/LnJlc2V0KHt9LCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcblxuICAgIGlmICh0b3VjaGVkKSB7XG4gICAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWZyZXNoSW50ZXJuYWxGb3JtKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pbnRlcm5hbEZvcm1Hcm91cCkgcmV0dXJuO1xuXG4gICAgdGhpcy5pc0Rpc2FibGVkID8gdGhpcy5pbnRlcm5hbEZvcm1Hcm91cC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KSA6IHRoaXMuaW50ZXJuYWxGb3JtR3JvdXAuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcblxuICAgIGNvbnN0IGQgPSB0aGlzLmNyb25EaXNwbGF5O1xuICAgIGlmIChkKSB7XG4gICAgICB0aGlzLmludGVybmFsRm9ybUdyb3VwLnBhdGNoVmFsdWUoXG4gICAgICAgIHtcbiAgICAgICAgICBtb2RlOiBkLm1vZGUsXG4gICAgICAgICAgY3VzdG9tRXhwcmVzc2lvbjogZC5jdXN0b21FeHByZXNzaW9uLFxuICAgICAgICAgIHNlY29uZEludGVydmFsOiBkLnNlY29uZEludGVydmFsLFxuICAgICAgICAgIG1pbnV0ZUludGVydmFsOiBkLm1pbnV0ZUludGVydmFsLFxuICAgICAgICAgIGhvdXJJbnRlcnZhbDogZC5ob3VySW50ZXJ2YWwsXG4gICAgICAgICAgZGF5SW50ZXJ2YWw6IGQuZGF5SW50ZXJ2YWwsXG4gICAgICAgICAgZGF5T2ZXZWVrOiBkLmRheU9mV2VlayxcbiAgICAgICAgICBkYXlPZk1vbnRoOiBkLmRheU9mTW9udGgsXG5cbiAgICAgICAgICBob3VyczogZC5ob3VycyxcbiAgICAgICAgICBtaW51dGVzOiBkLm1pbnV0ZXMsXG4gICAgICAgIH0sXG4gICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9LFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuPGRpdiBjbGFzcz1cImxhYmVsXCI+PG5nLWNvbnRlbnQgc2VsZWN0PVwiZ2lvLWZvcm0tY3Jvbi1sYWJlbFwiPjwvbmctY29udGVudD48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ3cmFwcGVyXCIgW2NsYXNzLnNtYWxsRGlzcGxheV09XCJzbWFsbERpc3BsYXlcIiBbY2xhc3MuZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW50ZXJuYWxGb3JtR3JvdXBcIiBbZm9ybUdyb3VwXT1cImludGVybmFsRm9ybUdyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1lbnVcIj5cbiAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBjbGFzcz1cImdpby1idXR0b24tdG9nZ2xlLWdyb3VwIG1lbnVfX21vZGVcIiBuYW1lPVwibW9kZVwiIGFyaWEtbGFiZWw9XCJDcm9uIG1vZGVcIiBmb3JtQ29udHJvbE5hbWU9XCJtb2RlXCI+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cInNlY29uZGx5XCIgbWF0VG9vbHRpcD1cIlNlY29uZGx5XCIgW21hdFRvb2x0aXBEaXNhYmxlZF09XCIhc21hbGxEaXNwbGF5XCI+e3tcbiAgICAgICAgICBzbWFsbERpc3BsYXkgPyAncycgOiAnU2Vjb25kbHknXG4gICAgICAgIH19PC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwibWludXRlbHlcIiBtYXRUb29sdGlwPVwiTWludXRlbHlcIiBbbWF0VG9vbHRpcERpc2FibGVkXT1cIiFzbWFsbERpc3BsYXlcIj57e1xuICAgICAgICAgIHNtYWxsRGlzcGxheSA/ICdtJyA6ICdNaW51dGVseSdcbiAgICAgICAgfX08L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJob3VybHlcIiBtYXRUb29sdGlwPVwiSG91cmx5XCIgW21hdFRvb2x0aXBEaXNhYmxlZF09XCIhc21hbGxEaXNwbGF5XCI+e3tcbiAgICAgICAgICBzbWFsbERpc3BsYXkgPyAnaCcgOiAnSG91cmx5J1xuICAgICAgICB9fTwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cImRhaWx5XCIgbWF0VG9vbHRpcD1cIkRhaWx5XCIgW21hdFRvb2x0aXBEaXNhYmxlZF09XCIhc21hbGxEaXNwbGF5XCI+e3tcbiAgICAgICAgICBzbWFsbERpc3BsYXkgPyAnRCcgOiAnRGFpbHknXG4gICAgICAgIH19PC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwid2Vla2x5XCIgbWF0VG9vbHRpcD1cIldlZWtseVwiIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiIXNtYWxsRGlzcGxheVwiPnt7XG4gICAgICAgICAgc21hbGxEaXNwbGF5ID8gJ1cnIDogJ1dlZWtseSdcbiAgICAgICAgfX08L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJtb250aGx5XCIgbWF0VG9vbHRpcD1cIk1vbnRobHlcIiBbbWF0VG9vbHRpcERpc2FibGVkXT1cIiFzbWFsbERpc3BsYXlcIj57e1xuICAgICAgICAgIHNtYWxsRGlzcGxheSA/ICdNJyA6ICdNb250aGx5J1xuICAgICAgICB9fTwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cImN1c3RvbVwiIG1hdFRvb2x0aXA9XCJDdXN0b21cIiBbbWF0VG9vbHRpcERpc2FibGVkXT1cIiFzbWFsbERpc3BsYXlcIj57e1xuICAgICAgICAgIHNtYWxsRGlzcGxheSA/ICdDJyA6ICdDdXN0b20nXG4gICAgICAgIH19PC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwidmFsdWUgJiYgIWlzRGlzYWJsZWRcIlxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyXCJcbiAgICAgICAgbWF0VG9vbHRpcD1cIkNsZWFyXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJvbkNsZWFyKHsgdG91Y2hlZDogdHJ1ZSB9KVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImludGVybmFsRm9ybUdyb3VwLmdldCgnbW9kZScpPy52YWx1ZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlY29uZGx5J1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kZUZvcm1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyb24tZm9ybS1sYWJlbFwiPkV2ZXJ5IDwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtc21hbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+U2Vjb25kPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJzZWNvbmRJbnRlcnZhbFwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgc2Vjb25kIG9mIHNlY29uZHNcIiBbdmFsdWVdPVwic2Vjb25kXCI+e3sgc2Vjb25kIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtaW51dGVseSdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGVGb3JtXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj5FdmVyeSA8L3NwYW4+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibW9kZUZvcm1fX2ZpZWxkLXNtYWxsXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPk1pbnV0ZShzKTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwibWludXRlSW50ZXJ2YWxcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG1pbnV0ZSBvZiBtaW51dGVzXCIgW3ZhbHVlXT1cIm1pbnV0ZVwiPnt7IG1pbnV0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaG91cmx5J1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kZUZvcm1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyb24tZm9ybS1sYWJlbFwiPkV2ZXJ5IDwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtc21hbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+SG91cihzKTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaG91ckludGVydmFsXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBob3VyIG9mIGhvdXJzXCIgW3ZhbHVlXT1cImhvdXJcIj57eyBob3VyIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj46PC9zcGFuPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1zbWFsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5NaW51dGUocyk8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cIm1pbnV0ZXNcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG1pbnV0ZSBvZiBtaW51dGVzXCIgW3ZhbHVlXT1cIm1pbnV0ZVwiPnt7IG1pbnV0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGFpbHknXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RlRm9ybVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Jvbi1mb3JtLWxhYmVsXCI+RXZlcnkgPC9zcGFuPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1zbWFsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5EYXkocyk8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImRheUludGVydmFsXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5c09mTW9udGhcIiBbdmFsdWVdPVwiZGF5XCI+e3sgZGF5IH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj4gYXQgPC9zcGFuPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1zbWFsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5Ib3VyKHMpPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJob3Vyc1wiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaG91ciBvZiBob3Vyc1wiIFt2YWx1ZV09XCJob3VyXCI+e3sgaG91ciB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Jvbi1mb3JtLWxhYmVsXCI+Ojwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtc21hbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+TWludXRlKHMpPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJtaW51dGVzXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBtaW51dGUgb2YgbWludXRlc1wiIFt2YWx1ZV09XCJtaW51dGVcIj57eyBtaW51dGUgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3dlZWtseSdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGVGb3JtXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj5FdmVyeSA8L3NwYW4+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibW9kZUZvcm1fX2ZpZWxkLW1lZGl1bVwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5EYXkgb2YgdGhlIHdlZWs8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImRheU9mV2Vla1wiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNPZldlZWs7IGxldCBpbmRleCA9IGluZGV4XCIgW3ZhbHVlXT1cImluZGV4XCI+e3sgZGF5IH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj4gYXQgPC9zcGFuPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1zbWFsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5Ib3VyczwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaG91cnNcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGhvdXIgb2YgaG91cnNcIiBbdmFsdWVdPVwiaG91clwiPnt7IGhvdXIgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyb24tZm9ybS1sYWJlbFwiPjo8L3NwYW4+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibW9kZUZvcm1fX2ZpZWxkLXNtYWxsXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPk1pbnV0ZXM8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cIm1pbnV0ZXNcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG1pbnV0ZSBvZiBtaW51dGVzXCIgW3ZhbHVlXT1cIm1pbnV0ZVwiPnt7IG1pbnV0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbW9udGhseSdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGVGb3JtXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj5PbiB0aGUgPC9zcGFuPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1zbWFsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5EYXkocyk8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImRheU9mTW9udGhcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGRheSBvZiBkYXlzT2ZNb250aFwiIFt2YWx1ZV09XCJkYXlcIj57eyBkYXkgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyb24tZm9ybS1sYWJlbFwiPiBvZiBldmVyeSBtb250aCBhdCA8L3NwYW4+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibW9kZUZvcm1fX2ZpZWxkLXNtYWxsXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPkhvdXJzPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJob3Vyc1wiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaG91ciBvZiBob3Vyc1wiIFt2YWx1ZV09XCJob3VyXCI+e3sgaG91ciB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Jvbi1mb3JtLWxhYmVsXCI+Ojwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtc21hbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+TWludXRlczwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwibWludXRlc1wiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbWludXRlIG9mIG1pbnV0ZXNcIiBbdmFsdWVdPVwibWludXRlXCI+e3sgbWludXRlIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjdXN0b20nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RlRm9ybVwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1jdXN0b21cIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+Q3JvbiBleHByZXNzaW9uPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiY3VzdG9tRXhwcmVzc2lvblwiIHBsYWNlaG9sZGVyPVwiKiAqICogKiAqICpcIiAvPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2ICpuZ0lmPVwidmFsdWU7IGVsc2UgcGxhY2Vob2xkZXJcIiBjbGFzcz1cInByZXZpZXdcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaW50ZXJuYWxGb3JtR3JvdXAuZ2V0KCdtb2RlJyk/LnZhbHVlICE9PSAnY3VzdG9tJ1wiIGNsYXNzPVwicHJldmlld19fdmFsdWVcIj5cbiAgICAgICAge3sgdmFsdWUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicHJldmlld19faGludFwiPnt7IGV4cHJlc3Npb25EZXNjcmlwdGlvbiB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNwbGFjZWhvbGRlcj5cbiAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXJcIj5ObyBjcm9uIGV4cHJlc3Npb24gZGVmaW5lZC48L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImhpbnRcIj48bmctY29udGVudCBzZWxlY3Q9XCJnaW8tZm9ybS1jcm9uLWhpbnRcIj48L25nLWNvbnRlbnQ+PC9kaXY+XG4iXX0=
@@ -24,11 +24,13 @@ import { MatButtonModule } from '@angular/material/button';
24
24
  import { MatTooltipModule } from '@angular/material/tooltip';
25
25
  import { GioIconsModule } from '../gio-icons/gio-icons.module';
26
26
  import { GioFormCronComponent } from './gio-form-cron.component';
27
+ import { GioFormCronLabelComponent } from './gio-form-cron-label.component';
28
+ import { GioFormCronHintComponent } from './gio-form-cron-hint.component';
27
29
  import * as i0 from "@angular/core";
28
30
  export class GioFormCronModule {
29
31
  }
30
32
  GioFormCronModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioFormCronModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
31
- GioFormCronModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioFormCronModule, declarations: [GioFormCronComponent], imports: [CommonModule,
33
+ GioFormCronModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioFormCronModule, declarations: [GioFormCronComponent, GioFormCronLabelComponent, GioFormCronHintComponent], imports: [CommonModule,
32
34
  ReactiveFormsModule,
33
35
  MatButtonToggleModule,
34
36
  MatFormFieldModule,
@@ -36,7 +38,7 @@ GioFormCronModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
36
38
  MatInputModule,
37
39
  MatButtonModule,
38
40
  MatTooltipModule,
39
- GioIconsModule], exports: [GioFormCronComponent] });
41
+ GioIconsModule], exports: [GioFormCronComponent, GioFormCronLabelComponent, GioFormCronHintComponent] });
40
42
  GioFormCronModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioFormCronModule, imports: [[
41
43
  CommonModule,
42
44
  ReactiveFormsModule,
@@ -62,8 +64,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
62
64
  MatTooltipModule,
63
65
  GioIconsModule,
64
66
  ],
65
- declarations: [GioFormCronComponent],
66
- exports: [GioFormCronComponent],
67
+ declarations: [GioFormCronComponent, GioFormCronLabelComponent, GioFormCronHintComponent],
68
+ exports: [GioFormCronComponent, GioFormCronLabelComponent, GioFormCronHintComponent],
67
69
  }]
68
70
  }] });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWZvcm0tY3Jvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1mb3JtLWNyb24vZ2lvLWZvcm0tY3Jvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBaUJqRSxNQUFNLE9BQU8saUJBQWlCOzsrR0FBakIsaUJBQWlCO2dIQUFqQixpQkFBaUIsaUJBSGIsb0JBQW9CLGFBVmpDLFlBQVk7UUFDWixtQkFBbUI7UUFDbkIscUJBQXFCO1FBQ3JCLGtCQUFrQjtRQUNsQixlQUFlO1FBQ2YsY0FBYztRQUNkLGVBQWU7UUFDZixnQkFBZ0I7UUFDaEIsY0FBYyxhQUdOLG9CQUFvQjtnSEFFbkIsaUJBQWlCLFlBZG5CO1lBQ1AsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixxQkFBcUI7WUFDckIsa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixjQUFjO1lBQ2QsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixjQUFjO1NBQ2Y7NEZBSVUsaUJBQWlCO2tCQWY3QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsY0FBYztxQkFDZjtvQkFDRCxZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7aUJBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQgeyBHaW9JY29uc01vZHVsZSB9IGZyb20gJy4uL2dpby1pY29ucy9naW8taWNvbnMubW9kdWxlJztcblxuaW1wb3J0IHsgR2lvRm9ybUNyb25Db21wb25lbnQgfSBmcm9tICcuL2dpby1mb3JtLWNyb24uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIEdpb0ljb25zTW9kdWxlLFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtHaW9Gb3JtQ3JvbkNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtHaW9Gb3JtQ3JvbkNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEdpb0Zvcm1Dcm9uTW9kdWxlIHt9XG4iXX0=
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWZvcm0tY3Jvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1mb3JtLWNyb24vZ2lvLWZvcm0tY3Jvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7O0FBaUIxRSxNQUFNLE9BQU8saUJBQWlCOzsrR0FBakIsaUJBQWlCO2dIQUFqQixpQkFBaUIsaUJBSGIsb0JBQW9CLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLGFBVnRGLFlBQVk7UUFDWixtQkFBbUI7UUFDbkIscUJBQXFCO1FBQ3JCLGtCQUFrQjtRQUNsQixlQUFlO1FBQ2YsY0FBYztRQUNkLGVBQWU7UUFDZixnQkFBZ0I7UUFDaEIsY0FBYyxhQUdOLG9CQUFvQixFQUFFLHlCQUF5QixFQUFFLHdCQUF3QjtnSEFFeEUsaUJBQWlCLFlBZG5CO1lBQ1AsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixxQkFBcUI7WUFDckIsa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixjQUFjO1lBQ2QsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixjQUFjO1NBQ2Y7NEZBSVUsaUJBQWlCO2tCQWY3QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsY0FBYztxQkFDZjtvQkFDRCxZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsQ0FBQztvQkFDekYsT0FBTyxFQUFFLENBQUMsb0JBQW9CLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLENBQUM7aUJBQ3JGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQgeyBHaW9JY29uc01vZHVsZSB9IGZyb20gJy4uL2dpby1pY29ucy9naW8taWNvbnMubW9kdWxlJztcblxuaW1wb3J0IHsgR2lvRm9ybUNyb25Db21wb25lbnQgfSBmcm9tICcuL2dpby1mb3JtLWNyb24uY29tcG9uZW50JztcbmltcG9ydCB7IEdpb0Zvcm1Dcm9uTGFiZWxDb21wb25lbnQgfSBmcm9tICcuL2dpby1mb3JtLWNyb24tbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7IEdpb0Zvcm1Dcm9uSGludENvbXBvbmVudCB9IGZyb20gJy4vZ2lvLWZvcm0tY3Jvbi1oaW50LmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBHaW9JY29uc01vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbR2lvRm9ybUNyb25Db21wb25lbnQsIEdpb0Zvcm1Dcm9uTGFiZWxDb21wb25lbnQsIEdpb0Zvcm1Dcm9uSGludENvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtHaW9Gb3JtQ3JvbkNvbXBvbmVudCwgR2lvRm9ybUNyb25MYWJlbENvbXBvbmVudCwgR2lvRm9ybUNyb25IaW50Q29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvRm9ybUNyb25Nb2R1bGUge31cbiJdfQ==
@@ -19,7 +19,8 @@ import * as i0 from "@angular/core";
19
19
  import * as i1 from "@angular/material/dialog";
20
20
  import * as i2 from "@angular/material/icon";
21
21
  import * as i3 from "@angular/material/button";
22
- import * as i4 from "../../gio-pipe/safe.pipe";
22
+ import * as i4 from "@angular/common";
23
+ import * as i5 from "../../gio-pipe/safe.pipe";
23
24
  export class GioLicenseDialogComponent {
24
25
  constructor(dialogRef, dialogData) {
25
26
  this.dialogRef = dialogRef;
@@ -31,12 +32,12 @@ export class GioLicenseDialogComponent {
31
32
  }
32
33
  }
33
34
  GioLicenseDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioLicenseDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
34
- GioLicenseDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioLicenseDialogComponent, selector: "gio-license-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-license-dialog__title\">\n <mat-icon class=\"gio-license-dialog__title__cancel\"></mat-icon>\n <button mat-icon-button [attr.aria-label]=\"'Close'\" (click)=\"onClose()\">\n <mat-icon class=\"gio-license-dialog__title__cancel\" svgIcon=\"gio:cancel\"> </mat-icon>\n </button>\n</div>\n\n<mat-dialog-content class=\"gio-license-dialog__content\">\n <img class=\"gio-license-dialog__content__image\" [src]=\"featureInfo.image\" [alt]=\"featureInfo.title || 'Unlock Gravitee Enterprise'\" />\n <h2 class=\"gio-license-dialog__content__title\" [innerHTML]=\"featureInfo.title || 'Unlock Gravitee Enterprise' | safe : 'html'\"></h2>\n <div class=\"gio-license-dialog__content__description\" [innerHTML]=\"featureInfo.description | safe : 'html'\"></div>\n <div class=\"gio-license-dialog__content__action\">\n <a class=\"gio-license-dialog__content__action__button\" mat-stroked-button color=\"accent\" target=\"_blank\" [href]=\"trialURL\">\n Request an enterprise license <mat-icon svgIcon=\"gio:external-link\"></mat-icon>\n </a>\n <div class=\"gio-license-dialog__content__action__info\">14 days trial</div>\n </div>\n</mat-dialog-content>\n", styles: [".gio-license-dialog__title{display:flex;justify-content:space-between}.gio-license-dialog__title__cancel{width:24px;height:24px;color:#8e8f9c}.gio-license-dialog__content{display:flex;width:600px;flex-direction:column;align-items:center;justify-content:center;padding:0}.gio-license-dialog__content__title{margin:0 0 24px;font:600 26px/36px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.gio-license-dialog__content__description{padding:0 50px 32px;color:#606274;font-weight:500;line-height:24px;text-align:center}.gio-license-dialog__content__action{display:flex;flex-direction:column;align-items:center;padding:0 40px}.gio-license-dialog__content__action__button{width:250px}.gio-license-dialog__content__action__info{margin-top:10px;color:#606274;text-align:center}\n"], components: [{ type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }], directives: [{ type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }], pipes: { "safe": i4.SafePipe } });
35
+ GioLicenseDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioLicenseDialogComponent, selector: "gio-license-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-license-dialog__title\">\n <mat-icon class=\"gio-license-dialog__title__cancel\"></mat-icon>\n <button mat-icon-button [attr.aria-label]=\"'Close'\" (click)=\"onClose()\">\n <mat-icon class=\"gio-license-dialog__title__cancel\" svgIcon=\"gio:cancel\"> </mat-icon>\n </button>\n</div>\n\n<mat-dialog-content class=\"gio-license-dialog__content\">\n <img class=\"gio-license-dialog__content__image\" [src]=\"featureInfo.image\" [alt]=\"featureInfo.title || 'Unlock Gravitee Enterprise'\" />\n <h2 class=\"gio-license-dialog__content__title\" [innerHTML]=\"featureInfo.title || 'Unlock Gravitee Enterprise' | safe : 'html'\"></h2>\n <div class=\"gio-license-dialog__content__description\" [innerHTML]=\"featureInfo.description | safe : 'html'\"></div>\n <div class=\"gio-license-dialog__content__action\">\n <a class=\"gio-license-dialog__content__action__button\" mat-stroked-button color=\"accent\" target=\"_blank\" [href]=\"trialURL\">\n {{ featureInfo.trialButtonLabel || 'Request an enterprise license' }} <mat-icon svgIcon=\"gio:external-link\"></mat-icon>\n </a>\n <div *ngIf=\"!featureInfo.hideDays\" class=\"gio-license-dialog__content__action__info\">14 days trial</div>\n </div>\n</mat-dialog-content>\n", styles: [".gio-license-dialog__title{display:flex;justify-content:space-between}.gio-license-dialog__title__cancel{width:24px;height:24px;color:#8e8f9c}.gio-license-dialog__content{display:flex;width:600px;flex-direction:column;align-items:center;justify-content:center;padding:0}.gio-license-dialog__content__title{margin:0 0 24px;font:600 26px/36px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.gio-license-dialog__content__description{padding:0 50px 32px;color:#606274;font-weight:500;line-height:24px;text-align:center}.gio-license-dialog__content__action{display:flex;flex-direction:column;align-items:center;padding:0 40px}.gio-license-dialog__content__action__button{width:250px}.gio-license-dialog__content__action__info{margin-top:10px;color:#606274;text-align:center}\n"], components: [{ type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }], directives: [{ type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "safe": i5.SafePipe } });
35
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioLicenseDialogComponent, decorators: [{
36
37
  type: Component,
37
- args: [{ selector: 'gio-license-dialog', template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-license-dialog__title\">\n <mat-icon class=\"gio-license-dialog__title__cancel\"></mat-icon>\n <button mat-icon-button [attr.aria-label]=\"'Close'\" (click)=\"onClose()\">\n <mat-icon class=\"gio-license-dialog__title__cancel\" svgIcon=\"gio:cancel\"> </mat-icon>\n </button>\n</div>\n\n<mat-dialog-content class=\"gio-license-dialog__content\">\n <img class=\"gio-license-dialog__content__image\" [src]=\"featureInfo.image\" [alt]=\"featureInfo.title || 'Unlock Gravitee Enterprise'\" />\n <h2 class=\"gio-license-dialog__content__title\" [innerHTML]=\"featureInfo.title || 'Unlock Gravitee Enterprise' | safe : 'html'\"></h2>\n <div class=\"gio-license-dialog__content__description\" [innerHTML]=\"featureInfo.description | safe : 'html'\"></div>\n <div class=\"gio-license-dialog__content__action\">\n <a class=\"gio-license-dialog__content__action__button\" mat-stroked-button color=\"accent\" target=\"_blank\" [href]=\"trialURL\">\n Request an enterprise license <mat-icon svgIcon=\"gio:external-link\"></mat-icon>\n </a>\n <div class=\"gio-license-dialog__content__action__info\">14 days trial</div>\n </div>\n</mat-dialog-content>\n", styles: [".gio-license-dialog__title{display:flex;justify-content:space-between}.gio-license-dialog__title__cancel{width:24px;height:24px;color:#8e8f9c}.gio-license-dialog__content{display:flex;width:600px;flex-direction:column;align-items:center;justify-content:center;padding:0}.gio-license-dialog__content__title{margin:0 0 24px;font:600 26px/36px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.gio-license-dialog__content__description{padding:0 50px 32px;color:#606274;font-weight:500;line-height:24px;text-align:center}.gio-license-dialog__content__action{display:flex;flex-direction:column;align-items:center;padding:0 40px}.gio-license-dialog__content__action__button{width:250px}.gio-license-dialog__content__action__info{margin-top:10px;color:#606274;text-align:center}\n"] }]
38
+ args: [{ selector: 'gio-license-dialog', template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"gio-license-dialog__title\">\n <mat-icon class=\"gio-license-dialog__title__cancel\"></mat-icon>\n <button mat-icon-button [attr.aria-label]=\"'Close'\" (click)=\"onClose()\">\n <mat-icon class=\"gio-license-dialog__title__cancel\" svgIcon=\"gio:cancel\"> </mat-icon>\n </button>\n</div>\n\n<mat-dialog-content class=\"gio-license-dialog__content\">\n <img class=\"gio-license-dialog__content__image\" [src]=\"featureInfo.image\" [alt]=\"featureInfo.title || 'Unlock Gravitee Enterprise'\" />\n <h2 class=\"gio-license-dialog__content__title\" [innerHTML]=\"featureInfo.title || 'Unlock Gravitee Enterprise' | safe : 'html'\"></h2>\n <div class=\"gio-license-dialog__content__description\" [innerHTML]=\"featureInfo.description | safe : 'html'\"></div>\n <div class=\"gio-license-dialog__content__action\">\n <a class=\"gio-license-dialog__content__action__button\" mat-stroked-button color=\"accent\" target=\"_blank\" [href]=\"trialURL\">\n {{ featureInfo.trialButtonLabel || 'Request an enterprise license' }} <mat-icon svgIcon=\"gio:external-link\"></mat-icon>\n </a>\n <div *ngIf=\"!featureInfo.hideDays\" class=\"gio-license-dialog__content__action__info\">14 days trial</div>\n </div>\n</mat-dialog-content>\n", styles: [".gio-license-dialog__title{display:flex;justify-content:space-between}.gio-license-dialog__title__cancel{width:24px;height:24px;color:#8e8f9c}.gio-license-dialog__content{display:flex;width:600px;flex-direction:column;align-items:center;justify-content:center;padding:0}.gio-license-dialog__content__title{margin:0 0 24px;font:600 26px/36px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.gio-license-dialog__content__description{padding:0 50px 32px;color:#606274;font-weight:500;line-height:24px;text-align:center}.gio-license-dialog__content__action{display:flex;flex-direction:column;align-items:center;padding:0 40px}.gio-license-dialog__content__action__button{width:250px}.gio-license-dialog__content__action__info{margin-top:10px;color:#606274;text-align:center}\n"] }]
38
39
  }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
39
40
  type: Inject,
40
41
  args: [MAT_DIALOG_DATA]
41
42
  }] }]; } });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWxpY2Vuc2UtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBhcnRpY2xlcy1hbmd1bGFyL3NyYy9saWIvZ2lvLWxpY2Vuc2UvZ2lvLWxpY2Vuc2UtZGlhbG9nL2dpby1saWNlbnNlLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1saWNlbnNlL2dpby1saWNlbnNlLWRpYWxvZy9naW8tbGljZW5zZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7QUFjekUsTUFBTSxPQUFPLHlCQUF5QjtJQUlwQyxZQUE2QixTQUE2QyxFQUEyQixVQUFnQztRQUF4RyxjQUFTLEdBQVQsU0FBUyxDQUFvQztRQUN4RSxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsRUFBRSxXQUFXLENBQUM7UUFDM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLEVBQUUsUUFBUSxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDOzt1SEFYVSx5QkFBeUIsOENBSWdELGVBQWU7MkdBSnhGLHlCQUF5QiwwREM5QnRDLG16REFtQ0E7NEZETGEseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLG9CQUFvQjs7MEJBUStDLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBGZWF0dXJlSW5mbyB9IGZyb20gJy4uL2dpby1saWNlbnNlLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBHaW9MaWNlbnNlRGlhbG9nRGF0YSA9IHtcbiAgZmVhdHVyZUluZm86IEZlYXR1cmVJbmZvO1xuICB0cmlhbFVSTDogc3RyaW5nO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2lvLWxpY2Vuc2UtZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dpby1saWNlbnNlLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpby1saWNlbnNlLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9MaWNlbnNlRGlhbG9nQ29tcG9uZW50IHtcbiAgcHVibGljIGZlYXR1cmVJbmZvOiBGZWF0dXJlSW5mbztcbiAgcHVibGljIHRyaWFsVVJMOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxHaW9MaWNlbnNlRGlhbG9nRGF0YT4sIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBkaWFsb2dEYXRhOiBHaW9MaWNlbnNlRGlhbG9nRGF0YSkge1xuICAgIHRoaXMuZmVhdHVyZUluZm8gPSBkaWFsb2dEYXRhPy5mZWF0dXJlSW5mbztcbiAgICB0aGlzLnRyaWFsVVJMID0gZGlhbG9nRGF0YT8udHJpYWxVUkw7XG4gIH1cblxuICBwdWJsaWMgb25DbG9zZSgpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICB9XG59XG4iLCI8IS0tXG5cbiAgICBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4tLT5cbjxkaXYgY2xhc3M9XCJnaW8tbGljZW5zZS1kaWFsb2dfX3RpdGxlXCI+XG4gIDxtYXQtaWNvbiBjbGFzcz1cImdpby1saWNlbnNlLWRpYWxvZ19fdGl0bGVfX2NhbmNlbFwiPjwvbWF0LWljb24+XG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0Nsb3NlJ1wiIChjbGljayk9XCJvbkNsb3NlKClcIj5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJnaW8tbGljZW5zZS1kaWFsb2dfX3RpdGxlX19jYW5jZWxcIiBzdmdJY29uPVwiZ2lvOmNhbmNlbFwiPiA8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuXG48bWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwiZ2lvLWxpY2Vuc2UtZGlhbG9nX19jb250ZW50XCI+XG4gIDxpbWcgY2xhc3M9XCJnaW8tbGljZW5zZS1kaWFsb2dfX2NvbnRlbnRfX2ltYWdlXCIgW3NyY109XCJmZWF0dXJlSW5mby5pbWFnZVwiIFthbHRdPVwiZmVhdHVyZUluZm8udGl0bGUgfHwgJ1VubG9jayBHcmF2aXRlZSBFbnRlcnByaXNlJ1wiIC8+XG4gIDxoMiBjbGFzcz1cImdpby1saWNlbnNlLWRpYWxvZ19fY29udGVudF9fdGl0bGVcIiBbaW5uZXJIVE1MXT1cImZlYXR1cmVJbmZvLnRpdGxlIHx8ICdVbmxvY2sgR3Jhdml0ZWUgRW50ZXJwcmlzZScgfCBzYWZlIDogJ2h0bWwnXCI+PC9oMj5cbiAgPGRpdiBjbGFzcz1cImdpby1saWNlbnNlLWRpYWxvZ19fY29udGVudF9fZGVzY3JpcHRpb25cIiBbaW5uZXJIVE1MXT1cImZlYXR1cmVJbmZvLmRlc2NyaXB0aW9uIHwgc2FmZSA6ICdodG1sJ1wiPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZ2lvLWxpY2Vuc2UtZGlhbG9nX19jb250ZW50X19hY3Rpb25cIj5cbiAgICA8YSBjbGFzcz1cImdpby1saWNlbnNlLWRpYWxvZ19fY29udGVudF9fYWN0aW9uX19idXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJhY2NlbnRcIiB0YXJnZXQ9XCJfYmxhbmtcIiBbaHJlZl09XCJ0cmlhbFVSTFwiPlxuICAgICAgUmVxdWVzdCBhbiBlbnRlcnByaXNlIGxpY2Vuc2UgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86ZXh0ZXJuYWwtbGlua1wiPjwvbWF0LWljb24+XG4gICAgPC9hPlxuICAgIDxkaXYgY2xhc3M9XCJnaW8tbGljZW5zZS1kaWFsb2dfX2NvbnRlbnRfX2FjdGlvbl9faW5mb1wiPjE0IGRheXMgdHJpYWw8L2Rpdj5cbiAgPC9kaXY+XG48L21hdC1kaWFsb2ctY29udGVudD5cbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWxpY2Vuc2UtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBhcnRpY2xlcy1hbmd1bGFyL3NyYy9saWIvZ2lvLWxpY2Vuc2UvZ2lvLWxpY2Vuc2UtZGlhbG9nL2dpby1saWNlbnNlLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1saWNlbnNlL2dpby1saWNlbnNlLWRpYWxvZy9naW8tbGljZW5zZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7O0FBY3pFLE1BQU0sT0FBTyx5QkFBeUI7SUFJcEMsWUFBNkIsU0FBNkMsRUFBMkIsVUFBZ0M7UUFBeEcsY0FBUyxHQUFULFNBQVMsQ0FBb0M7UUFDeEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLEVBQUUsV0FBVyxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxFQUFFLFFBQVEsQ0FBQztJQUN2QyxDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQzs7dUhBWFUseUJBQXlCLDhDQUlnRCxlQUFlOzJHQUp4Rix5QkFBeUIsMERDOUJ0QywyM0RBbUNBOzRGRExhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSxvQkFBb0I7OzBCQVErQyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgRmVhdHVyZUluZm8gfSBmcm9tICcuLi9naW8tbGljZW5zZS5zZXJ2aWNlJztcblxuZXhwb3J0IHR5cGUgR2lvTGljZW5zZURpYWxvZ0RhdGEgPSB7XG4gIGZlYXR1cmVJbmZvOiBGZWF0dXJlSW5mbztcbiAgdHJpYWxVUkw6IHN0cmluZztcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dpby1saWNlbnNlLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9naW8tbGljZW5zZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tbGljZW5zZS1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvTGljZW5zZURpYWxvZ0NvbXBvbmVudCB7XG4gIHB1YmxpYyBmZWF0dXJlSW5mbzogRmVhdHVyZUluZm87XG4gIHB1YmxpYyB0cmlhbFVSTDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8R2lvTGljZW5zZURpYWxvZ0RhdGE+LCBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgZGlhbG9nRGF0YTogR2lvTGljZW5zZURpYWxvZ0RhdGEpIHtcbiAgICB0aGlzLmZlYXR1cmVJbmZvID0gZGlhbG9nRGF0YT8uZmVhdHVyZUluZm87XG4gICAgdGhpcy50cmlhbFVSTCA9IGRpYWxvZ0RhdGE/LnRyaWFsVVJMO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2UoKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgfVxufVxuIiwiPCEtLVxuXG4gICAgQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuLS0+XG48ZGl2IGNsYXNzPVwiZ2lvLWxpY2Vuc2UtZGlhbG9nX190aXRsZVwiPlxuICA8bWF0LWljb24gY2xhc3M9XCJnaW8tbGljZW5zZS1kaWFsb2dfX3RpdGxlX19jYW5jZWxcIj48L21hdC1pY29uPlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidDbG9zZSdcIiAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gICAgPG1hdC1pY29uIGNsYXNzPVwiZ2lvLWxpY2Vuc2UtZGlhbG9nX190aXRsZV9fY2FuY2VsXCIgc3ZnSWNvbj1cImdpbzpjYW5jZWxcIj4gPC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cblxuPG1hdC1kaWFsb2ctY29udGVudCBjbGFzcz1cImdpby1saWNlbnNlLWRpYWxvZ19fY29udGVudFwiPlxuICA8aW1nIGNsYXNzPVwiZ2lvLWxpY2Vuc2UtZGlhbG9nX19jb250ZW50X19pbWFnZVwiIFtzcmNdPVwiZmVhdHVyZUluZm8uaW1hZ2VcIiBbYWx0XT1cImZlYXR1cmVJbmZvLnRpdGxlIHx8ICdVbmxvY2sgR3Jhdml0ZWUgRW50ZXJwcmlzZSdcIiAvPlxuICA8aDIgY2xhc3M9XCJnaW8tbGljZW5zZS1kaWFsb2dfX2NvbnRlbnRfX3RpdGxlXCIgW2lubmVySFRNTF09XCJmZWF0dXJlSW5mby50aXRsZSB8fCAnVW5sb2NrIEdyYXZpdGVlIEVudGVycHJpc2UnIHwgc2FmZSA6ICdodG1sJ1wiPjwvaDI+XG4gIDxkaXYgY2xhc3M9XCJnaW8tbGljZW5zZS1kaWFsb2dfX2NvbnRlbnRfX2Rlc2NyaXB0aW9uXCIgW2lubmVySFRNTF09XCJmZWF0dXJlSW5mby5kZXNjcmlwdGlvbiB8IHNhZmUgOiAnaHRtbCdcIj48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImdpby1saWNlbnNlLWRpYWxvZ19fY29udGVudF9fYWN0aW9uXCI+XG4gICAgPGEgY2xhc3M9XCJnaW8tbGljZW5zZS1kaWFsb2dfX2NvbnRlbnRfX2FjdGlvbl9fYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCIgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwidHJpYWxVUkxcIj5cbiAgICAgIHt7IGZlYXR1cmVJbmZvLnRyaWFsQnV0dG9uTGFiZWwgfHwgJ1JlcXVlc3QgYW4gZW50ZXJwcmlzZSBsaWNlbnNlJyB9fSA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzpleHRlcm5hbC1saW5rXCI+PC9tYXQtaWNvbj5cbiAgICA8L2E+XG4gICAgPGRpdiAqbmdJZj1cIiFmZWF0dXJlSW5mby5oaWRlRGF5c1wiIGNsYXNzPVwiZ2lvLWxpY2Vuc2UtZGlhbG9nX19jb250ZW50X19hY3Rpb25fX2luZm9cIj4xNCBkYXlzIHRyaWFsPC9kaXY+XG4gIDwvZGl2PlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG4iXX0=