@seniorsistemas/angular-components 19.6.2 → 19.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +2 -1
- package/dynamic-form/dynamic-form/components/lookup/types/lookup-models.d.ts +2 -1
- package/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.d.ts +1 -2
- package/esm2022/alert/lib/alert/alert.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/components/lookup/types/lookup-models.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +16 -17
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +20 -23
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +9 -10
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +9 -15
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +4 -4
- package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-number-field.mjs +1 -1
- package/esm2022/inline-edit/lib/inline-edit/inline-edit.module.mjs +4 -5
- package/esm2022/input-mask/lib/input-mask/input-mask.directive.mjs +460 -0
- package/esm2022/input-mask/lib/input-mask/input-mask.module.mjs +16 -0
- package/esm2022/input-mask/public-api.mjs +3 -0
- package/esm2022/input-mask/seniorsistemas-angular-components-input-mask.mjs +5 -0
- package/esm2022/lib/locale/fallback.mjs +3 -1
- package/esm2022/table/lib/table/table-column/column-number-format.utils.mjs +24 -0
- package/esm2022/table/lib/table/table-paging/export-number-format.mjs +104 -0
- package/esm2022/table/lib/table/table-paging/models/export-number-format.enum.mjs +6 -0
- package/esm2022/table/lib/table/table-paging/models/index.mjs +2 -2
- package/esm2022/table/lib/table/table-paging/table-paging.component.mjs +58 -99
- package/fesm2022/seniorsistemas-angular-components-alert.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-alert.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +53 -62
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +6 -7
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-input-mask.mjs +480 -0
- package/fesm2022/seniorsistemas-angular-components-input-mask.mjs.map +1 -0
- package/fesm2022/seniorsistemas-angular-components-table.mjs +181 -98
- package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components.mjs +2 -0
- package/fesm2022/seniorsistemas-angular-components.mjs.map +1 -1
- package/inline-edit/lib/inline-edit/fields/inline-edit-number-field.d.ts +2 -2
- package/inline-edit/lib/inline-edit/inline-edit.module.d.ts +2 -2
- package/input-mask/README.md +183 -0
- package/input-mask/index.d.ts +5 -0
- package/input-mask/lib/input-mask/input-mask.directive.d.ts +103 -0
- package/input-mask/lib/input-mask/input-mask.module.d.ts +7 -0
- package/input-mask/public-api.d.ts +2 -0
- package/package.json +18 -12
- package/schematics/migrations/migrate-dynamic-form-v19/index.d.ts +2 -0
- package/schematics/migrations/migrate-dynamic-form-v19/index.js +964 -0
- package/schematics/migrations/migrate-dynamic-form-v19/index.js.map +1 -0
- package/schematics/migrations/migrate-dynamic-form-v19/index.test.d.ts +1 -0
- package/schematics/migrations/migrate-dynamic-form-v19/index.test.js +888 -0
- package/schematics/migrations/migrate-dynamic-form-v19/index.test.js.map +1 -0
- package/schematics/migrations/migrate-p-datepicker/index.js +4 -8
- package/schematics/migrations/migrate-p-datepicker/index.js.map +1 -1
- package/schematics/migrations/migrate-p-editor/index.d.ts +2 -0
- package/schematics/migrations/migrate-p-editor/index.js +301 -0
- package/schematics/migrations/migrate-p-editor/index.js.map +1 -0
- package/schematics/migrations/migrate-p-editor/index.test.d.ts +1 -0
- package/schematics/migrations/migrate-p-editor/index.test.js +393 -0
- package/schematics/migrations/migrate-p-editor/index.test.js.map +1 -0
- package/schematics/migrations.json +11 -0
- package/schematics/utils/ast-utils.d.ts +7 -0
- package/schematics/utils/ast-utils.js +20 -0
- package/schematics/utils/ast-utils.js.map +1 -1
- package/schematics/utils/html-utils.d.ts +6 -0
- package/schematics/utils/html-utils.js +15 -0
- package/schematics/utils/html-utils.js.map +1 -0
- package/table/README.md +28 -0
- package/table/lib/table/table-column/column-number-format.utils.d.ts +5 -0
- package/table/lib/table/table-paging/export-number-format.d.ts +15 -0
- package/table/lib/table/table-paging/models/export-number-format.enum.d.ts +4 -0
- package/table/lib/table/table-paging/models/index.d.ts +1 -0
- package/table/lib/table/table-paging/table-paging.component.d.ts +10 -27
|
@@ -6,6 +6,7 @@ import { LocalizedBignumberOptions } from '@seniorsistemas/angular-components/lo
|
|
|
6
6
|
import { SortMeta } from 'primeng/api';
|
|
7
7
|
import { AutoComplete, AutoCompleteCompleteEvent } from 'primeng/autocomplete';
|
|
8
8
|
import { Table, TableLazyLoadEvent } from 'primeng/table';
|
|
9
|
+
import { ExpandedDynamicType } from '../../configurations/structure/row';
|
|
9
10
|
import { DynamicStructure } from '../../configurations/structure/structure';
|
|
10
11
|
import { BignumberFieldConfig } from '../../form-field/configurations/fields/bignumber-field';
|
|
11
12
|
import { CurrencyFieldConfig } from '../../form-field/configurations/fields/currency-field';
|
|
@@ -48,7 +49,7 @@ export declare class LookupComponent implements ControlValueAccessor, OnChanges,
|
|
|
48
49
|
searchTotalRecords: number;
|
|
49
50
|
searchFields: (DynamicType & {
|
|
50
51
|
customName?: string;
|
|
51
|
-
})[];
|
|
52
|
+
} & Pick<ExpandedDynamicType, 'size'>)[];
|
|
52
53
|
searchGridFields: LookupGridFields[];
|
|
53
54
|
multiSortMeta: SortMeta[];
|
|
54
55
|
placeholder?: string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import { ExpandedDynamicType } from '../../../configurations/structure/row';
|
|
1
2
|
import { DynamicType } from '../../../form-field/configurations/fields/field';
|
|
2
3
|
export type LookupGridFields = DynamicType & {
|
|
3
4
|
width?: number | string;
|
|
4
|
-
}
|
|
5
|
+
} & Pick<ExpandedDynamicType, 'size'>;
|
|
@@ -60,7 +60,7 @@ export interface NumberFieldConfig extends FieldConfig {
|
|
|
60
60
|
/** Callback chamado quando o campo recebe foco. */
|
|
61
61
|
onFocus?: (event: Event) => void;
|
|
62
62
|
/** Callback chamado quando a máscara é completamente preenchida. */
|
|
63
|
-
onComplete?: (event:
|
|
63
|
+
onComplete?: (event: any) => void;
|
|
64
64
|
/** Callback chamado a cada alteração no valor do input. */
|
|
65
65
|
onInput?: (event: Event) => void;
|
|
66
66
|
}
|
package/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ import { AfterViewInit, ElementRef, EventEmitter, OnDestroy, OnInit } from '@ang
|
|
|
2
2
|
import { FormControl } from '@angular/forms';
|
|
3
3
|
import { FormFieldUtilsService } from '../../../services/form-field-utils.service';
|
|
4
4
|
import { BignumberFieldConfig } from '../../configurations/fields/bignumber-field';
|
|
5
|
-
import { BaseFieldComponentConfig } from '../base-field-component';
|
|
6
5
|
import { NumberFieldConfig } from '../../configurations/fields/number-field';
|
|
6
|
+
import { BaseFieldComponentConfig } from '../base-field-component';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export declare class BignumberFieldComponent implements OnInit, AfterViewInit, OnDestroy, BaseFieldComponentConfig {
|
|
9
9
|
private readonly localeService;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { AfterViewInit, OnInit } from '@angular/core';
|
|
2
2
|
import { FormControl } from '@angular/forms';
|
|
3
3
|
import { CurrencyService } from '@seniorsistemas/angular-components/currency';
|
|
4
|
+
import { NumberAlignmentOption } from '@seniorsistemas/angular-components/number-input';
|
|
4
5
|
import { FormFieldUtilsService } from '../../../services/form-field-utils.service';
|
|
5
6
|
import { CurrencyFieldConfig } from '../../configurations/fields/currency-field';
|
|
6
7
|
import { BaseFieldComponentConfig } from '../base-field-component';
|
|
7
|
-
import { NumberAlignmentOption } from '@seniorsistemas/angular-components/number-input';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
/**
|
|
10
10
|
* @deprecated Should use bignumber instead
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { AfterViewInit, ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
|
|
2
2
|
import { FormControl } from '@angular/forms';
|
|
3
|
-
import { InputMask } from 'primeng/inputmask';
|
|
4
3
|
import { FormFieldUtilsService } from '../../../services/form-field-utils.service';
|
|
5
4
|
import { TextFieldConfig } from '../../configurations/fields/text-field';
|
|
6
5
|
import { BaseFieldComponentConfig } from '../base-field-component';
|
|
@@ -13,7 +12,7 @@ export declare class TextFieldComponent implements OnInit, AfterViewInit, OnDest
|
|
|
13
12
|
onInput: EventEmitter<any>;
|
|
14
13
|
onFocus: EventEmitter<any>;
|
|
15
14
|
onComplete: EventEmitter<any>;
|
|
16
|
-
inputRef: ElementRef |
|
|
15
|
+
inputRef: ElementRef | null;
|
|
17
16
|
private ngUnsubscribe;
|
|
18
17
|
ngOnInit(): void;
|
|
19
18
|
ngAfterViewInit(): void;
|
|
@@ -63,11 +63,11 @@ export class AlertComponent {
|
|
|
63
63
|
}
|
|
64
64
|
_isOpen = true;
|
|
65
65
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
66
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AlertComponent, selector: "s-alert", inputs: { severity: "severity", summary: "summary", detail: "detail", closable: "closable" }, outputs: { closed: "closed" }, ngImport: i0, template: "<div\n class=\"alert\"\n [ngClass]=\"{\n 'alert--info': severity === 'info',\n 'alert--success': severity === 'success',\n 'alert--warning': severity === 'warning',\n 'alert--error': severity === 'error',\n }\"\n>\n <div class=\"content\">\n <div class=\"icon-container\">\n <i\n class=\"fas fa-info\"\n [ngClass]=\"{\n 'fa-info': severity === 'info',\n 'fa-check': severity === 'success',\n 'fa-exclamation-triangle': severity === 'warning',\n 'fa-times': severity === 'error',\n }\"\n ></i>\n </div>\n <div class=\"text-container\">\n <div class=\"text\">\n @if (summary) {\n <span class=\"summary\">{{ summary }}</span>\n }\n\n @if (detail) {\n <span class=\"detail\">{{ detail }}</span>\n }\n </div>\n </div>\n </div>\n @if (closable) {\n <button\n class=\"close-option\"\n (click)=\"onClose()\"\n >\n <i class=\"fas fa-times\"></i>\n </button>\n }\n</div>\n", styles: [".alert{align-items:center;background-color:#f1f7f8;border-left:4px solid #428bca;border-radius:4px;box-shadow:1px 1px 2px #0003;display:flex;gap:16px;justify-content:space-between;margin:8px;padding:12px 16px}.alert .content{align-items:center;display:flex;gap:16px}.alert .content .icon-container{align-items:center;background-color:#428bca;border-radius:50%;color:#fff;display:inline-flex;flex-shrink:0;height:40px;justify-content:center;width:40px}.alert .content .text-container{display:flex;flex-direction:column;gap:16px}.alert .content .text-container .text{display:flex;flex-direction:column;justify-content:flex-start}.alert .content .text-container .text .summary,.alert .content .text-container .text .detail{color:#212533;font-family:Open Sans,sans-serif;font-size:14px}.alert .content .text-container .text .summary{font-weight:700}.alert .close-option{background-color:transparent;border:none;color:#212533;cursor:pointer;font-size:16px;padding:4px}.alert--info{background-color:#f1f7f8;border-color:#428bca}.alert--info .content .icon-container{background-color:#428bca;color:#fff}.alert--success{background-color:#e0f0f0;border-color:#0c9348}.alert--success .content .icon-container{background-color:#0c9348;color:#fff}.alert--warning{background-color:#fef4e3;border-color:#fcbf10}.alert--warning .content .icon-container{background-color:#fcbf10;color:#212533}.alert--error{background-color:#fef0f0;border-color:#c13018}.alert--error .content .icon-container{background-color:#c13018;color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
66
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AlertComponent, selector: "s-alert", inputs: { severity: "severity", summary: "summary", detail: "detail", closable: "closable" }, outputs: { closed: "closed" }, ngImport: i0, template: "@if (isOpen) {\n<div\n class=\"alert\"\n [ngClass]=\"{\n 'alert--info': severity === 'info',\n 'alert--success': severity === 'success',\n 'alert--warning': severity === 'warning',\n 'alert--error': severity === 'error',\n }\"\n>\n <div class=\"content\">\n <div class=\"icon-container\">\n <i\n class=\"fas fa-info\"\n [ngClass]=\"{\n 'fa-info': severity === 'info',\n 'fa-check': severity === 'success',\n 'fa-exclamation-triangle': severity === 'warning',\n 'fa-times': severity === 'error',\n }\"\n ></i>\n </div>\n <div class=\"text-container\">\n <div class=\"text\">\n @if (summary) {\n <span class=\"summary\">{{ summary }}</span>\n }\n\n @if (detail) {\n <span class=\"detail\">{{ detail }}</span>\n }\n </div>\n </div>\n </div>\n @if (closable) {\n <button\n class=\"close-option\"\n (click)=\"onClose()\"\n >\n <i class=\"fas fa-times\"></i>\n </button>\n }\n</div>\n}\n", styles: [".alert{align-items:center;background-color:#f1f7f8;border-left:4px solid #428bca;border-radius:4px;box-shadow:1px 1px 2px #0003;display:flex;gap:16px;justify-content:space-between;margin:8px;padding:12px 16px}.alert .content{align-items:center;display:flex;gap:16px}.alert .content .icon-container{align-items:center;background-color:#428bca;border-radius:50%;color:#fff;display:inline-flex;flex-shrink:0;height:40px;justify-content:center;width:40px}.alert .content .text-container{display:flex;flex-direction:column;gap:16px}.alert .content .text-container .text{display:flex;flex-direction:column;justify-content:flex-start}.alert .content .text-container .text .summary,.alert .content .text-container .text .detail{color:#212533;font-family:Open Sans,sans-serif;font-size:14px}.alert .content .text-container .text .summary{font-weight:700}.alert .close-option{background-color:transparent;border:none;color:#212533;cursor:pointer;font-size:16px;padding:4px}.alert--info{background-color:#f1f7f8;border-color:#428bca}.alert--info .content .icon-container{background-color:#428bca;color:#fff}.alert--success{background-color:#e0f0f0;border-color:#0c9348}.alert--success .content .icon-container{background-color:#0c9348;color:#fff}.alert--warning{background-color:#fef4e3;border-color:#fcbf10}.alert--warning .content .icon-container{background-color:#fcbf10;color:#212533}.alert--error{background-color:#fef0f0;border-color:#c13018}.alert--error .content .icon-container{background-color:#c13018;color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
67
67
|
}
|
|
68
68
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertComponent, decorators: [{
|
|
69
69
|
type: Component,
|
|
70
|
-
args: [{ selector: 's-alert', template: "<div\n class=\"alert\"\n [ngClass]=\"{\n 'alert--info': severity === 'info',\n 'alert--success': severity === 'success',\n 'alert--warning': severity === 'warning',\n 'alert--error': severity === 'error',\n }\"\n>\n <div class=\"content\">\n <div class=\"icon-container\">\n <i\n class=\"fas fa-info\"\n [ngClass]=\"{\n 'fa-info': severity === 'info',\n 'fa-check': severity === 'success',\n 'fa-exclamation-triangle': severity === 'warning',\n 'fa-times': severity === 'error',\n }\"\n ></i>\n </div>\n <div class=\"text-container\">\n <div class=\"text\">\n @if (summary) {\n <span class=\"summary\">{{ summary }}</span>\n }\n\n @if (detail) {\n <span class=\"detail\">{{ detail }}</span>\n }\n </div>\n </div>\n </div>\n @if (closable) {\n <button\n class=\"close-option\"\n (click)=\"onClose()\"\n >\n <i class=\"fas fa-times\"></i>\n </button>\n }\n</div>\n", styles: [".alert{align-items:center;background-color:#f1f7f8;border-left:4px solid #428bca;border-radius:4px;box-shadow:1px 1px 2px #0003;display:flex;gap:16px;justify-content:space-between;margin:8px;padding:12px 16px}.alert .content{align-items:center;display:flex;gap:16px}.alert .content .icon-container{align-items:center;background-color:#428bca;border-radius:50%;color:#fff;display:inline-flex;flex-shrink:0;height:40px;justify-content:center;width:40px}.alert .content .text-container{display:flex;flex-direction:column;gap:16px}.alert .content .text-container .text{display:flex;flex-direction:column;justify-content:flex-start}.alert .content .text-container .text .summary,.alert .content .text-container .text .detail{color:#212533;font-family:Open Sans,sans-serif;font-size:14px}.alert .content .text-container .text .summary{font-weight:700}.alert .close-option{background-color:transparent;border:none;color:#212533;cursor:pointer;font-size:16px;padding:4px}.alert--info{background-color:#f1f7f8;border-color:#428bca}.alert--info .content .icon-container{background-color:#428bca;color:#fff}.alert--success{background-color:#e0f0f0;border-color:#0c9348}.alert--success .content .icon-container{background-color:#0c9348;color:#fff}.alert--warning{background-color:#fef4e3;border-color:#fcbf10}.alert--warning .content .icon-container{background-color:#fcbf10;color:#212533}.alert--error{background-color:#fef0f0;border-color:#c13018}.alert--error .content .icon-container{background-color:#c13018;color:#fff}\n"] }]
|
|
70
|
+
args: [{ selector: 's-alert', template: "@if (isOpen) {\n<div\n class=\"alert\"\n [ngClass]=\"{\n 'alert--info': severity === 'info',\n 'alert--success': severity === 'success',\n 'alert--warning': severity === 'warning',\n 'alert--error': severity === 'error',\n }\"\n>\n <div class=\"content\">\n <div class=\"icon-container\">\n <i\n class=\"fas fa-info\"\n [ngClass]=\"{\n 'fa-info': severity === 'info',\n 'fa-check': severity === 'success',\n 'fa-exclamation-triangle': severity === 'warning',\n 'fa-times': severity === 'error',\n }\"\n ></i>\n </div>\n <div class=\"text-container\">\n <div class=\"text\">\n @if (summary) {\n <span class=\"summary\">{{ summary }}</span>\n }\n\n @if (detail) {\n <span class=\"detail\">{{ detail }}</span>\n }\n </div>\n </div>\n </div>\n @if (closable) {\n <button\n class=\"close-option\"\n (click)=\"onClose()\"\n >\n <i class=\"fas fa-times\"></i>\n </button>\n }\n</div>\n}\n", styles: [".alert{align-items:center;background-color:#f1f7f8;border-left:4px solid #428bca;border-radius:4px;box-shadow:1px 1px 2px #0003;display:flex;gap:16px;justify-content:space-between;margin:8px;padding:12px 16px}.alert .content{align-items:center;display:flex;gap:16px}.alert .content .icon-container{align-items:center;background-color:#428bca;border-radius:50%;color:#fff;display:inline-flex;flex-shrink:0;height:40px;justify-content:center;width:40px}.alert .content .text-container{display:flex;flex-direction:column;gap:16px}.alert .content .text-container .text{display:flex;flex-direction:column;justify-content:flex-start}.alert .content .text-container .text .summary,.alert .content .text-container .text .detail{color:#212533;font-family:Open Sans,sans-serif;font-size:14px}.alert .content .text-container .text .summary{font-weight:700}.alert .close-option{background-color:transparent;border:none;color:#212533;cursor:pointer;font-size:16px;padding:4px}.alert--info{background-color:#f1f7f8;border-color:#428bca}.alert--info .content .icon-container{background-color:#428bca;color:#fff}.alert--success{background-color:#e0f0f0;border-color:#0c9348}.alert--success .content .icon-container{background-color:#0c9348;color:#fff}.alert--warning{background-color:#fef4e3;border-color:#fcbf10}.alert--warning .content .icon-container{background-color:#fcbf10;color:#212533}.alert--error{background-color:#fef0f0;border-color:#c13018}.alert--error .content .icon-container{background-color:#c13018;color:#fff}\n"] }]
|
|
71
71
|
}], propDecorators: { severity: [{
|
|
72
72
|
type: Input
|
|
73
73
|
}], summary: [{
|
|
@@ -81,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
81
81
|
}], closed: [{
|
|
82
82
|
type: Output
|
|
83
83
|
}] } });
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2FsZXJ0L3NyYy9saWIvYWxlcnQvYWxlcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2FsZXJ0L3NyYy9saWIvYWxlcnQvYWxlcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBRXZFOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQU1ILE1BQU0sT0FBTyxjQUFjO0lBQ3ZCOzs7Ozs7OztPQVFHO0lBQ0gsc0VBQXNFO0lBRS9ELFFBQVEsR0FBNkMsTUFBTSxDQUFDO0lBRW5FOztPQUVHO0lBRUksT0FBTyxDQUFVO0lBRXhCOztPQUVHO0lBRUksTUFBTSxDQUFVO0lBRXZCOzs7OztPQUtHO0lBRUksUUFBUSxHQUFHLElBQUksQ0FBQztJQUV2Qjs7T0FFRztJQUVJLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBRXpDLElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRU0sVUFBVTtRQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFTSxTQUFTO1FBQ1osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVNLE9BQU87UUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU8sT0FBTyxHQUFHLElBQUksQ0FBQzt3R0ExRGQsY0FBYzs0RkFBZCxjQUFjLDRLQ3ZCM0IsNnZDQTRDQTs7NEZEckJhLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0ksU0FBUzs4QkFnQlosUUFBUTtzQkFEZCxLQUFLO2dCQU9DLE9BQU87c0JBRGIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT2xCLE1BQU07c0JBRFosS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBVWxCLFFBQVE7c0JBRGQsS0FBSztnQkFPQyxNQUFNO3NCQURaLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIGRlIGFsZXJ0YSBxdWUgZXhpYmUgbWVuc2FnZW5zIGluZm9ybWF0aXZhcywgZGUgc3VjZXNzbywgYXZpc28gb3UgZXJyby5cbiAqIFN1cG9ydGEgZmVjaGFtZW50byBtYW51YWwgcGVsbyB1c3XDoXJpbyBlIGVtaXRlIHVtIGV2ZW50byBhbyBzZXIgZmVjaGFkby5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHMtYWxlcnRcbiAqICAgc2V2ZXJpdHk9XCJ3YXJuaW5nXCJcbiAqICAgc3VtbWFyeT1cIkF0ZW7Dp8Ojb1wiXG4gKiAgIGRldGFpbD1cIlZlcmlmaXF1ZSBvcyBkYWRvcyBhbnRlcyBkZSBjb250aW51YXIuXCJcbiAqICAgKGNsb3NlZCk9XCJvbkFsZXJ0Q2xvc2VkKClcIlxuICogLz5cbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSBGZWVkYmFja1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3MtYWxlcnQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hbGVydC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYWxlcnQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQWxlcnRDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBOw612ZWwgZGUgc2V2ZXJpZGFkZSBkbyBhbGVydGEsIHF1ZSBkZWZpbmUgYSBjb3IgZSBvIMOtY29uZSBleGliaWRvcy5cbiAgICAgKiAtIGAnaW5mbydgOiBhbGVydGEgaW5mb3JtYXRpdm8gKHBhZHLDo28pLlxuICAgICAqIC0gYCdzdWNjZXNzJ2A6IGFsZXJ0YSBkZSBzdWNlc3NvLlxuICAgICAqIC0gYCd3YXJuaW5nJ2A6IGFsZXJ0YSBkZSBhdmlzby5cbiAgICAgKiAtIGAnZXJyb3InYDogYWxlcnRhIGRlIGVycm8uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnaW5mbydcbiAgICAgKi9cbiAgICAvLyBzb25hci1pZ25vcmU6IFJlZmFjdG9yIHRoaXMgdW5pb24gdHlwZSB0byBoYXZlIGxlc3MgdGhhbiAzIGVsZW1lbnRzXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V2ZXJpdHk6ICdpbmZvJyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdlcnJvcicgPSAnaW5mbyc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVMOtdHVsbyBwcmluY2lwYWwgZG8gYWxlcnRhIGV4aWJpZG8gZW0gZGVzdGFxdWUuIENhbXBvIG9icmlnYXTDs3Jpby5cbiAgICAgKi9cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICAgIHB1YmxpYyBzdW1tYXJ5ITogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE1lbnNhZ2VtIGRldGFsaGFkYSBleGliaWRhIGFiYWl4byBkbyB0w610dWxvIGRvIGFsZXJ0YS4gQ2FtcG8gb2JyaWdhdMOzcmlvLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgcHVibGljIGRldGFpbCE6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCBleGliZSBvIGJvdMOjbyBkZSBmZWNoYXIgbyBhbGVydGEuXG4gICAgICogUXVhbmRvIGBmYWxzZWAsIG8gYWxlcnRhIG7Do28gcG9kZSBzZXIgZGlzcGVuc2FkbyBwZWxvIHVzdcOhcmlvLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNsb3NhYmxlID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIHVzdcOhcmlvIGZlY2hhIG8gYWxlcnRhIGNsaWNhbmRvIG5vIGJvdMOjbyBkZSBmZWNoYXIuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIHB1YmxpYyBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNPcGVuO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZUFsZXJ0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc09wZW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd0FsZXJ0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc09wZW4gPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gICAgICAgIHRoaXMuY2xvc2VBbGVydCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2lzT3BlbiA9IHRydWU7XG59XG5cbiIsIkBpZiAoaXNPcGVuKSB7XG48ZGl2XG4gICAgY2xhc3M9XCJhbGVydFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnYWxlcnQtLWluZm8nOiBzZXZlcml0eSA9PT0gJ2luZm8nLFxuICAgICAgICAnYWxlcnQtLXN1Y2Nlc3MnOiBzZXZlcml0eSA9PT0gJ3N1Y2Nlc3MnLFxuICAgICAgICAnYWxlcnQtLXdhcm5pbmcnOiBzZXZlcml0eSA9PT0gJ3dhcm5pbmcnLFxuICAgICAgICAnYWxlcnQtLWVycm9yJzogc2V2ZXJpdHkgPT09ICdlcnJvcicsXG4gICAgfVwiXG4+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmFzIGZhLWluZm9cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgJ2ZhLWluZm8nOiBzZXZlcml0eSA9PT0gJ2luZm8nLFxuICAgICAgICAgICAgICAgICAgICAnZmEtY2hlY2snOiBzZXZlcml0eSA9PT0gJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgICAnZmEtZXhjbGFtYXRpb24tdHJpYW5nbGUnOiBzZXZlcml0eSA9PT0gJ3dhcm5pbmcnLFxuICAgICAgICAgICAgICAgICAgICAnZmEtdGltZXMnOiBzZXZlcml0eSA9PT0gJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XG4gICAgICAgICAgICAgICAgQGlmIChzdW1tYXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VtbWFyeVwiPnt7IHN1bW1hcnkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGlmIChkZXRhaWwpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWxcIj57eyBkZXRhaWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIEBpZiAoY2xvc2FibGUpIHtcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJjbG9zZS1vcHRpb25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICB9XG48L2Rpdj5cbn1cbiJdfQ==
|