ca-components 1.0.78 → 1.0.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/esm2022/lib/ca-components.module.mjs +16 -4
  2. package/esm2022/lib/components/ca-activity-log-list/ca-activity-log-list.component.mjs +1 -1
  3. package/esm2022/lib/components/ca-app-tooltip-v2/ca-app-tooltip-v2.component.mjs +1 -1
  4. package/esm2022/lib/components/ca-filters/components/ca-dispatcher-filter/ca-dispatcher-filter.component.mjs +2 -2
  5. package/esm2022/lib/components/ca-filters/components/ca-money-filter/ca-money-filter.component.mjs +2 -2
  6. package/esm2022/lib/components/ca-filters/components/ca-state-filter/ca-state-filter.component.mjs +2 -2
  7. package/esm2022/lib/components/ca-filters/components/ca-trailer-type-filter/ca-trailer-type-filter.component.mjs +1 -1
  8. package/esm2022/lib/components/ca-filters/components/ca-truck-type-filter/ca-truck-type-filter.component.mjs +1 -1
  9. package/esm2022/lib/components/ca-filters/components/ca-user-filter/ca-user-filter.component.mjs +2 -2
  10. package/esm2022/lib/components/ca-input/base-classes/ca-input-base-helpres.mjs +237 -0
  11. package/esm2022/lib/components/ca-input/base-classes/ca-input-base.mjs +1020 -0
  12. package/esm2022/lib/components/ca-input/base-classes/ca-input-event-manager.mjs +24 -0
  13. package/esm2022/lib/components/ca-input/ca-input.component.mjs +53 -163
  14. package/esm2022/lib/components/ca-input/components/ca-input-clear/ca-input-clear.component.mjs +4 -4
  15. package/esm2022/lib/components/ca-input/components/ca-input-placeholder-icon/ca-input-placeholder-icon.component.mjs +11 -17
  16. package/esm2022/lib/components/ca-input/config/ca-input.config.mjs +1 -1
  17. package/esm2022/lib/components/ca-input/directives/caps-lock.directive.mjs +50 -0
  18. package/esm2022/lib/components/ca-input/directives/index.mjs +5 -1
  19. package/esm2022/lib/components/ca-input/directives/input-max-value.directive.mjs +53 -0
  20. package/esm2022/lib/components/ca-input/directives/min-max-value.directive.mjs +1 -1
  21. package/esm2022/lib/components/ca-input/directives/price_format.directive.mjs +41 -0
  22. package/esm2022/lib/components/ca-input/directives/restrict-input.directive.mjs +98 -0
  23. package/esm2022/lib/components/ca-input/enums/input-text-transform.enum.mjs +9 -0
  24. package/esm2022/lib/components/ca-input/input-test/input-test.component.mjs +175 -0
  25. package/esm2022/lib/components/ca-input/pipes/input-container-class.pipe.mjs +16 -16
  26. package/esm2022/lib/components/ca-input/pipes/input-datetime-picker-class.pipe.mjs +1 -1
  27. package/esm2022/lib/components/ca-input/pipes/input-error.pipe.mjs +18 -15
  28. package/esm2022/lib/components/ca-input/pipes/input-pattern.pipe.mjs +322 -0
  29. package/esm2022/lib/components/ca-input/services/index.mjs +1 -2
  30. package/esm2022/lib/components/ca-input/utils/constants/input-constants.mjs +102 -1
  31. package/esm2022/lib/components/ca-input-address-dropdown/ca-input-address-dropdown.component.mjs +2 -2
  32. package/esm2022/lib/components/ca-input-datetime-picker/ca-input-datetime-picker.component.mjs +809 -0
  33. package/esm2022/lib/components/ca-input-dropdown/ca-input-dropdown.component.mjs +18 -18
  34. package/esm2022/lib/components/ca-rating-review/ca-rating-review.component.mjs +2 -2
  35. package/esm2022/lib/components/ca-rating-review/components/ca-ratings-reviews-popup/ca-ratings-reviews-popup.component.mjs +1 -1
  36. package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/ca-upload-file.component.mjs +1 -1
  37. package/esm2022/public-api.mjs +3 -1
  38. package/fesm2022/ca-components.mjs +7690 -7171
  39. package/fesm2022/ca-components.mjs.map +1 -1
  40. package/lib/ca-components.module.d.ts +32 -30
  41. package/lib/components/ca-filters/ca-filter.component.d.ts +2 -2
  42. package/lib/components/ca-input/base-classes/ca-input-base-helpres.d.ts +29 -0
  43. package/lib/components/ca-input/base-classes/ca-input-base.d.ts +82 -0
  44. package/lib/components/ca-input/base-classes/ca-input-event-manager.d.ts +16 -0
  45. package/lib/components/ca-input/ca-input.component.d.ts +30 -48
  46. package/lib/components/ca-input/components/ca-input-placeholder-icon/ca-input-placeholder-icon.component.d.ts +3 -7
  47. package/lib/components/ca-input/config/ca-input.config.d.ts +10 -1
  48. package/lib/components/ca-input/directives/caps-lock.directive.d.ts +14 -0
  49. package/lib/components/ca-input/directives/index.d.ts +4 -0
  50. package/lib/components/ca-input/directives/input-max-value.directive.d.ts +12 -0
  51. package/lib/components/ca-input/directives/price_format.directive.d.ts +11 -0
  52. package/lib/components/ca-input/directives/restrict-input.directive.d.ts +15 -0
  53. package/lib/components/ca-input/enums/input-text-transform.enum.d.ts +6 -0
  54. package/lib/components/ca-input/input-test/input-test.component.d.ts +47 -0
  55. package/lib/components/ca-input/pipes/input-container-class.pipe.d.ts +3 -3
  56. package/lib/components/ca-input/pipes/input-datetime-picker-class.pipe.d.ts +1 -1
  57. package/lib/components/ca-input/pipes/input-pattern.pipe.d.ts +25 -0
  58. package/lib/components/ca-input/services/index.d.ts +0 -1
  59. package/lib/components/ca-input/utils/constants/input-constants.d.ts +11 -0
  60. package/lib/components/ca-input-datetime-picker/ca-input-datetime-picker.component.d.ts +99 -0
  61. package/package.json +1 -1
  62. package/public-api.d.ts +2 -0
  63. package/esm2022/lib/components/ca-input/components/ca-input-datetime-picker/ca-input-datetime-picker.component.mjs +0 -100
  64. package/esm2022/lib/components/ca-input/services/ca-input-state.service.mjs +0 -2173
  65. package/lib/components/ca-input/components/ca-input-datetime-picker/ca-input-datetime-picker.component.d.ts +0 -48
  66. package/lib/components/ca-input/services/ca-input-state.service.d.ts +0 -196
