@seniorsistemas/angular-components 19.1.1 → 19.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/bignumber-input/lib/bignumber-input/bignumber-input.directive.d.ts +58 -25
  2. package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +8 -8
  3. package/dynamic-form/dynamic-form/dynamic-form.directive.d.ts +3 -0
  4. package/dynamic-form/dynamic-form/form-field/configurations/fields/field.d.ts +7 -0
  5. package/dynamic-form/public-api.d.ts +2 -3
  6. package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.directive.mjs +140 -99
  7. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +12 -12
  8. package/esm2022/dynamic-form/dynamic-form/dynamic-form.directive.mjs +17 -1
  9. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/field.mjs +1 -1
  10. package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +3 -3
  11. package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +3 -3
  12. package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +3 -3
  13. package/esm2022/dynamic-form/public-api.mjs +3 -4
  14. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +1 -1
  15. package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-number-field.mjs +2 -3
  16. package/esm2022/lib/locale/fallback.mjs +10 -2
  17. package/esm2022/locale/lib/locale/apply-localized-mask.mjs +19 -0
  18. package/esm2022/locale/lib/locale/pipes/localized-bignumber-impure.pipe.mjs +1 -1
  19. package/esm2022/locale/lib/locale/pipes/localized-bignumber.pipe.mjs +5 -4
  20. package/esm2022/locale/public-api.mjs +2 -1
  21. package/esm2022/number-input/lib/number-input/number-input.directive.mjs +12 -148
  22. package/esm2022/number-input/lib/number-input/number-input.module.mjs +5 -5
  23. package/esm2022/numeric-mask/lib/numeric-mask/numeric-mask.directive.mjs +32 -35
  24. package/esm2022/spotlight/lib/spotlight/spotlight-overlay/spotlight-overlay.component.mjs +460 -0
  25. package/esm2022/spotlight/lib/spotlight/spotlight-step.directive.mjs +50 -0
  26. package/esm2022/spotlight/lib/spotlight/spotlight-tour.service.mjs +251 -0
  27. package/esm2022/spotlight/lib/spotlight/spotlight.component.mjs +193 -0
  28. package/esm2022/spotlight/lib/spotlight/types/spotlight-position.mjs +2 -0
  29. package/esm2022/spotlight/lib/spotlight/types/spotlight-step.mjs +2 -0
  30. package/esm2022/spotlight/lib/spotlight/types/spotlight-stop-event.mjs +2 -0
  31. package/esm2022/spotlight/public-api.mjs +4 -0
  32. package/esm2022/spotlight/seniorsistemas-angular-components-spotlight.mjs +5 -0
  33. package/esm2022/table/lib/table/table-column/table-columns.component.mjs +20 -4
  34. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs +139 -98
  35. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs.map +1 -1
  36. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +35 -19
  37. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  38. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +2 -3
  39. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  40. package/fesm2022/seniorsistemas-angular-components-locale.mjs +22 -4
  41. package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
  42. package/fesm2022/seniorsistemas-angular-components-number-input.mjs +14 -151
  43. package/fesm2022/seniorsistemas-angular-components-number-input.mjs.map +1 -1
  44. package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs +31 -34
  45. package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs.map +1 -1
  46. package/fesm2022/seniorsistemas-angular-components-spotlight.mjs +947 -0
  47. package/fesm2022/seniorsistemas-angular-components-spotlight.mjs.map +1 -0
  48. package/fesm2022/seniorsistemas-angular-components-table.mjs +20 -5
  49. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  50. package/fesm2022/seniorsistemas-angular-components.mjs +9 -1
  51. package/fesm2022/seniorsistemas-angular-components.mjs.map +1 -1
  52. package/inline-edit/lib/inline-edit/fields/inline-edit-number-field.d.ts +2 -3
  53. package/locale/lib/locale/apply-localized-mask.d.ts +9 -0
  54. package/locale/lib/locale/pipes/localized-bignumber-impure.pipe.d.ts +2 -3
  55. package/locale/lib/locale/pipes/localized-bignumber.pipe.d.ts +3 -2
  56. package/locale/public-api.d.ts +1 -0
  57. package/number-input/lib/number-input/number-input.directive.d.ts +7 -47
  58. package/number-input/lib/number-input/number-input.module.d.ts +2 -2
  59. package/numeric-mask/lib/numeric-mask/numeric-mask.directive.d.ts +8 -9
  60. package/package.json +13 -7
  61. package/spotlight/README.md +311 -0
  62. package/spotlight/index.d.ts +5 -0
  63. package/spotlight/lib/spotlight/spotlight-overlay/spotlight-overlay.component.d.ts +70 -0
  64. package/spotlight/lib/spotlight/spotlight-step.directive.d.ts +28 -0
  65. package/spotlight/lib/spotlight/spotlight-tour.service.d.ts +146 -0
  66. package/spotlight/lib/spotlight/spotlight.component.d.ts +82 -0
  67. package/spotlight/lib/spotlight/types/spotlight-position.d.ts +1 -0
  68. package/spotlight/lib/spotlight/types/spotlight-step.d.ts +21 -0
  69. package/spotlight/lib/spotlight/types/spotlight-stop-event.d.ts +13 -0
  70. package/spotlight/public-api.d.ts +6 -0
@@ -1,5 +1,6 @@
1
1
  import { Directive, inject, Input, ViewContainerRef } from '@angular/core';