@@ -0,0 +1,99 @@
1
+ import { AfterViewInit, ElementRef, EventEmitter, OnDestroy } from '@angular/core';
2
+ import { ControlValueAccessor, NgControl } from '@angular/forms';
3
+ import { NgbPopover } from '@ng-bootstrap/ng-bootstrap';
4
+ import { ICaInput } from '../ca-input/config';
5
+ import { InputChangeValue, InputSvgRoutes } from '../ca-input/utils';
6
+ import { CaInputComponent } from '../ca-input/ca-input.component';
7
+ import { CaInputPlaceholderIconComponent } from '../ca-input/components/ca-input-placeholder-icon/ca-input-placeholder-icon.component';
8
+ import { CalendarDateTimePickerService } from '../ca-custom-datetime-pickers/services/calendar-datetime-picker.service';
9
+ import * as i0 from "@angular/core";
10
+ export declare class CaInputDatetimePickerComponent implements AfterViewInit, ControlValueAccessor, OnDestroy {
11
+ superControl: NgControl;
12
+ private calendarService;
13
+ inputConfig: ICaInput;
14
+ clearInputEvent: EventEmitter<boolean>;
15
+ blurInputEvent: EventEmitter<boolean>;
16
+ caInputPlaceholderIconComponent: CaInputPlaceholderIconComponent;
17
+ dateTimePopover: NgbPopover;
18
+ caInputComponent: CaInputComponent;
19
+ showDateInput: boolean;
20
+ dateTimeInputDate: Date;
21
+ selectionInput: number;
22
+ private dateTimeMainTimer;
23
+ private focusBlur;
24
+ private timeoutCleaner;
25
+ inputSvgRoutes: typeof InputSvgRoutes;
26
+ isTouchedInput: boolean;
27
+ preventBlur: boolean;
28
+ newInputChanged: boolean;
29
+ selectLastOneForSelectionEmitter: EventEmitter<boolean>;
30
+ selectLastOneAfterMouseUpEmitter: EventEmitter<boolean>;
31
+ onDatePasteEmitter: EventEmitter<ClipboardEvent>;
32
+ onFocusEmitter: EventEmitter<FocusEvent>;
33
+ changeSelectionEmmiter: EventEmitter<{
34
+ e: KeyboardEvent;
35
+ noPreventDefault: boolean;
36
+ }>;
37
+ setSelectionEmmiter: EventEmitter<{
38
+ preventDefault: () => void;
39
+ stopPropagation: () => void;
40
+ target: any;
41
+ }>;
42
+ span1: ElementRef;
43
+ span2: ElementRef;
44
+ span3: ElementRef;
45
+ holder1: ElementRef;
46
+ private destroy$;
47
+ constructor(superControl: NgControl, calendarService: CalendarDateTimePickerService);
48
+ ngAfterViewInit(): void;
49
+ get getSuperControl(): import("@angular/forms").AbstractControl<any, any> | null;
50
+ selectLastOneForSelection(): void;
51
+ selectLastOneAfterMouseUp(): void;
52
+ onDatePaste(event: ClipboardEvent): void;
53
+ changeSelection(event: KeyboardEvent, noPreventDefault?: boolean): void;
54
+ private isNumber;
55
+ private isNavigationKey;
56
+ onFocus(event?: FocusEvent): void;
57
+ closePopover(): void;
58
+ toggleDropdownOptions(): void;
59
+ handleFocusInput(e: Event): void;
60
+ setSpanSelection(element: Node): void;
61
+ setSelection(event: {
62
+ preventDefault: () => void;
63
+ stopPropagation: () => void;
64
+ target: any;
65
+ }): void;
66
+ registerOnChange(fn: any): void;
67
+ onChange(_: InputChangeValue): void;
68
+ writeValue(obj: InputChangeValue): void;
69
+ registerOnTouched(): void;
70
+ blurOnDateTime(): void;
71
+ onPopoverShown(): void;
72
+ onPopoverHidden(): void;
73
+ setTimeDateInput(date: InputChangeValue, hasValue?: boolean): void;
74
+ handleKeyboardInputs(e: KeyboardEvent, isRestart?: boolean): void;
75
+ selectSpanByTabIndex(indx: number, changeTab?: boolean): void;
76
+ private handleNavigationKey;
77
+ private handleDatePickerInput;
78
+ private setDateTimeModel;
79
+ private moveSelectionRightOrTab;
80
+ private focusPreviousInput;
81
+ private focusNextInput;
82
+ setIsFocusInput(value: boolean): void;
83
+ private moveSelectionLeft;
84
+ private updateMonth;
85
+ private updateDate;
86
+ private updateYear;
87
+ private padValue;
88
+ private handleTimePickerInput;
89
+ private updateHours;
90
+ private updateMinutes;
91
+ private toggleAMPM;
92
+ clearInput(event: boolean): void;
93
+ onBlurInput(event: boolean): void;
94
+ resetDateTimeInputs(): void;
95
+ setTimePickerTime(): void;
96
+ ngOnDestroy(): void;
97
+ static ɵfac: i0.ɵɵFactoryDeclaration<CaInputDatetimePickerComponent, [{ self: true; }, null]>;
98
+ static ɵcmp: i0.ɵɵComponentDeclaration<CaInputDatetimePickerComponent, "app-ca-input-datetime-picker", never, { "inputConfig": { "alias": "inputConfig"; "required": false; }; }, { "clearInputEvent": "clear"; "blurInputEvent": "blurInput"; "selectLastOneForSelectionEmitter": "selectLastOneForSelectionEmitter"; "selectLastOneAfterMouseUpEmitter": "selectLastOneAfterMouseUpEmitter"; "onDatePasteEmitter": "onDatePasteEmitter"; "onFocusEmitter": "onFocusEmitter"; "changeSelectionEmmiter": "changeSelectionEmmiter"; "setSelectionEmmiter": "setSelectionEmmiter"; }, never, never, true, never>;
99
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ca-components",
3
- "version": "1.0.78",
3
+ "version": "1.0.80",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.13",
6
6
  "@angular/core": "^18.2.13",
package/public-api.d.ts CHANGED
@@ -49,6 +49,8 @@ export * from './lib/components/ca-sort-dropdown/models';
49
49
  export * from './lib/components/ca-sort-dropdown/enums';
50
50
  export * from './lib/components/ca-input-address-dropdown/ca-input-address-dropdown.component';
51
51
  export * from './lib/components/ca-modal-button/ca-modal-button.component';
52
+ export * from './lib/components/ca-input-datetime-picker/ca-input-datetime-picker.component';
52
53
  export * from './lib/components/ca-chart-manager/ca-chart-manager.component';
53
54
  export * from './lib/components/ca-custom-scrollbar/ca-custom-scrollbar.component';
54
55
  export * from './lib/components/ca-map/utils/services';
56
+ export * from './lib/components/ca-input/input-test/input-test.component';
@@ -1,100 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- // pipe
4
- import { InputDatetimePickerClassPipe } from '../../pipes';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../../services";
7
- import * as i2 from "@angular/common";
8
- export class CaInputDatetimePickerComponent {
9
- constructor(inputStateService) {
10
- this.inputStateService = inputStateService;
11
- this.selectLastOneForSelectionEmitter = new EventEmitter();
12
- this.selectLastOneAfterMouseUpEmitter = new EventEmitter();
13
- this.onDatePasteEmitter = new EventEmitter();
14
- this.onBlurEmitter = new EventEmitter();
15
- this.onFocusEmitter = new EventEmitter();
16
- this.changeSelectionEmmiter = new EventEmitter();
17
- this.setSelectionEmmiter = new EventEmitter();
18
- }
19
- ngAfterViewInit() {
20
- this.inputStateService.setViewChilds(this.span1, this.span2, this.span3, this.holder1);
21
- }
22
- selectLastOneForSelection() {
23
- this.selectLastOneForSelectionEmitter.emit(true);
24
- }
25
- selectLastOneAfterMouseUp() {
26
- this.selectLastOneAfterMouseUpEmitter.emit(true);
27
- }
28
- onDatePaste(event) {
29
- this.onDatePasteEmitter.emit(event);
30
- }
31
- onBlur() {
32
- this.onBlurEmitter.emit(true);
33
- }
34
- changeSelection(e, noPreventDefault = false) {
35
- this.changeSelectionEmmiter.emit({ e, noPreventDefault });
36
- }
37
- onFocus(event) {
38
- this.onFocusEmitter.emit(event);
39
- }
40
- toggleDropdownOptions() {
41
- this.inputStateService.toggleDropdownOptions();
42
- }
43
- setSelection(event) {
44
- this.setSelectionEmmiter.emit(event);
45
- }
46
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaInputDatetimePickerComponent, deps: [{ token: i1.InputStateService }], target: i0.ɵɵFactoryTarget.Component }); }
47
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CaInputDatetimePickerComponent, isStandalone: true, selector: "app-ca-input-datetime-picker", inputs: { showDateInput: "showDateInput", inputConfig: "inputConfig", getSuperControl: "getSuperControl", isFocusInput: "isFocusInput", isVisibleCommands: "isVisibleCommands", isTouchedInput: "isTouchedInput" }, outputs: { selectLastOneForSelectionEmitter: "selectLastOneForSelectionEmitter", selectLastOneAfterMouseUpEmitter: "selectLastOneAfterMouseUpEmitter", onDatePasteEmitter: "onDatePasteEmitter", onBlurEmitter: "onBlurEmitter", onFocusEmitter: "onFocusEmitter", changeSelectionEmmiter: "changeSelectionEmmiter", setSelectionEmmiter: "setSelectionEmmiter" }, viewQueries: [{ propertyName: "span1", first: true, predicate: ["span1"], descendants: true }, { propertyName: "span2", first: true, predicate: ["span2"], descendants: true }, { propertyName: "span3", first: true, predicate: ["span3"], descendants: true }, { propertyName: "holder1", first: true, predicate: ["holder1"], descendants: true }], ngImport: i0, template: "<div\n #holder1\n class=\"date_time_holder input-control\"\n [class.active]=\"showDateInput\"\n tabindex=\"-1\"\n (mousedown)=\"selectLastOneForSelection()\"\n (mouseup)=\"selectLastOneAfterMouseUp()\"\n (paste)=\"onDatePaste($event)\"\n (keydown)=\"changeSelection($event, true)\"\n (click)=\"toggleDropdownOptions()\"\n [ngStyle]=\"{\n 'padding-left': inputConfig.isIconHidden ? '2px' : '27px'\n }\"\n [ngClass]=\"\n isFocusInput | inputDatetimePickerClass : isVisibleCommands \n : getSuperControl : inputConfig : isTouchedInput \n : getSuperControl?.value\n \"\n>\n <span\n #span1\n class=\"main\"\n [ngClass]=\"{\n 'reset-selection-color': !isFocusInput\n }\"\n tabindex=\"0\"\n (mouseup)=\"setSelection($event)\"\n (keydown)=\"changeSelection($event)\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? 'mm' : 'HH'\"\n ></span>\n <span>\n <div\n class=\"border-picker\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? '/' : ':'\"\n ></div>\n </span>\n <span\n #span2\n class=\"main\"\n [ngClass]=\"{\n 'reset-selection-color': !isFocusInput\n }\"\n tabindex=\"1\"\n (mouseup)=\"setSelection($event)\"\n (keydown)=\"changeSelection($event)\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? 'dd' : 'MM'\"\n ></span>\n <span>\n <div\n class=\"border-picker\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? '/' : ' '\"\n ></div>\n </span>\n <span\n #span3\n class=\"main\"\n [ngClass]=\"{\n 'reset-selection-color': !isFocusInput\n }\"\n tabindex=\"2\"\n (mouseup)=\"setSelection($event)\"\n (keydown)=\"changeSelection($event)\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? 'yy' : 'AM'\"\n ></span>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type:
48
- // modules
49
- CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type:
50
- // pipes
51
- InputDatetimePickerClassPipe, name: "inputDatetimePickerClass" }] }); }
52
- }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaInputDatetimePickerComponent, decorators: [{
54
- type: Component,
55
- args: [{ selector: 'app-ca-input-datetime-picker', standalone: true, imports: [
56
- // modules
57
- CommonModule,
58
- // pipes
59
- InputDatetimePickerClassPipe,
60
- ], template: "<div\n #holder1\n class=\"date_time_holder input-control\"\n [class.active]=\"showDateInput\"\n tabindex=\"-1\"\n (mousedown)=\"selectLastOneForSelection()\"\n (mouseup)=\"selectLastOneAfterMouseUp()\"\n (paste)=\"onDatePaste($event)\"\n (keydown)=\"changeSelection($event, true)\"\n (click)=\"toggleDropdownOptions()\"\n [ngStyle]=\"{\n 'padding-left': inputConfig.isIconHidden ? '2px' : '27px'\n }\"\n [ngClass]=\"\n isFocusInput | inputDatetimePickerClass : isVisibleCommands \n : getSuperControl : inputConfig : isTouchedInput \n : getSuperControl?.value\n \"\n>\n <span\n #span1\n class=\"main\"\n [ngClass]=\"{\n 'reset-selection-color': !isFocusInput\n }\"\n tabindex=\"0\"\n (mouseup)=\"setSelection($event)\"\n (keydown)=\"changeSelection($event)\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? 'mm' : 'HH'\"\n ></span>\n <span>\n <div\n class=\"border-picker\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? '/' : ':'\"\n ></div>\n </span>\n <span\n #span2\n class=\"main\"\n [ngClass]=\"{\n 'reset-selection-color': !isFocusInput\n }\"\n tabindex=\"1\"\n (mouseup)=\"setSelection($event)\"\n (keydown)=\"changeSelection($event)\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? 'dd' : 'MM'\"\n ></span>\n <span>\n <div\n class=\"border-picker\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? '/' : ' '\"\n ></div>\n </span>\n <span\n #span3\n class=\"main\"\n [ngClass]=\"{\n 'reset-selection-color': !isFocusInput\n }\"\n tabindex=\"2\"\n (mouseup)=\"setSelection($event)\"\n (keydown)=\"changeSelection($event)\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? 'yy' : 'AM'\"\n ></span>\n</div>\n" }]
61
- }], ctorParameters: () => [{ type: i1.InputStateService }], propDecorators: { showDateInput: [{
62
- type: Input
63
- }], inputConfig: [{
64
- type: Input
65
- }], getSuperControl: [{
66
- type: Input
67
- }], isFocusInput: [{
68
- type: Input
69
- }], isVisibleCommands: [{
70
- type: Input
71
- }], isTouchedInput: [{
72
- type: Input
73
- }], selectLastOneForSelectionEmitter: [{
74
- type: Output
75
- }], selectLastOneAfterMouseUpEmitter: [{
76
- type: Output
77
- }], onDatePasteEmitter: [{
78
- type: Output
79
- }], onBlurEmitter: [{
80
- type: Output
81
- }], onFocusEmitter: [{
82
- type: Output
83
- }], changeSelectionEmmiter: [{
84
- type: Output
85
- }], setSelectionEmmiter: [{
86
- type: Output
87
- }], span1: [{
88
- type: ViewChild,
89
- args: ['span1', { static: false }]
90
- }], span2: [{
91
- type: ViewChild,
92
- args: ['span2', { static: false }]
93
- }], span3: [{
94
- type: ViewChild,
95
- args: ['span3', { static: false }]
96
- }], holder1: [{
97
- type: ViewChild,
98
- args: ['holder1', { static: false }]
99
- }] } });
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWlucHV0L2NvbXBvbmVudHMvY2EtaW5wdXQtZGF0ZXRpbWUtcGlja2VyL2NhLWlucHV0LWRhdGV0aW1lLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1pbnB1dC9jb21wb25lbnRzL2NhLWlucHV0LWRhdGV0aW1lLXBpY2tlci9jYS1pbnB1dC1kYXRldGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBUS9DLE9BQU87QUFDUCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7QUFlM0QsTUFBTSxPQUFPLDhCQUE4QjtJQTRCekMsWUFBb0IsaUJBQW9DO1FBQXBDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFwQjlDLHFDQUFnQyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDL0QscUNBQWdDLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUMvRCx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUN4RCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDNUMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQ2hELDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUcvQyxDQUFDO1FBQ0ssd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBSTVDLENBQUM7SUFPc0QsQ0FBQztJQUU1RCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FDbEMsSUFBSSxDQUFDLEtBQUssRUFDVixJQUFJLENBQUMsS0FBSyxFQUNWLElBQUksQ0FBQyxLQUFLLEVBQ1YsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVNLHlCQUF5QjtRQUM5QixJQUFJLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSx5QkFBeUI7UUFDOUIsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQXFCO1FBQ3RDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sZUFBZSxDQUFDLENBQWdCLEVBQUUsZ0JBQWdCLEdBQUcsS0FBSztRQUMvRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU0sT0FBTyxDQUFDLEtBQWtCO1FBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxxQkFBcUI7UUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUluQjtRQUNDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQzsrR0F6RVUsOEJBQThCO21HQUE5Qiw4QkFBOEIscytCQ2xDM0MsNHZEQWlFQTtnQkR0Q0ksVUFBVTtnQkFDVixZQUFZO2dCQUVaLFFBQVE7Z0JBQ1IsNEJBQTRCOzs0RkFHbkIsOEJBQThCO2tCQWIxQyxTQUFTOytCQUNFLDhCQUE4QixjQUc1QixJQUFJLFdBQ1A7d0JBQ1AsVUFBVTt3QkFDVixZQUFZO3dCQUVaLFFBQVE7d0JBQ1IsNEJBQTRCO3FCQUM3QjtzRkFHUSxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLGdDQUFnQztzQkFBekMsTUFBTTtnQkFDRyxnQ0FBZ0M7c0JBQXpDLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBSUcsbUJBQW1CO3NCQUE1QixNQUFNO2dCQU1nQyxLQUFLO3NCQUEzQyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0UsS0FBSztzQkFBM0MsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNFLEtBQUs7c0JBQTNDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDSSxPQUFPO3NCQUEvQyxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8vIG1vZGVsc1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuLi8uLi9jb25maWcnO1xuXG4vLyBzZXJ2aWNlc1xuaW1wb3J0IHsgSW5wdXRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cbi8vIHBpcGVcbmltcG9ydCB7IElucHV0RGF0ZXRpbWVQaWNrZXJDbGFzc1BpcGUgfSBmcm9tICcuLi8uLi9waXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jYS1pbnB1dC1kYXRldGltZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2EtaW5wdXQtZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2EtaW5wdXQtZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICAvLyBtb2R1bGVzXG4gICAgQ29tbW9uTW9kdWxlLFxuXG4gICAgLy8gcGlwZXNcbiAgICBJbnB1dERhdGV0aW1lUGlja2VyQ2xhc3NQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDYUlucHV0RGF0ZXRpbWVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgc2hvd0RhdGVJbnB1dCE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlucHV0Q29uZmlnITogSUNhSW5wdXQ7XG4gIEBJbnB1dCgpIGdldFN1cGVyQ29udHJvbCE6IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfCBudWxsO1xuICBASW5wdXQoKSBpc0ZvY3VzSW5wdXQhOiBib29sZWFuO1xuICBASW5wdXQoKSBpc1Zpc2libGVDb21tYW5kcyE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzVG91Y2hlZElucHV0ITogYm9vbGVhbjtcblxuICBAT3V0cHV0KCkgc2VsZWN0TGFzdE9uZUZvclNlbGVjdGlvbkVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RMYXN0T25lQWZ0ZXJNb3VzZVVwRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIG9uRGF0ZVBhc3RlRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Q2xpcGJvYXJkRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvbkJsdXJFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgb25Gb2N1c0VtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBjaGFuZ2VTZWxlY3Rpb25FbW1pdGVyID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgZTogS2V5Ym9hcmRFdmVudDtcbiAgICBub1ByZXZlbnREZWZhdWx0OiBib29sZWFuO1xuICB9PigpO1xuICBAT3V0cHV0KCkgc2V0U2VsZWN0aW9uRW1taXRlciA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIHByZXZlbnREZWZhdWx0OiAoKSA9PiB2b2lkO1xuICAgIHN0b3BQcm9wYWdhdGlvbjogKCkgPT4gdm9pZDtcbiAgICB0YXJnZXQ6IGFueTtcbiAgfT4oKTtcblxuICBAVmlld0NoaWxkKCdzcGFuMScsIHsgc3RhdGljOiBmYWxzZSB9KSBzcGFuMSE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3NwYW4yJywgeyBzdGF0aWM6IGZhbHNlIH0pIHNwYW4yITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc3BhbjMnLCB7IHN0YXRpYzogZmFsc2UgfSkgc3BhbjMhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdob2xkZXIxJywgeyBzdGF0aWM6IGZhbHNlIH0pIGhvbGRlcjEhOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5wdXRTdGF0ZVNlcnZpY2U6IElucHV0U3RhdGVTZXJ2aWNlKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLnNldFZpZXdDaGlsZHMoXG4gICAgICB0aGlzLnNwYW4xLFxuICAgICAgdGhpcy5zcGFuMixcbiAgICAgIHRoaXMuc3BhbjMsXG4gICAgICB0aGlzLmhvbGRlcjFcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdExhc3RPbmVGb3JTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RMYXN0T25lRm9yU2VsZWN0aW9uRW1pdHRlci5lbWl0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdExhc3RPbmVBZnRlck1vdXNlVXAoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RMYXN0T25lQWZ0ZXJNb3VzZVVwRW1pdHRlci5lbWl0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIG9uRGF0ZVBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMub25EYXRlUGFzdGVFbWl0dGVyLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIG9uQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLm9uQmx1ckVtaXR0ZXIuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VTZWxlY3Rpb24oZTogS2V5Ym9hcmRFdmVudCwgbm9QcmV2ZW50RGVmYXVsdCA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2VTZWxlY3Rpb25FbW1pdGVyLmVtaXQoeyBlLCBub1ByZXZlbnREZWZhdWx0IH0pO1xuICB9XG5cbiAgcHVibGljIG9uRm9jdXMoZXZlbnQ/OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5vbkZvY3VzRW1pdHRlci5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVEcm9wZG93bk9wdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFN0YXRlU2VydmljZS50b2dnbGVEcm9wZG93bk9wdGlvbnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTZWxlY3Rpb24oZXZlbnQ6IHtcbiAgICBwcmV2ZW50RGVmYXVsdDogKCkgPT4gdm9pZDtcbiAgICBzdG9wUHJvcGFnYXRpb246ICgpID0+IHZvaWQ7XG4gICAgdGFyZ2V0OiBhbnk7XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLnNldFNlbGVjdGlvbkVtbWl0ZXIuZW1pdChldmVudCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgI2hvbGRlcjFcbiAgY2xhc3M9XCJkYXRlX3RpbWVfaG9sZGVyIGlucHV0LWNvbnRyb2xcIlxuICBbY2xhc3MuYWN0aXZlXT1cInNob3dEYXRlSW5wdXRcIlxuICB0YWJpbmRleD1cIi0xXCJcbiAgKG1vdXNlZG93bik9XCJzZWxlY3RMYXN0T25lRm9yU2VsZWN0aW9uKClcIlxuICAobW91c2V1cCk9XCJzZWxlY3RMYXN0T25lQWZ0ZXJNb3VzZVVwKClcIlxuICAocGFzdGUpPVwib25EYXRlUGFzdGUoJGV2ZW50KVwiXG4gIChrZXlkb3duKT1cImNoYW5nZVNlbGVjdGlvbigkZXZlbnQsIHRydWUpXCJcbiAgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duT3B0aW9ucygpXCJcbiAgW25nU3R5bGVdPVwie1xuICAgICdwYWRkaW5nLWxlZnQnOiBpbnB1dENvbmZpZy5pc0ljb25IaWRkZW4gPyAnMnB4JyA6ICcyN3B4J1xuICB9XCJcbiAgW25nQ2xhc3NdPVwiXG4gICAgaXNGb2N1c0lucHV0IHwgaW5wdXREYXRldGltZVBpY2tlckNsYXNzIDogaXNWaXNpYmxlQ29tbWFuZHMgXG4gICAgOiBnZXRTdXBlckNvbnRyb2wgOiBpbnB1dENvbmZpZyA6IGlzVG91Y2hlZElucHV0IFxuICAgIDogZ2V0U3VwZXJDb250cm9sPy52YWx1ZVxuICBcIlxuPlxuICA8c3BhblxuICAgICNzcGFuMVxuICAgIGNsYXNzPVwibWFpblwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3Jlc2V0LXNlbGVjdGlvbi1jb2xvcic6ICFpc0ZvY3VzSW5wdXRcbiAgICB9XCJcbiAgICB0YWJpbmRleD1cIjBcIlxuICAgIChtb3VzZXVwKT1cInNldFNlbGVjdGlvbigkZXZlbnQpXCJcbiAgICAoa2V5ZG93bik9XCJjaGFuZ2VTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgW2lubmVySFRNTF09XCJpbnB1dENvbmZpZy5uYW1lID09PSAnZGF0ZXBpY2tlcicgPyAnbW0nIDogJ0hIJ1wiXG4gID48L3NwYW4+XG4gIDxzcGFuPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYm9yZGVyLXBpY2tlclwiXG4gICAgICBbaW5uZXJIVE1MXT1cImlucHV0Q29uZmlnLm5hbWUgPT09ICdkYXRlcGlja2VyJyA/ICcvJyA6ICc6J1wiXG4gICAgPjwvZGl2PlxuICA8L3NwYW4+XG4gIDxzcGFuXG4gICAgI3NwYW4yXG4gICAgY2xhc3M9XCJtYWluXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAncmVzZXQtc2VsZWN0aW9uLWNvbG9yJzogIWlzRm9jdXNJbnB1dFxuICAgIH1cIlxuICAgIHRhYmluZGV4PVwiMVwiXG4gICAgKG1vdXNldXApPVwic2V0U2VsZWN0aW9uKCRldmVudClcIlxuICAgIChrZXlkb3duKT1cImNoYW5nZVNlbGVjdGlvbigkZXZlbnQpXCJcbiAgICBbaW5uZXJIVE1MXT1cImlucHV0Q29uZmlnLm5hbWUgPT09ICdkYXRlcGlja2VyJyA/ICdkZCcgOiAnTU0nXCJcbiAgPjwvc3Bhbj5cbiAgPHNwYW4+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJib3JkZXItcGlja2VyXCJcbiAgICAgIFtpbm5lckhUTUxdPVwiaW5wdXRDb25maWcubmFtZSA9PT0gJ2RhdGVwaWNrZXInID8gJy8nIDogJyAnXCJcbiAgICA+PC9kaXY+XG4gIDwvc3Bhbj5cbiAgPHNwYW5cbiAgICAjc3BhbjNcbiAgICBjbGFzcz1cIm1haW5cIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdyZXNldC1zZWxlY3Rpb24tY29sb3InOiAhaXNGb2N1c0lucHV0XG4gICAgfVwiXG4gICAgdGFiaW5kZXg9XCIyXCJcbiAgICAobW91c2V1cCk9XCJzZXRTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgKGtleWRvd24pPVwiY2hhbmdlU2VsZWN0aW9uKCRldmVudClcIlxuICAgIFtpbm5lckhUTUxdPVwiaW5wdXRDb25maWcubmFtZSA9PT0gJ2RhdGVwaWNrZXInID8gJ3l5JyA6ICdBTSdcIlxuICA+PC9zcGFuPlxuPC9kaXY+XG4iXX0=