2
2
  import { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';
3
+ import { SpotlightTourService } from '@seniorsistemas/angular-components/spotlight';
3
4
  import { DynamicField, DynamicStructure } from './dynamic-form';
4
5
  import { STRUCTURE_TYPES_LIST, } from './configurations/structure/structure';
5
6
  import * as i0 from "@angular/core";
@@ -18,6 +19,7 @@ export class DynamicFormDirective {
18
19
  }
19
20
  component = null;
20
21
  viewContainerRef = inject(ViewContainerRef);
22
+ spotlightTourService = inject(SpotlightTourService, { optional: true });
21
23
  ngOnInit() {
22
24
  if (this.isField(this.config)) {
23
25
  if (!this.config.id && this.id) {
@@ -43,6 +45,7 @@ export class DynamicFormDirective {
43
45
  if (this.component && 'errorMessages' in this.component.instance) {
44
46
  this.component.setInput('errorMessages', this.errorMessages);
45
47
  }
48
+ this.registerSpotlightStep();
46
49
  }
47
50
  ngOnChanges() {
48
51
  if (this.component) {
@@ -54,6 +57,7 @@ export class DynamicFormDirective {
54
57
  }
55
58
  ngOnDestroy() {
56
59
  this.component?.destroy();
60
+ this.unregisterSpotlightStep();
57
61
  }
58
62
  isField(config) {
59
63
  return !this.isStructure(config);
@@ -64,6 +68,18 @@ export class DynamicFormDirective {
64
68
  get getType() {
65
69
  return this.config.type;
66
70
  }
71
+ registerSpotlightStep() {
72
+ const stepId = this.config?.spotlightStepId;
73
+ if (!stepId || !this.spotlightTourService || !this.component)
74
+ return;
75
+ this.spotlightTourService.registerElement(stepId, this.component.location);
76
+ }
77
+ unregisterSpotlightStep() {
78
+ const stepId = this.config?.spotlightStepId;
79
+ if (!stepId || !this.spotlightTourService)
80
+ return;
81
+ this.spotlightTourService.unregisterElement(stepId);
82
+ }
67
83
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DynamicFormDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
68
84
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: DynamicFormDirective, isStandalone: true, selector: "[sDynamicForm]", inputs: { sDynamicForm: "sDynamicForm" }, usesOnChanges: true, ngImport: i0 });
69
85
  }
@@ -73,4 +89,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
73
89
  }], propDecorators: { sDynamicForm: [{
74
90
  type: Input
75
91
  }] } });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9keW5hbWljLWZvcm0vc3JjL2xpYi9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFnQyxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2SCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsWUFBWSxFQUFlLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0UsT0FBTyxFQUVILG9CQUFvQixHQUV2QixNQUFNLHNDQUFzQyxDQUFDOztBQUk5QyxNQUFNLE9BQU8sb0JBQW9CO0lBQ3JCLEVBQUUsQ0FBVTtJQUNaLE1BQU0sQ0FBdUM7SUFDN0MsS0FBSyxDQUFhO0lBQ2xCLGFBQWEsQ0FBYTtJQUMxQixlQUFlLENBQWU7SUFFdEMsSUFDSSxZQUFZLENBQUMsT0FLaEI7UUFDRyxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ3JELElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDdkMsQ0FBQztJQUVNLFNBQVMsR0FBNkIsSUFBSSxDQUFDO0lBRWpDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRXRELFFBQVE7UUFDWCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1B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dXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3V0aWxzJztcblxuaW1wb3J0IHsgRHluYW1pY0ZpZWxkLCBEeW5hbWljRm9ybSwgRHluYW1pY1N0cnVjdHVyZSB9IGZyb20gJy4vZHluYW1pYy1mb3JtJztcblxuaW1wb3J0IHtcbiAgICBEeW5hbWljU3RydWN0dXJlIGFzIEZpZWxkRHluYW1pY1N0cnVjdHVyZSxcbiAgICBTVFJVQ1RVUkVfVFlQRVNfTElTVCxcbiAgICBTdHJ1Y3R1cmVUeXBlLFxufSBmcm9tICcuL2NvbmZpZ3VyYXRpb25zL3N0cnVjdHVyZS9zdHJ1Y3R1cmUnO1xuaW1wb3J0IHsgRHluYW1pY1R5cGUgfSBmcm9tICcuL2Zvcm0tZmllbGQvY29uZmlndXJhdGlvbnMvZmllbGRzL2ZpZWxkJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3NEeW5hbWljRm9ybV0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIGlkPzogc3RyaW5nO1xuICAgIHByaXZhdGUgY29uZmlnITogRmllbGREeW5hbWljU3RydWN0dXJlIHwgRHluYW1pY1R5cGU7XG4gICAgcHJpdmF0ZSBncm91cCE6IEZvcm1Hcm91cDtcbiAgICBwcml2YXRlIGVycm9yTWVzc2FnZXM/OiBGb3JtR3JvdXA7XG4gICAgcHJpdmF0ZSBkaXJlY3RpdmVDb25maWc/OiBEeW5hbWljRm9ybTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNEeW5hbWljRm9ybShjb250ZXh0OiB7XG4gICAgICAgIGlkPzogc3RyaW5nO1xuICAgICAgICBjb25maWc6IEZpZWxkRHluYW1pY1N0cnVjdHVyZSB8IER5bmFtaWNUeXBlO1xuICAgICAgICBncm91cDogRm9ybUdyb3VwO1xuICAgICAgICBlcnJvck1lc3NhZ2VzPzogYW55O1xuICAgIH0pIHtcbiAgICAgICAgY29uc3QgeyBpZCwgY29uZmlnLCBncm91cCwgZXJyb3JNZXNzYWdlcyB9ID0gY29udGV4dDtcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgdGhpcy5ncm91cCA9IGdyb3VwO1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBlcnJvck1lc3NhZ2VzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wb25lbnQ6IENvbXBvbmVudFJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRmllbGQodGhpcy5jb25maWcpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY29uZmlnLmlkICYmIHRoaXMuaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5pZCA9IHRoaXMuaWQgKyAnLScgKyB0aGlzLmNvbmZpZy5uYW1lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZUNvbmZpZyA9IG5ldyBEeW5hbWljRmllbGQoe1xuICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmdyb3VwLFxuICAgICAgICAgICAgICAgIGZpZWxkOiB0aGlzLmNvbmZpZyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNTdHJ1Y3R1cmUodGhpcy5jb25maWcpKSB7XG4gICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZUNvbmZpZyA9IG5ldyBEeW5hbWljU3RydWN0dXJlKHtcbiAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncm91cCxcbiAgICAgICAgICAgICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB0aHJvdyBuZXcgRXJyb3IoYFRyeWluZyB0byB1c2UgYW4gdW5zdXBwb3J0ZWQgdHlwZSAoJHt0aGlzLmdldFR5cGV9KS5gKTtcblxuICAgICAgICB0aGlzLmNvbXBvbmVudCA9IHRoaXMuZGlyZWN0aXZlQ29uZmlnLmNyZWF0ZUNvbXBvbmVudCh0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuXG4gICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQodGhpcy5jb21wb25lbnQpICYmIHRoaXMuaXNTdHJ1Y3R1cmUodGhpcy5jb25maWcpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudC5zZXRJbnB1dCgnaWQnLCB0aGlzLmlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudCAmJiAnZXJyb3JNZXNzYWdlcycgaW4gdGhpcy5jb21wb25lbnQuaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50LnNldElucHV0KCdlcnJvck1lc3NhZ2VzJywgdGhpcy5lcnJvck1lc3NhZ2VzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZUNvbmZpZz8udXBkYXRlVmFyaWFibGVzKHRoaXMuY29tcG9uZW50KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbXBvbmVudCAmJiAnZXJyb3JNZXNzYWdlcycgaW4gdGhpcy5jb21wb25lbnQuaW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudC5zZXRJbnB1dCgnZXJyb3JNZXNzYWdlcycsIHRoaXMuZXJyb3JNZXNzYWdlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50Py5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpZWxkKGNvbmZpZzogRmllbGREeW5hbWljU3RydWN0dXJlIHwgRHluYW1pY1R5cGUpOiBjb25maWcgaXMgRHluYW1pY1R5cGUge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNTdHJ1Y3R1cmUoY29uZmlnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU3RydWN0dXJlKGNvbmZpZzogRmllbGREeW5hbWljU3RydWN0dXJlIHwgRHluYW1pY1R5cGUpOiBjb25maWcgaXMgRmllbGREeW5hbWljU3RydWN0dXJlIHtcbiAgICAgICAgcmV0dXJuIFNUUlVDVFVSRV9UWVBFU19MSVNULmluY2x1ZGVzKGNvbmZpZy50eXBlIGFzIFN0cnVjdHVyZVR5cGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGdldFR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy50eXBlO1xuICAgIH1cbn1cblxuIl19
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9keW5hbWljLWZvcm0vc3JjL2xpYi9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFnQyxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2SCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUVwRixPQUFPLEVBQUUsWUFBWSxFQUFlLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0UsT0FBTyxFQUVILG9CQUFvQixHQUV2QixNQUFNLHNDQUFzQyxDQUFDOztBQUk5QyxNQUFNLE9BQU8sb0JBQW9CO0lBQ3JCLEVBQUUsQ0FBVTtJQUNaLE1BQU0sQ0FBdUM7SUFDN0MsS0FBSyxDQUFhO0lBQ2xCLGFBQWEsQ0FBYTtJQUMxQixlQUFlLENBQWU7SUFFdEMsSUFDSSxZQUFZLENBQUMsT0FLaEI7UUFDRyxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ3JELElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDdkMsQ0FBQztJQUVNLFNBQVMsR0FBNkIsSUFBSSxDQUFDO0lBRWpDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzVDLG9C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QjtRQUN6QixNQUFNLE1BQU0sR0FBSSxJQUFJLENBQUMsTUFBc0IsRUFBRSxlQUFlLENBQUM7UUFDN0QsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUNyRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTyx1QkFBdUI7UUFDM0IsTUFBTSxNQUFNLEdBQUksSUFBSSxDQUFDLE1BQXNCLEVBQUUsZUFBZSxDQUFDO1FBQzdELElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CO1lBQUUsT0FBTztRQUNsRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEQsQ0FBQzt3R0E1RlEsb0JBQW9COzRGQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBRGhDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTs4QkFTbkQsWUFBWTtzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBEaXJlY3RpdmUsIGluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3V0aWxzJztcbmltcG9ydCB7IFNwb3RsaWdodFRvdXJTZXJ2aWNlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9zcG90bGlnaHQnO1xuXG5pbXBvcnQgeyBEeW5hbWljRmllbGQsIER5bmFtaWNGb3JtLCBEeW5hbWljU3RydWN0dXJlIH0gZnJvbSAnLi9keW5hbWljLWZvcm0nO1xuXG5pbXBvcnQge1xuICAgIER5bmFtaWNTdHJ1Y3R1cmUgYXMgRmllbGREeW5hbWljU3RydWN0dXJlLFxuICAgIFNUUlVDVFVSRV9UWVBFU19MSVNULFxuICAgIFN0cnVjdHVyZVR5cGUsXG59IGZyb20gJy4vY29uZmlndXJhdGlvbnMvc3RydWN0dXJlL3N0cnVjdHVyZSc7XG5pbXBvcnQgeyBEeW5hbWljVHlwZSwgRmllbGRDb25maWcgfSBmcm9tICcuL2Zvcm0tZmllbGQvY29uZmlndXJhdGlvbnMvZmllbGRzL2ZpZWxkJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3NEeW5hbWljRm9ybV0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIGlkPzogc3RyaW5nO1xuICAgIHByaXZhdGUgY29uZmlnITogRmllbGREeW5hbWljU3RydWN0dXJlIHwgRHluYW1pY1R5cGU7XG4gICAgcHJpdmF0ZSBncm91cCE6IEZvcm1Hcm91cDtcbiAgICBwcml2YXRlIGVycm9yTWVzc2FnZXM/OiBGb3JtR3JvdXA7XG4gICAgcHJpdmF0ZSBkaXJlY3RpdmVDb25maWc/OiBEeW5hbWljRm9ybTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNEeW5hbWljRm9ybShjb250ZXh0OiB7XG4gICAgICAgIGlkPzogc3RyaW5nO1xuICAgICAgICBjb25maWc6IEZpZWxkRHluYW1pY1N0cnVjdHVyZSB8IER5bmFtaWNUeXBlO1xuICAgICAgICBncm91cDogRm9ybUdyb3VwO1xuICAgICAgICBlcnJvck1lc3NhZ2VzPzogYW55O1xuICAgIH0pIHtcbiAgICAgICAgY29uc3QgeyBpZCwgY29uZmlnLCBncm91cCwgZXJyb3JNZXNzYWdlcyB9ID0gY29udGV4dDtcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgdGhpcy5ncm91cCA9IGdyb3VwO1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBlcnJvck1lc3NhZ2VzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wb25lbnQ6IENvbXBvbmVudFJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzcG90bGlnaHRUb3VyU2VydmljZSA9IGluamVjdChTcG90bGlnaHRUb3VyU2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNGaWVsZCh0aGlzLmNvbmZpZykpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5jb25maWcuaWQgJiYgdGhpcy5pZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmlkID0gdGhpcy5pZCArICctJyArIHRoaXMuY29uZmlnLm5hbWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlQ29uZmlnID0gbmV3IER5bmFtaWNGaWVsZCh7XG4gICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMuZ3JvdXAsXG4gICAgICAgICAgICAgICAgZmllbGQ6IHRoaXMuY29uZmlnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1N0cnVjdHVyZSh0aGlzLmNvbmZpZykpIHtcbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlQ29uZmlnID0gbmV3IER5bmFtaWNTdHJ1Y3R1cmUoe1xuICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmdyb3VwLFxuICAgICAgICAgICAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHRocm93IG5ldyBFcnJvcihgVHJ5aW5nIHRvIHVzZSBhbiB1bnN1cHBvcnRlZCB0eXBlICgke3RoaXMuZ2V0VHlwZX0pLmApO1xuXG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gdGhpcy5kaXJlY3RpdmVDb25maWcuY3JlYXRlQ29tcG9uZW50KHRoaXMudmlld0NvbnRhaW5lclJlZik7XG5cbiAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0aGlzLmNvbXBvbmVudCkgJiYgdGhpcy5pc1N0cnVjdHVyZSh0aGlzLmNvbmZpZykpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50LnNldElucHV0KCdpZCcsIHRoaXMuaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50ICYmICdlcnJvck1lc3NhZ2VzJyBpbiB0aGlzLmNvbXBvbmVudC5pbnN0YW5jZSkge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnQuc2V0SW5wdXQoJ2Vycm9yTWVzc2FnZXMnLCB0aGlzLmVycm9yTWVzc2FnZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZWdpc3RlclNwb3RsaWdodFN0ZXAoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmVDb25maWc/LnVwZGF0ZVZhcmlhYmxlcyh0aGlzLmNvbXBvbmVudCk7XG4gICAgICAgICAgICBpZiAodGhpcy5jb21wb25lbnQgJiYgJ2Vycm9yTWVzc2FnZXMnIGluIHRoaXMuY29tcG9uZW50Lmluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnQuc2V0SW5wdXQoJ2Vycm9yTWVzc2FnZXMnLCB0aGlzLmVycm9yTWVzc2FnZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbXBvbmVudD8uZGVzdHJveSgpO1xuICAgICAgICB0aGlzLnVucmVnaXN0ZXJTcG90bGlnaHRTdGVwKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpZWxkKGNvbmZpZzogRmllbGREeW5hbWljU3RydWN0dXJlIHwgRHluYW1pY1R5cGUpOiBjb25maWcgaXMgRHluYW1pY1R5cGUge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNTdHJ1Y3R1cmUoY29uZmlnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU3RydWN0dXJlKGNvbmZpZzogRmllbGREeW5hbWljU3RydWN0dXJlIHwgRHluYW1pY1R5cGUpOiBjb25maWcgaXMgRmllbGREeW5hbWljU3RydWN0dXJlIHtcbiAgICAgICAgcmV0dXJuIFNUUlVDVFVSRV9UWVBFU19MSVNULmluY2x1ZGVzKGNvbmZpZy50eXBlIGFzIFN0cnVjdHVyZVR5cGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGdldFR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy50eXBlO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVnaXN0ZXJTcG90bGlnaHRTdGVwKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGVwSWQgPSAodGhpcy5jb25maWcgYXMgRmllbGRDb25maWcpPy5zcG90bGlnaHRTdGVwSWQ7XG4gICAgICAgIGlmICghc3RlcElkIHx8ICF0aGlzLnNwb3RsaWdodFRvdXJTZXJ2aWNlIHx8ICF0aGlzLmNvbXBvbmVudCkgcmV0dXJuO1xuICAgICAgICB0aGlzLnNwb3RsaWdodFRvdXJTZXJ2aWNlLnJlZ2lzdGVyRWxlbWVudChzdGVwSWQsIHRoaXMuY29tcG9uZW50LmxvY2F0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVucmVnaXN0ZXJTcG90bGlnaHRTdGVwKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGVwSWQgPSAodGhpcy5jb25maWcgYXMgRmllbGRDb25maWcpPy5zcG90bGlnaHRTdGVwSWQ7XG4gICAgICAgIGlmICghc3RlcElkIHx8ICF0aGlzLnNwb3RsaWdodFRvdXJTZXJ2aWNlKSByZXR1cm47XG4gICAgICAgIHRoaXMuc3BvdGxpZ2h0VG91clNlcnZpY2UudW5yZWdpc3RlckVsZW1lbnQoc3RlcElkKTtcbiAgICB9XG59XG5cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL3NyYy9saWIvZHluYW1pYy1mb3JtL2Zvcm0tZmllbGQvY29uZmlndXJhdGlvbnMvZmllbGRzL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbmZpZ3VyYcOnw6NvIGJhc2UgY29tcGFydGlsaGFkYSBwb3IgKip0b2RvcyoqIG9zIHRpcG9zIGRlIGNhbXBvIGRvIER5bmFtaWNGb3JtLlxuICpcbiAqIFRvZGEgaW50ZXJmYWNlIGVzcGVjw61maWNhIGRlIGNhbXBvIChleDogVGV4dEZpZWxkQ29uZmlnLCBTZWxlY3RGaWVsZENvbmZpZykgZXN0ZW5kZSBlc3RhIGludGVyZmFjZS5cbiAqIEFzIHByb3ByaWVkYWRlcyBhcXVpIGRlZmluaWRhcyBlc3TDo28gZGlzcG9uw612ZWlzIGVtIHF1YWxxdWVyIGNhbXBvIGRvIGZvcm11bMOhcmlvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkQ29uZmlnIHtcbiAgICAvKipcbiAgICAgKiBUaXBvIGRvIGNhbXBvLiBEZXZlIHNlciB1bSBkb3MgdmFsb3JlcyByZWdpc3RyYWRvcyBlbSBgRmllbGRUeXBlTWFwYC5cbiAgICAgKiBFeGVtcGxvczogYCdzdHJpbmcnYCwgYCdlbnVtJ2AsIGAnZGF0ZSdgLCBgJ2xvb2t1cCdgLCBgJ2Jvb2xlYW4nYCwgZXRjLlxuICAgICAqIFBhcmEgdGlwb3Mgb3BjaW9uYWlzIChleDogYCdlZGl0b3InYCksIG8gcHJvdmlkZXIgY29ycmVzcG9uZGVudGUgZGV2ZSBzZXIgcmVnaXN0cmFkbyBubyBgQXBwQ29uZmlnYCBvdSBgQXBwTW9kdWxlYC5cbiAgICAgKi9cbiAgICB0eXBlOiBGaWVsZFR5cGU7XG4gICAgLyoqXG4gICAgICogRnVuw6fDo28gcXVlIHJldG9ybmEgc2UgbyBjYW1wbyDDqSBvYnJpZ2F0w7NyaW8gZGluYW1pY2FtZW50ZS5cbiAgICAgKiBVc2UgdW1hIGZ1bsOnw6NvIHBhcmEgcXVlIGEgb2JyaWdhdG9yaWVkYWRlIHBvc3NhIG11ZGFyIGVtIHJlc3Bvc3RhIGFvIGVzdGFkbyBkbyBmb3JtdWzDoXJpby5cbiAgICAgKiBAZXhhbXBsZSAoKSA9PiB0aGlzLm1vZGVsLmF0aXZvID09PSB0cnVlXG4gICAgICovXG4gICAgcmVxdWlyZWQ/OiAoKSA9PiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIElEIEhUTUwgZG8gZWxlbWVudG8gZGUgaW5wdXQgZ2VyYWRvLiDDmnRpbCBwYXJhIHRlc3RlcyBhdXRvbWF0aXphZG9zIGUgYWNlc3NpYmlsaWRhZGUuXG4gICAgICovXG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogTm9tZSBkbyBjYW1wbyBubyBtb2RlbG8gZGUgZGFkb3MuIERldmUgY29ycmVzcG9uZGVyIMOgIGNoYXZlIGRhIHByb3ByaWVkYWRlIG5vIG9iamV0byBkZSBkYWRvcyBkbyBmb3JtdWzDoXJpby5cbiAgICAgKiBAZXhhbXBsZSAnbm9tZUNvbXBsZXRvJ1xuICAgICAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBSw7N0dWxvIGV4aWJpZG8gYWNpbWEgb3UgYW8gbGFkbyBkbyBjYW1wbyBubyBmb3JtdWzDoXJpby5cbiAgICAgKiBTZSBvbWl0aWRvLCBvIGNhbXBvIMOpIGV4aWJpZG8gc2VtIGxhYmVsLlxuICAgICAqL1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIMONY29uZSBkZSBpbmZvcm1hw6fDo28gZXhpYmlkbyBhbyBsYWRvIGRvIGNhbXBvLiBBY2VpdGEgY2xhc3NlcyBkZSDDrWNvbmUgKGV4OiBgJ3BoIHBoLWluZm8nYCkuXG4gICAgICovXG4gICAgaW5mb1NpZ24/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGV4dG8gZG8gdG9vbHRpcCBleGliaWRvIGFvIHBhc3NhciBvIG1vdXNlIHNvYnJlIG8gY2FtcG8gb3Ugc29icmUgbyBpbmZvU2lnbi5cbiAgICAgKi9cbiAgICB0b29sdGlwPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRleHRvIGRlIHBsYWNlaG9sZGVyIGV4aWJpZG8gZW5xdWFudG8gbyBjYW1wbyBlc3RpdmVyIHZhemlvLlxuICAgICAqL1xuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRlbXBvIGVtIG1pbGlzc2VndW5kb3MgcGFyYSBleGliaXIgYXV0b21hdGljYW1lbnRlIG8gaW5mb1NpZ24gcXVhbmRvIG8gY2FtcG8gZXN0w6EgZm9jYWRvLlxuICAgICAqIMOadGlsIHBhcmEgb3JpZW50YXIgbyB1c3XDoXJpbyBhcMOzcyB1bSBjdXJ0byBpbnRlcnZhbG8gZGUgaW5hdGl2aWRhZGUuXG4gICAgICovXG4gICAgZGlzcGxheVRpbWVJbmZvU2lnbj86IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBRdWFuZG8gYHRydWVgLCBvIGluZm9TaWduIHVzYSBhIHJlZmVyw6puY2lhIGRvIGlucHV0IGZvY2FkbyBjb21vIMOibmNvcmEgZG8gdG9vbHRpcC5cbiAgICAgKiDDmnRpbCBwYXJhIGdhcmFudGlyIHF1ZSBvIHRvb2x0aXAgYXBhcmXDp2EgcHLDs3hpbW8gYW8gY2FtcG8gY29ycmV0byBlbSBsYXlvdXRzIGNvbXBsZXhvcy5cbiAgICAgKi9cbiAgICB1c2VJbmZvU2lnbkZvY3VzZWRJbnB1dFJlZj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRUeXBlTWFwIHt9XG5cbmV4cG9ydCB0eXBlIEZpZWxkVHlwZSA9IGtleW9mIEZpZWxkVHlwZU1hcDtcbmV4cG9ydCB0eXBlIER5bmFtaWNUeXBlID0gRmllbGRUeXBlTWFwW2tleW9mIEZpZWxkVHlwZU1hcF07XG5cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL3NyYy9saWIvZHluYW1pYy1mb3JtL2Zvcm0tZmllbGQvY29uZmlndXJhdGlvbnMvZmllbGRzL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbmZpZ3VyYcOnw6NvIGJhc2UgY29tcGFydGlsaGFkYSBwb3IgKip0b2RvcyoqIG9zIHRpcG9zIGRlIGNhbXBvIGRvIER5bmFtaWNGb3JtLlxuICpcbiAqIFRvZGEgaW50ZXJmYWNlIGVzcGVjw61maWNhIGRlIGNhbXBvIChleDogVGV4dEZpZWxkQ29uZmlnLCBTZWxlY3RGaWVsZENvbmZpZykgZXN0ZW5kZSBlc3RhIGludGVyZmFjZS5cbiAqIEFzIHByb3ByaWVkYWRlcyBhcXVpIGRlZmluaWRhcyBlc3TDo28gZGlzcG9uw612ZWlzIGVtIHF1YWxxdWVyIGNhbXBvIGRvIGZvcm11bMOhcmlvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkQ29uZmlnIHtcbiAgICAvKipcbiAgICAgKiBUaXBvIGRvIGNhbXBvLiBEZXZlIHNlciB1bSBkb3MgdmFsb3JlcyByZWdpc3RyYWRvcyBlbSBgRmllbGRUeXBlTWFwYC5cbiAgICAgKiBFeGVtcGxvczogYCdzdHJpbmcnYCwgYCdlbnVtJ2AsIGAnZGF0ZSdgLCBgJ2xvb2t1cCdgLCBgJ2Jvb2xlYW4nYCwgZXRjLlxuICAgICAqIFBhcmEgdGlwb3Mgb3BjaW9uYWlzIChleDogYCdlZGl0b3InYCksIG8gcHJvdmlkZXIgY29ycmVzcG9uZGVudGUgZGV2ZSBzZXIgcmVnaXN0cmFkbyBubyBgQXBwQ29uZmlnYCBvdSBgQXBwTW9kdWxlYC5cbiAgICAgKi9cbiAgICB0eXBlOiBGaWVsZFR5cGU7XG4gICAgLyoqXG4gICAgICogRnVuw6fDo28gcXVlIHJldG9ybmEgc2UgbyBjYW1wbyDDqSBvYnJpZ2F0w7NyaW8gZGluYW1pY2FtZW50ZS5cbiAgICAgKiBVc2UgdW1hIGZ1bsOnw6NvIHBhcmEgcXVlIGEgb2JyaWdhdG9yaWVkYWRlIHBvc3NhIG11ZGFyIGVtIHJlc3Bvc3RhIGFvIGVzdGFkbyBkbyBmb3JtdWzDoXJpby5cbiAgICAgKiBAZXhhbXBsZSAoKSA9PiB0aGlzLm1vZGVsLmF0aXZvID09PSB0cnVlXG4gICAgICovXG4gICAgcmVxdWlyZWQ/OiAoKSA9PiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIElEIEhUTUwgZG8gZWxlbWVudG8gZGUgaW5wdXQgZ2VyYWRvLiDDmnRpbCBwYXJhIHRlc3RlcyBhdXRvbWF0aXphZG9zIGUgYWNlc3NpYmlsaWRhZGUuXG4gICAgICovXG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogTm9tZSBkbyBjYW1wbyBubyBtb2RlbG8gZGUgZGFkb3MuIERldmUgY29ycmVzcG9uZGVyIMOgIGNoYXZlIGRhIHByb3ByaWVkYWRlIG5vIG9iamV0byBkZSBkYWRvcyBkbyBmb3JtdWzDoXJpby5cbiAgICAgKiBAZXhhbXBsZSAnbm9tZUNvbXBsZXRvJ1xuICAgICAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBSw7N0dWxvIGV4aWJpZG8gYWNpbWEgb3UgYW8gbGFkbyBkbyBjYW1wbyBubyBmb3JtdWzDoXJpby5cbiAgICAgKiBTZSBvbWl0aWRvLCBvIGNhbXBvIMOpIGV4aWJpZG8gc2VtIGxhYmVsLlxuICAgICAqL1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIMONY29uZSBkZSBpbmZvcm1hw6fDo28gZXhpYmlkbyBhbyBsYWRvIGRvIGNhbXBvLiBBY2VpdGEgY2xhc3NlcyBkZSDDrWNvbmUgKGV4OiBgJ3BoIHBoLWluZm8nYCkuXG4gICAgICovXG4gICAgaW5mb1NpZ24/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGV4dG8gZG8gdG9vbHRpcCBleGliaWRvIGFvIHBhc3NhciBvIG1vdXNlIHNvYnJlIG8gY2FtcG8gb3Ugc29icmUgbyBpbmZvU2lnbi5cbiAgICAgKi9cbiAgICB0b29sdGlwPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRleHRvIGRlIHBsYWNlaG9sZGVyIGV4aWJpZG8gZW5xdWFudG8gbyBjYW1wbyBlc3RpdmVyIHZhemlvLlxuICAgICAqL1xuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRlbXBvIGVtIG1pbGlzc2VndW5kb3MgcGFyYSBleGliaXIgYXV0b21hdGljYW1lbnRlIG8gaW5mb1NpZ24gcXVhbmRvIG8gY2FtcG8gZXN0w6EgZm9jYWRvLlxuICAgICAqIMOadGlsIHBhcmEgb3JpZW50YXIgbyB1c3XDoXJpbyBhcMOzcyB1bSBjdXJ0byBpbnRlcnZhbG8gZGUgaW5hdGl2aWRhZGUuXG4gICAgICovXG4gICAgZGlzcGxheVRpbWVJbmZvU2lnbj86IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBRdWFuZG8gYHRydWVgLCBvIGluZm9TaWduIHVzYSBhIHJlZmVyw6puY2lhIGRvIGlucHV0IGZvY2FkbyBjb21vIMOibmNvcmEgZG8gdG9vbHRpcC5cbiAgICAgKiDDmnRpbCBwYXJhIGdhcmFudGlyIHF1ZSBvIHRvb2x0aXAgYXBhcmXDp2EgcHLDs3hpbW8gYW8gY2FtcG8gY29ycmV0byBlbSBsYXlvdXRzIGNvbXBsZXhvcy5cbiAgICAgKi9cbiAgICB1c2VJbmZvU2lnbkZvY3VzZWRJbnB1dFJlZj86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogSUQgZG8gcGFzc28gZG8gU3BvdGxpZ2h0IFRvdXIgYXNzb2NpYWRvIGEgZXN0ZSBjYW1wby5cbiAgICAgKiBRdWFuZG8gZGVmaW5pZG8sIG8gY2FtcG8gw6kgYXV0b21hdGljYW1lbnRlIHJlZ2lzdHJhZG8gbm8gYFNwb3RsaWdodFRvdXJTZXJ2aWNlYFxuICAgICAqIGUgcG9kZSBzZXIgdXNhZG8gY29tbyBhbHZvIGRlIHVtIHBhc3NvIGRlIHRvdXIgb3UgZGVzdGFxdWUuXG4gICAgICogQGV4YW1wbGUgJ3Byb2R1dG8tbm9tZSdcbiAgICAgKi9cbiAgICBzcG90bGlnaHRTdGVwSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRUeXBlTWFwIHt9XG5cbmV4cG9ydCB0eXBlIEZpZWxkVHlwZSA9IGtleW9mIEZpZWxkVHlwZU1hcDtcbmV4cG9ydCB0eXBlIER5bmFtaWNUeXBlID0gRmllbGRUeXBlTWFwW2tleW9mIEZpZWxkVHlwZU1hcF07XG5cbiJdfQ==
@@ -107,7 +107,7 @@ export class BignumberFieldComponent {
107
107
  }
108
108
  }
109
109
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BignumberFieldComponent, deps: [{ token: i1.LocaleService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
110
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BignumberFieldComponent, isStandalone: true, selector: "ng-component", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, formControl: { classPropertyName: "formControl", publicName: "formControl", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onInput: "onInput", onFocus: "onFocus", onComplete: "onComplete" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["inputRef"], descendants: true }], ngImport: i0, template: "@let _field = field();\n@if (inputRef) {\n <s-field-label\n [field]=\"_field\"\n [fieldContainerRef]=\"inputRef!.nativeElement\"\n />\n}\n@if (_field.mask) {\n @let autoClear = _field.type === 'number' ? (_field.autoClear ?? true) : false;\n <p-inputMask\n #inputRef\n type=\"text\"\n [inputId]=\"_field.id || _field.name\"\n [name]=\"_field.name\"\n [mask]=\"fieldUtils.getFieldPropertyMask(_field.mask)\"\n [placeholder]=\"_field.placeholder\"\n slotChar=\"_\"\n [sTooltip]=\"_field.tooltip\"\n tooltipPosition=\"top\"\n [showDelay]=\"500\"\n styleClass=\"mousetrap\"\n (onBlur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n (onFocus)=\"onFocus.next($event)\"\n (onComplete)=\"onComplete.next($event)\"\n (onInput)=\"onInput.next($event)\"\n [formControl]=\"formControl()\"\n [autoClear]=\"autoClear\"\n >\n </p-inputMask>\n} @else {\n <div class=\"bignumber-field\">\n @if (_field.leftAddon) {\n <div class=\"button-left\">\n <ng-container *ngTemplateOutlet=\"addonRender; context: { button: _field.leftAddon }\"></ng-container>\n </div>\n }\n @let allowNegative = _field.type === 'number' ? (_field.allowNegative ?? true) : false;\n <input\n #inputRef\n [id]=\"_field.id || _field.name\"\n type=\"text\"\n [name]=\"_field.name\"\n sBignumberInput\n [allowNegative]=\"allowNegative\"\n [precision]=\"\n fieldUtils.isFunction(_field.precision) ? fieldUtils.trigger(_field.precision) : _field.precision\n \"\n [scale]=\"fieldUtils.isFunction(_field.scale) ? fieldUtils.trigger(_field.scale) : _field.scale\"\n [decimalSeparator]=\"_field.numberLocaleOptions?.decimalSeparator\"\n [thousandsSeparator]=\"_field.numberLocaleOptions?.thousandsSeparator\"\n [alignTo]=\"_field.alignTo ?? 'left'\"\n [sTooltip]=\"_field.tooltip\"\n tooltipPosition=\"top\"\n [placeholder]=\"_field.placeholder\"\n [showDelay]=\"500\"\n pInputText\n [autocomplete]=\"_field.browserAutocomplete ? 'on' : 'off'\"\n [ngClass]=\"'mousetrap'\"\n class=\"input-text\"\n (blur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n (focus)=\"onFocus.next($event)\"\n [formControl]=\"formControl()\"\n />\n @if (_field.rightAddon) {\n <div class=\"button-right\">\n <ng-container *ngTemplateOutlet=\"addonRender; context: { button: _field.rightAddon }\"></ng-container>\n </div>\n }\n </div>\n}\n\n<ng-template\n #addonRender\n let-button=\"button\"\n>\n <s-button\n [label]=\"button.label\"\n [priority]=\"button.priority ?? 'default'\"\n [iconClass]=\"button.icon\"\n [disabled]=\"fieldUtils.fieldPropertyIsDisabled(button.leftAddon)\"\n [auxiliary]=\"false\"\n (clicked)=\"button.callback?.()\"\n />\n</ng-template>\n\n", styles: ["s-number-field.ng-dirty.ng-invalid .p-inputtext{border-color:#c13018}s-number-field.ng-dirty.ng-invalid .p-inputtext:hover{border-color:highlight(#c13018)}.bignumber-field{display:flex;width:100%}.bignumber-field .input-text{width:auto;flex-grow:1}.bignumber-field:has(.button-left) .input-text{border-top-left-radius:0;border-bottom-left-radius:0}.bignumber-field:has(.button-left) .button-left button{border-top-right-radius:0;border-bottom-right-radius:0;border-right:none}.bignumber-field:has(input:focus) .button-left button{border-color:#428bca!important}.bignumber-field:has(input.ng-invalid.ng-dirty) .button-left button{border-color:#c13018!important}.bignumber-field:has(.button-right) .input-text{border-top-right-radius:0;border-bottom-right-radius:0}.bignumber-field:has(.button-right) .button-right button{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none}.bignumber-field:has(input:focus) .button-right button{border-color:#428bca!important}.bignumber-field:has(input.ng-invalid.ng-dirty) .button-right button{border-color:#c13018!important}\n"], dependencies: [{ kind: "component", type: FieldLabelComponent, selector: "s-field-label", inputs: ["field", "fieldContainerRef"] }, { kind: "ngmodule", type: InputMaskModule }, { kind: "component", type: i2.InputMask, selector: "p-inputmask, p-inputMask, p-input-mask", inputs: ["type", "slotChar", "autoClear", "showClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "variant", "ariaLabel", "ariaLabelledBy", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autofocus", "autoFocus", "autocomplete", "keepBuffer", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown", "onClear"] }, { kind: "directive", type: TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor", "menuAriaLabel"], outputs: ["clicked"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: BignumberInputModule }, { kind: "directive", type: i4.BignumberInputDirective, selector: "input[sBignumberInput]", inputs: ["precision", "scale", "decimalSeparator", "thousandsSeparator", "alignTo", "allowNegative", "placeholder"], outputs: ["pasteRejected"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i5.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None });
110
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BignumberFieldComponent, isStandalone: true, selector: "ng-component", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, formControl: { classPropertyName: "formControl", publicName: "formControl", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onInput: "onInput", onFocus: "onFocus", onComplete: "onComplete" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["inputRef"], descendants: true }], ngImport: i0, template: "@let _field = field();\n@if (inputRef) {\n <s-field-label\n [field]=\"_field\"\n [fieldContainerRef]=\"inputRef!.nativeElement\"\n />\n}\n@if (_field.mask) {\n @let autoClear = _field.type === 'number' ? (_field.autoClear ?? true) : false;\n <p-inputMask\n #inputRef\n type=\"text\"\n [inputId]=\"_field.id || _field.name\"\n [name]=\"_field.name\"\n [mask]=\"fieldUtils.getFieldPropertyMask(_field.mask)\"\n [placeholder]=\"_field.placeholder\"\n slotChar=\"_\"\n [sTooltip]=\"_field.tooltip\"\n tooltipPosition=\"top\"\n [showDelay]=\"500\"\n styleClass=\"mousetrap\"\n (onBlur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n (onFocus)=\"onFocus.next($event)\"\n (onComplete)=\"onComplete.next($event)\"\n (onInput)=\"onInput.next($event)\"\n [formControl]=\"formControl()\"\n [autoClear]=\"autoClear\"\n >\n </p-inputMask>\n} @else {\n <div class=\"bignumber-field\">\n @if (_field.leftAddon) {\n <div class=\"button-left\">\n <ng-container *ngTemplateOutlet=\"addonRender; context: { button: _field.leftAddon }\"></ng-container>\n </div>\n }\n @let allowNegative = _field.type === 'number' ? (_field.allowNegative ?? true) : false;\n <input\n #inputRef\n [id]=\"_field.id || _field.name\"\n type=\"text\"\n [name]=\"_field.name\"\n sBignumberInput\n [allowNegative]=\"allowNegative\"\n [precision]=\"\n fieldUtils.isFunction(_field.precision) ? fieldUtils.trigger(_field.precision) : _field.precision\n \"\n [scale]=\"fieldUtils.isFunction(_field.scale) ? fieldUtils.trigger(_field.scale) : _field.scale\"\n [decimalSeparator]=\"_field.numberLocaleOptions?.decimalSeparator ?? ''\"\n [thousandsSeparator]=\"_field.numberLocaleOptions?.thousandsSeparator ?? ''\"\n [alignTo]=\"_field.alignTo ?? 'left'\"\n [sTooltip]=\"_field.tooltip\"\n tooltipPosition=\"top\"\n [placeholder]=\"_field.placeholder\"\n [showDelay]=\"500\"\n pInputText\n [autocomplete]=\"_field.browserAutocomplete ? 'on' : 'off'\"\n [ngClass]=\"'mousetrap'\"\n class=\"input-text\"\n (blur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n (focus)=\"onFocus.next($event)\"\n [formControl]=\"formControl()\"\n />\n @if (_field.rightAddon) {\n <div class=\"button-right\">\n <ng-container *ngTemplateOutlet=\"addonRender; context: { button: _field.rightAddon }\"></ng-container>\n </div>\n }\n </div>\n}\n\n<ng-template\n #addonRender\n let-button=\"button\"\n>\n <s-button\n [label]=\"button.label\"\n [priority]=\"button.priority ?? 'default'\"\n [iconClass]=\"button.icon\"\n [disabled]=\"fieldUtils.fieldPropertyIsDisabled(button.leftAddon)\"\n [auxiliary]=\"false\"\n (clicked)=\"button.callback?.()\"\n />\n</ng-template>\n\n", styles: ["s-number-field.ng-dirty.ng-invalid .p-inputtext{border-color:#c13018}s-number-field.ng-dirty.ng-invalid .p-inputtext:hover{border-color:highlight(#c13018)}.bignumber-field{display:flex;width:100%}.bignumber-field .input-text{width:auto;flex-grow:1}.bignumber-field:has(.button-left) .input-text{border-top-left-radius:0;border-bottom-left-radius:0}.bignumber-field:has(.button-left) .button-left button{border-top-right-radius:0;border-bottom-right-radius:0;border-right:none}.bignumber-field:has(input:focus) .button-left button{border-color:#428bca!important}.bignumber-field:has(input.ng-invalid.ng-dirty) .button-left button{border-color:#c13018!important}.bignumber-field:has(.button-right) .input-text{border-top-right-radius:0;border-bottom-right-radius:0}.bignumber-field:has(.button-right) .button-right button{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none}.bignumber-field:has(input:focus) .button-right button{border-color:#428bca!important}.bignumber-field:has(input.ng-invalid.ng-dirty) .button-right button{border-color:#c13018!important}\n"], dependencies: [{ kind: "component", type: FieldLabelComponent, selector: "s-field-label", inputs: ["field", "fieldContainerRef"] }, { kind: "ngmodule", type: InputMaskModule }, { kind: "component", type: i2.InputMask, selector: "p-inputmask, p-inputMask, p-input-mask", inputs: ["type", "slotChar", "autoClear", "showClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "variant", "ariaLabel", "ariaLabelledBy", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autofocus", "autoFocus", "autocomplete", "keepBuffer", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown", "onClear"] }, { kind: "directive", type: TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor", "menuAriaLabel"], outputs: ["clicked"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: BignumberInputModule }, { kind: "directive", type: i4.BignumberInputDirective, selector: "input[sBignumberInput]", inputs: ["precision", "scale", "minDecimalPlaces", "maxDecimalPlaces", "decimalSeparator", "thousandsSeparator", "thousandSeparator", "alignTo", "allowNegative", "placeholder"], outputs: ["minDecimalPlacesChange", "maxDecimalPlacesChange", "decimalSeparatorChange", "thousandSeparatorChange", "placeholderChange", "pasteRejected"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i5.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None });
111
111
  }
112
112
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BignumberFieldComponent, decorators: [{
113
113
  type: Component,
@@ -121,7 +121,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
121
121
  BignumberInputModule,
122
122
  InputTextModule,
123
123
  NgTemplateOutlet,
124
- ], template: "@let _field = field();\n@if (inputRef) {\n <s-field-label\n [field]=\"_field\"\n [fieldContainerRef]=\"inputRef!.nativeElement\"\n />\n}\n@if (_field.mask) {\n @let autoClear = _field.type === 'number' ? (_field.autoClear ?? true) : false;\n <p-inputMask\n #inputRef\n type=\"text\"\n [inputId]=\"_field.id || _field.name\"\n [name]=\"_field.name\"\n [mask]=\"fieldUtils.getFieldPropertyMask(_field.mask)\"\n [placeholder]=\"_field.placeholder\"\n slotChar=\"_\"\n [sTooltip]=\"_field.tooltip\"\n tooltipPosition=\"top\"\n [showDelay]=\"500\"\n styleClass=\"mousetrap\"\n (onBlur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n (onFocus)=\"onFocus.next($event)\"\n (onComplete)=\"onComplete.next($event)\"\n (onInput)=\"onInput.next($event)\"\n [formControl]=\"formControl()\"\n [autoClear]=\"autoClear\"\n >\n </p-inputMask>\n} @else {\n <div class=\"bignumber-field\">\n @if (_field.leftAddon) {\n <div class=\"button-left\">\n <ng-container *ngTemplateOutlet=\"addonRender; context: { button: _field.leftAddon }\"></ng-container>\n </div>\n }\n @let allowNegative = _field.type === 'number' ? (_field.allowNegative ?? true) : false;\n <input\n #inputRef\n [id]=\"_field.id || _field.name\"\n type=\"text\"\n [name]=\"_field.name\"\n sBignumberInput\n [allowNegative]=\"allowNegative\"\n [precision]=\"\n fieldUtils.isFunction(_field.precision) ? fieldUtils.trigger(_field.precision) : _field.precision\n \"\n [scale]=\"fieldUtils.isFunction(_field.scale) ? fieldUtils.trigger(_field.scale) : _field.scale\"\n [decimalSeparator]=\"_field.numberLocaleOptions?.decimalSeparator\"\n [thousandsSeparator]=\"_field.numberLocaleOptions?.thousandsSeparator\"\n [alignTo]=\"_field.alignTo ?? 'left'\"\n [sTooltip]=\"_field.tooltip\"\n tooltipPosition=\"top\"\n [placeholder]=\"_field.placeholder\"\n [showDelay]=\"500\"\n pInputText\n [autocomplete]=\"_field.browserAutocomplete ? 'on' : 'off'\"\n [ngClass]=\"'mousetrap'\"\n class=\"input-text\"\n (blur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n (focus)=\"onFocus.next($event)\"\n [formControl]=\"formControl()\"\n />\n @if (_field.rightAddon) {\n <div class=\"button-right\">\n <ng-container *ngTemplateOutlet=\"addonRender; context: { button: _field.rightAddon }\"></ng-container>\n </div>\n }\n </div>\n}\n\n<ng-template\n #addonRender\n let-button=\"button\"\n>\n <s-button\n [label]=\"button.label\"\n [priority]=\"button.priority ?? 'default'\"\n [iconClass]=\"button.icon\"\n [disabled]=\"fieldUtils.fieldPropertyIsDisabled(button.leftAddon)\"\n [auxiliary]=\"false\"\n (clicked)=\"button.callback?.()\"\n />\n</ng-template>\n\n", styles: ["s-number-field.ng-dirty.ng-invalid .p-inputtext{border-color:#c13018}s-number-field.ng-dirty.ng-invalid .p-inputtext:hover{border-color:highlight(#c13018)}.bignumber-field{display:flex;width:100%}.bignumber-field .input-text{width:auto;flex-grow:1}.bignumber-field:has(.button-left) .input-text{border-top-left-radius:0;border-bottom-left-radius:0}.bignumber-field:has(.button-left) .button-left button{border-top-right-radius:0;border-bottom-right-radius:0;border-right:none}.bignumber-field:has(input:focus) .button-left button{border-color:#428bca!important}.bignumber-field:has(input.ng-invalid.ng-dirty) .button-left button{border-color:#c13018!important}.bignumber-field:has(.button-right) .input-text{border-top-right-radius:0;border-bottom-right-radius:0}.bignumber-field:has(.button-right) .button-right button{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none}.bignumber-field:has(input:focus) .button-right button{border-color:#428bca!important}.bignumber-field:has(input.ng-invalid.ng-dirty) .button-right button{border-color:#c13018!important}\n"] }]
124
+ ], template: "@let _field = field();\n@if (inputRef) {\n <s-field-label\n [field]=\"_field\"\n [fieldContainerRef]=\"inputRef!.nativeElement\"\n />\n}\n@if (_field.mask) {\n @let autoClear = _field.type === 'number' ? (_field.autoClear ?? true) : false;\n <p-inputMask\n #inputRef\n type=\"text\"\n [inputId]=\"_field.id || _field.name\"\n [name]=\"_field.name\"\n [mask]=\"fieldUtils.getFieldPropertyMask(_field.mask)\"\n [placeholder]=\"_field.placeholder\"\n slotChar=\"_\"\n [sTooltip]=\"_field.tooltip\"\n tooltipPosition=\"top\"\n [showDelay]=\"500\"\n styleClass=\"mousetrap\"\n (onBlur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n (onFocus)=\"onFocus.next($event)\"\n (onComplete)=\"onComplete.next($event)\"\n (onInput)=\"onInput.next($event)\"\n [formControl]=\"formControl()\"\n [autoClear]=\"autoClear\"\n >\n </p-inputMask>\n} @else {\n <div class=\"bignumber-field\">\n @if (_field.leftAddon) {\n <div class=\"button-left\">\n <ng-container *ngTemplateOutlet=\"addonRender; context: { button: _field.leftAddon }\"></ng-container>\n </div>\n }\n @let allowNegative = _field.type === 'number' ? (_field.allowNegative ?? true) : false;\n <input\n #inputRef\n [id]=\"_field.id || _field.name\"\n type=\"text\"\n [name]=\"_field.name\"\n sBignumberInput\n [allowNegative]=\"allowNegative\"\n [precision]=\"\n fieldUtils.isFunction(_field.precision) ? fieldUtils.trigger(_field.precision) : _field.precision\n \"\n [scale]=\"fieldUtils.isFunction(_field.scale) ? fieldUtils.trigger(_field.scale) : _field.scale\"\n [decimalSeparator]=\"_field.numberLocaleOptions?.decimalSeparator ?? ''\"\n [thousandsSeparator]=\"_field.numberLocaleOptions?.thousandsSeparator ?? ''\"\n [alignTo]=\"_field.alignTo ?? 'left'\"\n [sTooltip]=\"_field.tooltip\"\n tooltipPosition=\"top\"\n [placeholder]=\"_field.placeholder\"\n [showDelay]=\"500\"\n pInputText\n [autocomplete]=\"_field.browserAutocomplete ? 'on' : 'off'\"\n [ngClass]=\"'mousetrap'\"\n class=\"input-text\"\n (blur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n (focus)=\"onFocus.next($event)\"\n [formControl]=\"formControl()\"\n />\n @if (_field.rightAddon) {\n <div class=\"button-right\">\n <ng-container *ngTemplateOutlet=\"addonRender; context: { button: _field.rightAddon }\"></ng-container>\n </div>\n }\n </div>\n}\n\n<ng-template\n #addonRender\n let-button=\"button\"\n>\n <s-button\n [label]=\"button.label\"\n [priority]=\"button.priority ?? 'default'\"\n [iconClass]=\"button.icon\"\n [disabled]=\"fieldUtils.fieldPropertyIsDisabled(button.leftAddon)\"\n [auxiliary]=\"false\"\n (clicked)=\"button.callback?.()\"\n />\n</ng-template>\n\n", styles: ["s-number-field.ng-dirty.ng-invalid .p-inputtext{border-color:#c13018}s-number-field.ng-dirty.ng-invalid .p-inputtext:hover{border-color:highlight(#c13018)}.bignumber-field{display:flex;width:100%}.bignumber-field .input-text{width:auto;flex-grow:1}.bignumber-field:has(.button-left) .input-text{border-top-left-radius:0;border-bottom-left-radius:0}.bignumber-field:has(.button-left) .button-left button{border-top-right-radius:0;border-bottom-right-radius:0;border-right:none}.bignumber-field:has(input:focus) .button-left button{border-color:#428bca!important}.bignumber-field:has(input.ng-invalid.ng-dirty) .button-left button{border-color:#c13018!important}.bignumber-field:has(.button-right) .input-text{border-top-right-radius:0;border-bottom-right-radius:0}.bignumber-field:has(.button-right) .button-right button{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none}.bignumber-field:has(input:focus) .button-right button{border-color:#428bca!important}.bignumber-field:has(input.ng-invalid.ng-dirty) .button-right button{border-color:#c13018!important}\n"] }]
125
125
  }], ctorParameters: () => [{ type: i1.LocaleService }, { type: i0.ChangeDetectorRef }], propDecorators: { onInput: [{
126
126
  type: Output
127
127
  }], onFocus: [{
@@ -132,4 +132,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
132
132
  type: ViewChild,
133
133
  args: ['inputRef']
134
134
  }] } });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlnbnVtYmVyLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9keW5hbWljLWZvcm0vc3JjL2xpYi9keW5hbWljLWZvcm0vZm9ybS1maWVsZC9maWVsZHMvYmlnbnVtYmVyL2JpZ251bWJlci1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL3NyYy9saWIvZHluYW1pYy1mb3JtL2Zvcm0tZmllbGQvZmllbGRzL2JpZ251bWJlci9iaWdudW1iZXItZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEQsT0FBTyxFQUFpQixtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBR25GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztB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bkRwQyw4bkdBcUZBLGduQ0Q3Q1EsbUJBQW1CLGlHQUNuQixlQUFlLHNpQkFDZixnQkFBZ0IsMk5BQ2hCLG1CQUFtQiwwa0JBQ25CLGVBQWUsdVVBQ2YsT0FBTyxtRkFDUCxvQkFBb0IsNFFBQ3BCLGVBQWUsMklBQ2YsZ0JBQWdCOzs0RkFHWCx1QkFBdUI7a0JBakJuQyxTQUFTO29DQUdTLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSxXQUNQO3dCQUNMLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixPQUFPO3dCQUNQLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixnQkFBZ0I7cUJBQ25CO2tIQVdNLE9BQU87c0JBRmIsTUFBTTtnQkFNQSxPQUFPO3NCQUZiLE1BQU07Z0JBTUEsVUFBVTtzQkFGaEIsTUFBTTtnQkFJZ0IsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgaW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IExvY2FsZVNlcnZpY2UsIE51bWJlckxvY2FsZU9wdGlvbnMgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2xvY2FsZSc7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdXRpbHMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS1maWVsZC11dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IEJpZ251bWJlckZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbnMvZmllbGRzL2JpZ251bWJlci1maWVsZCc7XG5pbXBvcnQgeyBCYXNlRmllbGRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi9iYXNlLWZpZWxkLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWVsZExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9maWVsZC1sYWJlbC9maWVsZC1sYWJlbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRNYXNrTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dG1hc2snO1xuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdG9vbHRpcCc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJpZ251bWJlcklucHV0TW9kdWxlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9iaWdudW1iZXItaW5wdXQnO1xuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHsgTnVtYmVyRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9ucy9maWVsZHMvbnVtYmVyLWZpZWxkJztcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6ICdiaWdudW1iZXItZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JpZ251bWJlci1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEZpZWxkTGFiZWxDb21wb25lbnQsXG4gICAgICAgIElucHV0TWFza01vZHVsZSxcbiAgICAgICAgVG9vbHRpcERpcmVjdGl2ZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBCaWdudW1iZXJJbnB1dE1vZHVsZSxcbiAgICAgICAgSW5wdXRUZXh0TW9kdWxlLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEJpZ251bWJlckZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEJhc2VGaWVsZENvbXBvbmVudENvbmZpZyB7XG4gICAgZmllbGQgPSBpbnB1dC5yZXF1aXJlZDxCaWdudW1iZXJGaWVsZENvbmZpZyB8IE51bWJlckZpZWxkQ29uZmlnPigpO1xuXG4gICAgZm9ybUNvbnRyb2wgPSBpbnB1dC5yZXF1aXJlZDxGb3JtQ29udHJvbD4oKTtcblxuICAgIGZpZWxkVXRpbHMgPSBpbmplY3QoRm9ybUZpZWxkVXRpbHNTZXJ2aWNlKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHB1YmxpYyBvbklucHV0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHB1YmxpYyBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHB1YmxpYyBvbkNvbXBsZXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0UmVmJykgaW5wdXRSZWY6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcblxuICAgIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2NhbGVTZXJ2aWNlOiBMb2NhbGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5maWVsZCgpO1xuICAgICAgICBmaWVsZC5zY2FsZSA9IGZpZWxkLnNjYWxlID8/IDI7XG4gICAgICAgIGZpZWxkLm51bWJlckxvY2FsZU9wdGlvbnMgPSBmaWVsZC5udW1iZXJMb2NhbGVPcHRpb25zID8/IG5ldyBOdW1iZXJMb2NhbGVPcHRpb25zKCk7XG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgZmllbGQuYXV0b0NsZWFyID0gZmllbGQuYXV0b0NsZWFyID8/IHRydWU7XG4gICAgICAgICAgICBmaWVsZC5hbGxvd05lZ2F0aXZlID0gZmllbGQuYWxsb3dOZWdhdGl2ZSA/PyB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkLmFsaWduVG8gPSBmaWVsZC5zY2FsZSA/ICdyaWdodCcgOiAnbGVmdCc7XG5cbiAgICAgICAgdGhpcy5vbkxvY2FsZVNlcnZpY2UoKTtcblxuICAgICAgICB0aGlzLm9uRm9jdXMucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChldmVudDogRm9jdXNFdmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQoKS5vbkZvY3VzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZCgpLm9uRm9jdXM/LihldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMub25JbnB1dC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkKCkub25JbnB1dCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQoKS5vbklucHV0Py4oZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9uQ29tcGxldGUucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5maWVsZCgpLm9uQ29tcGxldGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkKCkub25Db21wbGV0ZT8uKGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub25TY2FsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkxvY2FsZVNlcnZpY2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9jYWxlU2VydmljZVxuICAgICAgICAgICAgLmdldExvY2FsZSgpXG4gICAgICAgICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmllbGQoKS5udW1iZXJMb2NhbGVPcHRpb25zPy5kZWNpbWFsU2VwYXJhdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkKCkubnVtYmVyTG9jYWxlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmZpZWxkKCkubnVtYmVyTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiB0aGlzLmxvY2FsZVNlcnZpY2UuZ2V0RGVjaW1hbFNlcGFyYXRvcigpID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5maWVsZCgpLm51bWJlckxvY2FsZU9wdGlvbnM/LnRob3VzYW5kc1NlcGFyYXRvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZCgpLm51bWJlckxvY2FsZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5maWVsZCgpLm51bWJlckxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhvdXNhbmRzU2VwYXJhdG9yOiB0aGlzLmxvY2FsZVNlcnZpY2UuZ2V0R3JvdXBpbmdTZXBhcmF0b3IoKSA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmllbGQoKS5udW1iZXJMb2NhbGVPcHRpb25zPy5jdXJyZW5jeVN5bWJvbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZCgpLm51bWJlckxvY2FsZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5maWVsZCgpLm51bWJlckxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2w6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQoKS50eXBlID09PSAnaW50ZWdlcicgfHwgdGhpcy5maWVsZCgpLnR5cGUgPT09ICdkb3VibGUnID8gJycgOiAnUiQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmZpZWxkKCkubnVtYmVyTG9jYWxlT3B0aW9ucyA9IHRoaXMuZmllbGQoKS5udW1iZXJMb2NhbGVPcHRpb25zID8/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogJy4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogJywnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2w6IHRoaXMuZmllbGQoKS50eXBlID09PSAnaW50ZWdlcicgfHwgdGhpcy5maWVsZCgpLnR5cGUgPT09ICdkb3VibGUnID8gJycgOiAnUiQnLFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25TY2FsZSgpOiB2b2lkIHtcbiAgICAgICAgLy8gQ3VycmVudGx5LCB0aGlzIGNvbXBvbmVudCBpcyB1c2VkIGZvciB0aGUgZm9sbG93aW5nIHR5cGVzXG4gICAgICAgIC8vICdpbnRlZ2VyJywgJ2RlY2ltYWwnLCAnbnVtYmVyJ1xuICAgICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQodGhpcy5maWVsZCgpLnNjYWxlKSkge1xuICAgICAgICAgICAgdGhpcy5maWVsZCgpLnNjYWxlID0gdGhpcy5maWVsZCgpLnR5cGUgPT09ICdpbnRlZ2VyJyA/IDAgOiAyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4iLCJAbGV0IF9maWVsZCA9IGZpZWxkKCk7XG5AaWYgKGlucHV0UmVmKSB7XG4gICAgPHMtZmllbGQtbGFiZWxcbiAgICAgICAgW2ZpZWxkXT1cIl9maWVsZFwiXG4gICAgICAgIFtmaWVsZENvbnRhaW5lclJlZl09XCJpbnB1dFJlZiEubmF0aXZlRWxlbWVudFwiXG4gICAgLz5cbn1cbkBpZiAoX2ZpZWxkLm1hc2spIHtcbiAgICBAbGV0IGF1dG9DbGVhciA9IF9maWVsZC50eXBlID09PSAnbnVtYmVyJyA/IChfZmllbGQuYXV0b0NsZWFyID8/IHRydWUpIDogZmFsc2U7XG4gICAgPHAtaW5wdXRNYXNrXG4gICAgICAgICNpbnB1dFJlZlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIFtpbnB1dElkXT1cIl9maWVsZC5pZCB8fCBfZmllbGQubmFtZVwiXG4gICAgICAgIFtuYW1lXT1cIl9maWVsZC5uYW1lXCJcbiAgICAgICAgW21hc2tdPVwiZmllbGRVdGlscy5nZXRGaWVsZFByb3BlcnR5TWFzayhfZmllbGQubWFzaylcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiX2ZpZWxkLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgc2xvdENoYXI9XCJfXCJcbiAgICAgICAgW3NUb29sdGlwXT1cIl9maWVsZC50b29sdGlwXCJcbiAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgW3Nob3dEZWxheV09XCI1MDBcIlxuICAgICAgICBzdHlsZUNsYXNzPVwibW91c2V0cmFwXCJcbiAgICAgICAgKG9uQmx1cik9XCJfZmllbGQub25CbHVyID8gX2ZpZWxkLm9uQmx1cigkZXZlbnQpIDogbnVsbFwiXG4gICAgICAgIChvbkZvY3VzKT1cIm9uRm9jdXMubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgKG9uQ29tcGxldGUpPVwib25Db21wbGV0ZS5uZXh0KCRldmVudClcIlxuICAgICAgICAob25JbnB1dCk9XCJvbklucHV0Lm5leHQoJGV2ZW50KVwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbCgpXCJcbiAgICAgICAgW2F1dG9DbGVhcl09XCJhdXRvQ2xlYXJcIlxuICAgID5cbiAgICA8L3AtaW5wdXRNYXNrPlxufSBAZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cImJpZ251bWJlci1maWVsZFwiPlxuICAgICAgICBAaWYgKF9maWVsZC5sZWZ0QWRkb24pIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tbGVmdFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZGRvblJlbmRlcjsgY29udGV4dDogeyBidXR0b246IF9maWVsZC5sZWZ0QWRkb24gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGxldCBhbGxvd05lZ2F0aXZlID0gX2ZpZWxkLnR5cGUgPT09ICdudW1iZXInID8gKF9maWVsZC5hbGxvd05lZ2F0aXZlID8/IHRydWUpIDogZmFsc2U7XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2lucHV0UmVmXG4gICAgICAgICAgICBbaWRdPVwiX2ZpZWxkLmlkIHx8IF9maWVsZC5uYW1lXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIFtuYW1lXT1cIl9maWVsZC5uYW1lXCJcbiAgICAgICAgICAgIHNCaWdudW1iZXJJbnB1dFxuICAgICAgICAgICAgW2FsbG93TmVnYXRpdmVdPVwiYWxsb3dOZWdhdGl2ZVwiXG4gICAgICAgICAgICBbcHJlY2lzaW9uXT1cIlxuICAgICAgICAgICAgICAgIGZpZWxkVXRpbHMuaXNGdW5jdGlvbihfZmllbGQucHJlY2lzaW9uKSA/IGZpZWxkVXRpbHMudHJpZ2dlcihfZmllbGQucHJlY2lzaW9uKSA6IF9maWVsZC5wcmVjaXNpb25cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbc2NhbGVdPVwiZmllbGRVdGlscy5pc0Z1bmN0aW9uKF9maWVsZC5zY2FsZSkgPyBmaWVsZFV0aWxzLnRyaWdnZXIoX2ZpZWxkLnNjYWxlKSA6IF9maWVsZC5zY2FsZVwiXG4gICAgICAgICAgICBbZGVjaW1hbFNlcGFyYXRvcl09XCJfZmllbGQubnVtYmVyTG9jYWxlT3B0aW9ucz8uZGVjaW1hbFNlcGFyYXRvclwiXG4gICAgICAgICAgICBbdGhvdXNhbmRzU2VwYXJhdG9yXT1cIl9maWVsZC5udW1iZXJMb2NhbGVPcHRpb25zPy50aG91c2FuZHNTZXBhcmF0b3JcIlxuICAgICAgICAgICAgW2FsaWduVG9dPVwiX2ZpZWxkLmFsaWduVG8gPz8gJ2xlZnQnXCJcbiAgICAgICAgICAgIFtzVG9vbHRpcF09XCJfZmllbGQudG9vbHRpcFwiXG4gICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIl9maWVsZC5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBbc2hvd0RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIl9maWVsZC5icm93c2VyQXV0b2NvbXBsZXRlID8gJ29uJyA6ICdvZmYnXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidtb3VzZXRyYXAnXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtdGV4dFwiXG4gICAgICAgICAgICAoYmx1cik9XCJfZmllbGQub25CbHVyID8gX2ZpZWxkLm9uQmx1cigkZXZlbnQpIDogbnVsbFwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cy5uZXh0KCRldmVudClcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sKClcIlxuICAgICAgICAvPlxuICAgICAgICBAaWYgKF9maWVsZC5yaWdodEFkZG9uKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFkZG9uUmVuZGVyOyBjb250ZXh0OiB7IGJ1dHRvbjogX2ZpZWxkLnJpZ2h0QWRkb24gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbn1cblxuPG5nLXRlbXBsYXRlXG4gICAgI2FkZG9uUmVuZGVyXG4gICAgbGV0LWJ1dHRvbj1cImJ1dHRvblwiXG4+XG4gICAgPHMtYnV0dG9uXG4gICAgICAgIFtsYWJlbF09XCJidXR0b24ubGFiZWxcIlxuICAgICAgICBbcHJpb3JpdHldPVwiYnV0dG9uLnByaW9yaXR5ID8/ICdkZWZhdWx0J1wiXG4gICAgICAgIFtpY29uQ2xhc3NdPVwiYnV0dG9uLmljb25cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGRVdGlscy5maWVsZFByb3BlcnR5SXNEaXNhYmxlZChidXR0b24ubGVmdEFkZG9uKVwiXG4gICAgICAgIFthdXhpbGlhcnldPVwiZmFsc2VcIlxuICAgICAgICAoY2xpY2tlZCk9XCJidXR0b24uY2FsbGJhY2s/LigpXCJcbiAgICAvPlxuPC9uZy10ZW1wbGF0ZT5cblxuIl19
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlnbnVtYmVyLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9keW5hbWljLWZvcm0vc3JjL2xpYi9keW5hbWljLWZvcm0vZm9ybS1maWVsZC9maWVsZHMvYmlnbnVtYmVyL2JpZ251bWJlci1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL3NyYy9saWIvZHluYW1pYy1mb3JtL2Zvcm0tZmllbGQvZmllbGRzL2JpZ251bWJlci9iaWdudW1iZXItZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEQsT0FBTyxFQUFpQixtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBR25GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDNUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7OztBQW9CcEQsTUFBTSxPQUFPLHVCQUF1QjtJQXdCWDtJQUNBO0lBeEJyQixLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBNEMsQ0FBQztJQUVuRSxXQUFXLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBZSxDQUFDO0lBRTVDLFVBQVUsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUlwQyxPQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFJaEQsT0FBTyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBSWhELFVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUVuQyxRQUFRLEdBQXNCLElBQUksQ0FBQztJQUVsRCxhQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUU1QyxZQUNxQixhQUE0QixFQUM1QixpQkFBb0M7UUFEcEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUN0RCxDQUFDO0lBRUcsUUFBUTtRQUNYLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQy9CLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsbUJBQW1CLElBQUksSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ25GLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMxQixLQUFLLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDO1lBQzFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUM7UUFDdEQsQ0FBQztRQUNELEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFL0MsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXZCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFpQixFQUFFLEVBQUU7WUFDN0UsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDdEUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDekUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTyxlQUFlO1FBQ25CLElBQUksQ0FBQyxhQUFhO2FBQ2IsU0FBUyxFQUFFO2FBQ1gsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2IsU0FBUyxDQUFDO1lBQ1AsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLENBQUM7b0JBQ3RELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxtQkFBbUIsR0FBRzt3QkFDL0IsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsbUJBQW1CO3dCQUNuQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixFQUFFLElBQUksRUFBRTtxQkFDbkUsQ0FBQztnQkFDTixDQUFDO2dCQUVELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztvQkFDeEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLG1CQUFtQixHQUFHO3dCQUMvQixHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxtQkFBbUI7d0JBQ25DLGtCQUFrQixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxFQUFFO3FCQUN0RSxDQUFDO2dCQUNOLENBQUM7Z0JBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsQ0FBQztvQkFDcEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLG1CQUFtQixHQUFHO3dCQUMvQixHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxtQkFBbUI7d0JBQ25DLGNBQWMsRUFDVixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO3FCQUNwRixDQUFDO2dCQUNOLENBQUM7WUFDTCxDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUNSLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxtQkFBbUIsSUFBSTtnQkFDcEUsa0JBQWtCLEVBQUUsR0FBRztnQkFDdkIsZ0JBQWdCLEVBQUUsR0FBRztnQkFDckIsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUk7YUFDaEcsQ0FBQztTQUNULENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTyxPQUFPO1FBQ1gsNERBQTREO1FBQzVELGlDQUFpQztRQUNqQyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7SUFDTCxDQUFDO3dHQWhIUSx1QkFBdUI7NEZBQXZCLHVCQUF1Qix5Z0JDbkRwQywwb0dBcUZBLGduQ0Q3Q1EsbUJBQW1CLGlHQUNuQixlQUFlLHNpQkFDZixnQkFBZ0IsMk5BQ2hCLG1CQUFtQiwwa0JBQ25CLGVBQWUsdVVBQ2YsT0FBTyxtRkFDUCxvQkFBb0IsdWNBQ3BCLGVBQWUsMklBQ2YsZ0JBQWdCOzs0RkFHWCx1QkFBdUI7a0JBakJuQyxTQUFTO29DQUdTLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSxXQUNQO3dCQUNMLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixPQUFPO3dCQUNQLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixnQkFBZ0I7cUJBQ25CO2tIQVdNLE9BQU87c0JBRmIsTUFBTTtnQkFNQSxPQUFPO3NCQUZiLE1BQU07Z0JBTUEsVUFBVTtzQkFGaEIsTUFBTTtnQkFJZ0IsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgaW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IExvY2FsZVNlcnZpY2UsIE51bWJlckxvY2FsZU9wdGlvbnMgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2xvY2FsZSc7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdXRpbHMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS1maWVsZC11dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IEJpZ251bWJlckZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbnMvZmllbGRzL2JpZ251bWJlci1maWVsZCc7XG5pbXBvcnQgeyBCYXNlRmllbGRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi9iYXNlLWZpZWxkLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWVsZExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9maWVsZC1sYWJlbC9maWVsZC1sYWJlbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRNYXNrTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dG1hc2snO1xuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdG9vbHRpcCc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJpZ251bWJlcklucHV0TW9kdWxlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9iaWdudW1iZXItaW5wdXQnO1xuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHsgTnVtYmVyRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9ucy9maWVsZHMvbnVtYmVyLWZpZWxkJztcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6ICdiaWdudW1iZXItZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JpZ251bWJlci1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEZpZWxkTGFiZWxDb21wb25lbnQsXG4gICAgICAgIElucHV0TWFza01vZHVsZSxcbiAgICAgICAgVG9vbHRpcERpcmVjdGl2ZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBCaWdudW1iZXJJbnB1dE1vZHVsZSxcbiAgICAgICAgSW5wdXRUZXh0TW9kdWxlLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEJpZ251bWJlckZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEJhc2VGaWVsZENvbXBvbmVudENvbmZpZyB7XG4gICAgZmllbGQgPSBpbnB1dC5yZXF1aXJlZDxCaWdudW1iZXJGaWVsZENvbmZpZyB8IE51bWJlckZpZWxkQ29uZmlnPigpO1xuXG4gICAgZm9ybUNvbnRyb2wgPSBpbnB1dC5yZXF1aXJlZDxGb3JtQ29udHJvbD4oKTtcblxuICAgIGZpZWxkVXRpbHMgPSBpbmplY3QoRm9ybUZpZWxkVXRpbHNTZXJ2aWNlKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHB1YmxpYyBvbklucHV0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHB1YmxpYyBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHB1YmxpYyBvbkNvbXBsZXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0UmVmJykgaW5wdXRSZWY6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcblxuICAgIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2NhbGVTZXJ2aWNlOiBMb2NhbGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5maWVsZCgpO1xuICAgICAgICBmaWVsZC5zY2FsZSA9IGZpZWxkLnNjYWxlID8/IDI7XG4gICAgICAgIGZpZWxkLm51bWJlckxvY2FsZU9wdGlvbnMgPSBmaWVsZC5udW1iZXJMb2NhbGVPcHRpb25zID8/IG5ldyBOdW1iZXJMb2NhbGVPcHRpb25zKCk7XG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgZmllbGQuYXV0b0NsZWFyID0gZmllbGQuYXV0b0NsZWFyID8/IHRydWU7XG4gICAgICAgICAgICBmaWVsZC5hbGxvd05lZ2F0aXZlID0gZmllbGQuYWxsb3dOZWdhdGl2ZSA/PyB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkLmFsaWduVG8gPSBmaWVsZC5zY2FsZSA/ICdyaWdodCcgOiAnbGVmdCc7XG5cbiAgICAgICAgdGhpcy5vbkxvY2FsZVNlcnZpY2UoKTtcblxuICAgICAgICB0aGlzLm9uRm9jdXMucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChldmVudDogRm9jdXNFdmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQoKS5vbkZvY3VzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZCgpLm9uRm9jdXM/LihldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMub25JbnB1dC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkKCkub25JbnB1dCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQoKS5vbklucHV0Py4oZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9uQ29tcGxldGUucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5maWVsZCgpLm9uQ29tcGxldGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkKCkub25Db21wbGV0ZT8uKGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub25TY2FsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkxvY2FsZVNlcnZpY2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9jYWxlU2VydmljZVxuICAgICAgICAgICAgLmdldExvY2FsZSgpXG4gICAgICAgICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmllbGQoKS5udW1iZXJMb2NhbGVPcHRpb25zPy5kZWNpbWFsU2VwYXJhdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkKCkubnVtYmVyTG9jYWxlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmZpZWxkKCkubnVtYmVyTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiB0aGlzLmxvY2FsZVNlcnZpY2UuZ2V0RGVjaW1hbFNlcGFyYXRvcigpID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5maWVsZCgpLm51bWJlckxvY2FsZU9wdGlvbnM/LnRob3VzYW5kc1NlcGFyYXRvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZCgpLm51bWJlckxvY2FsZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5maWVsZCgpLm51bWJlckxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhvdXNhbmRzU2VwYXJhdG9yOiB0aGlzLmxvY2FsZVNlcnZpY2UuZ2V0R3JvdXBpbmdTZXBhcmF0b3IoKSA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmllbGQoKS5udW1iZXJMb2NhbGVPcHRpb25zPy5jdXJyZW5jeVN5bWJvbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZCgpLm51bWJlckxvY2FsZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5maWVsZCgpLm51bWJlckxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2w6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQoKS50eXBlID09PSAnaW50ZWdlcicgfHwgdGhpcy5maWVsZCgpLnR5cGUgPT09ICdkb3VibGUnID8gJycgOiAnUiQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmZpZWxkKCkubnVtYmVyTG9jYWxlT3B0aW9ucyA9IHRoaXMuZmllbGQoKS5udW1iZXJMb2NhbGVPcHRpb25zID8/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogJy4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogJywnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2w6IHRoaXMuZmllbGQoKS50eXBlID09PSAnaW50ZWdlcicgfHwgdGhpcy5maWVsZCgpLnR5cGUgPT09ICdkb3VibGUnID8gJycgOiAnUiQnLFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25TY2FsZSgpOiB2b2lkIHtcbiAgICAgICAgLy8gQ3VycmVudGx5LCB0aGlzIGNvbXBvbmVudCBpcyB1c2VkIGZvciB0aGUgZm9sbG93aW5nIHR5cGVzXG4gICAgICAgIC8vICdpbnRlZ2VyJywgJ2RlY2ltYWwnLCAnbnVtYmVyJ1xuICAgICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQodGhpcy5maWVsZCgpLnNjYWxlKSkge1xuICAgICAgICAgICAgdGhpcy5maWVsZCgpLnNjYWxlID0gdGhpcy5maWVsZCgpLnR5cGUgPT09ICdpbnRlZ2VyJyA/IDAgOiAyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4iLCJAbGV0IF9maWVsZCA9IGZpZWxkKCk7XG5AaWYgKGlucHV0UmVmKSB7XG4gICAgPHMtZmllbGQtbGFiZWxcbiAgICAgICAgW2ZpZWxkXT1cIl9maWVsZFwiXG4gICAgICAgIFtmaWVsZENvbnRhaW5lclJlZl09XCJpbnB1dFJlZiEubmF0aXZlRWxlbWVudFwiXG4gICAgLz5cbn1cbkBpZiAoX2ZpZWxkLm1hc2spIHtcbiAgICBAbGV0IGF1dG9DbGVhciA9IF9maWVsZC50eXBlID09PSAnbnVtYmVyJyA/IChfZmllbGQuYXV0b0NsZWFyID8/IHRydWUpIDogZmFsc2U7XG4gICAgPHAtaW5wdXRNYXNrXG4gICAgICAgICNpbnB1dFJlZlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIFtpbnB1dElkXT1cIl9maWVsZC5pZCB8fCBfZmllbGQubmFtZVwiXG4gICAgICAgIFtuYW1lXT1cIl9maWVsZC5uYW1lXCJcbiAgICAgICAgW21hc2tdPVwiZmllbGRVdGlscy5nZXRGaWVsZFByb3BlcnR5TWFzayhfZmllbGQubWFzaylcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiX2ZpZWxkLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgc2xvdENoYXI9XCJfXCJcbiAgICAgICAgW3NUb29sdGlwXT1cIl9maWVsZC50b29sdGlwXCJcbiAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgW3Nob3dEZWxheV09XCI1MDBcIlxuICAgICAgICBzdHlsZUNsYXNzPVwibW91c2V0cmFwXCJcbiAgICAgICAgKG9uQmx1cik9XCJfZmllbGQub25CbHVyID8gX2ZpZWxkLm9uQmx1cigkZXZlbnQpIDogbnVsbFwiXG4gICAgICAgIChvbkZvY3VzKT1cIm9uRm9jdXMubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgKG9uQ29tcGxldGUpPVwib25Db21wbGV0ZS5uZXh0KCRldmVudClcIlxuICAgICAgICAob25JbnB1dCk9XCJvbklucHV0Lm5leHQoJGV2ZW50KVwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbCgpXCJcbiAgICAgICAgW2F1dG9DbGVhcl09XCJhdXRvQ2xlYXJcIlxuICAgID5cbiAgICA8L3AtaW5wdXRNYXNrPlxufSBAZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cImJpZ251bWJlci1maWVsZFwiPlxuICAgICAgICBAaWYgKF9maWVsZC5sZWZ0QWRkb24pIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tbGVmdFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZGRvblJlbmRlcjsgY29udGV4dDogeyBidXR0b246IF9maWVsZC5sZWZ0QWRkb24gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGxldCBhbGxvd05lZ2F0aXZlID0gX2ZpZWxkLnR5cGUgPT09ICdudW1iZXInID8gKF9maWVsZC5hbGxvd05lZ2F0aXZlID8/IHRydWUpIDogZmFsc2U7XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2lucHV0UmVmXG4gICAgICAgICAgICBbaWRdPVwiX2ZpZWxkLmlkIHx8IF9maWVsZC5uYW1lXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIFtuYW1lXT1cIl9maWVsZC5uYW1lXCJcbiAgICAgICAgICAgIHNCaWdudW1iZXJJbnB1dFxuICAgICAgICAgICAgW2FsbG93TmVnYXRpdmVdPVwiYWxsb3dOZWdhdGl2ZVwiXG4gICAgICAgICAgICBbcHJlY2lzaW9uXT1cIlxuICAgICAgICAgICAgICAgIGZpZWxkVXRpbHMuaXNGdW5jdGlvbihfZmllbGQucHJlY2lzaW9uKSA/IGZpZWxkVXRpbHMudHJpZ2dlcihfZmllbGQucHJlY2lzaW9uKSA6IF9maWVsZC5wcmVjaXNpb25cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbc2NhbGVdPVwiZmllbGRVdGlscy5pc0Z1bmN0aW9uKF9maWVsZC5zY2FsZSkgPyBmaWVsZFV0aWxzLnRyaWdnZXIoX2ZpZWxkLnNjYWxlKSA6IF9maWVsZC5zY2FsZVwiXG4gICAgICAgICAgICBbZGVjaW1hbFNlcGFyYXRvcl09XCJfZmllbGQubnVtYmVyTG9jYWxlT3B0aW9ucz8uZGVjaW1hbFNlcGFyYXRvciA/PyAnJ1wiXG4gICAgICAgICAgICBbdGhvdXNhbmRzU2VwYXJhdG9yXT1cIl9maWVsZC5udW1iZXJMb2NhbGVPcHRpb25zPy50aG91c2FuZHNTZXBhcmF0b3IgPz8gJydcIlxuICAgICAgICAgICAgW2FsaWduVG9dPVwiX2ZpZWxkLmFsaWduVG8gPz8gJ2xlZnQnXCJcbiAgICAgICAgICAgIFtzVG9vbHRpcF09XCJfZmllbGQudG9vbHRpcFwiXG4gICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIl9maWVsZC5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBbc2hvd0RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIl9maWVsZC5icm93c2VyQXV0b2NvbXBsZXRlID8gJ29uJyA6ICdvZmYnXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidtb3VzZXRyYXAnXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtdGV4dFwiXG4gICAgICAgICAgICAoYmx1cik9XCJfZmllbGQub25CbHVyID8gX2ZpZWxkLm9uQmx1cigkZXZlbnQpIDogbnVsbFwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cy5uZXh0KCRldmVudClcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sKClcIlxuICAgICAgICAvPlxuICAgICAgICBAaWYgKF9maWVsZC5yaWdodEFkZG9uKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFkZG9uUmVuZGVyOyBjb250ZXh0OiB7IGJ1dHRvbjogX2ZpZWxkLnJpZ2h0QWRkb24gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbn1cblxuPG5nLXRlbXBsYXRlXG4gICAgI2FkZG9uUmVuZGVyXG4gICAgbGV0LWJ1dHRvbj1cImJ1dHRvblwiXG4+XG4gICAgPHMtYnV0dG9uXG4gICAgICAgIFtsYWJlbF09XCJidXR0b24ubGFiZWxcIlxuICAgICAgICBbcHJpb3JpdHldPVwiYnV0dG9uLnByaW9yaXR5ID8/ICdkZWZhdWx0J1wiXG4gICAgICAgIFtpY29uQ2xhc3NdPVwiYnV0dG9uLmljb25cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGRVdGlscy5maWVsZFByb3BlcnR5SXNEaXNhYmxlZChidXR0b24ubGVmdEFkZG9uKVwiXG4gICAgICAgIFthdXhpbGlhcnldPVwiZmFsc2VcIlxuICAgICAgICAoY2xpY2tlZCk9XCJidXR0b24uY2FsbGJhY2s/LigpXCJcbiAgICAvPlxuPC9uZy10ZW1wbGF0ZT5cblxuIl19
@@ -91,10 +91,10 @@ export class CurrencyFieldComponent {
91
91
  return field.alignTo === 'right' ? NumberAlignmentOption.RIGHT : NumberAlignmentOption.LEFT;
92
92
  }
93
93
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrencyFieldComponent, deps: [{ token: i1.CurrencyService }, { token: i2.LocaleService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
94
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CurrencyFieldComponent, isStandalone: true, selector: "ng-component", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, formControl: { classPropertyName: "formControl", publicName: "formControl", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "inputRefComponent", first: true, predicate: ["inputRef"], descendants: true, isSignal: true }], ngImport: i0, template: "@let _field = field();\n@if (inputRef()) {\n <s-field-label\n [field]=\"_field\"\n [fieldContainerRef]=\"inputRef()\"\n ></s-field-label>\n}\n@let hasMask = !!_field.mask;\n<div\n class=\"[input-is-invalid>.button-container>.button-container]:border-[1px] [input-is-invalid>.button-container>.button-container]:border-r-0 [input-is-invalid>.button-container>.button-container]:border-criticality-red [input-is-invalid>.button-container>input]:border-[1px] [input-is-invalid>.button-container>input]:border-criticality-red [input-has-focus>.button-container]:border-[1px] [input-has-focus>.button-container]:border-r-0 [input-has-focus>.button-container]:border-primary flex h-[35px] w-full\"\n [ngClass]=\"{\n '[&:has(.input-mask.ng-invalid.ng-dirty)>.button-container]:border-[1px] [&:has(.input-mask.ng-invalid.ng-dirty)>.button-container]:border-r-0 [&:has(.input-mask.ng-invalid.ng-dirty)>.button-container]:border-criticality-red [&:has(.input-mask.ng-invalid.ng-dirty)>input]:border-[1px] [&:has(.input-mask.ng-invalid.ng-dirty)>input]:border-criticality-red':\n hasMask,\n }\"\n>\n @if (_field.currency || _field.numberLocaleOptions?.currencySymbol) {\n <div\n class=\"button-container flex h-full min-w-10 items-center justify-center rounded-l-[3px] border border-r-0 border-[#c1c1cc] px-[8px]\"\n >\n <span class=\"text-[#212533]\">\n {{\n _field.currency\n ? currencyService.getCurrencySymbol({ currency: _field.currency() })\n : _field.numberLocaleOptions?.currencySymbol\n }}\n </span>\n </div>\n }\n\n @if (hasMask) {\n <p-inputMask\n class=\"input-mask\"\n #inputRef\n type=\"text\"\n [inputId]=\"_field.id || _field.name\"\n [name]=\"_field.name\"\n [formControl]=\"formControl()\"\n [mask]=\"mask\"\n [placeholder]=\"_field.placeholder\"\n slotChar=\"_\"\n [sTooltip]=\"_field.tooltip\"\n tooltipPosition=\"top\"\n [showDelay]=\"500\"\n styleClass=\"mousetrap !rounded-l-[0px]\"\n (onBlur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n (onFocus)=\"_field.onFocus ? _field.onFocus($event) : null\"\n (onComplete)=\"_field.onComplete ? _field.onComplete($event) : null\"\n (onInput)=\"_field.onInput ? _field.onInput($event) : null\"\n ></p-inputMask>\n } @else if (!hasMask) {\n <input\n #inputRef\n type=\"text\"\n [id]=\"_field.id || _field.name\"\n class=\"h-full w-full rounded-r-[3px] border border-[#c1c1cc] p-2 outline-none focus:border-[1px] focus:border-primary\"\n [name]=\"_field.name\"\n [formControl]=\"formControl()\"\n sNumberInput\n [precision]=\"\n _field.precision\n ? fieldUtils.isFunction(_field.precision)\n ? fieldUtils.trigger(_field.precision)\n : _field.precision\n : _field.currency && _field.currency()\n ? currencies[_field.currency()].precision\n : 15\n \"\n [scale]=\"\n _field.scale\n ? fieldUtils.isFunction(_field.scale)\n ? fieldUtils.trigger(_field.scale)\n : _field.scale\n : _field.currency && _field.currency()\n ? currencies[_field.currency()].scale\n : 2\n \"\n [decimalSeparator]=\"_field.numberLocaleOptions?.decimalSeparator\"\n [thousandsSeparator]=\"_field.numberLocaleOptions?.thousandsSeparator\"\n [alignTo]=\"parseAlignTo(_field)\"\n [sTooltip]=\"_field.tooltip\"\n tooltipPosition=\"top\"\n [placeholder]=\"_field.placeholder\"\n [showDelay]=\"500\"\n [autocomplete]=\"_field.browserAutocomplete ? 'on' : 'off'\"\n [ngClass]=\"'mousetrap'\"\n (blur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n (focus)=\"_field.onFocus ? _field.onFocus($event) : null\"\n />\n }\n</div>\n\n", dependencies: [{ kind: "component", type: FieldLabelComponent, selector: "s-field-label", inputs: ["field", "fieldContainerRef"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: InputMaskModule }, { kind: "component", type: i3.InputMask, selector: "p-inputmask, p-inputMask, p-input-mask", inputs: ["type", "slotChar", "autoClear", "showClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "variant", "ariaLabel", "ariaLabelledBy", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autofocus", "autoFocus", "autocomplete", "keepBuffer", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown", "onClear"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }, { kind: "ngmodule", type: NumberInputModule }, { kind: "directive", type: i5.NumberInputDirective, selector: "input[sNumberInput]", inputs: ["precision", "scale", "decimalSeparator", "thousandsSeparator", "alignTo", "allowNegative", "placeholder"], outputs: ["pasteRejected"] }] });
94
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CurrencyFieldComponent, isStandalone: true, selector: "ng-component", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, formControl: { classPropertyName: "formControl", publicName: "formControl", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "inputRefComponent", first: true, predicate: ["inputRef"], descendants: true, isSignal: true }], ngImport: i0, template: "@let _field = field();\n@if (inputRef()) {\n <s-field-label\n [field]=\"_field\"\n [fieldContainerRef]=\"inputRef()\"\n ></s-field-label>\n}\n@let hasMask = !!_field.mask;\n<div\n class=\"[input-is-invalid>.button-container>.button-container]:border-[1px] [input-is-invalid>.button-container>.button-container]:border-r-0 [input-is-invalid>.button-container>.button-container]:border-criticality-red [input-is-invalid>.button-container>input]:border-[1px] [input-is-invalid>.button-container>input]:border-criticality-red [input-has-focus>.button-container]:border-[1px] [input-has-focus>.button-container]:border-r-0 [input-has-focus>.button-container]:border-primary flex h-[35px] w-full\"\n [ngClass]=\"{\n '[&:has(.input-mask.ng-invalid.ng-dirty)>.button-container]:border-[1px] [&:has(.input-mask.ng-invalid.ng-dirty)>.button-container]:border-r-0 [&:has(.input-mask.ng-invalid.ng-dirty)>.button-container]:border-criticality-red [&:has(.input-mask.ng-invalid.ng-dirty)>input]:border-[1px] [&:has(.input-mask.ng-invalid.ng-dirty)>input]:border-criticality-red':\n hasMask,\n }\"\n>\n @if (_field.currency || _field.numberLocaleOptions?.currencySymbol) {\n <div\n class=\"button-container flex h-full min-w-10 items-center justify-center rounded-l-[3px] border border-r-0 border-[#c1c1cc] px-[8px]\"\n >\n <span class=\"text-[#212533]\">\n {{\n _field.currency\n ? currencyService.getCurrencySymbol({ currency: _field.currency() })\n : _field.numberLocaleOptions?.currencySymbol\n }}\n </span>\n </div>\n }\n\n @if (hasMask) {\n <p-inputMask\n class=\"input-mask\"\n #inputRef\n type=\"text\"\n [inputId]=\"_field.id || _field.name\"\n [name]=\"_field.name\"\n [formControl]=\"formControl()\"\n [mask]=\"mask\"\n [placeholder]=\"_field.placeholder\"\n slotChar=\"_\"\n [sTooltip]=\"_field.tooltip\"\n tooltipPosition=\"top\"\n [showDelay]=\"500\"\n styleClass=\"mousetrap !rounded-l-[0px]\"\n (onBlur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n (onFocus)=\"_field.onFocus ? _field.onFocus($event) : null\"\n (onComplete)=\"_field.onComplete ? _field.onComplete($event) : null\"\n (onInput)=\"_field.onInput ? _field.onInput($event) : null\"\n ></p-inputMask>\n } @else if (!hasMask) {\n <input\n #inputRef\n type=\"text\"\n [id]=\"_field.id || _field.name\"\n class=\"h-full w-full rounded-r-[3px] border border-[#c1c1cc] p-2 outline-none focus:border-[1px] focus:border-primary\"\n [name]=\"_field.name\"\n [formControl]=\"formControl()\"\n sNumberInput\n [precision]=\"\n _field.precision\n ? fieldUtils.isFunction(_field.precision)\n ? fieldUtils.trigger(_field.precision)\n : _field.precision\n : _field.currency && _field.currency()\n ? currencies[_field.currency()].precision\n : 15\n \"\n [scale]=\"\n _field.scale\n ? fieldUtils.isFunction(_field.scale)\n ? fieldUtils.trigger(_field.scale)\n : _field.scale\n : _field.currency && _field.currency()\n ? currencies[_field.currency()].scale\n : 2\n \"\n [decimalSeparator]=\"_field.numberLocaleOptions?.decimalSeparator ?? ''\"\n [thousandsSeparator]=\"_field.numberLocaleOptions?.thousandsSeparator ?? ''\"\n [alignTo]=\"parseAlignTo(_field)\"\n [sTooltip]=\"_field.tooltip\"\n tooltipPosition=\"top\"\n [placeholder]=\"_field.placeholder\"\n [showDelay]=\"500\"\n [autocomplete]=\"_field.browserAutocomplete ? 'on' : 'off'\"\n [ngClass]=\"'mousetrap'\"\n (blur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n (focus)=\"_field.onFocus ? _field.onFocus($event) : null\"\n />\n }\n</div>\n\n", dependencies: [{ kind: "component", type: FieldLabelComponent, selector: "s-field-label", inputs: ["field", "fieldContainerRef"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: InputMaskModule }, { kind: "component", type: i3.InputMask, selector: "p-inputmask, p-inputMask, p-input-mask", inputs: ["type", "slotChar", "autoClear", "showClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "variant", "ariaLabel", "ariaLabelledBy", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autofocus", "autoFocus", "autocomplete", "keepBuffer", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown", "onClear"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }, { kind: "ngmodule", type: NumberInputModule }, { kind: "directive", type: i5.NumberInputDirective, selector: "input[sNumberInput]" }] });
95
95
  }
96
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrencyFieldComponent, decorators: [{
97
97
  type: Component,
98
- args: [{ standalone: true, imports: [FieldLabelComponent, NgClass, InputMaskModule, ReactiveFormsModule, TooltipDirective, NumberInputModule], template: "@let _field = field();\n@if (inputRef()) {\n <s-field-label\n [field]=\"_field\"\n [fieldContainerRef]=\"inputRef()\"\n ></s-field-label>\n}\n@let hasMask = !!_field.mask;\n<div\n class=\"[input-is-invalid>.button-container>.button-container]:border-[1px] [input-is-invalid>.button-container>.button-container]:border-r-0 [input-is-invalid>.button-container>.button-container]:border-criticality-red [input-is-invalid>.button-container>input]:border-[1px] [input-is-invalid>.button-container>input]:border-criticality-red [input-has-focus>.button-container]:border-[1px] [input-has-focus>.button-container]:border-r-0 [input-has-focus>.button-container]:border-primary flex h-[35px] w-full\"\n [ngClass]=\"{\n '[&:has(.input-mask.ng-invalid.ng-dirty)>.button-container]:border-[1px] [&:has(.input-mask.ng-invalid.ng-dirty)>.button-container]:border-r-0 [&:has(.input-mask.ng-invalid.ng-dirty)>.button-container]:border-criticality-red [&:has(.input-mask.ng-invalid.ng-dirty)>input]:border-[1px] [&:has(.input-mask.ng-invalid.ng-dirty)>input]:border-criticality-red':\n hasMask,\n }\"\n>\n @if (_field.currency || _field.numberLocaleOptions?.currencySymbol) {\n <div\n class=\"button-container flex h-full min-w-10 items-center justify-center rounded-l-[3px] border border-r-0 border-[#c1c1cc] px-[8px]\"\n >\n <span class=\"text-[#212533]\">\n {{\n _field.currency\n ? currencyService.getCurrencySymbol({ currency: _field.currency() })\n : _field.numberLocaleOptions?.currencySymbol\n }}\n </span>\n </div>\n }\n\n @if (hasMask) {\n <p-inputMask\n class=\"input-mask\"\n #inputRef\n type=\"text\"\n [inputId]=\"_field.id || _field.name\"\n [name]=\"_field.name\"\n [formControl]=\"formControl()\"\n [mask]=\"mask\"\n [placeholder]=\"_field.placeholder\"\n slotChar=\"_\"\n [sTooltip]=\"_field.tooltip\"\n tooltipPosition=\"top\"\n [showDelay]=\"500\"\n styleClass=\"mousetrap !rounded-l-[0px]\"\n (onBlur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n (onFocus)=\"_field.onFocus ? _field.onFocus($event) : null\"\n (onComplete)=\"_field.onComplete ? _field.onComplete($event) : null\"\n (onInput)=\"_field.onInput ? _field.onInput($event) : null\"\n ></p-inputMask>\n } @else if (!hasMask) {\n <input\n #inputRef\n type=\"text\"\n [id]=\"_field.id || _field.name\"\n class=\"h-full w-full rounded-r-[3px] border border-[#c1c1cc] p-2 outline-none focus:border-[1px] focus:border-primary\"\n [name]=\"_field.name\"\n [formControl]=\"formControl()\"\n sNumberInput\n [precision]=\"\n _field.precision\n ? fieldUtils.isFunction(_field.precision)\n ? fieldUtils.trigger(_field.precision)\n : _field.precision\n : _field.currency && _field.currency()\n ? currencies[_field.currency()].precision\n : 15\n \"\n [scale]=\"\n _field.scale\n ? fieldUtils.isFunction(_field.scale)\n ? fieldUtils.trigger(_field.scale)\n : _field.scale\n : _field.currency && _field.currency()\n ? currencies[_field.currency()].scale\n : 2\n \"\n [decimalSeparator]=\"_field.numberLocaleOptions?.decimalSeparator\"\n [thousandsSeparator]=\"_field.numberLocaleOptions?.thousandsSeparator\"\n [alignTo]=\"parseAlignTo(_field)\"\n [sTooltip]=\"_field.tooltip\"\n tooltipPosition=\"top\"\n [placeholder]=\"_field.placeholder\"\n [showDelay]=\"500\"\n [autocomplete]=\"_field.browserAutocomplete ? 'on' : 'off'\"\n [ngClass]=\"'mousetrap'\"\n (blur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n (focus)=\"_field.onFocus ? _field.onFocus($event) : null\"\n />\n }\n</div>\n\n" }]
98
+ args: [{ standalone: true, imports: [FieldLabelComponent, NgClass, InputMaskModule, ReactiveFormsModule, TooltipDirective, NumberInputModule], template: "@let _field = field();\n@if (inputRef()) {\n <s-field-label\n [field]=\"_field\"\n [fieldContainerRef]=\"inputRef()\"\n ></s-field-label>\n}\n@let hasMask = !!_field.mask;\n<div\n class=\"[input-is-invalid>.button-container>.button-container]:border-[1px] [input-is-invalid>.button-container>.button-container]:border-r-0 [input-is-invalid>.button-container>.button-container]:border-criticality-red [input-is-invalid>.button-container>input]:border-[1px] [input-is-invalid>.button-container>input]:border-criticality-red [input-has-focus>.button-container]:border-[1px] [input-has-focus>.button-container]:border-r-0 [input-has-focus>.button-container]:border-primary flex h-[35px] w-full\"\n [ngClass]=\"{\n '[&:has(.input-mask.ng-invalid.ng-dirty)>.button-container]:border-[1px] [&:has(.input-mask.ng-invalid.ng-dirty)>.button-container]:border-r-0 [&:has(.input-mask.ng-invalid.ng-dirty)>.button-container]:border-criticality-red [&:has(.input-mask.ng-invalid.ng-dirty)>input]:border-[1px] [&:has(.input-mask.ng-invalid.ng-dirty)>input]:border-criticality-red':\n hasMask,\n }\"\n>\n @if (_field.currency || _field.numberLocaleOptions?.currencySymbol) {\n <div\n class=\"button-container flex h-full min-w-10 items-center justify-center rounded-l-[3px] border border-r-0 border-[#c1c1cc] px-[8px]\"\n >\n <span class=\"text-[#212533]\">\n {{\n _field.currency\n ? currencyService.getCurrencySymbol({ currency: _field.currency() })\n : _field.numberLocaleOptions?.currencySymbol\n }}\n </span>\n </div>\n }\n\n @if (hasMask) {\n <p-inputMask\n class=\"input-mask\"\n #inputRef\n type=\"text\"\n [inputId]=\"_field.id || _field.name\"\n [name]=\"_field.name\"\n [formControl]=\"formControl()\"\n [mask]=\"mask\"\n [placeholder]=\"_field.placeholder\"\n slotChar=\"_\"\n [sTooltip]=\"_field.tooltip\"\n tooltipPosition=\"top\"\n [showDelay]=\"500\"\n styleClass=\"mousetrap !rounded-l-[0px]\"\n (onBlur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n (onFocus)=\"_field.onFocus ? _field.onFocus($event) : null\"\n (onComplete)=\"_field.onComplete ? _field.onComplete($event) : null\"\n (onInput)=\"_field.onInput ? _field.onInput($event) : null\"\n ></p-inputMask>\n } @else if (!hasMask) {\n <input\n #inputRef\n type=\"text\"\n [id]=\"_field.id || _field.name\"\n class=\"h-full w-full rounded-r-[3px] border border-[#c1c1cc] p-2 outline-none focus:border-[1px] focus:border-primary\"\n [name]=\"_field.name\"\n [formControl]=\"formControl()\"\n sNumberInput\n [precision]=\"\n _field.precision\n ? fieldUtils.isFunction(_field.precision)\n ? fieldUtils.trigger(_field.precision)\n : _field.precision\n : _field.currency && _field.currency()\n ? currencies[_field.currency()].precision\n : 15\n \"\n [scale]=\"\n _field.scale\n ? fieldUtils.isFunction(_field.scale)\n ? fieldUtils.trigger(_field.scale)\n : _field.scale\n : _field.currency && _field.currency()\n ? currencies[_field.currency()].scale\n : 2\n \"\n [decimalSeparator]=\"_field.numberLocaleOptions?.decimalSeparator ?? ''\"\n [thousandsSeparator]=\"_field.numberLocaleOptions?.thousandsSeparator ?? ''\"\n [alignTo]=\"parseAlignTo(_field)\"\n [sTooltip]=\"_field.tooltip\"\n tooltipPosition=\"top\"\n [placeholder]=\"_field.placeholder\"\n [showDelay]=\"500\"\n [autocomplete]=\"_field.browserAutocomplete ? 'on' : 'off'\"\n [ngClass]=\"'mousetrap'\"\n (blur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n (focus)=\"_field.onFocus ? _field.onFocus($event) : null\"\n />\n }\n</div>\n\n" }]
99
99
  }], ctorParameters: () => [{ type: i1.CurrencyService }, { type: i2.LocaleService }, { type: i0.ChangeDetectorRef }] });
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3ktZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9zcmMvbGliL2R5bmFtaWMtZm9ybS9mb3JtLWZpZWxkL2ZpZWxkcy9jdXJyZW5jeS9jdXJyZW5jeS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL3NyYy9saWIvZHluYW1pYy1mb3JtL2Zvcm0tZmllbGQvZmllbGRzL2N1cnJlbmN5L2N1cnJlbmN5LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBQ1QsUUFBUSxFQUVSLE1BQU0sRUFDTixLQUFLLEVBRUwsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBZSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxVQUFVLEVBQW1CLE1BQU0sNkNBQTZDLENBQUM7QUFFMUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFHbkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDM0csT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDNUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7O0FBRTlFOztHQUVH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QyxLQUFLLEVBQUUsQ0FBQyxtQkFBbUIsR0FBRzt3QkFDL0IsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLG1CQUFvQixDQUFDLGdCQUFnQjt3QkFDcEUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLG1CQUFvQixDQUFDLGtCQUFrQjt3QkFDeEUsY0FBYyxFQUFFLElBQUk7cUJBQ3ZCLENBQUM7Z0JBQ04sQ0FBQztZQUNMLENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQ1IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLG1CQUFtQixJQUFJO2dCQUNwRSxrQkFBa0IsRUFBRSxHQUFHO2dCQUN2QixnQkFBZ0IsRUFBRSxHQUFHO2dCQUNyQixjQUFjLEVBQUUsSUFBSTthQUN2QixDQUFDO1NBQ1QsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUEwQjtRQUNuQyxPQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQztJQUNoRyxDQUFDO3dHQS9FUSxzQkFBc0I7NEZBQXRCLHNCQUFzQixtZENqQ25DLGt6SUEyRkEsNENEN0RjLG1CQUFtQixrR0FBRSxPQUFPLG1GQUFFLGVBQWUscWlCQUFFLG1CQUFtQiwwa0JBQUUsZ0JBQWdCLDJOQUFFLGlCQUFpQjs7NEZBR3hHLHNCQUFzQjtrQkFMbEMsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBjb21wdXRlZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBPbkluaXQsXG4gICAgdmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBjdXJyZW5jaWVzLCBDdXJyZW5jeVNlcnZpY2UgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2N1cnJlbmN5JztcbmltcG9ydCB7IExvY2FsZVNlcnZpY2UgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2xvY2FsZSc7XG5pbXBvcnQgeyBJbnB1dE1hc2ssIElucHV0TWFza01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRtYXNrJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS1maWVsZC11dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IEN1cnJlbmN5RmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9ucy9maWVsZHMvY3VycmVuY3ktZmllbGQnO1xuaW1wb3J0IHsgQmFzZUZpZWxkQ29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vYmFzZS1maWVsZC1jb21wb25lbnQnO1xuaW1wb3J0IHsgTnVtYmVyQWxpZ25tZW50T3B0aW9uLCBOdW1iZXJJbnB1dE1vZHVsZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvbnVtYmVyLWlucHV0JztcbmltcG9ydCB7IEZpZWxkTGFiZWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2ZpZWxkLWxhYmVsL2ZpZWxkLWxhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3Rvb2x0aXAnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFNob3VsZCB1c2UgYmlnbnVtYmVyIGluc3RlYWRcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbRmllbGRMYWJlbENvbXBvbmVudCwgTmdDbGFzcywgSW5wdXRNYXNrTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBUb29sdGlwRGlyZWN0aXZlLCBOdW1iZXJJbnB1dE1vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICdjdXJyZW5jeS1maWVsZC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEN1cnJlbmN5RmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBCYXNlRmllbGRDb21wb25lbnRDb25maWcsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dFJlZkNvbXBvbmVudCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmIHwgSW5wdXRNYXNrPignaW5wdXRSZWYnKTtcbiAgICBmaWVsZCA9IGlucHV0LnJlcXVpcmVkPEN1cnJlbmN5RmllbGRDb25maWc+KCk7XG4gICAgZm9ybUNvbnRyb2wgPSBpbnB1dC5yZXF1aXJlZDxGb3JtQ29udHJvbD4oKTtcblxuICAgIGZpZWxkVXRpbHMgPSBpbmplY3QoRm9ybUZpZWxkVXRpbHNTZXJ2aWNlKTtcblxuICAgIHB1YmxpYyBjdXJyZW5jaWVzID0gY3VycmVuY2llcztcbiAgICBwdWJsaWMgbWFzaz86IHN0cmluZztcblxuICAgIHB1YmxpYyBpbnB1dFJlZiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXRSZWYgPSB0aGlzLmlucHV0UmVmQ29tcG9uZW50KCk7XG4gICAgICAgIGlmICghaW5wdXRSZWYpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0UmVmIGluc3RhbmNlb2YgSW5wdXRNYXNrKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXRSZWYuaW5wdXRWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHJlYWRvbmx5IGN1cnJlbmN5U2VydmljZTogQ3VycmVuY3lTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsZVNlcnZpY2U6IExvY2FsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTG9jYWxlU2VydmljZSgpO1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGQoKTtcbiAgICAgICAgdGhpcy5tYXNrID0gdHlwZW9mIGZpZWxkLm1hc2sgPT09ICdmdW5jdGlvbicgPyBmaWVsZC5tYXNrKCkgOiBmaWVsZC5tYXNrO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25Mb2NhbGVTZXJ2aWNlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRMb2NhbGUoKVxuICAgICAgICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmZpZWxkKCkubnVtYmVyTG9jYWxlT3B0aW9ucz8uZGVjaW1hbFNlcGFyYXRvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZCgpLm51bWJlckxvY2FsZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2w6IHRoaXMuZmllbGQoKS5udW1iZXJMb2NhbGVPcHRpb25zPy5jdXJyZW5jeVN5bWJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6IHRoaXMuZmllbGQoKS5udW1iZXJMb2NhbGVPcHRpb25zPy50aG91c2FuZHNTZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogdGhpcy5sb2NhbGVTZXJ2aWNlLmdldERlY2ltYWxTZXBhcmF0b3IoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmllbGQoKS5udW1iZXJMb2NhbGVPcHRpb25zPy50aG91c2FuZHNTZXBhcmF0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQoKS5udW1iZXJMb2NhbGVPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5U3ltYm9sOiB0aGlzLmZpZWxkKCkubnVtYmVyTG9jYWxlT3B0aW9ucyEuY3VycmVuY3lTeW1ib2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogdGhpcy5maWVsZCgpLm51bWJlckxvY2FsZU9wdGlvbnMhLmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhvdXNhbmRzU2VwYXJhdG9yOiB0aGlzLmxvY2FsZVNlcnZpY2UuZ2V0R3JvdXBpbmdTZXBhcmF0b3IoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmllbGQoKS5udW1iZXJMb2NhbGVPcHRpb25zPy5jdXJyZW5jeVN5bWJvbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZCgpLm51bWJlckxvY2FsZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogdGhpcy5maWVsZCgpLm51bWJlckxvY2FsZU9wdGlvbnMhLmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhvdXNhbmRzU2VwYXJhdG9yOiB0aGlzLmZpZWxkKCkubnVtYmVyTG9jYWxlT3B0aW9ucyEudGhvdXNhbmRzU2VwYXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5U3ltYm9sOiAnUiQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmZpZWxkKCkubnVtYmVyTG9jYWxlT3B0aW9ucyA9IHRoaXMuZmllbGQoKS5udW1iZXJMb2NhbGVPcHRpb25zID8/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogJy4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogJywnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2w6ICdSJCcsXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcGFyc2VBbGlnblRvKGZpZWxkOiBDdXJyZW5jeUZpZWxkQ29uZmlnKSB7XG4gICAgICAgIHJldHVybiBmaWVsZC5hbGlnblRvID09PSAncmlnaHQnID8gTnVtYmVyQWxpZ25tZW50T3B0aW9uLlJJR0hUIDogTnVtYmVyQWxpZ25tZW50T3B0aW9uLkxFRlQ7XG4gICAgfVxufVxuXG4iLCJAbGV0IF9maWVsZCA9IGZpZWxkKCk7XG5AaWYgKGlucHV0UmVmKCkpIHtcbiAgICA8cy1maWVsZC1sYWJlbFxuICAgICAgICBbZmllbGRdPVwiX2ZpZWxkXCJcbiAgICAgICAgW2ZpZWxkQ29udGFpbmVyUmVmXT1cImlucHV0UmVmKClcIlxuICAgID48L3MtZmllbGQtbGFiZWw+XG59XG5AbGV0IGhhc01hc2sgPSAhIV9maWVsZC5tYXNrO1xuPGRpdlxuICAgIGNsYXNzPVwiW2lucHV0LWlzLWludmFsaWQ+LmJ1dHRvbi1jb250YWluZXI+LmJ1dHRvbi1jb250YWluZXJdOmJvcmRlci1bMXB4XSBbaW5wdXQtaXMtaW52YWxpZD4uYnV0dG9uLWNvbnRhaW5lcj4uYnV0dG9uLWNvbnRhaW5lcl06Ym9yZGVyLXItMCBbaW5wdXQtaXMtaW52YWxpZD4uYnV0dG9uLWNvbnRhaW5lcj4uYnV0dG9uLWNvbnRhaW5lcl06Ym9yZGVyLWNyaXRpY2FsaXR5LXJlZCBbaW5wdXQtaXMtaW52YWxpZD4uYnV0dG9uLWNvbnRhaW5lcj5pbnB1dF06Ym9yZGVyLVsxcHhdIFtpbnB1dC1pcy1pbnZhbGlkPi5idXR0b24tY29udGFpbmVyPmlucHV0XTpib3JkZXItY3JpdGljYWxpdHktcmVkIFtpbnB1dC1oYXMtZm9jdXM+LmJ1dHRvbi1jb250YWluZXJdOmJvcmRlci1bMXB4XSBbaW5wdXQtaGFzLWZvY3VzPi5idXR0b24tY29udGFpbmVyXTpib3JkZXItci0wIFtpbnB1dC1oYXMtZm9jdXM+LmJ1dHRvbi1jb250YWluZXJdOmJvcmRlci1wcmltYXJ5IGZsZXggaC1bMzVweF0gdy1mdWxsXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdbJjpoYXMoLmlucHV0LW1hc2submctaW52YWxpZC5uZy1kaXJ0eSk+LmJ1dHRvbi1jb250YWluZXJdOmJvcmRlci1bMXB4XSBbJjpoYXMoLmlucHV0LW1hc2submctaW52YWxpZC5uZy1kaXJ0eSk+LmJ1dHRvbi1jb250YWluZXJdOmJvcmRlci1yLTAgWyY6aGFzKC5pbnB1dC1tYXNrLm5nLWludmFsaWQubmctZGlydHkpPi5idXR0b24tY29udGFpbmVyXTpib3JkZXItY3JpdGljYWxpdHktcmVkIFsmOmhhcyguaW5wdXQtbWFzay5uZy1pbnZhbGlkLm5nLWRpcnR5KT5pbnB1dF06Ym9yZGVyLVsxcHhdIFsmOmhhcyguaW5wdXQtbWFzay5uZy1pbnZhbGlkLm5nLWRpcnR5KT5pbnB1dF06Ym9yZGVyLWNyaXRpY2FsaXR5LXJlZCc6XG4gICAgICAgICAgICBoYXNNYXNrLFxuICAgIH1cIlxuPlxuICAgIEBpZiAoX2ZpZWxkLmN1cnJlbmN5IHx8IF9maWVsZC5udW1iZXJMb2NhbGVPcHRpb25zPy5jdXJyZW5jeVN5bWJvbCkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvbi1jb250YWluZXIgZmxleCBoLWZ1bGwgbWluLXctMTAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbC1bM3B4XSBib3JkZXIgYm9yZGVyLXItMCBib3JkZXItWyNjMWMxY2NdIHB4LVs4cHhdXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LVsjMjEyNTMzXVwiPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIF9maWVsZC5jdXJyZW5jeVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBjdXJyZW5jeVNlcnZpY2UuZ2V0Q3VycmVuY3lTeW1ib2woeyBjdXJyZW5jeTogX2ZpZWxkLmN1cnJlbmN5KCkgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX2ZpZWxkLm51bWJlckxvY2FsZU9wdGlvbnM/LmN1cnJlbmN5U3ltYm9sXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGlmIChoYXNNYXNrKSB7XG4gICAgICAgIDxwLWlucHV0TWFza1xuICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1tYXNrXCJcbiAgICAgICAgICAgICNpbnB1dFJlZlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW2lucHV0SWRdPVwiX2ZpZWxkLmlkIHx8IF9maWVsZC5uYW1lXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIl9maWVsZC5uYW1lXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbCgpXCJcbiAgICAgICAgICAgIFttYXNrXT1cIm1hc2tcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIl9maWVsZC5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBzbG90Q2hhcj1cIl9cIlxuICAgICAgICAgICAgW3NUb29sdGlwXT1cIl9maWVsZC50b29sdGlwXCJcbiAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICBbc2hvd0RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwibW91c2V0cmFwICFyb3VuZGVkLWwtWzBweF1cIlxuICAgICAgICAgICAgKG9uQmx1cik9XCJfZmllbGQub25CbHVyID8gX2ZpZWxkLm9uQmx1cigkZXZlbnQpIDogbnVsbFwiXG4gICAgICAgICAgICAob25Gb2N1cyk9XCJfZmllbGQub25Gb2N1cyA/IF9maWVsZC5vbkZvY3VzKCRldmVudCkgOiBudWxsXCJcbiAgICAgICAgICAgIChvbkNvbXBsZXRlKT1cIl9maWVsZC5vbkNvbXBsZXRlID8gX2ZpZWxkLm9uQ29tcGxldGUoJGV2ZW50KSA6IG51bGxcIlxuICAgICAgICAgICAgKG9uSW5wdXQpPVwiX2ZpZWxkLm9uSW5wdXQgPyBfZmllbGQub25JbnB1dCgkZXZlbnQpIDogbnVsbFwiXG4gICAgICAgID48L3AtaW5wdXRNYXNrPlxuICAgIH0gQGVsc2UgaWYgKCFoYXNNYXNrKSB7XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2lucHV0UmVmXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbaWRdPVwiX2ZpZWxkLmlkIHx8IF9maWVsZC5uYW1lXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaC1mdWxsIHctZnVsbCByb3VuZGVkLXItWzNweF0gYm9yZGVyIGJvcmRlci1bI2MxYzFjY10gcC0yIG91dGxpbmUtbm9uZSBmb2N1czpib3JkZXItWzFweF0gZm9jdXM6Ym9yZGVyLXByaW1hcnlcIlxuICAgICAgICAgICAgW25hbWVdPVwiX2ZpZWxkLm5hbWVcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sKClcIlxuICAgICAgICAgICAgc051bWJlcklucHV0XG4gICAgICAgICAgICBbcHJlY2lzaW9uXT1cIlxuICAgICAgICAgICAgICAgIF9maWVsZC5wcmVjaXNpb25cbiAgICAgICAgICAgICAgICAgICAgPyBmaWVsZFV0aWxzLmlzRnVuY3Rpb24oX2ZpZWxkLnByZWNpc2lvbilcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZmllbGRVdGlscy50cmlnZ2VyKF9maWVsZC5wcmVjaXNpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF9maWVsZC5wcmVjaXNpb25cbiAgICAgICAgICAgICAgICAgICAgOiBfZmllbGQuY3VycmVuY3kgJiYgX2ZpZWxkLmN1cnJlbmN5KClcbiAgICAgICAgICAgICAgICAgICAgICA/IGN1cnJlbmNpZXNbX2ZpZWxkLmN1cnJlbmN5KCldLnByZWNpc2lvblxuICAgICAgICAgICAgICAgICAgICAgIDogMTVcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbc2NhbGVdPVwiXG4gICAgICAgICAgICAgICAgX2ZpZWxkLnNjYWxlXG4gICAgICAgICAgICAgICAgICAgID8gZmllbGRVdGlscy5pc0Z1bmN0aW9uKF9maWVsZC5zY2FsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZmllbGRVdGlscy50cmlnZ2VyKF9maWVsZC5zY2FsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX2ZpZWxkLnNjYWxlXG4gICAgICAgICAgICAgICAgICAgIDogX2ZpZWxkLmN1cnJlbmN5ICYmIF9maWVsZC5jdXJyZW5jeSgpXG4gICAgICAgICAgICAgICAgICAgICAgPyBjdXJyZW5jaWVzW19maWVsZC5jdXJyZW5jeSgpXS5zY2FsZVxuICAgICAgICAgICAgICAgICAgICAgIDogMlxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtkZWNpbWFsU2VwYXJhdG9yXT1cIl9maWVsZC5udW1iZXJMb2NhbGVPcHRpb25zPy5kZWNpbWFsU2VwYXJhdG9yXCJcbiAgICAgICAgICAgIFt0aG91c2FuZHNTZXBhcmF0b3JdPVwiX2ZpZWxkLm51bWJlckxvY2FsZU9wdGlvbnM/LnRob3VzYW5kc1NlcGFyYXRvclwiXG4gICAgICAgICAgICBbYWxpZ25Ub109XCJwYXJzZUFsaWduVG8oX2ZpZWxkKVwiXG4gICAgICAgICAgICBbc1Rvb2x0aXBdPVwiX2ZpZWxkLnRvb2x0aXBcIlxuICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJfZmllbGQucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgW3Nob3dEZWxheV09XCI1MDBcIlxuICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJfZmllbGQuYnJvd3NlckF1dG9jb21wbGV0ZSA/ICdvbicgOiAnb2ZmJ1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCInbW91c2V0cmFwJ1wiXG4gICAgICAgICAgICAoYmx1cik9XCJfZmllbGQub25CbHVyID8gX2ZpZWxkLm9uQmx1cigkZXZlbnQpIDogbnVsbFwiXG4gICAgICAgICAgICAoZm9jdXMpPVwiX2ZpZWxkLm9uRm9jdXMgPyBfZmllbGQub25Gb2N1cygkZXZlbnQpIDogbnVsbFwiXG4gICAgICAgIC8+XG4gICAgfVxuPC9kaXY+XG5cbiJdfQ==
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3ktZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9zcmMvbGliL2R5bmFtaWMtZm9ybS9mb3JtLWZpZWxkL2ZpZWxkcy9jdXJyZW5jeS9jdXJyZW5jeS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL3NyYy9saWIvZHluYW1pYy1mb3JtL2Zvcm0tZmllbGQvZmllbGRzL2N1cnJlbmN5L2N1cnJlbmN5LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBQ1QsUUFBUSxFQUVSLE1BQU0sRUFDTixLQUFLLEVBRUwsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBZSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxVQUFVLEVBQW1CLE1BQU0sNkNBQTZDLENBQUM7QUFFMUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFHbkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDM0csT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDNUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7O0FBRTlFOztHQUVH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QyxLQUFLLEVBQUUsQ0FBQyxtQkFBbUIsR0FBRzt3QkFDL0IsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLG1CQUFvQixDQUFDLGdCQUFnQjt3QkFDcEUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLG1CQUFvQixDQUFDLGtCQUFrQjt3QkFDeEUsY0FBYyxFQUFFLElBQUk7cUJBQ3ZCLENBQUM7Z0JBQ04sQ0FBQztZQUNMLENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQ1IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLG1CQUFtQixJQUFJO2dCQUNwRSxrQkFBa0IsRUFBRSxHQUFHO2dCQUN2QixnQkFBZ0IsRUFBRSxHQUFHO2dCQUNyQixjQUFjLEVBQUUsSUFBSTthQUN2QixDQUFDO1NBQ1QsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUEwQjtRQUNuQyxPQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQztJQUNoRyxDQUFDO3dHQS9FUSxzQkFBc0I7NEZBQXRCLHNCQUFzQixtZENqQ25DLDh6SUEyRkEsNENEN0RjLG1CQUFtQixrR0FBRSxPQUFPLG1GQUFFLGVBQWUscWlCQUFFLG1CQUFtQiwwa0JBQUUsZ0JBQWdCLDJOQUFFLGlCQUFpQjs7NEZBR3hHLHNCQUFzQjtrQkFMbEMsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBjb21wdXRlZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBPbkluaXQsXG4gICAgdmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBjdXJyZW5jaWVzLCBDdXJyZW5jeVNlcnZpY2UgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2N1cnJlbmN5JztcbmltcG9ydCB7IExvY2FsZVNlcnZpY2UgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2xvY2FsZSc7XG5pbXBvcnQgeyBJbnB1dE1hc2ssIElucHV0TWFza01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRtYXNrJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS1maWVsZC11dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IEN1cnJlbmN5RmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9ucy9maWVsZHMvY3VycmVuY3ktZmllbGQnO1xuaW1wb3J0IHsgQmFzZUZpZWxkQ29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vYmFzZS1maWVsZC1jb21wb25lbnQnO1xuaW1wb3J0IHsgTnVtYmVyQWxpZ25tZW50T3B0aW9uLCBOdW1iZXJJbnB1dE1vZHVsZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvbnVtYmVyLWlucHV0JztcbmltcG9ydCB7IEZpZWxkTGFiZWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2ZpZWxkLWxhYmVsL2ZpZWxkLWxhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3Rvb2x0aXAnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFNob3VsZCB1c2UgYmlnbnVtYmVyIGluc3RlYWRcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbRmllbGRMYWJlbENvbXBvbmVudCwgTmdDbGFzcywgSW5wdXRNYXNrTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBUb29sdGlwRGlyZWN0aXZlLCBOdW1iZXJJbnB1dE1vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICdjdXJyZW5jeS1maWVsZC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEN1cnJlbmN5RmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBCYXNlRmllbGRDb21wb25lbnRDb25maWcsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dFJlZkNvbXBvbmVudCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmIHwgSW5wdXRNYXNrPignaW5wdXRSZWYnKTtcbiAgICBmaWVsZCA9IGlucHV0LnJlcXVpcmVkPEN1cnJlbmN5RmllbGRDb25maWc+KCk7XG4gICAgZm9ybUNvbnRyb2wgPSBpbnB1dC5yZXF1aXJlZDxGb3JtQ29udHJvbD4oKTtcblxuICAgIGZpZWxkVXRpbHMgPSBpbmplY3QoRm9ybUZpZWxkVXRpbHNTZXJ2aWNlKTtcblxuICAgIHB1YmxpYyBjdXJyZW5jaWVzID0gY3VycmVuY2llcztcbiAgICBwdWJsaWMgbWFzaz86IHN0cmluZztcblxuICAgIHB1YmxpYyBpbnB1dFJlZiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXRSZWYgPSB0aGlzLmlucHV0UmVmQ29tcG9uZW50KCk7XG4gICAgICAgIGlmICghaW5wdXRSZWYpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0UmVmIGluc3RhbmNlb2YgSW5wdXRNYXNrKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXRSZWYuaW5wdXRWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHJlYWRvbmx5IGN1cnJlbmN5U2VydmljZTogQ3VycmVuY3lTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsZVNlcnZpY2U6IExvY2FsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTG9jYWxlU2VydmljZSgpO1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGQoKTtcbiAgICAgICAgdGhpcy5tYXNrID0gdHlwZW9mIGZpZWxkLm1hc2sgPT09ICdmdW5jdGlvbicgPyBmaWVsZC5tYXNrKCkgOiBmaWVsZC5tYXNrO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25Mb2NhbGVTZXJ2aWNlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRMb2NhbGUoKVxuICAgICAgICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmZpZWxkKCkubnVtYmVyTG9jYWxlT3B0aW9ucz8uZGVjaW1hbFNlcGFyYXRvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZCgpLm51bWJlckxvY2FsZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2w6IHRoaXMuZmllbGQoKS5udW1iZXJMb2NhbGVPcHRpb25zPy5jdXJyZW5jeVN5bWJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6IHRoaXMuZmllbGQoKS5udW1iZXJMb2NhbGVPcHRpb25zPy50aG91c2FuZHNTZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogdGhpcy5sb2NhbGVTZXJ2aWNlLmdldERlY2ltYWxTZXBhcmF0b3IoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmllbGQoKS5udW1iZXJMb2NhbGVPcHRpb25zPy50aG91c2FuZHNTZXBhcmF0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQoKS5udW1iZXJMb2NhbGVPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5U3ltYm9sOiB0aGlzLmZpZWxkKCkubnVtYmVyTG9jYWxlT3B0aW9ucyEuY3VycmVuY3lTeW1ib2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogdGhpcy5maWVsZCgpLm51bWJlckxvY2FsZU9wdGlvbnMhLmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhvdXNhbmRzU2VwYXJhdG9yOiB0aGlzLmxvY2FsZVNlcnZpY2UuZ2V0R3JvdXBpbmdTZXBhcmF0b3IoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmllbGQoKS5udW1iZXJMb2NhbGVPcHRpb25zPy5jdXJyZW5jeVN5bWJvbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZCgpLm51bWJlckxvY2FsZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogdGhpcy5maWVsZCgpLm51bWJlckxvY2FsZU9wdGlvbnMhLmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhvdXNhbmRzU2VwYXJhdG9yOiB0aGlzLmZpZWxkKCkubnVtYmVyTG9jYWxlT3B0aW9ucyEudGhvdXNhbmRzU2VwYXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5U3ltYm9sOiAnUiQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmZpZWxkKCkubnVtYmVyTG9jYWxlT3B0aW9ucyA9IHRoaXMuZmllbGQoKS5udW1iZXJMb2NhbGVPcHRpb25zID8/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogJy4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogJywnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2w6ICdSJCcsXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcGFyc2VBbGlnblRvKGZpZWxkOiBDdXJyZW5jeUZpZWxkQ29uZmlnKSB7XG4gICAgICAgIHJldHVybiBmaWVsZC5hbGlnblRvID09PSAncmlnaHQnID8gTnVtYmVyQWxpZ25tZW50T3B0aW9uLlJJR0hUIDogTnVtYmVyQWxpZ25tZW50T3B0aW9uLkxFRlQ7XG4gICAgfVxufVxuXG4iLCJAbGV0IF9maWVsZCA9IGZpZWxkKCk7XG5AaWYgKGlucHV0UmVmKCkpIHtcbiAgICA8cy1maWVsZC1sYWJlbFxuICAgICAgICBbZmllbGRdPVwiX2ZpZWxkXCJcbiAgICAgICAgW2ZpZWxkQ29udGFpbmVyUmVmXT1cImlucHV0UmVmKClcIlxuICAgID48L3MtZmllbGQtbGFiZWw+XG59XG5AbGV0IGhhc01hc2sgPSAhIV9maWVsZC5tYXNrO1xuPGRpdlxuICAgIGNsYXNzPVwiW2lucHV0LWlzLWludmFsaWQ+LmJ1dHRvbi1jb250YWluZXI+LmJ1dHRvbi1jb250YWluZXJdOmJvcmRlci1bMXB4XSBbaW5wdXQtaXMtaW52YWxpZD4uYnV0dG9uLWNvbnRhaW5lcj4uYnV0dG9uLWNvbnRhaW5lcl06Ym9yZGVyLXItMCBbaW5wdXQtaXMtaW52YWxpZD4uYnV0dG9uLWNvbnRhaW5lcj4uYnV0dG9uLWNvbnRhaW5lcl06Ym9yZGVyLWNyaXRpY2FsaXR5LXJlZCBbaW5wdXQtaXMtaW52YWxpZD4uYnV0dG9uLWNvbnRhaW5lcj5pbnB1dF06Ym9yZGVyLVsxcHhdIFtpbnB1dC1pcy1pbnZhbGlkPi5idXR0b24tY29udGFpbmVyPmlucHV0XTpib3JkZXItY3JpdGljYWxpdHktcmVkIFtpbnB1dC1oYXMtZm9jdXM+LmJ1dHRvbi1jb250YWluZXJdOmJvcmRlci1bMXB4XSBbaW5wdXQtaGFzLWZvY3VzPi5idXR0b24tY29udGFpbmVyXTpib3JkZXItci0wIFtpbnB1dC1oYXMtZm9jdXM+LmJ1dHRvbi1jb250YWluZXJdOmJvcmRlci1wcmltYXJ5IGZsZXggaC1bMzVweF0gdy1mdWxsXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdbJjpoYXMoLmlucHV0LW1hc2submctaW52YWxpZC5uZy1kaXJ0eSk+LmJ1dHRvbi1jb250YWluZXJdOmJvcmRlci1bMXB4XSBbJjpoYXMoLmlucHV0LW1hc2submctaW52YWxpZC5uZy1kaXJ0eSk+LmJ1dHRvbi1jb250YWluZXJdOmJvcmRlci1yLTAgWyY6aGFzKC5pbnB1dC1tYXNrLm5nLWludmFsaWQubmctZGlydHkpPi5idXR0b24tY29udGFpbmVyXTpib3JkZXItY3JpdGljYWxpdHktcmVkIFsmOmhhcyguaW5wdXQtbWFzay5uZy1pbnZhbGlkLm5nLWRpcnR5KT5pbnB1dF06Ym9yZGVyLVsxcHhdIFsmOmhhcyguaW5wdXQtbWFzay5uZy1pbnZhbGlkLm5nLWRpcnR5KT5pbnB1dF06Ym9yZGVyLWNyaXRpY2FsaXR5LXJlZCc6XG4gICAgICAgICAgICBoYXNNYXNrLFxuICAgIH1cIlxuPlxuICAgIEBpZiAoX2ZpZWxkLmN1cnJlbmN5IHx8IF9maWVsZC5udW1iZXJMb2NhbGVPcHRpb25zPy5jdXJyZW5jeVN5bWJvbCkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvbi1jb250YWluZXIgZmxleCBoLWZ1bGwgbWluLXctMTAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbC1bM3B4XSBib3JkZXIgYm9yZGVyLXItMCBib3JkZXItWyNjMWMxY2NdIHB4LVs4cHhdXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LVsjMjEyNTMzXVwiPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIF9maWVsZC5jdXJyZW5jeVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBjdXJyZW5jeVNlcnZpY2UuZ2V0Q3VycmVuY3lTeW1ib2woeyBjdXJyZW5jeTogX2ZpZWxkLmN1cnJlbmN5KCkgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX2ZpZWxkLm51bWJlckxvY2FsZU9wdGlvbnM/LmN1cnJlbmN5U3ltYm9sXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGlmIChoYXNNYXNrKSB7XG4gICAgICAgIDxwLWlucHV0TWFza1xuICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1tYXNrXCJcbiAgICAgICAgICAgICNpbnB1dFJlZlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW2lucHV0SWRdPVwiX2ZpZWxkLmlkIHx8IF9maWVsZC5uYW1lXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIl9maWVsZC5uYW1lXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbCgpXCJcbiAgICAgICAgICAgIFttYXNrXT1cIm1hc2tcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIl9maWVsZC5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBzbG90Q2hhcj1cIl9cIlxuICAgICAgICAgICAgW3NUb29sdGlwXT1cIl9maWVsZC50b29sdGlwXCJcbiAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICBbc2hvd0RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwibW91c2V0cmFwICFyb3VuZGVkLWwtWzBweF1cIlxuICAgICAgICAgICAgKG9uQmx1cik9XCJfZmllbGQub25CbHVyID8gX2ZpZWxkLm9uQmx1cigkZXZlbnQpIDogbnVsbFwiXG4gICAgICAgICAgICAob25Gb2N1cyk9XCJfZmllbGQub25Gb2N1cyA/IF9maWVsZC5vbkZvY3VzKCRldmVudCkgOiBudWxsXCJcbiAgICAgICAgICAgIChvbkNvbXBsZXRlKT1cIl9maWVsZC5vbkNvbXBsZXRlID8gX2ZpZWxkLm9uQ29tcGxldGUoJGV2ZW50KSA6IG51bGxcIlxuICAgICAgICAgICAgKG9uSW5wdXQpPVwiX2ZpZWxkLm9uSW5wdXQgPyBfZmllbGQub25JbnB1dCgkZXZlbnQpIDogbnVsbFwiXG4gICAgICAgID48L3AtaW5wdXRNYXNrPlxuICAgIH0gQGVsc2UgaWYgKCFoYXNNYXNrKSB7XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2lucHV0UmVmXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbaWRdPVwiX2ZpZWxkLmlkIHx8IF9maWVsZC5uYW1lXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaC1mdWxsIHctZnVsbCByb3VuZGVkLXItWzNweF0gYm9yZGVyIGJvcmRlci1bI2MxYzFjY10gcC0yIG91dGxpbmUtbm9uZSBmb2N1czpib3JkZXItWzFweF0gZm9jdXM6Ym9yZGVyLXByaW1hcnlcIlxuICAgICAgICAgICAgW25hbWVdPVwiX2ZpZWxkLm5hbWVcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sKClcIlxuICAgICAgICAgICAgc051bWJlcklucHV0XG4gICAgICAgICAgICBbcHJlY2lzaW9uXT1cIlxuICAgICAgICAgICAgICAgIF9maWVsZC5wcmVjaXNpb25cbiAgICAgICAgICAgICAgICAgICAgPyBmaWVsZFV0aWxzLmlzRnVuY3Rpb24oX2ZpZWxkLnByZWNpc2lvbilcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZmllbGRVdGlscy50cmlnZ2VyKF9maWVsZC5wcmVjaXNpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF9maWVsZC5wcmVjaXNpb25cbiAgICAgICAgICAgICAgICAgICAgOiBfZmllbGQuY3VycmVuY3kgJiYgX2ZpZWxkLmN1cnJlbmN5KClcbiAgICAgICAgICAgICAgICAgICAgICA/IGN1cnJlbmNpZXNbX2ZpZWxkLmN1cnJlbmN5KCldLnByZWNpc2lvblxuICAgICAgICAgICAgICAgICAgICAgIDogMTVcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbc2NhbGVdPVwiXG4gICAgICAgICAgICAgICAgX2ZpZWxkLnNjYWxlXG4gICAgICAgICAgICAgICAgICAgID8gZmllbGRVdGlscy5pc0Z1bmN0aW9uKF9maWVsZC5zY2FsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZmllbGRVdGlscy50cmlnZ2VyKF9maWVsZC5zY2FsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogX2ZpZWxkLnNjYWxlXG4gICAgICAgICAgICAgICAgICAgIDogX2ZpZWxkLmN1cnJlbmN5ICYmIF9maWVsZC5jdXJyZW5jeSgpXG4gICAgICAgICAgICAgICAgICAgICAgPyBjdXJyZW5jaWVzW19maWVsZC5jdXJyZW5jeSgpXS5zY2FsZVxuICAgICAgICAgICAgICAgICAgICAgIDogMlxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtkZWNpbWFsU2VwYXJhdG9yXT1cIl9maWVsZC5udW1iZXJMb2NhbGVPcHRpb25zPy5kZWNpbWFsU2VwYXJhdG9yID8/ICcnXCJcbiAgICAgICAgICAgIFt0aG91c2FuZHNTZXBhcmF0b3JdPVwiX2ZpZWxkLm51bWJlckxvY2FsZU9wdGlvbnM/LnRob3VzYW5kc1NlcGFyYXRvciA/PyAnJ1wiXG4gICAgICAgICAgICBbYWxpZ25Ub109XCJwYXJzZUFsaWduVG8oX2ZpZWxkKVwiXG4gICAgICAgICAgICBbc1Rvb2x0aXBdPVwiX2ZpZWxkLnRvb2x0aXBcIlxuICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJfZmllbGQucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgW3Nob3dEZWxheV09XCI1MDBcIlxuICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJfZmllbGQuYnJvd3NlckF1dG9jb21wbGV0ZSA/ICdvbicgOiAnb2ZmJ1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCInbW91c2V0cmFwJ1wiXG4gICAgICAgICAgICAoYmx1cik9XCJfZmllbGQub25CbHVyID8gX2ZpZWxkLm9uQmx1cigkZXZlbnQpIDogbnVsbFwiXG4gICAgICAgICAgICAoZm9jdXMpPVwiX2ZpZWxkLm9uRm9jdXMgPyBfZmllbGQub25Gb2N1cygkZXZlbnQpIDogbnVsbFwiXG4gICAgICAgIC8+XG4gICAgfVxuPC9kaXY+XG5cbiJdfQ==