@ardium-ui/ui 3.2.7 → 3.3.0-alpha1

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 (103) hide show
  1. package/esm2022/lib/_internal/boolean-component.mjs +1 -1
  2. package/esm2022/lib/_internal/focusable-component.mjs +2 -2
  3. package/esm2022/lib/_internal/form-field-component.mjs +55 -0
  4. package/esm2022/lib/_internal/item-storages/dropdown-item-storage.mjs +4 -1
  5. package/esm2022/lib/_internal/ngmodel-component.mjs +5 -2
  6. package/esm2022/lib/_internal/public-api.mjs +2 -0
  7. package/esm2022/lib/checkbox/checkbox.component.mjs +1 -1
  8. package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +1 -1
  9. package/esm2022/lib/form-field/error/error.component.mjs +17 -0
  10. package/esm2022/lib/form-field/error/error.directive.mjs +17 -0
  11. package/esm2022/lib/form-field/form-field.component.mjs +36 -0
  12. package/esm2022/lib/form-field/form-field.defaults.mjs +14 -0
  13. package/esm2022/lib/form-field/form-field.module.mjs +23 -0
  14. package/esm2022/lib/form-field/hint/hint.component.mjs +17 -0
  15. package/esm2022/lib/form-field/hint/hint.directive.mjs +30 -0
  16. package/esm2022/lib/form-field/index.mjs +8 -0
  17. package/esm2022/lib/form-field/label/label.component.mjs +21 -0
  18. package/esm2022/lib/form-field-frame/form-field-frame.component.mjs +4 -2
  19. package/esm2022/lib/inputs/_simple-input-base.mjs +4 -4
  20. package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +28 -11
  21. package/esm2022/lib/inputs/digit-input/digit-input.defaults.mjs +3 -3
  22. package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +5 -3
  23. package/esm2022/lib/inputs/digit-input/digit-input.types.mjs +1 -1
  24. package/esm2022/lib/inputs/digit-input/digit-input.utils.mjs +1 -1
  25. package/esm2022/lib/inputs/hex-input/hex-input.component.mjs +13 -5
  26. package/esm2022/lib/inputs/hex-input/hex-input.defaults.mjs +3 -3
  27. package/esm2022/lib/inputs/input/input.component.mjs +12 -3
  28. package/esm2022/lib/inputs/number-input/number-input.component.mjs +15 -7
  29. package/esm2022/lib/inputs/number-input/number-input.defaults.mjs +3 -3
  30. package/esm2022/lib/inputs/password-input/password-input.component.mjs +15 -5
  31. package/esm2022/lib/inputs/password-input/password-input.defaults.mjs +3 -3
  32. package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +12 -3
  33. package/esm2022/lib/inputs/simple-input/simple-input.defaults.mjs +3 -3
  34. package/esm2022/lib/select/select.component.mjs +16 -8
  35. package/esm2022/lib/select/select.defaults.mjs +3 -3
  36. package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +1 -1
  37. package/esm2022/lib/table-pagination/table-pagination.component.mjs +1 -1
  38. package/esm2022/public-api.mjs +3 -1
  39. package/fesm2022/ardium-ui-ui.mjs +315 -49
  40. package/fesm2022/ardium-ui-ui.mjs.map +1 -1
  41. package/lib/_internal/focusable-component.d.ts +2 -2
  42. package/lib/_internal/form-field-component.d.ts +29 -0
  43. package/lib/_internal/ngmodel-component.d.ts +1 -0
  44. package/lib/_internal/public-api.d.ts +3 -0
  45. package/lib/form-field/error/error.component.d.ts +6 -0
  46. package/lib/form-field/error/error.directive.d.ts +5 -0
  47. package/lib/form-field/form-field.component.d.ts +19 -0
  48. package/lib/form-field/form-field.defaults.d.ts +7 -0
  49. package/lib/form-field/form-field.module.d.ts +13 -0
  50. package/lib/form-field/hint/hint.component.d.ts +6 -0
  51. package/lib/form-field/hint/hint.directive.d.ts +8 -0
  52. package/lib/form-field/index.d.ts +7 -0
  53. package/lib/form-field/label/label.component.d.ts +8 -0
  54. package/lib/form-field-frame/form-field-frame.component.d.ts +2 -1
  55. package/lib/inputs/_simple-input-base.d.ts +3 -3
  56. package/lib/inputs/digit-input/digit-input.component.d.ts +6 -4
  57. package/lib/inputs/digit-input/digit-input.defaults.d.ts +2 -2
  58. package/lib/inputs/digit-input/digit-input.model.d.ts +4 -1
  59. package/lib/inputs/digit-input/digit-input.types.d.ts +1 -0
  60. package/lib/inputs/digit-input/digit-input.utils.d.ts +1 -0
  61. package/lib/inputs/hex-input/hex-input.component.d.ts +2 -2
  62. package/lib/inputs/hex-input/hex-input.defaults.d.ts +2 -2
  63. package/lib/inputs/number-input/number-input.component.d.ts +2 -2
  64. package/lib/inputs/number-input/number-input.defaults.d.ts +2 -2
  65. package/lib/inputs/password-input/password-input.component.d.ts +2 -2
  66. package/lib/inputs/password-input/password-input.defaults.d.ts +2 -2
  67. package/lib/select/select.component.d.ts +3 -4
  68. package/lib/select/select.defaults.d.ts +2 -2
  69. package/package.json +1 -1
  70. package/prebuilt-themes/default/chips.css.map +1 -1
  71. package/prebuilt-themes/default/core.css +1 -1
  72. package/prebuilt-themes/default/form-field-frame.css +16 -5
  73. package/prebuilt-themes/default/form-field-frame.css.map +1 -1
  74. package/prebuilt-themes/default/form-field.css +33 -0
  75. package/prebuilt-themes/default/form-field.css.map +1 -0
  76. package/prebuilt-themes/default/inputs/color-input.css +0 -1
  77. package/prebuilt-themes/default/inputs/color-input.css.map +1 -1
  78. package/prebuilt-themes/default/inputs/digit-input.css +61 -5
  79. package/prebuilt-themes/default/inputs/digit-input.css.map +1 -1
  80. package/prebuilt-themes/default/inputs/file-input.css +0 -1
  81. package/prebuilt-themes/default/inputs/file-input.css.map +1 -1
  82. package/prebuilt-themes/default/inputs/hex-input.css +0 -1
  83. package/prebuilt-themes/default/inputs/hex-input.css.map +1 -1
  84. package/prebuilt-themes/default/inputs/input.css +0 -1
  85. package/prebuilt-themes/default/inputs/input.css.map +1 -1
  86. package/prebuilt-themes/default/inputs/number-input.css +30 -18
  87. package/prebuilt-themes/default/inputs/number-input.css.map +1 -1
  88. package/prebuilt-themes/default/inputs/password-input.css +0 -1
  89. package/prebuilt-themes/default/inputs/password-input.css.map +1 -1
  90. package/prebuilt-themes/default/inputs/search-bar.css +0 -1
  91. package/prebuilt-themes/default/inputs/search-bar.css.map +1 -1
  92. package/prebuilt-themes/default/inputs/simple-input.css +0 -1
  93. package/prebuilt-themes/default/inputs/simple-input.css.map +1 -1
  94. package/prebuilt-themes/default/segment.css +15 -1
  95. package/prebuilt-themes/default/segment.css.map +1 -1
  96. package/public-api.d.ts +2 -0
  97. package/themes/default/_mixins.scss +81 -64
  98. package/themes/default/core.scss +99 -99
  99. package/themes/default/form-field-frame.scss +75 -78
  100. package/themes/default/form-field.scss +39 -0
  101. package/themes/default/inputs/_shared.scss +50 -51
  102. package/themes/default/inputs/digit-input.scss +90 -56
  103. package/themes/default/inputs/number-input.scss +131 -121
@@ -0,0 +1,36 @@
1
+ import { ChangeDetectionStrategy, Component, computed, contentChild, contentChildren, inject, ViewEncapsulation } from '@angular/core';
2
+ import { _FormFieldComponentBase } from '../_internal/form-field-component';
3
+ import { SimpleOneAxisAlignment } from './../types/alignment.types';
4
+ import { ArdiumErrorDirective } from './error/error.directive';
5
+ import { ARD_FORM_FIELD_DEFAULTS } from './form-field.defaults';
6
+ import { ArdiumHintDirective } from './hint/hint.directive';
7
+ import { ArdiumLabelComponent } from './label/label.component';
8
+ import * as i0 from "@angular/core";
9
+ export class ArdiumFormFieldComponent {
10
+ constructor() {
11
+ this._DEFAULTS = inject(ARD_FORM_FIELD_DEFAULTS);
12
+ this.alignLabelToLeftByDefault = this._DEFAULTS.defaultHintAlign === SimpleOneAxisAlignment.Left;
13
+ this.control = contentChild(_FormFieldComponentBase);
14
+ this.controlId = computed(() => this.control()?.htmlId());
15
+ this.label = contentChild(ArdiumLabelComponent);
16
+ this.hints = contentChildren(ArdiumHintDirective);
17
+ // readonly leftHints = computed<ArdiumHintDirective[]>(() => this.hints().filter(v => v.left() && !v.right()));
18
+ // readonly rightHints = computed<ArdiumHintDirective[]>(() => this.hints().filter(v => !v.left() && v.right()));
19
+ this.errors = contentChildren(ArdiumErrorDirective);
20
+ // readonly leftErrors = computed<ArdiumErrorDirective[]>(() => this.errors().filter(v => v.left() && !v.right()));
21
+ // readonly rightErrors = computed<ArdiumErrorDirective[]>(() => this.errors().filter(v => !v.left() && v.right()));
22
+ this.hasAnyError = computed(() => this.errors()?.length > 0);
23
+ }
24
+ ngOnInit() {
25
+ if (!this.control()) {
26
+ throw new Error(`ARD-FT5110: Form field component requires any control (input) to be present within the element. Found none.`);
27
+ }
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumFormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ArdiumFormFieldComponent, selector: "ard-form-field", queries: [{ propertyName: "control", first: true, predicate: _FormFieldComponentBase, descendants: true, isSignal: true }, { propertyName: "label", first: true, predicate: ArdiumLabelComponent, descendants: true, isSignal: true }, { propertyName: "hints", predicate: ArdiumHintDirective, isSignal: true }, { propertyName: "errors", predicate: ArdiumErrorDirective, isSignal: true }], ngImport: i0, template: "<div class=\"ard-form-field\" [class.ard-form-field__with-error]=\"control()?.hasError()\">\r\n <label\r\n class=\"ard-label\"\r\n [attr.for]=\"controlId()\"\r\n >\r\n <ng-content select=\"ard-label, [ard-label]\" />\r\n </label>\r\n <div class=\"ard-form-field__input\">\r\n <ng-content />\r\n </div>\r\n <div\r\n class=\"ard-form-field__hints\"\r\n [class.ard-form-field__hints-default-left]=\"alignLabelToLeftByDefault\"\r\n >\r\n @if (hasAnyError()) {\r\n <div class=\"ard-form-field__error\">\r\n <ng-content select=\"ard-error, [ard-error]\" />\r\n </div>\r\n } @else {\r\n <div class=\"ard-form-field__hints-left\">\r\n <div class=\"ard-form-field__default-hint\">\r\n <ng-content select=\"ard-hint:not([left]):not([right]), [ard-hint]:not([left]):not([right])\" />\r\n </div>\r\n <ng-content select=\"ard-hint[left], [ard-hint][left]\" />\r\n </div>\r\n <div class=\"ard-form-field__hints-right\">\r\n <div class=\"ard-form-field__default-hint\">\r\n <ng-content select=\"ard-hint:not([left]):not([right]), [ard-hint]:not([left]):not([right])\" />\r\n </div>\r\n <ng-content select=\"ard-hint[right], [ard-hint][right]\" />\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".ard-form-field__hints{display:flex;justify-content:space-between}.ard-form-field__hints>*{display:flex;flex-direction:column}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumFormFieldComponent, decorators: [{
33
+ type: Component,
34
+ args: [{ selector: 'ard-form-field', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ard-form-field\" [class.ard-form-field__with-error]=\"control()?.hasError()\">\r\n <label\r\n class=\"ard-label\"\r\n [attr.for]=\"controlId()\"\r\n >\r\n <ng-content select=\"ard-label, [ard-label]\" />\r\n </label>\r\n <div class=\"ard-form-field__input\">\r\n <ng-content />\r\n </div>\r\n <div\r\n class=\"ard-form-field__hints\"\r\n [class.ard-form-field__hints-default-left]=\"alignLabelToLeftByDefault\"\r\n >\r\n @if (hasAnyError()) {\r\n <div class=\"ard-form-field__error\">\r\n <ng-content select=\"ard-error, [ard-error]\" />\r\n </div>\r\n } @else {\r\n <div class=\"ard-form-field__hints-left\">\r\n <div class=\"ard-form-field__default-hint\">\r\n <ng-content select=\"ard-hint:not([left]):not([right]), [ard-hint]:not([left]):not([right])\" />\r\n </div>\r\n <ng-content select=\"ard-hint[left], [ard-hint][left]\" />\r\n </div>\r\n <div class=\"ard-form-field__hints-right\">\r\n <div class=\"ard-form-field__default-hint\">\r\n <ng-content select=\"ard-hint:not([left]):not([right]), [ard-hint]:not([left]):not([right])\" />\r\n </div>\r\n <ng-content select=\"ard-hint[right], [ard-hint][right]\" />\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".ard-form-field__hints{display:flex;justify-content:space-between}.ard-form-field__hints>*{display:flex;flex-direction:column}\n"] }]
35
+ }] });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxFQUNaLGVBQWUsRUFDZixNQUFNLEVBRU4saUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQVMvRCxNQUFNLE9BQU8sd0JBQXdCO0lBUHJDO1FBUXFCLGNBQVMsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUUvQyw4QkFBeUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixLQUFLLHNCQUFzQixDQUFDLElBQUksQ0FBQztRQUVuRyxZQUFPLEdBQUcsWUFBWSxDQUEwQix1QkFBdUIsQ0FBQyxDQUFDO1FBQ3pFLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFckQsVUFBSyxHQUFHLFlBQVksQ0FBdUIsb0JBQW9CLENBQUMsQ0FBQztRQUVqRSxVQUFLLEdBQUcsZUFBZSxDQUFzQixtQkFBbUIsQ0FBQyxDQUFDO1FBQzNFLGdIQUFnSDtRQUNoSCxpSEFBaUg7UUFFeEcsV0FBTSxHQUFHLGVBQWUsQ0FBdUIsb0JBQW9CLENBQUMsQ0FBQztRQUM5RSxtSEFBbUg7UUFDbkgsb0hBQW9IO1FBRTNHLGdCQUFXLEdBQUcsUUFBUSxDQUFVLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FTM0U7SUFQQyxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQ2IsNkdBQTZHLENBQzlHLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQzsrR0ExQlUsd0JBQXdCO21HQUF4Qix3QkFBd0IsMkZBS3NCLHVCQUF1Qix3RkFHNUIsb0JBQW9CLDJFQUVsQixtQkFBbUIseURBSWpCLG9CQUFvQiw2Q0N0QzlFLDZ2Q0FrQ0E7OzRGRFZhLHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFDRSxnQkFBZ0IsaUJBR1gsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIGNvbXB1dGVkLFxyXG4gIGNvbnRlbnRDaGlsZCxcclxuICBjb250ZW50Q2hpbGRyZW4sXHJcbiAgaW5qZWN0LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBfRm9ybUZpZWxkQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uL19pbnRlcm5hbC9mb3JtLWZpZWxkLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNpbXBsZU9uZUF4aXNBbGlnbm1lbnQgfSBmcm9tICcuLy4uL3R5cGVzL2FsaWdubWVudC50eXBlcyc7XHJcbmltcG9ydCB7IEFyZGl1bUVycm9yRGlyZWN0aXZlIH0gZnJvbSAnLi9lcnJvci9lcnJvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBBUkRfRk9STV9GSUVMRF9ERUZBVUxUUyB9IGZyb20gJy4vZm9ybS1maWVsZC5kZWZhdWx0cyc7XHJcbmltcG9ydCB7IEFyZGl1bUhpbnREaXJlY3RpdmUgfSBmcm9tICcuL2hpbnQvaGludC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBBcmRpdW1MYWJlbENvbXBvbmVudCB9IGZyb20gJy4vbGFiZWwvbGFiZWwuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXJkLWZvcm0tZmllbGQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZm9ybS1maWVsZC5jb21wb25lbnQuc2NzcycsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFyZGl1bUZvcm1GaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9ERUZBVUxUUyA9IGluamVjdChBUkRfRk9STV9GSUVMRF9ERUZBVUxUUyk7XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBhbGlnbkxhYmVsVG9MZWZ0QnlEZWZhdWx0ID0gdGhpcy5fREVGQVVMVFMuZGVmYXVsdEhpbnRBbGlnbiA9PT0gU2ltcGxlT25lQXhpc0FsaWdubWVudC5MZWZ0O1xyXG5cclxuICByZWFkb25seSBjb250cm9sID0gY29udGVudENoaWxkPF9Gb3JtRmllbGRDb21wb25lbnRCYXNlPihfRm9ybUZpZWxkQ29tcG9uZW50QmFzZSk7XHJcbiAgcmVhZG9ubHkgY29udHJvbElkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb250cm9sKCk/Lmh0bWxJZCgpKTtcclxuXHJcbiAgcmVhZG9ubHkgbGFiZWwgPSBjb250ZW50Q2hpbGQ8QXJkaXVtTGFiZWxDb21wb25lbnQ+KEFyZGl1bUxhYmVsQ29tcG9uZW50KTtcclxuXHJcbiAgcmVhZG9ubHkgaGludHMgPSBjb250ZW50Q2hpbGRyZW48QXJkaXVtSGludERpcmVjdGl2ZT4oQXJkaXVtSGludERpcmVjdGl2ZSk7XHJcbiAgLy8gcmVhZG9ubHkgbGVmdEhpbnRzID0gY29tcHV0ZWQ8QXJkaXVtSGludERpcmVjdGl2ZVtdPigoKSA9PiB0aGlzLmhpbnRzKCkuZmlsdGVyKHYgPT4gdi5sZWZ0KCkgJiYgIXYucmlnaHQoKSkpO1xyXG4gIC8vIHJlYWRvbmx5IHJpZ2h0SGludHMgPSBjb21wdXRlZDxBcmRpdW1IaW50RGlyZWN0aXZlW10+KCgpID0+IHRoaXMuaGludHMoKS5maWx0ZXIodiA9PiAhdi5sZWZ0KCkgJiYgdi5yaWdodCgpKSk7XHJcblxyXG4gIHJlYWRvbmx5IGVycm9ycyA9IGNvbnRlbnRDaGlsZHJlbjxBcmRpdW1FcnJvckRpcmVjdGl2ZT4oQXJkaXVtRXJyb3JEaXJlY3RpdmUpO1xyXG4gIC8vIHJlYWRvbmx5IGxlZnRFcnJvcnMgPSBjb21wdXRlZDxBcmRpdW1FcnJvckRpcmVjdGl2ZVtdPigoKSA9PiB0aGlzLmVycm9ycygpLmZpbHRlcih2ID0+IHYubGVmdCgpICYmICF2LnJpZ2h0KCkpKTtcclxuICAvLyByZWFkb25seSByaWdodEVycm9ycyA9IGNvbXB1dGVkPEFyZGl1bUVycm9yRGlyZWN0aXZlW10+KCgpID0+IHRoaXMuZXJyb3JzKCkuZmlsdGVyKHYgPT4gIXYubGVmdCgpICYmIHYucmlnaHQoKSkpO1xyXG5cclxuICByZWFkb25seSBoYXNBbnlFcnJvciA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHRoaXMuZXJyb3JzKCk/Lmxlbmd0aCA+IDApO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jb250cm9sKCkpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgIGBBUkQtRlQ1MTEwOiBGb3JtIGZpZWxkIGNvbXBvbmVudCByZXF1aXJlcyBhbnkgY29udHJvbCAoaW5wdXQpIHRvIGJlIHByZXNlbnQgd2l0aGluIHRoZSBlbGVtZW50LiBGb3VuZCBub25lLmBcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImFyZC1mb3JtLWZpZWxkXCIgW2NsYXNzLmFyZC1mb3JtLWZpZWxkX193aXRoLWVycm9yXT1cImNvbnRyb2woKT8uaGFzRXJyb3IoKVwiPlxyXG4gIDxsYWJlbFxyXG4gICAgY2xhc3M9XCJhcmQtbGFiZWxcIlxyXG4gICAgW2F0dHIuZm9yXT1cImNvbnRyb2xJZCgpXCJcclxuICA+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhcmQtbGFiZWwsIFthcmQtbGFiZWxdXCIgLz5cclxuICA8L2xhYmVsPlxyXG4gIDxkaXYgY2xhc3M9XCJhcmQtZm9ybS1maWVsZF9faW5wdXRcIj5cclxuICAgIDxuZy1jb250ZW50IC8+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJhcmQtZm9ybS1maWVsZF9faGludHNcIlxyXG4gICAgW2NsYXNzLmFyZC1mb3JtLWZpZWxkX19oaW50cy1kZWZhdWx0LWxlZnRdPVwiYWxpZ25MYWJlbFRvTGVmdEJ5RGVmYXVsdFwiXHJcbiAgPlxyXG4gICAgQGlmIChoYXNBbnlFcnJvcigpKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXJkLWZvcm0tZmllbGRfX2Vycm9yXCI+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFyZC1lcnJvciwgW2FyZC1lcnJvcl1cIiAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgIDxkaXYgY2xhc3M9XCJhcmQtZm9ybS1maWVsZF9faGludHMtbGVmdFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXJkLWZvcm0tZmllbGRfX2RlZmF1bHQtaGludFwiPlxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFyZC1oaW50Om5vdChbbGVmdF0pOm5vdChbcmlnaHRdKSwgW2FyZC1oaW50XTpub3QoW2xlZnRdKTpub3QoW3JpZ2h0XSlcIiAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXJkLWhpbnRbbGVmdF0sIFthcmQtaGludF1bbGVmdF1cIiAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXJkLWZvcm0tZmllbGRfX2hpbnRzLXJpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhcmQtZm9ybS1maWVsZF9fZGVmYXVsdC1oaW50XCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXJkLWhpbnQ6bm90KFtsZWZ0XSk6bm90KFtyaWdodF0pLCBbYXJkLWhpbnRdOm5vdChbbGVmdF0pOm5vdChbcmlnaHRdKVwiIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhcmQtaGludFtyaWdodF0sIFthcmQtaGludF1bcmlnaHRdXCIgLz5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -0,0 +1,14 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { SimpleOneAxisAlignment } from './../types/alignment.types';
3
+ const _formFieldDefaults = {
4
+ defaultHintAlign: SimpleOneAxisAlignment.Left,
5
+ };
6
+ export const ARD_FORM_FIELD_DEFAULTS = new InjectionToken('ard-form-field-defaults', {
7
+ factory: () => ({
8
+ ..._formFieldDefaults,
9
+ }),
10
+ });
11
+ export function provideFormFieldDefaults(config) {
12
+ return { provide: ARD_FORM_FIELD_DEFAULTS, useValue: { ..._formFieldDefaults, ...config } };
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5kZWZhdWx0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmRlZmF1bHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFNcEUsTUFBTSxrQkFBa0IsR0FBeUI7SUFDL0MsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsSUFBSTtDQUM5QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQXVCLHlCQUF5QixFQUFFO0lBQ3pHLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2QsR0FBRyxrQkFBa0I7S0FDdEIsQ0FBQztDQUNILENBQUMsQ0FBQztBQUVILE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxNQUFxQztJQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsa0JBQWtCLEVBQUUsR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDO0FBQzlGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2ltcGxlT25lQXhpc0FsaWdubWVudCB9IGZyb20gJy4vLi4vdHlwZXMvYWxpZ25tZW50LnR5cGVzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXJkRm9ybUZpZWxkRGVmYXVsdHMge1xyXG4gIGRlZmF1bHRIaW50QWxpZ246IFNpbXBsZU9uZUF4aXNBbGlnbm1lbnQ7XHJcbn1cclxuXHJcbmNvbnN0IF9mb3JtRmllbGREZWZhdWx0czogQXJkRm9ybUZpZWxkRGVmYXVsdHMgPSB7XHJcbiAgZGVmYXVsdEhpbnRBbGlnbjogU2ltcGxlT25lQXhpc0FsaWdubWVudC5MZWZ0LFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IEFSRF9GT1JNX0ZJRUxEX0RFRkFVTFRTID0gbmV3IEluamVjdGlvblRva2VuPEFyZEZvcm1GaWVsZERlZmF1bHRzPignYXJkLWZvcm0tZmllbGQtZGVmYXVsdHMnLCB7XHJcbiAgZmFjdG9yeTogKCkgPT4gKHtcclxuICAgIC4uLl9mb3JtRmllbGREZWZhdWx0cyxcclxuICB9KSxcclxufSk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUZvcm1GaWVsZERlZmF1bHRzKGNvbmZpZzogUGFydGlhbDxBcmRGb3JtRmllbGREZWZhdWx0cz4pOiBQcm92aWRlciB7XHJcbiAgcmV0dXJuIHsgcHJvdmlkZTogQVJEX0ZPUk1fRklFTERfREVGQVVMVFMsIHVzZVZhbHVlOiB7IC4uLl9mb3JtRmllbGREZWZhdWx0cywgLi4uY29uZmlnIH0gfTtcclxufVxyXG4iXX0=
@@ -0,0 +1,23 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { ArdiumErrorComponent } from './error/error.component';
4
+ import { ArdiumErrorDirective } from './error/error.directive';
5
+ import { ArdiumFormFieldComponent } from './form-field.component';
6
+ import { ArdiumHintComponent } from './hint/hint.component';
7
+ import { ArdiumHintDirective } from './hint/hint.directive';
8
+ import { ArdiumLabelComponent } from './label/label.component';
9
+ import * as i0 from "@angular/core";
10
+ export class ArdiumFormFieldModule {
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumFormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ArdiumFormFieldModule, declarations: [ArdiumFormFieldComponent, ArdiumLabelComponent, ArdiumHintComponent, ArdiumErrorComponent], imports: [CommonModule, ArdiumHintDirective, ArdiumErrorDirective], exports: [ArdiumFormFieldComponent, ArdiumLabelComponent, ArdiumHintComponent, ArdiumErrorComponent] }); }
13
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumFormFieldModule, imports: [CommonModule] }); }
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumFormFieldModule, decorators: [{
16
+ type: NgModule,
17
+ args: [{
18
+ declarations: [ArdiumFormFieldComponent, ArdiumLabelComponent, ArdiumHintComponent, ArdiumErrorComponent],
19
+ imports: [CommonModule, ArdiumHintDirective, ArdiumErrorDirective],
20
+ exports: [ArdiumFormFieldComponent, ArdiumLabelComponent, ArdiumHintComponent, ArdiumErrorComponent],
21
+ }]
22
+ }] });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBTy9ELE1BQU0sT0FBTyxxQkFBcUI7K0dBQXJCLHFCQUFxQjtnSEFBckIscUJBQXFCLGlCQUpqQix3QkFBd0IsRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsYUFDOUYsWUFBWSxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixhQUN2RCx3QkFBd0IsRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0I7Z0hBRXhGLHFCQUFxQixZQUh0QixZQUFZOzs0RkFHWCxxQkFBcUI7a0JBTGpDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsd0JBQXdCLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLENBQUM7b0JBQ3pHLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsQ0FBQztvQkFDbEUsT0FBTyxFQUFFLENBQUMsd0JBQXdCLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLENBQUM7aUJBQ3JHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXJkaXVtRXJyb3JDb21wb25lbnQgfSBmcm9tICcuL2Vycm9yL2Vycm9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFyZGl1bUVycm9yRGlyZWN0aXZlIH0gZnJvbSAnLi9lcnJvci9lcnJvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBBcmRpdW1Gb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXJkaXVtSGludENvbXBvbmVudCB9IGZyb20gJy4vaGludC9oaW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFyZGl1bUhpbnREaXJlY3RpdmUgfSBmcm9tICcuL2hpbnQvaGludC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBBcmRpdW1MYWJlbENvbXBvbmVudCB9IGZyb20gJy4vbGFiZWwvbGFiZWwuY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbQXJkaXVtRm9ybUZpZWxkQ29tcG9uZW50LCBBcmRpdW1MYWJlbENvbXBvbmVudCwgQXJkaXVtSGludENvbXBvbmVudCwgQXJkaXVtRXJyb3JDb21wb25lbnRdLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEFyZGl1bUhpbnREaXJlY3RpdmUsIEFyZGl1bUVycm9yRGlyZWN0aXZlXSxcclxuICBleHBvcnRzOiBbQXJkaXVtRm9ybUZpZWxkQ29tcG9uZW50LCBBcmRpdW1MYWJlbENvbXBvbmVudCwgQXJkaXVtSGludENvbXBvbmVudCwgQXJkaXVtRXJyb3JDb21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJkaXVtRm9ybUZpZWxkTW9kdWxlIHt9XHJcbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { Component } from '@angular/core';
2
+ import { ArdiumHintDirective } from './hint.directive';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./hint.directive";
5
+ export class ArdiumHintComponent {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumHintComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ArdiumHintComponent, selector: "ard-hint", hostDirectives: [{ directive: i1.ArdiumHintDirective, inputs: ["left", "left", "right", "right"] }], ngImport: i0, template: '<ng-content />', isInline: true }); }
8
+ }
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumHintComponent, decorators: [{
10
+ type: Component,
11
+ args: [{
12
+ selector: 'ard-hint',
13
+ template: '<ng-content />',
14
+ hostDirectives: [{ directive: ArdiumHintDirective, inputs: ['left', 'right'] }],
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2Zvcm0tZmllbGQvaGludC9oaW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFPdkQsTUFBTSxPQUFPLG1CQUFtQjsrR0FBbkIsbUJBQW1CO21HQUFuQixtQkFBbUIscUpBSHBCLGdCQUFnQjs7NEZBR2YsbUJBQW1CO2tCQUwvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxVQUFVO29CQUNwQixRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixjQUFjLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQztpQkFDaEYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXJkaXVtSGludERpcmVjdGl2ZSB9IGZyb20gJy4vaGludC5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcmQtaGludCcsXHJcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudCAvPicsXHJcbiAgaG9zdERpcmVjdGl2ZXM6IFt7IGRpcmVjdGl2ZTogQXJkaXVtSGludERpcmVjdGl2ZSwgaW5wdXRzOiBbJ2xlZnQnLCAncmlnaHQnXSB9XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFyZGl1bUhpbnRDb21wb25lbnQge31cclxuIl19
@@ -0,0 +1,30 @@
1
+ import { Directive, effect, input } from '@angular/core';
2
+ import { coerceBooleanProperty } from '@ardium-ui/devkit';
3
+ import * as i0 from "@angular/core";
4
+ export class ArdiumHintDirective {
5
+ constructor() {
6
+ this.left = input(false, { transform: v => coerceBooleanProperty(v) });
7
+ this.right = input(false, { transform: v => coerceBooleanProperty(v) });
8
+ effect(() => {
9
+ if (this.left() && this.right()) {
10
+ console.error(`ARD-NF5130: Cannot align a form field hint to both left and right.`);
11
+ }
12
+ });
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumHintDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
15
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: ArdiumHintDirective, isStandalone: true, selector: "[ard-hint]", inputs: { left: { classPropertyName: "left", publicName: "left", isSignal: true, isRequired: false, transformFunction: null }, right: { classPropertyName: "right", publicName: "right", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ard-hint": "true", "class.ard-hint-default": "!left() && !right()", "class.ard-hint-left": "left() && !right()", "class.ard-hint-right": "!left() && right()" } }, ngImport: i0 }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumHintDirective, decorators: [{
18
+ type: Directive,
19
+ args: [{
20
+ selector: '[ard-hint]',
21
+ standalone: true,
22
+ host: {
23
+ '[class.ard-hint]': 'true',
24
+ '[class.ard-hint-default]': '!left() && !right()',
25
+ '[class.ard-hint-left]': 'left() && !right()',
26
+ '[class.ard-hint-right]': '!left() && right()',
27
+ },
28
+ }]
29
+ }], ctorParameters: () => [] });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2Zvcm0tZmllbGQvaGludC9oaW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBWTFELE1BQU0sT0FBTyxtQkFBbUI7SUFJOUI7UUFIUyxTQUFJLEdBQUcsS0FBSyxDQUFlLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoRixVQUFLLEdBQUcsS0FBSyxDQUFlLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUd4RixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQ2hDLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0VBQW9FLENBQUMsQ0FBQztZQUN0RixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQVZVLG1CQUFtQjttR0FBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQVYvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNKLGtCQUFrQixFQUFFLE1BQU07d0JBQzFCLDBCQUEwQixFQUFFLHFCQUFxQjt3QkFDakQsdUJBQXVCLEVBQUUsb0JBQW9CO3dCQUM3Qyx3QkFBd0IsRUFBRSxvQkFBb0I7cUJBQy9DO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBlZmZlY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FyZC1oaW50XScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBob3N0OiB7XHJcbiAgICAnW2NsYXNzLmFyZC1oaW50XSc6ICd0cnVlJyxcclxuICAgICdbY2xhc3MuYXJkLWhpbnQtZGVmYXVsdF0nOiAnIWxlZnQoKSAmJiAhcmlnaHQoKScsXHJcbiAgICAnW2NsYXNzLmFyZC1oaW50LWxlZnRdJzogJ2xlZnQoKSAmJiAhcmlnaHQoKScsXHJcbiAgICAnW2NsYXNzLmFyZC1oaW50LXJpZ2h0XSc6ICchbGVmdCgpICYmIHJpZ2h0KCknLFxyXG4gIH0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcmRpdW1IaW50RGlyZWN0aXZlIHtcclxuICByZWFkb25seSBsZWZ0ID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG4gIHJlYWRvbmx5IHJpZ2h0ID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmxlZnQoKSAmJiB0aGlzLnJpZ2h0KCkpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGBBUkQtTkY1MTMwOiBDYW5ub3QgYWxpZ24gYSBmb3JtIGZpZWxkIGhpbnQgdG8gYm90aCBsZWZ0IGFuZCByaWdodC5gKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,8 @@
1
+ export * from './error/error.component';
2
+ export * from './error/error.directive';
3
+ export * from './form-field.component';
4
+ export * from './form-field.module';
5
+ export * from './hint/hint.component';
6
+ export * from './hint/hint.directive';
7
+ export * from './label/label.component';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2Zvcm0tZmllbGQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZXJyb3IvZXJyb3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9lcnJvci9lcnJvci5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tZmllbGQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWZpZWxkLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaGludC9oaW50LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaGludC9oaW50LmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGFiZWwvbGFiZWwuY29tcG9uZW50JztcclxuXHJcbiJdfQ==
@@ -0,0 +1,21 @@
1
+ import { Component, effect, input } from '@angular/core';
2
+ import { coerceBooleanProperty } from '@ardium-ui/devkit';
3
+ import * as i0 from "@angular/core";
4
+ export class ArdiumLabelComponent {
5
+ constructor() {
6
+ this.required = input(false, { transform: v => coerceBooleanProperty(v) });
7
+ this.optional = input(false, { transform: v => coerceBooleanProperty(v) });
8
+ effect(() => {
9
+ if (this.required() && this.optional()) {
10
+ console.error(`ARD-NF5110: Cannot set a form field label to be both required and optional.`);
11
+ }
12
+ });
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: ArdiumLabelComponent, selector: "ard-label", inputs: { required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, optional: { classPropertyName: "optional", publicName: "optional", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\r\n class=\"ard-label-text\"\r\n [class.ard-label-optional]=\"optional()\"\r\n [class.ard-label-required]=\"required()\"\r\n>\r\n <ng-content />\r\n</div>\r\n" }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumLabelComponent, decorators: [{
18
+ type: Component,
19
+ args: [{ selector: 'ard-label', template: "<div\r\n class=\"ard-label-text\"\r\n [class.ard-label-optional]=\"optional()\"\r\n [class.ard-label-required]=\"required()\"\r\n>\r\n <ng-content />\r\n</div>\r\n" }]
20
+ }], ctorParameters: () => [] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9mb3JtLWZpZWxkL2xhYmVsL2xhYmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvZm9ybS1maWVsZC9sYWJlbC9sYWJlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBTTFELE1BQU0sT0FBTyxvQkFBb0I7SUFJL0I7UUFIUyxhQUFRLEdBQUcsS0FBSyxDQUFlLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwRixhQUFRLEdBQUcsS0FBSyxDQUFlLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUczRixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7Z0JBQ3ZDLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkVBQTZFLENBQUMsQ0FBQztZQUMvRixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQVZVLG9CQUFvQjttR0FBcEIsb0JBQW9CLCtUQ1BqQyx5S0FPQTs7NEZEQWEsb0JBQW9CO2tCQUpoQyxTQUFTOytCQUNFLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGVmZmVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcmQtbGFiZWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sYWJlbC5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcmRpdW1MYWJlbENvbXBvbmVudCB7XHJcbiAgcmVhZG9ubHkgcmVxdWlyZWQgPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcbiAgcmVhZG9ubHkgb3B0aW9uYWwgPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMucmVxdWlyZWQoKSAmJiB0aGlzLm9wdGlvbmFsKCkpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGBBUkQtTkY1MTEwOiBDYW5ub3Qgc2V0IGEgZm9ybSBmaWVsZCBsYWJlbCB0byBiZSBib3RoIHJlcXVpcmVkIGFuZCBvcHRpb25hbC5gKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cImFyZC1sYWJlbC10ZXh0XCJcclxuICBbY2xhc3MuYXJkLWxhYmVsLW9wdGlvbmFsXT1cIm9wdGlvbmFsKClcIlxyXG4gIFtjbGFzcy5hcmQtbGFiZWwtcmVxdWlyZWRdPVwicmVxdWlyZWQoKVwiXHJcbj5cclxuICA8bmctY29udGVudCAvPlxyXG48L2Rpdj5cclxuIl19
@@ -9,6 +9,7 @@ import * as i1 from "@angular/common";
9
9
  export class ArdiumFormFieldFrameComponent extends _FocusableComponentBase {
10
10
  constructor(defaults) {
11
11
  super(defaults);
12
+ this.hasError = input(false, { transform: v => coerceBooleanProperty(v) });
12
13
  //! focused state
13
14
  this.isFocused = false;
14
15
  //! appearance
@@ -28,6 +29,7 @@ export class ArdiumFormFieldFrameComponent extends _FocusableComponentBase {
28
29
  `ard-appearance-${this.appearance()}`,
29
30
  `ard-variant-${this.variant()}`,
30
31
  this.compact() ? 'ard-compact' : '',
32
+ this.hasError() ? 'ard-has-error' : '',
31
33
  this.isFocused ? 'ard-focused' : 'ard-unfocused',
32
34
  ].join(' '));
33
35
  //! prefix & suffix
@@ -37,7 +39,7 @@ export class ArdiumFormFieldFrameComponent extends _FocusableComponentBase {
37
39
  this.suffixTemplate = contentChild(ArdFormFieldSuffixTemplateDirective);
38
40
  }
39
41
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumFormFieldFrameComponent, deps: [{ token: ARD_FORM_FIELD_FRAME_DEFAULTS }], target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: { isFocused: { classPropertyName: "isFocused", publicName: "isFocused", isSignal: false, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, prefixTemplateInput: { classPropertyName: "prefixTemplateInput", publicName: "prefixTemplate", isSignal: true, isRequired: false, transformFunction: null }, suffixTemplateInput: { classPropertyName: "suffixTemplateInput", publicName: "suffixTemplate", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdFormFieldPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdFormFieldSuffixTemplateDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"ard-form-field-frame\"\n [ngClass]=\"ngClasses()\"\n>\n <div class=\"ard-form-field-overlay\"></div>\n @if (prefixTemplateInput() ?? prefixTemplate()) {\n <div class=\"ard-form-field-prefix-container\">\n <ng-template [ngTemplateOutlet]=\"prefixTemplateInput() ?? prefixTemplate()?.template ?? null\"></ng-template>\n </div>\n }\n <div class=\"ard-form-field-content-container\">\n <ng-content></ng-content>\n </div>\n @if (suffixTemplateInput() ?? suffixTemplate()) {\n <div class=\"ard-form-field-suffix-container\">\n <ng-template [ngTemplateOutlet]=\"suffixTemplateInput() ?? suffixTemplate()?.template ?? null\"></ng-template>\n </div>\n }\n</div>\n", styles: [".ard-form-field-frame{position:relative}.ard-form-field-overlay{position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
42
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: { hasError: { classPropertyName: "hasError", publicName: "hasError", isSignal: true, isRequired: false, transformFunction: null }, isFocused: { classPropertyName: "isFocused", publicName: "isFocused", isSignal: false, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, prefixTemplateInput: { classPropertyName: "prefixTemplateInput", publicName: "prefixTemplate", isSignal: true, isRequired: false, transformFunction: null }, suffixTemplateInput: { classPropertyName: "suffixTemplateInput", publicName: "suffixTemplate", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdFormFieldPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdFormFieldSuffixTemplateDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"ard-form-field-frame\"\n [ngClass]=\"ngClasses()\"\n>\n <div class=\"ard-form-field-overlay\"></div>\n @if (prefixTemplateInput() ?? prefixTemplate()) {\n <div class=\"ard-form-field-prefix-container\">\n <ng-template [ngTemplateOutlet]=\"prefixTemplateInput() ?? prefixTemplate()?.template ?? null\"></ng-template>\n </div>\n }\n <div class=\"ard-form-field-content-container\">\n <ng-content></ng-content>\n </div>\n @if (suffixTemplateInput() ?? suffixTemplate()) {\n <div class=\"ard-form-field-suffix-container\">\n <ng-template [ngTemplateOutlet]=\"suffixTemplateInput() ?? suffixTemplate()?.template ?? null\"></ng-template>\n </div>\n }\n</div>\n", styles: [".ard-form-field-frame{position:relative}.ard-form-field-overlay{position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
41
43
  }
42
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumFormFieldFrameComponent, decorators: [{
43
45
  type: Component,
@@ -48,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
48
50
  }] }], propDecorators: { isFocused: [{
49
51
  type: Input
50
52
  }] } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1mcmFtZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2Zvcm0tZmllbGQtZnJhbWUvZm9ybS1maWVsZC1mcmFtZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2Zvcm0tZmllbGQtZnJhbWUvZm9ybS1maWVsZC1mcmFtZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUVMLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVuRixPQUFPLEVBQUUsNkJBQTZCLEVBQTZCLE1BQU0sNkJBQTZCLENBQUM7QUFDdkcsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQVN6SCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsdUJBQXVCO0lBRXhFLFlBQW1ELFFBQW1DO1FBQ3BGLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUdsQixpQkFBaUI7UUFDQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRXBDLGNBQWM7UUFDZDs7V0FFRztRQUNNLGVBQVUsR0FBRyxLQUFLLENBQXdCLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25GOztXQUVHO1FBQ00sWUFBTyxHQUFHLEtBQUssQ0FBcUIsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFekU7O1dBRUc7UUFDTSxZQUFPLEdBQUcsS0FBSyxDQUFlLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVuRixjQUFTLEdBQUcsUUFBUSxDQUFTLEdBQUcsRUFBRSxDQUN6QztZQUNFLGtCQUFrQixJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDckMsZUFBZSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDL0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxlQUFlO1NBQ2pELENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUNaLENBQUM7UUFFRixtQkFBbUI7UUFDVix3QkFBbUIsR0FBRyxLQUFLLENBQTZCLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDaEcsd0JBQW1CLEdBQUcsS0FBSyxDQUE2QixTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ2hHLG1CQUFjLEdBQUcsWUFBWSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDbkUsbUJBQWMsR0FBRyxZQUFZLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQWpDNUUsQ0FBQzsrR0FKVSw2QkFBNkIsa0JBRXBCLDZCQUE2QjttR0FGdEMsNkJBQTZCLHM3QkFvQ0QsbUNBQW1DLGlHQUNuQyxtQ0FBbUMsdUZDOUQ1RSxpc0JBbUJBOzs0RkRNYSw2QkFBNkI7a0JBUHpDLFNBQVM7K0JBQ0Usc0JBQXNCLGlCQUdqQixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFJbEMsTUFBTTsyQkFBQyw2QkFBNkI7eUNBSy9CLFNBQVM7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxuICBjb250ZW50Q2hpbGQsXG4gIGlucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcbmltcG9ydCB7IF9Gb2N1c2FibGVDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vX2ludGVybmFsL2ZvY3VzYWJsZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybUVsZW1lbnRBcHBlYXJhbmNlLCBGb3JtRWxlbWVudFZhcmlhbnQgfSBmcm9tICcuLi90eXBlcy90aGVtaW5nLnR5cGVzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vdHlwZXMvdXRpbGl0eS50eXBlcyc7XG5pbXBvcnQgeyBBUkRfRk9STV9GSUVMRF9GUkFNRV9ERUZBVUxUUywgQXJkRm9ybUZpZWxkRnJhbWVEZWZhdWx0cyB9IGZyb20gJy4vZm9ybS1maWVsZC1mcmFtZS5kZWZhdWx0cyc7XG5pbXBvcnQgeyBBcmRGb3JtRmllbGRQcmVmaXhUZW1wbGF0ZURpcmVjdGl2ZSwgQXJkRm9ybUZpZWxkU3VmZml4VGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL2Zvcm0tZmllbGQtZnJhbWUuZGlyZWN0aXZlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FyZC1mb3JtLWZpZWxkLWZyYW1lJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGQtZnJhbWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWZpZWxkLWZyYW1lLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBcmRpdW1Gb3JtRmllbGRGcmFtZUNvbXBvbmVudCBleHRlbmRzIF9Gb2N1c2FibGVDb21wb25lbnRCYXNlIHtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IF9ERUZBVUxUUyE6IEFyZEZvcm1GaWVsZEZyYW1lRGVmYXVsdHM7XG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQVJEX0ZPUk1fRklFTERfRlJBTUVfREVGQVVMVFMpIGRlZmF1bHRzOiBBcmRGb3JtRmllbGRGcmFtZURlZmF1bHRzKSB7XG4gICAgc3VwZXIoZGVmYXVsdHMpO1xuICB9XG5cbiAgLy8hIGZvY3VzZWQgc3RhdGVcbiAgQElucHV0KCkgb3ZlcnJpZGUgaXNGb2N1c2VkID0gZmFsc2U7XG5cbiAgLy8hIGFwcGVhcmFuY2VcbiAgLyoqXG4gICAqIFRoZSBhcHBlYXJhbmNlIG9mIHRoZSBjb21wb25lbnQsIGFrYSB0aGUgc3R5bGluZy5cbiAgICovXG4gIHJlYWRvbmx5IGFwcGVhcmFuY2UgPSBpbnB1dDxGb3JtRWxlbWVudEFwcGVhcmFuY2U+KEZvcm1FbGVtZW50QXBwZWFyYW5jZS5PdXRsaW5lZCk7XG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCBvZiB0aGUgY29tcG9uZW50LCBha2EgdGhlIHNoYXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFyaWFudCA9IGlucHV0PEZvcm1FbGVtZW50VmFyaWFudD4oRm9ybUVsZW1lbnRWYXJpYW50LlJvdW5kZWQpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVzZSB0aGUgY29tcGFjdCBzdHlsaW5nIG9yIG5vdC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbXBhY3QgPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XG5cbiAgcmVhZG9ubHkgbmdDbGFzc2VzID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PlxuICAgIFtcbiAgICAgIGBhcmQtYXBwZWFyYW5jZS0ke3RoaXMuYXBwZWFyYW5jZSgpfWAsXG4gICAgICBgYXJkLXZhcmlhbnQtJHt0aGlzLnZhcmlhbnQoKX1gLFxuICAgICAgdGhpcy5jb21wYWN0KCkgPyAnYXJkLWNvbXBhY3QnIDogJycsXG4gICAgICB0aGlzLmlzRm9jdXNlZCA/ICdhcmQtZm9jdXNlZCcgOiAnYXJkLXVuZm9jdXNlZCcsXG4gICAgXS5qb2luKCcgJylcbiAgKTtcblxuICAvLyEgcHJlZml4ICYgc3VmZml4XG4gIHJlYWRvbmx5IHByZWZpeFRlbXBsYXRlSW5wdXQgPSBpbnB1dDxOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+Pj4odW5kZWZpbmVkLCB7IGFsaWFzOiAncHJlZml4VGVtcGxhdGUnIH0pO1xuICByZWFkb25seSBzdWZmaXhUZW1wbGF0ZUlucHV0ID0gaW5wdXQ8TnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj4+KHVuZGVmaW5lZCwgeyBhbGlhczogJ3N1ZmZpeFRlbXBsYXRlJyB9KTtcbiAgcmVhZG9ubHkgcHJlZml4VGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkRm9ybUZpZWxkUHJlZml4VGVtcGxhdGVEaXJlY3RpdmUpO1xuICByZWFkb25seSBzdWZmaXhUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmRGb3JtRmllbGRTdWZmaXhUZW1wbGF0ZURpcmVjdGl2ZSk7XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiYXJkLWZvcm0tZmllbGQtZnJhbWVcIlxuICBbbmdDbGFzc109XCJuZ0NsYXNzZXMoKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJhcmQtZm9ybS1maWVsZC1vdmVybGF5XCI+PC9kaXY+XG4gIEBpZiAocHJlZml4VGVtcGxhdGVJbnB1dCgpID8/IHByZWZpeFRlbXBsYXRlKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiYXJkLWZvcm0tZmllbGQtcHJlZml4LWNvbnRhaW5lclwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByZWZpeFRlbXBsYXRlSW5wdXQoKSA/PyBwcmVmaXhUZW1wbGF0ZSgpPy50ZW1wbGF0ZSA/PyBudWxsXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgfVxuICA8ZGl2IGNsYXNzPVwiYXJkLWZvcm0tZmllbGQtY29udGVudC1jb250YWluZXJcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuICBAaWYgKHN1ZmZpeFRlbXBsYXRlSW5wdXQoKSA/PyBzdWZmaXhUZW1wbGF0ZSgpKSB7XG4gICAgPGRpdiBjbGFzcz1cImFyZC1mb3JtLWZpZWxkLXN1ZmZpeC1jb250YWluZXJcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJzdWZmaXhUZW1wbGF0ZUlucHV0KCkgPz8gc3VmZml4VGVtcGxhdGUoKT8udGVtcGxhdGUgPz8gbnVsbFwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1mcmFtZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2Zvcm0tZmllbGQtZnJhbWUvZm9ybS1maWVsZC1mcmFtZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2Zvcm0tZmllbGQtZnJhbWUvZm9ybS1maWVsZC1mcmFtZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUVMLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVuRixPQUFPLEVBQUUsNkJBQTZCLEVBQTZCLE1BQU0sNkJBQTZCLENBQUM7QUFDdkcsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQVN6SCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsdUJBQXVCO0lBRXhFLFlBQW1ELFFBQW1DO1FBQ3BGLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUdULGFBQVEsR0FBRyxLQUFLLENBQWUsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTdGLGlCQUFpQjtRQUNDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFcEMsY0FBYztRQUNkOztXQUVHO1FBQ00sZUFBVSxHQUFHLEtBQUssQ0FBd0IscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkY7O1dBRUc7UUFDTSxZQUFPLEdBQUcsS0FBSyxDQUFxQixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV6RTs7V0FFRztRQUNNLFlBQU8sR0FBRyxLQUFLLENBQWUsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRW5GLGNBQVMsR0FBRyxRQUFRLENBQVMsR0FBRyxFQUFFLENBQ3pDO1lBQ0Usa0JBQWtCLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNyQyxlQUFlLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNuQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGVBQWU7U0FDakQsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQ1osQ0FBQztRQUVGLG1CQUFtQjtRQUNWLHdCQUFtQixHQUFHLEtBQUssQ0FBNkIsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUNoRyx3QkFBbUIsR0FBRyxLQUFLLENBQTZCLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDaEcsbUJBQWMsR0FBRyxZQUFZLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUNuRSxtQkFBYyxHQUFHLFlBQVksQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBcEM1RSxDQUFDOytHQUpVLDZCQUE2QixrQkFFcEIsNkJBQTZCO21HQUZ0Qyw2QkFBNkIsdWpDQXVDRCxtQ0FBbUMsaUdBQ25DLG1DQUFtQyx1RkNqRTVFLGlzQkFtQkE7OzRGRE1hLDZCQUE2QjtrQkFQekMsU0FBUzsrQkFDRSxzQkFBc0IsaUJBR2pCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OzBCQUlsQyxNQUFNOzJCQUFDLDZCQUE2Qjt5Q0FPL0IsU0FBUztzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBjb21wdXRlZCxcclxuICBjb250ZW50Q2hpbGQsXHJcbiAgaW5wdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcclxuaW1wb3J0IHsgX0ZvY3VzYWJsZUNvbXBvbmVudEJhc2UgfSBmcm9tICcuLi9faW50ZXJuYWwvZm9jdXNhYmxlLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1FbGVtZW50QXBwZWFyYW5jZSwgRm9ybUVsZW1lbnRWYXJpYW50IH0gZnJvbSAnLi4vdHlwZXMvdGhlbWluZy50eXBlcyc7XHJcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vdHlwZXMvdXRpbGl0eS50eXBlcyc7XHJcbmltcG9ydCB7IEFSRF9GT1JNX0ZJRUxEX0ZSQU1FX0RFRkFVTFRTLCBBcmRGb3JtRmllbGRGcmFtZURlZmF1bHRzIH0gZnJvbSAnLi9mb3JtLWZpZWxkLWZyYW1lLmRlZmF1bHRzJztcclxuaW1wb3J0IHsgQXJkRm9ybUZpZWxkUHJlZml4VGVtcGxhdGVEaXJlY3RpdmUsIEFyZEZvcm1GaWVsZFN1ZmZpeFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9mb3JtLWZpZWxkLWZyYW1lLmRpcmVjdGl2ZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcmQtZm9ybS1maWVsZC1mcmFtZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGQtZnJhbWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZmllbGQtZnJhbWUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJkaXVtRm9ybUZpZWxkRnJhbWVDb21wb25lbnQgZXh0ZW5kcyBfRm9jdXNhYmxlQ29tcG9uZW50QmFzZSB7XHJcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IF9ERUZBVUxUUyE6IEFyZEZvcm1GaWVsZEZyYW1lRGVmYXVsdHM7XHJcbiAgY29uc3RydWN0b3IoQEluamVjdChBUkRfRk9STV9GSUVMRF9GUkFNRV9ERUZBVUxUUykgZGVmYXVsdHM6IEFyZEZvcm1GaWVsZEZyYW1lRGVmYXVsdHMpIHtcclxuICAgIHN1cGVyKGRlZmF1bHRzKTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IGhhc0Vycm9yID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICAvLyEgZm9jdXNlZCBzdGF0ZVxyXG4gIEBJbnB1dCgpIG92ZXJyaWRlIGlzRm9jdXNlZCA9IGZhbHNlO1xyXG5cclxuICAvLyEgYXBwZWFyYW5jZVxyXG4gIC8qKlxyXG4gICAqIFRoZSBhcHBlYXJhbmNlIG9mIHRoZSBjb21wb25lbnQsIGFrYSB0aGUgc3R5bGluZy5cclxuICAgKi9cclxuICByZWFkb25seSBhcHBlYXJhbmNlID0gaW5wdXQ8Rm9ybUVsZW1lbnRBcHBlYXJhbmNlPihGb3JtRWxlbWVudEFwcGVhcmFuY2UuT3V0bGluZWQpO1xyXG4gIC8qKlxyXG4gICAqIFRoZSB2YXJpYW50IG9mIHRoZSBjb21wb25lbnQsIGFrYSB0aGUgc2hhcGUuXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgdmFyaWFudCA9IGlucHV0PEZvcm1FbGVtZW50VmFyaWFudD4oRm9ybUVsZW1lbnRWYXJpYW50LlJvdW5kZWQpO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRvIHVzZSB0aGUgY29tcGFjdCBzdHlsaW5nIG9yIG5vdC5cclxuICAgKi9cclxuICByZWFkb25seSBjb21wYWN0ID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICByZWFkb25seSBuZ0NsYXNzZXMgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+XHJcbiAgICBbXHJcbiAgICAgIGBhcmQtYXBwZWFyYW5jZS0ke3RoaXMuYXBwZWFyYW5jZSgpfWAsXHJcbiAgICAgIGBhcmQtdmFyaWFudC0ke3RoaXMudmFyaWFudCgpfWAsXHJcbiAgICAgIHRoaXMuY29tcGFjdCgpID8gJ2FyZC1jb21wYWN0JyA6ICcnLFxyXG4gICAgICB0aGlzLmhhc0Vycm9yKCkgPyAnYXJkLWhhcy1lcnJvcicgOiAnJyxcclxuICAgICAgdGhpcy5pc0ZvY3VzZWQgPyAnYXJkLWZvY3VzZWQnIDogJ2FyZC11bmZvY3VzZWQnLFxyXG4gICAgXS5qb2luKCcgJylcclxuICApO1xyXG5cclxuICAvLyEgcHJlZml4ICYgc3VmZml4XHJcbiAgcmVhZG9ubHkgcHJlZml4VGVtcGxhdGVJbnB1dCA9IGlucHV0PE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+Pih1bmRlZmluZWQsIHsgYWxpYXM6ICdwcmVmaXhUZW1wbGF0ZScgfSk7XHJcbiAgcmVhZG9ubHkgc3VmZml4VGVtcGxhdGVJbnB1dCA9IGlucHV0PE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+Pih1bmRlZmluZWQsIHsgYWxpYXM6ICdzdWZmaXhUZW1wbGF0ZScgfSk7XHJcbiAgcmVhZG9ubHkgcHJlZml4VGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkRm9ybUZpZWxkUHJlZml4VGVtcGxhdGVEaXJlY3RpdmUpO1xyXG4gIHJlYWRvbmx5IHN1ZmZpeFRlbXBsYXRlID0gY29udGVudENoaWxkKEFyZEZvcm1GaWVsZFN1ZmZpeFRlbXBsYXRlRGlyZWN0aXZlKTtcclxufVxyXG4iLCI8ZGl2XG4gIGNsYXNzPVwiYXJkLWZvcm0tZmllbGQtZnJhbWVcIlxuICBbbmdDbGFzc109XCJuZ0NsYXNzZXMoKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJhcmQtZm9ybS1maWVsZC1vdmVybGF5XCI+PC9kaXY+XG4gIEBpZiAocHJlZml4VGVtcGxhdGVJbnB1dCgpID8/IHByZWZpeFRlbXBsYXRlKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiYXJkLWZvcm0tZmllbGQtcHJlZml4LWNvbnRhaW5lclwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByZWZpeFRlbXBsYXRlSW5wdXQoKSA/PyBwcmVmaXhUZW1wbGF0ZSgpPy50ZW1wbGF0ZSA/PyBudWxsXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgfVxuICA8ZGl2IGNsYXNzPVwiYXJkLWZvcm0tZmllbGQtY29udGVudC1jb250YWluZXJcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuICBAaWYgKHN1ZmZpeFRlbXBsYXRlSW5wdXQoKSA/PyBzdWZmaXhUZW1wbGF0ZSgpKSB7XG4gICAgPGRpdiBjbGFzcz1cImFyZC1mb3JtLWZpZWxkLXN1ZmZpeC1jb250YWluZXJcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJzdWZmaXhUZW1wbGF0ZUlucHV0KCkgPz8gc3VmZml4VGVtcGxhdGUoKT8udGVtcGxhdGUgPz8gbnVsbFwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
@@ -1,12 +1,12 @@
1
1
  import { computed, Directive, input, Input, output, viewChild } from '@angular/core';
2
2
  import { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';
3
- import { _NgModelComponentBase, _ngModelComponentDefaults } from '../_internal/ngmodel-component';
3
+ import { _FormFieldComponentBase, _formFieldComponentDefaults } from '../_internal/form-field-component';
4
4
  import { SimpleOneAxisAlignment } from './../types/alignment.types';
5
5
  import { FormElementAppearance, FormElementVariant } from './../types/theming.types';
6
6
  import { SimpleInputModel } from './input-utils';
7
7
  import * as i0 from "@angular/core";
8
8
  export const _simpleInputComponentDefaults = {
9
- ..._ngModelComponentDefaults,
9
+ ..._formFieldComponentDefaults,
10
10
  appearance: FormElementAppearance.Outlined,
11
11
  variant: FormElementVariant.Rounded,
12
12
  compact: false,
@@ -17,7 +17,7 @@ export const _simpleInputComponentDefaults = {
17
17
  inputAttrs: {},
18
18
  maxLength: undefined,
19
19
  };
20
- export class _SimpleInputComponentBase extends _NgModelComponentBase {
20
+ export class _SimpleInputComponentBase extends _FormFieldComponentBase {
21
21
  constructor() {
22
22
  super(...arguments);
23
23
  //! input view
@@ -150,4 +150,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
150
150
  }], propDecorators: { value: [{
151
151
  type: Input
152
152
  }] } });
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX3NpbXBsZS1pbnB1dC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvX3NpbXBsZS1pbnB1dC1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsUUFBUSxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEYsT0FBTyxFQUFFLHFCQUFxQixFQUE2Qix5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFjakQsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQWtDO0lBQzFFLEdBQUcseUJBQXlCO0lBQzVCLFVBQVUsRUFBRSxxQkFBcUIsQ0FBQyxRQUFRO0lBQzFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO0lBQ25DLE9BQU8sRUFBRSxLQUFLO0lBQ2QsV0FBVyxFQUFFLEVBQUU7SUFDZixTQUFTLEVBQUUsc0JBQXNCLENBQUMsSUFBSTtJQUN0QyxTQUFTLEVBQUUsS0FBSztJQUNoQixnQkFBZ0IsRUFBRSxPQUFPO0lBQ3pCLFVBQVUsRUFBRSxFQUFFO0lBQ2QsU0FBUyxFQUFFLFNBQVM7Q0FDckIsQ0FBQztBQUdGLE1BQU0sT0FBZ0IseUJBQTBCLFNBQVEscUJBQXFCO0lBRDdFOztRQUlFLGNBQWM7UUFDTCxnQkFBVyxHQUFHLFNBQVMsQ0FBK0IsV0FBVyxDQUFDLENBQUM7UUFFekQs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RSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUNsRyxpQkFBaUI7Z0JBQ2pCLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxhQUFhLENBQUMsY0FBYyxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQ3RHLENBQUM7WUFDRCxLQUFLLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUNELFdBQVc7SUFDRCxtQkFBbUI7UUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRyxDQUFDLGFBQWEsQ0FBQztRQUNoRCxNQUFNLFVBQVUsR0FBMkI7WUFDekMsSUFBSSxFQUFFLE1BQU07WUFDWixXQUFXLEVBQUUsS0FBSztZQUNsQixjQUFjLEVBQUUsS0FBSztZQUNyQixZQUFZLEVBQUUsS0FBSztZQUNuQixRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7U0FDckIsQ0FBQztRQUVGLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDSCxDQUFDOytHQXRKbUIseUJBQXlCO21HQUF6Qix5QkFBeUI7OzRGQUF6Qix5QkFBeUI7a0JBRDlDLFNBQVM7OEJBbUVKLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIGNvbXB1dGVkLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGlucHV0LCBJbnB1dCwgb3V0cHV0LCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XG5pbXBvcnQgeyBfTmdNb2RlbENvbXBvbmVudEJhc2UsIF9OZ01vZGVsQ29tcG9uZW50RGVmYXVsdHMsIF9uZ01vZGVsQ29tcG9uZW50RGVmYXVsdHMgfSBmcm9tICcuLi9faW50ZXJuYWwvbmdtb2RlbC1jb21wb25lbnQnO1xuaW1wb3J0IHsgU2ltcGxlT25lQXhpc0FsaWdubWVudCB9IGZyb20gJy4vLi4vdHlwZXMvYWxpZ25tZW50LnR5cGVzJztcbmltcG9ydCB7IEZvcm1FbGVtZW50QXBwZWFyYW5jZSwgRm9ybUVsZW1lbnRWYXJpYW50IH0gZnJvbSAnLi8uLi90eXBlcy90aGVtaW5nLnR5cGVzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi8uLi90eXBlcy91dGlsaXR5LnR5cGVzJztcbmltcG9ydCB7IFNpbXBsZUlucHV0TW9kZWwgfSBmcm9tICcuL2lucHV0LXV0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBfU2ltcGxlSW5wdXRDb21wb25lbnREZWZhdWx0cyBleHRlbmRzIF9OZ01vZGVsQ29tcG9uZW50RGVmYXVsdHMge1xuICBhcHBlYXJhbmNlOiBGb3JtRWxlbWVudEFwcGVhcmFuY2U7XG4gIHZhcmlhbnQ6IEZvcm1FbGVtZW50VmFyaWFudDtcbiAgY29tcGFjdDogYm9vbGVhbjtcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgYWxpZ25UZXh0OiBTaW1wbGVPbmVBeGlzQWxpZ25tZW50O1xuICBjbGVhcmFibGU6IGJvb2xlYW47XG4gIGNsZWFyQnV0dG9uVGl0bGU6IHN0cmluZztcbiAgaW5wdXRBdHRyczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgbWF4TGVuZ3RoOiBOdWxsYWJsZTxudW1iZXI+O1xufVxuXG5leHBvcnQgY29uc3QgX3NpbXBsZUlucHV0Q29tcG9uZW50RGVmYXVsdHM6IF9TaW1wbGVJbnB1dENvbXBvbmVudERlZmF1bHRzID0ge1xuICAuLi5fbmdNb2RlbENvbXBvbmVudERlZmF1bHRzLFxuICBhcHBlYXJhbmNlOiBGb3JtRWxlbWVudEFwcGVhcmFuY2UuT3V0bGluZWQsXG4gIHZhcmlhbnQ6IEZvcm1FbGVtZW50VmFyaWFudC5Sb3VuZGVkLFxuICBjb21wYWN0OiBmYWxzZSxcbiAgcGxhY2Vob2xkZXI6ICcnLFxuICBhbGlnblRleHQ6IFNpbXBsZU9uZUF4aXNBbGlnbm1lbnQuTGVmdCxcbiAgY2xlYXJhYmxlOiBmYWxzZSxcbiAgY2xlYXJCdXR0b25UaXRsZTogJ0NsZWFyJyxcbiAgaW5wdXRBdHRyczoge30sXG4gIG1heExlbmd0aDogdW5kZWZpbmVkLFxufTtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgX1NpbXBsZUlucHV0Q29tcG9uZW50QmFzZSBleHRlbmRzIF9OZ01vZGVsQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX0RFRkFVTFRTITogX1NpbXBsZUlucHV0Q29tcG9uZW50RGVmYXVsdHM7XG5cbiAgLy8hIGlucHV0IHZpZXdcbiAgcmVhZG9ubHkgdGV4dElucHV0RWwgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ3RleHRJbnB1dCcpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpbnB1dE1vZGVsID0gbmV3IFNpbXBsZUlucHV0TW9kZWwodGhpcyk7XG4gIHByaXZhdGUgX3dhc1ZpZXdJbml0ID0gZmFsc2U7XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl93YXNWaWV3SW5pdCA9IHRydWU7XG4gICAgdGhpcy5fc2V0SW5wdXRBdHRyaWJ1dGVzKCk7XG4gICAgLy9zZXQgdGhlIHZhbHVlXG4gICAgaWYgKHRoaXMuX3ZhbHVlQmVmb3JlSW5pdCkge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuX3ZhbHVlQmVmb3JlSW5pdCk7XG4gICAgICBkZWxldGUgdGhpcy5fdmFsdWVCZWZvcmVJbml0O1xuICAgIH1cbiAgfVxuXG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nPih0aGlzLl9ERUZBVUxUUy5wbGFjZWhvbGRlcik7XG4gIHJlYWRvbmx5IGlucHV0SWQgPSBpbnB1dDxOdWxsYWJsZTxzdHJpbmc+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBjbGVhckJ1dHRvblRpdGxlID0gaW5wdXQ8c3RyaW5nPih0aGlzLl9ERUZBVUxUUy5jbGVhckJ1dHRvblRpdGxlKTtcblxuICAvLyEgcHJlZml4ICYgc3VmZml4XG4gIGFic3RyYWN0IHJlYWRvbmx5IHByZWZpeFRlbXBsYXRlOiBhbnk7XG4gIGFic3RyYWN0IHJlYWRvbmx5IHN1ZmZpeFRlbXBsYXRlOiBhbnk7XG5cbiAgLy8hIHBsYWNlaG9sZGVyXG4gIGFic3RyYWN0IHJlYWRvbmx5IHBsYWNlaG9sZGVyVGVtcGxhdGU6IGFueTtcblxuICByZWFkb25seSBzaG91bGREaXNwbGF5UGxhY2Vob2xkZXIgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiBCb29sZWFuKHRoaXMucGxhY2Vob2xkZXIoKSkgJiYgIXRoaXMuaW5wdXRNb2RlbC52YWx1ZSgpKTtcblxuICAvLyEgYXBwZWFyYW5jZVxuICByZWFkb25seSBhcHBlYXJhbmNlID0gaW5wdXQ8Rm9ybUVsZW1lbnRBcHBlYXJhbmNlPih0aGlzLl9ERUZBVUxUUy5hcHBlYXJhbmNlKTtcbiAgcmVhZG9ubHkgdmFyaWFudCA9IGlucHV0PEZvcm1FbGVtZW50VmFyaWFudD4odGhpcy5fREVGQVVMVFMudmFyaWFudCk7XG4gIHJlYWRvbmx5IGFsaWduVGV4dCA9IGlucHV0PFNpbXBsZU9uZUF4aXNBbGlnbm1lbnQ+KHRoaXMuX0RFRkFVTFRTLmFsaWduVGV4dCk7XG5cbiAgcmVhZG9ubHkgY29tcGFjdCA9IGlucHV0PGJvb2xlYW4sIGFueT4odGhpcy5fREVGQVVMVFMuY29tcGFjdCwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xuXG4gIHJlYWRvbmx5IG5nQ2xhc3NlcyA9IGNvbXB1dGVkKCgpOiBzdHJpbmcgPT5cbiAgICBbXG4gICAgICBgYXJkLWFwcGVhcmFuY2UtJHt0aGlzLmFwcGVhcmFuY2UoKX1gLFxuICAgICAgYGFyZC12YXJpYW50LSR7dGhpcy52YXJpYW50KCl9YCxcbiAgICAgIGBhcmQtdGV4dC1hbGlnbi0ke3RoaXMuYWxpZ25UZXh0KCl9YCxcbiAgICAgIHRoaXMuY29tcGFjdCgpID8gJ2FyZC1jb21wYWN0JyA6ICcnLFxuICAgICAgdGhpcy5jbGVhcmFibGUoKSA/ICdhcmQtY2xlYXJhYmxlJyA6ICcnLFxuICAgIF0uam9pbignICcpXG4gICk7XG5cbiAgLy8hIG90aGVyIGlucHV0c1xuICByZWFkb25seSBpbnB1dEF0dHJzID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgYW55Pj4odGhpcy5fREVGQVVMVFMuaW5wdXRBdHRycyk7XG5cbiAgLy8hIG51bWJlciBhdHRyaWJ1dGUgc2V0dGVycy9nZXR0ZXJzXG4gIHJlYWRvbmx5IG1heExlbmd0aCA9IGlucHV0PE51bGxhYmxlPG51bWJlcj4sIGFueT4odGhpcy5fREVGQVVMVFMubWF4TGVuZ3RoLCB7XG4gICAgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZU51bWJlclByb3BlcnR5KHYsIHRoaXMuX0RFRkFVTFRTLm1heExlbmd0aCksXG4gIH0pO1xuXG4gIC8vISBuby12YWx1ZSBhdHRyaWJ1dGUgc2V0dGVycy9nZXR0ZXJzXG4gIHJlYWRvbmx5IGNsZWFyYWJsZSA9IGlucHV0PGJvb2xlYW4sIGFueT4odGhpcy5fREVGQVVMVFMuY2xlYXJhYmxlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XG5cbiAgLy8hIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3IncyB3cml0ZSB2YWx1ZSBpbXBsZW1lbnRhdGlvblxuICB3cml0ZVZhbHVlKHY6IGFueSkge1xuICAgIHRoaXMuaW5wdXRNb2RlbC53cml0ZVZhbHVlKHYpO1xuICB9XG4gIC8vISB2YWx1ZSB0d28td2F5IGJpbmRpbmdcbiAgcHJvdGVjdGVkIF92YWx1ZUJlZm9yZUluaXQ/OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHY6IHN0cmluZyB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3dhc1ZpZXdJbml0KSB7XG4gICAgICB0aGlzLl92YWx1ZUJlZm9yZUluaXQgPSB2O1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLndyaXRlVmFsdWUodik7XG4gIH1cbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmlucHV0TW9kZWwudmFsdWUoKTtcbiAgfVxuICByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG91dHB1dDxzdHJpbmcgfCBudWxsPigpO1xuXG4gIC8vISBldmVudCBlbWl0dGVyc1xuICByZWFkb25seSBpbnB1dEV2ZW50ID0gb3V0cHV0PHN0cmluZyB8IG51bGw+KHsgYWxpYXM6ICdpbnB1dCcgfSk7XG4gIHJlYWRvbmx5IGNoYW5nZUV2ZW50ID0gb3V0cHV0PHN0cmluZyB8IG51bGw+KHsgYWxpYXM6ICdjaGFuZ2UnIH0pO1xuICByZWFkb25seSBjbGVhckV2ZW50ID0gb3V0cHV0PE1vdXNlRXZlbnQ+KHsgYWxpYXM6ICdjbGVhcicgfSk7XG5cbiAgLy8hIGV2ZW50IGhhbmRsZXJzXG4gIG9uSW5wdXQobmV3VmFsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZUhhc0NoYW5nZWQgPSB0aGlzLmlucHV0TW9kZWwud3JpdGVWYWx1ZShuZXdWYWwpO1xuICAgIGlmICghdmFsdWVIYXNDaGFuZ2VkKSByZXR1cm47XG4gICAgdGhpcy5fZW1pdElucHV0KCk7XG4gIH1cbiAgcHJvdGVjdGVkIF9lbWl0SW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2VSZWdpc3RlcmVkPy4odGhpcy52YWx1ZSk7XG4gICAgdGhpcy5pbnB1dEV2ZW50LmVtaXQodGhpcy52YWx1ZSk7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG4gIC8vZm9jdXMsIGJsdXIsIGNoYW5nZVxuICBvbkZvY3VzTWFzdGVyKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5vbkZvY3VzKGV2ZW50KTtcbiAgfVxuICBvbkJsdXJNYXN0ZXIoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQmx1cihldmVudCk7XG4gIH1cbiAgb25DaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xuICB9XG4gIHByb3RlY3RlZCBfZW1pdENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZUV2ZW50LmVtaXQodGhpcy5pbnB1dE1vZGVsLnZhbHVlKCkpO1xuICB9XG4gIC8vIGNsZWFyIGJ1dHRvblxuICByZWFkb25seSBzaG91bGRTaG93Q2xlYXJCdXR0b24gPSBjb21wdXRlZDxib29sZWFuPihcbiAgICAoKSA9PiB0aGlzLmNsZWFyYWJsZSgpICYmICF0aGlzLmRpc2FibGVkKCkgJiYgQm9vbGVhbih0aGlzLmlucHV0TW9kZWwudmFsdWUoKSlcbiAgKTtcbiAgb25DbGVhckJ1dHRvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5pbnB1dE1vZGVsLmNsZWFyKCk7XG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xuICAgIHRoaXMuX2VtaXRJbnB1dCgpO1xuICAgIHRoaXMuY2xlYXJFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLmZvY3VzKCk7XG4gIH1cblxuICAvLyEgY29weSBldmVudFxuICBvbkNvcHkoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy52YWx1ZSAmJlxuICAgICAgLy9kb2VzIHRoZSBzZWxlY3Rpb24gY292ZXIgdGhlIGVudGlyZSBpbnB1dFxuICAgICAgKCh0aGlzLnRleHRJbnB1dEVsKCk/Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IDAgJiZcbiAgICAgICAgdGhpcy50ZXh0SW5wdXRFbCgpPy5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PT0gdGhpcy50ZXh0SW5wdXRFbCgpPy5uYXRpdmVFbGVtZW50LnZhbHVlLmxlbmd0aCkgfHxcbiAgICAgICAgLy9vciBpcyB6ZXJvLXdpZGVcbiAgICAgICAgdGhpcy50ZXh0SW5wdXRFbCgpPy5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09PSB0aGlzLnRleHRJbnB1dEVsKCk/Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kKVxuICAgICkge1xuICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YT8uc2V0RGF0YSgndGV4dC9wbGFpbicsIHRoaXMudmFsdWUpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cbiAgLy8hIGhlbHBlcnNcbiAgcHJvdGVjdGVkIF9zZXRJbnB1dEF0dHJpYnV0ZXMoKSB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLnRleHRJbnB1dEVsKCkhLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIGF1dG9jb3JyZWN0OiAnb2ZmJyxcbiAgICAgIGF1dG9jYXBpdGFsaXplOiAnb2ZmJyxcbiAgICAgIGF1dG9jb21wbGV0ZTogJ29mZicsXG4gICAgICB0YWJpbmRleDogU3RyaW5nKHRoaXMudGFiSW5kZXgoKSksXG4gICAgICAuLi50aGlzLmlucHV0QXR0cnMoKSxcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoYXR0cmlidXRlcykpIHtcbiAgICAgIGlucHV0LnNldEF0dHJpYnV0ZShrZXksIFN0cmluZyhhdHRyaWJ1dGVzW2tleV0pKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX3NpbXBsZS1pbnB1dC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvX3NpbXBsZS1pbnB1dC1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsUUFBUSxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEYsT0FBTyxFQUFFLHVCQUF1QixFQUErQiwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RJLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFjakQsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQWtDO0lBQzFFLEdBQUcsMkJBQTJCO0lBQzlCLFVBQVUsRUFBRSxxQkFBcUIsQ0FBQyxRQUFRO0lBQzFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO0lBQ25DLE9BQU8sRUFBRSxLQUFLO0lBQ2QsV0FBVyxFQUFFLEVBQUU7SUFDZixTQUFTLEVBQUUsc0JBQXNCLENBQUMsSUFBSTtJQUN0QyxTQUFTLEVBQUUsS0FBSztJQUNoQixnQkFBZ0IsRUFBRSxPQUFPO0lBQ3pCLFVBQVUsRUFBRSxFQUFFO0lBQ2QsU0FBUyxFQUFFLFNBQVM7Q0FDckIsQ0FBQztBQUdGLE1BQU0sT0FBZ0IseUJBQTBCLFNBQVEsdUJBQXVCO0lBRC9FOztRQUlFLGNBQWM7UUFDTCxnQkFBVyxHQUFHLFNBQVMsQ0FBK0IsV0FBVyxDQUFDLENBQUM7UUFFekQs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RSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUNsRyxpQkFBaUI7Z0JBQ2pCLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxhQUFhLENBQUMsY0FBYyxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQ3RHLENBQUM7WUFDRCxLQUFLLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUNELFdBQVc7SUFDRCxtQkFBbUI7UUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRyxDQUFDLGFBQWEsQ0FBQztRQUNoRCxNQUFNLFVBQVUsR0FBMkI7WUFDekMsSUFBSSxFQUFFLE1BQU07WUFDWixXQUFXLEVBQUUsS0FBSztZQUNsQixjQUFjLEVBQUUsS0FBSztZQUNyQixZQUFZLEVBQUUsS0FBSztZQUNuQixRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7U0FDckIsQ0FBQztRQUVGLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDSCxDQUFDOytHQXRKbUIseUJBQXlCO21HQUF6Qix5QkFBeUI7OzRGQUF6Qix5QkFBeUI7a0JBRDlDLFNBQVM7OEJBbUVKLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIGNvbXB1dGVkLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGlucHV0LCBJbnB1dCwgb3V0cHV0LCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcclxuaW1wb3J0IHsgX0Zvcm1GaWVsZENvbXBvbmVudEJhc2UsIF9Gb3JtRmllbGRDb21wb25lbnREZWZhdWx0cywgX2Zvcm1GaWVsZENvbXBvbmVudERlZmF1bHRzIH0gZnJvbSAnLi4vX2ludGVybmFsL2Zvcm0tZmllbGQtY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2ltcGxlT25lQXhpc0FsaWdubWVudCB9IGZyb20gJy4vLi4vdHlwZXMvYWxpZ25tZW50LnR5cGVzJztcclxuaW1wb3J0IHsgRm9ybUVsZW1lbnRBcHBlYXJhbmNlLCBGb3JtRWxlbWVudFZhcmlhbnQgfSBmcm9tICcuLy4uL3R5cGVzL3RoZW1pbmcudHlwZXMnO1xyXG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJy4vLi4vdHlwZXMvdXRpbGl0eS50eXBlcyc7XHJcbmltcG9ydCB7IFNpbXBsZUlucHV0TW9kZWwgfSBmcm9tICcuL2lucHV0LXV0aWxzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgX1NpbXBsZUlucHV0Q29tcG9uZW50RGVmYXVsdHMgZXh0ZW5kcyBfRm9ybUZpZWxkQ29tcG9uZW50RGVmYXVsdHMge1xyXG4gIGFwcGVhcmFuY2U6IEZvcm1FbGVtZW50QXBwZWFyYW5jZTtcclxuICB2YXJpYW50OiBGb3JtRWxlbWVudFZhcmlhbnQ7XHJcbiAgY29tcGFjdDogYm9vbGVhbjtcclxuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG4gIGFsaWduVGV4dDogU2ltcGxlT25lQXhpc0FsaWdubWVudDtcclxuICBjbGVhcmFibGU6IGJvb2xlYW47XHJcbiAgY2xlYXJCdXR0b25UaXRsZTogc3RyaW5nO1xyXG4gIGlucHV0QXR0cnM6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcbiAgbWF4TGVuZ3RoOiBOdWxsYWJsZTxudW1iZXI+O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgX3NpbXBsZUlucHV0Q29tcG9uZW50RGVmYXVsdHM6IF9TaW1wbGVJbnB1dENvbXBvbmVudERlZmF1bHRzID0ge1xyXG4gIC4uLl9mb3JtRmllbGRDb21wb25lbnREZWZhdWx0cyxcclxuICBhcHBlYXJhbmNlOiBGb3JtRWxlbWVudEFwcGVhcmFuY2UuT3V0bGluZWQsXHJcbiAgdmFyaWFudDogRm9ybUVsZW1lbnRWYXJpYW50LlJvdW5kZWQsXHJcbiAgY29tcGFjdDogZmFsc2UsXHJcbiAgcGxhY2Vob2xkZXI6ICcnLFxyXG4gIGFsaWduVGV4dDogU2ltcGxlT25lQXhpc0FsaWdubWVudC5MZWZ0LFxyXG4gIGNsZWFyYWJsZTogZmFsc2UsXHJcbiAgY2xlYXJCdXR0b25UaXRsZTogJ0NsZWFyJyxcclxuICBpbnB1dEF0dHJzOiB7fSxcclxuICBtYXhMZW5ndGg6IHVuZGVmaW5lZCxcclxufTtcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgX1NpbXBsZUlucHV0Q29tcG9uZW50QmFzZSBleHRlbmRzIF9Gb3JtRmllbGRDb21wb25lbnRCYXNlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IF9ERUZBVUxUUyE6IF9TaW1wbGVJbnB1dENvbXBvbmVudERlZmF1bHRzO1xyXG5cclxuICAvLyEgaW5wdXQgdmlld1xyXG4gIHJlYWRvbmx5IHRleHRJbnB1dEVsID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+KCd0ZXh0SW5wdXQnKTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlucHV0TW9kZWwgPSBuZXcgU2ltcGxlSW5wdXRNb2RlbCh0aGlzKTtcclxuICBwcml2YXRlIF93YXNWaWV3SW5pdCA9IGZhbHNlO1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3dhc1ZpZXdJbml0ID0gdHJ1ZTtcclxuICAgIHRoaXMuX3NldElucHV0QXR0cmlidXRlcygpO1xyXG4gICAgLy9zZXQgdGhlIHZhbHVlXHJcbiAgICBpZiAodGhpcy5fdmFsdWVCZWZvcmVJbml0KSB7XHJcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLl92YWx1ZUJlZm9yZUluaXQpO1xyXG4gICAgICBkZWxldGUgdGhpcy5fdmFsdWVCZWZvcmVJbml0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KHRoaXMuX0RFRkFVTFRTLnBsYWNlaG9sZGVyKTtcclxuICByZWFkb25seSBpbnB1dElkID0gaW5wdXQ8TnVsbGFibGU8c3RyaW5nPj4odW5kZWZpbmVkKTtcclxuICByZWFkb25seSBjbGVhckJ1dHRvblRpdGxlID0gaW5wdXQ8c3RyaW5nPih0aGlzLl9ERUZBVUxUUy5jbGVhckJ1dHRvblRpdGxlKTtcclxuXHJcbiAgLy8hIHByZWZpeCAmIHN1ZmZpeFxyXG4gIGFic3RyYWN0IHJlYWRvbmx5IHByZWZpeFRlbXBsYXRlOiBhbnk7XHJcbiAgYWJzdHJhY3QgcmVhZG9ubHkgc3VmZml4VGVtcGxhdGU6IGFueTtcclxuXHJcbiAgLy8hIHBsYWNlaG9sZGVyXHJcbiAgYWJzdHJhY3QgcmVhZG9ubHkgcGxhY2Vob2xkZXJUZW1wbGF0ZTogYW55O1xyXG5cclxuICByZWFkb25seSBzaG91bGREaXNwbGF5UGxhY2Vob2xkZXIgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiBCb29sZWFuKHRoaXMucGxhY2Vob2xkZXIoKSkgJiYgIXRoaXMuaW5wdXRNb2RlbC52YWx1ZSgpKTtcclxuXHJcbiAgLy8hIGFwcGVhcmFuY2VcclxuICByZWFkb25seSBhcHBlYXJhbmNlID0gaW5wdXQ8Rm9ybUVsZW1lbnRBcHBlYXJhbmNlPih0aGlzLl9ERUZBVUxUUy5hcHBlYXJhbmNlKTtcclxuICByZWFkb25seSB2YXJpYW50ID0gaW5wdXQ8Rm9ybUVsZW1lbnRWYXJpYW50Pih0aGlzLl9ERUZBVUxUUy52YXJpYW50KTtcclxuICByZWFkb25seSBhbGlnblRleHQgPSBpbnB1dDxTaW1wbGVPbmVBeGlzQWxpZ25tZW50Pih0aGlzLl9ERUZBVUxUUy5hbGlnblRleHQpO1xyXG5cclxuICByZWFkb25seSBjb21wYWN0ID0gaW5wdXQ8Ym9vbGVhbiwgYW55Pih0aGlzLl9ERUZBVUxUUy5jb21wYWN0LCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcblxyXG4gIHJlYWRvbmx5IG5nQ2xhc3NlcyA9IGNvbXB1dGVkKCgpOiBzdHJpbmcgPT5cclxuICAgIFtcclxuICAgICAgYGFyZC1hcHBlYXJhbmNlLSR7dGhpcy5hcHBlYXJhbmNlKCl9YCxcclxuICAgICAgYGFyZC12YXJpYW50LSR7dGhpcy52YXJpYW50KCl9YCxcclxuICAgICAgYGFyZC10ZXh0LWFsaWduLSR7dGhpcy5hbGlnblRleHQoKX1gLFxyXG4gICAgICB0aGlzLmNvbXBhY3QoKSA/ICdhcmQtY29tcGFjdCcgOiAnJyxcclxuICAgICAgdGhpcy5jbGVhcmFibGUoKSA/ICdhcmQtY2xlYXJhYmxlJyA6ICcnLFxyXG4gICAgXS5qb2luKCcgJylcclxuICApO1xyXG5cclxuICAvLyEgb3RoZXIgaW5wdXRzXHJcbiAgcmVhZG9ubHkgaW5wdXRBdHRycyA9IGlucHV0PFJlY29yZDxzdHJpbmcsIGFueT4+KHRoaXMuX0RFRkFVTFRTLmlucHV0QXR0cnMpO1xyXG5cclxuICAvLyEgbnVtYmVyIGF0dHJpYnV0ZSBzZXR0ZXJzL2dldHRlcnNcclxuICByZWFkb25seSBtYXhMZW5ndGggPSBpbnB1dDxOdWxsYWJsZTxudW1iZXI+LCBhbnk+KHRoaXMuX0RFRkFVTFRTLm1heExlbmd0aCwge1xyXG4gICAgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZU51bWJlclByb3BlcnR5KHYsIHRoaXMuX0RFRkFVTFRTLm1heExlbmd0aCksXHJcbiAgfSk7XHJcblxyXG4gIC8vISBuby12YWx1ZSBhdHRyaWJ1dGUgc2V0dGVycy9nZXR0ZXJzXHJcbiAgcmVhZG9ubHkgY2xlYXJhYmxlID0gaW5wdXQ8Ym9vbGVhbiwgYW55Pih0aGlzLl9ERUZBVUxUUy5jbGVhcmFibGUsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgLy8hIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3IncyB3cml0ZSB2YWx1ZSBpbXBsZW1lbnRhdGlvblxyXG4gIHdyaXRlVmFsdWUodjogYW55KSB7XHJcbiAgICB0aGlzLmlucHV0TW9kZWwud3JpdGVWYWx1ZSh2KTtcclxuICB9XHJcbiAgLy8hIHZhbHVlIHR3by13YXkgYmluZGluZ1xyXG4gIHByb3RlY3RlZCBfdmFsdWVCZWZvcmVJbml0Pzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KClcclxuICBzZXQgdmFsdWUodjogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgaWYgKCF0aGlzLl93YXNWaWV3SW5pdCkge1xyXG4gICAgICB0aGlzLl92YWx1ZUJlZm9yZUluaXQgPSB2O1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLndyaXRlVmFsdWUodik7XHJcbiAgfVxyXG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmlucHV0TW9kZWwudmFsdWUoKTtcclxuICB9XHJcbiAgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBvdXRwdXQ8c3RyaW5nIHwgbnVsbD4oKTtcclxuXHJcbiAgLy8hIGV2ZW50IGVtaXR0ZXJzXHJcbiAgcmVhZG9ubHkgaW5wdXRFdmVudCA9IG91dHB1dDxzdHJpbmcgfCBudWxsPih7IGFsaWFzOiAnaW5wdXQnIH0pO1xyXG4gIHJlYWRvbmx5IGNoYW5nZUV2ZW50ID0gb3V0cHV0PHN0cmluZyB8IG51bGw+KHsgYWxpYXM6ICdjaGFuZ2UnIH0pO1xyXG4gIHJlYWRvbmx5IGNsZWFyRXZlbnQgPSBvdXRwdXQ8TW91c2VFdmVudD4oeyBhbGlhczogJ2NsZWFyJyB9KTtcclxuXHJcbiAgLy8hIGV2ZW50IGhhbmRsZXJzXHJcbiAgb25JbnB1dChuZXdWYWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsdWVIYXNDaGFuZ2VkID0gdGhpcy5pbnB1dE1vZGVsLndyaXRlVmFsdWUobmV3VmFsKTtcclxuICAgIGlmICghdmFsdWVIYXNDaGFuZ2VkKSByZXR1cm47XHJcbiAgICB0aGlzLl9lbWl0SW5wdXQoKTtcclxuICB9XHJcbiAgcHJvdGVjdGVkIF9lbWl0SW5wdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQ/Lih0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMuaW5wdXRFdmVudC5lbWl0KHRoaXMudmFsdWUpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xyXG4gIH1cclxuICAvL2ZvY3VzLCBibHVyLCBjaGFuZ2VcclxuICBvbkZvY3VzTWFzdGVyKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uRm9jdXMoZXZlbnQpO1xyXG4gIH1cclxuICBvbkJsdXJNYXN0ZXIoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMub25CbHVyKGV2ZW50KTtcclxuICB9XHJcbiAgb25DaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcclxuICB9XHJcbiAgcHJvdGVjdGVkIF9lbWl0Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KHRoaXMuaW5wdXRNb2RlbC52YWx1ZSgpKTtcclxuICB9XHJcbiAgLy8gY2xlYXIgYnV0dG9uXHJcbiAgcmVhZG9ubHkgc2hvdWxkU2hvd0NsZWFyQnV0dG9uID0gY29tcHV0ZWQ8Ym9vbGVhbj4oXHJcbiAgICAoKSA9PiB0aGlzLmNsZWFyYWJsZSgpICYmICF0aGlzLmRpc2FibGVkKCkgJiYgQm9vbGVhbih0aGlzLmlucHV0TW9kZWwudmFsdWUoKSlcclxuICApO1xyXG4gIG9uQ2xlYXJCdXR0b25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmlucHV0TW9kZWwuY2xlYXIoKTtcclxuICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcclxuICAgIHRoaXMuX2VtaXRJbnB1dCgpO1xyXG4gICAgdGhpcy5jbGVhckV2ZW50LmVtaXQoZXZlbnQpO1xyXG4gICAgdGhpcy5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGNvcHkgZXZlbnRcclxuICBvbkNvcHkoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMudmFsdWUgJiZcclxuICAgICAgLy9kb2VzIHRoZSBzZWxlY3Rpb24gY292ZXIgdGhlIGVudGlyZSBpbnB1dFxyXG4gICAgICAoKHRoaXMudGV4dElucHV0RWwoKT8ubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCAmJlxyXG4gICAgICAgIHRoaXMudGV4dElucHV0RWwoKT8ubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPT09IHRoaXMudGV4dElucHV0RWwoKT8ubmF0aXZlRWxlbWVudC52YWx1ZS5sZW5ndGgpIHx8XHJcbiAgICAgICAgLy9vciBpcyB6ZXJvLXdpZGVcclxuICAgICAgICB0aGlzLnRleHRJbnB1dEVsKCk/Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IHRoaXMudGV4dElucHV0RWwoKT8ubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQpXHJcbiAgICApIHtcclxuICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YT8uc2V0RGF0YSgndGV4dC9wbGFpbicsIHRoaXMudmFsdWUpO1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyEgaGVscGVyc1xyXG4gIHByb3RlY3RlZCBfc2V0SW5wdXRBdHRyaWJ1dGVzKCkge1xyXG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLnRleHRJbnB1dEVsKCkhLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgIGF1dG9jb3JyZWN0OiAnb2ZmJyxcclxuICAgICAgYXV0b2NhcGl0YWxpemU6ICdvZmYnLFxyXG4gICAgICBhdXRvY29tcGxldGU6ICdvZmYnLFxyXG4gICAgICB0YWJpbmRleDogU3RyaW5nKHRoaXMudGFiSW5kZXgoKSksXHJcbiAgICAgIC4uLnRoaXMuaW5wdXRBdHRycygpLFxyXG4gICAgfTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKSkge1xyXG4gICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoa2V5LCBTdHJpbmcoYXR0cmlidXRlc1trZXldKSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,12 +1,12 @@
1
1
  import { ChangeDetectionStrategy, Component, Inject, Input, ViewEncapsulation, computed, effect, forwardRef, input, output, viewChildren, } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { coerceBooleanProperty } from '@ardium-ui/devkit';
4
- import { _NgModelComponentBase } from '../../_internal/ngmodel-component';
4
+ import { _FormFieldComponentBase } from '../../_internal/form-field-component';
5
5
  import { ARD_DIGIT_INPUT_DEFAULTS } from './digit-input.defaults';
6
6
  import { DigitInputModel } from './digit-input.model';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/common";
9
- export class ArdiumDigitInputComponent extends _NgModelComponentBase {
9
+ export class ArdiumDigitInputComponent extends _FormFieldComponentBase {
10
10
  constructor(defaults) {
11
11
  super(defaults);
12
12
  //! inputs ref
@@ -38,6 +38,7 @@ export class ArdiumDigitInputComponent extends _NgModelComponentBase {
38
38
  });
39
39
  //! value two-way binding
40
40
  this.outputAsString = input(this._DEFAULTS.outputAsString, { transform: v => coerceBooleanProperty(v) });
41
+ this.outputControlValueAccessorOnFinish = input(false, { transform: v => coerceBooleanProperty(v) });
41
42
  this.valueChange = output();
42
43
  this.stringValue = this.model.stringValue;
43
44
  this.emittableValue = computed(() => {
@@ -50,6 +51,10 @@ export class ArdiumDigitInputComponent extends _NgModelComponentBase {
50
51
  this.focusIndexEvent = output({ alias: 'focusIndex' });
51
52
  this.blurIndexEvent = output({ alias: 'blurIndex' });
52
53
  }
54
+ ngOnInit() {
55
+ super.ngOnInit();
56
+ this._oldConfigArrayDataLength = this.configArrayData().length;
57
+ }
53
58
  isInputEmpty(index) {
54
59
  return !this.model.isDefinedAtIndex(index);
55
60
  }
@@ -80,17 +85,20 @@ export class ArdiumDigitInputComponent extends _NgModelComponentBase {
80
85
  this.focusByIndex(index - 1 + Math.min(value.length, maxLength));
81
86
  }
82
87
  onInput(event, index) {
83
- this._updateSingleInputValue(event.target.value, index);
88
+ const wasChanged = this._updateSingleInputValue(event.target.value, index);
89
+ if (!wasChanged)
90
+ return;
84
91
  this.focusByIndex(index + 1);
85
92
  }
86
93
  _updateSingleInputValue(value, index) {
87
- const valueChanged = this.model.validateInputAndSetValue(value, index);
88
- if (!valueChanged || !valueChanged[0])
89
- return;
94
+ const changeResult = this.model.validateInputAndSetValue(value, index);
95
+ if (!changeResult?.wasChanged)
96
+ return false;
90
97
  this._emitChange();
91
98
  if (this.model.isValueFull()) {
92
99
  this.blur();
93
100
  }
101
+ return true;
94
102
  }
95
103
  focusByIndex(index, tryFocusingNext, direction) {
96
104
  if (index < 0 || index >= this.inputs().length)
@@ -115,7 +123,8 @@ export class ArdiumDigitInputComponent extends _NgModelComponentBase {
115
123
  }
116
124
  _emitChange() {
117
125
  const v = this.emittableValue();
118
- this._onChangeRegistered?.(v);
126
+ if (!this.outputControlValueAccessorOnFinish() || this.model.isValueFull())
127
+ this._onChangeRegistered?.(v);
119
128
  this.valueChange.emit(v);
120
129
  if (this.model.isValueFull()) {
121
130
  this.finishedValue.emit(v);
@@ -144,13 +153,17 @@ export class ArdiumDigitInputComponent extends _NgModelComponentBase {
144
153
  }
145
154
  }
146
155
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumDigitInputComponent, deps: [{ token: ARD_DIGIT_INPUT_DEFAULTS }], target: i0.ɵɵFactoryTarget.Component }); }
147
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ArdiumDigitInputComponent, selector: "ard-digit-input", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, outputAsString: { classPropertyName: "outputAsString", publicName: "outputAsString", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", finishedValue: "finishedValue", focusIndexEvent: "focusIndex", blurIndexEvent: "blurIndex" }, providers: [
156
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ArdiumDigitInputComponent, selector: "ard-digit-input", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, outputAsString: { classPropertyName: "outputAsString", publicName: "outputAsString", isSignal: true, isRequired: false, transformFunction: null }, outputControlValueAccessorOnFinish: { classPropertyName: "outputControlValueAccessorOnFinish", publicName: "outputControlValueAccessorOnFinish", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", finishedValue: "finishedValue", focusIndexEvent: "focusIndex", blurIndexEvent: "blurIndex" }, providers: [
148
157
  {
149
158
  provide: NG_VALUE_ACCESSOR,
150
159
  useExisting: forwardRef(() => ArdiumDigitInputComponent),
151
160
  multi: true,
152
161
  },
153
- ], viewQueries: [{ propertyName: "inputs", predicate: ["input"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"ard-digit-input\"\n [ngClass]=\"ngClasses()\"\n>\n @for (data of configArrayData(); track $index) {\n <div class=\"ard-digit-input__item\">\n @if (data.type === 'input') {\n <input\n #input\n #focusableElement\n class=\"ard-digit-input__input\"\n type=\"text\"\n autocomplete=\"off\"\n [readonly]=\"data.readonly\"\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\n (paste)=\"onPaste($event, data.index!)\"\n (input)=\"onInput($event, data.index!)\"\n (focus)=\"onFocusMaster($event, data.index!)\"\n (blur)=\"onBlurMaster($event, data.index!)\"\n (keydown)=\"onKeydown($event, data.index!)\"\n />\n } @else {\n <div class=\"ard-digit-input__static\">\n {{ data.char }}\n </div>\n }\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
162
+ {
163
+ provide: _FormFieldComponentBase,
164
+ useExisting: ArdiumDigitInputComponent,
165
+ },
166
+ ], viewQueries: [{ propertyName: "inputs", predicate: ["input"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-digit-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-error]=\"hasError()\"\r\n>\r\n @for (data of configArrayData(); track $index) {\r\n <div\r\n class=\"ard-digit-input__item\"\r\n [class.ard-digit-input__item-with-input]=\"data.type === 'input'\"\r\n >\r\n @if (data.type === 'input') {\r\n <input\r\n #input\r\n #focusableElement\r\n class=\"ard-digit-input__input\"\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [readonly]=\"data.readonly\"\r\n [placeholder]=\"data.placeholder\"\r\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\r\n (paste)=\"onPaste($event, data.index!)\"\r\n (input)=\"onInput($event, data.index!)\"\r\n (focus)=\"onFocusMaster($event, data.index!)\"\r\n (blur)=\"onBlurMaster($event, data.index!)\"\r\n (keydown)=\"onKeydown($event, data.index!)\"\r\n />\r\n } @else {\r\n <div class=\"ard-digit-input__static\">\r\n {{ data.char }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
154
167
  }
155
168
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumDigitInputComponent, decorators: [{
156
169
  type: Component,
@@ -160,11 +173,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
160
173
  useExisting: forwardRef(() => ArdiumDigitInputComponent),
161
174
  multi: true,
162
175
  },
163
- ], template: "<div\n class=\"ard-digit-input\"\n [ngClass]=\"ngClasses()\"\n>\n @for (data of configArrayData(); track $index) {\n <div class=\"ard-digit-input__item\">\n @if (data.type === 'input') {\n <input\n #input\n #focusableElement\n class=\"ard-digit-input__input\"\n type=\"text\"\n autocomplete=\"off\"\n [readonly]=\"data.readonly\"\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\n (paste)=\"onPaste($event, data.index!)\"\n (input)=\"onInput($event, data.index!)\"\n (focus)=\"onFocusMaster($event, data.index!)\"\n (blur)=\"onBlurMaster($event, data.index!)\"\n (keydown)=\"onKeydown($event, data.index!)\"\n />\n } @else {\n <div class=\"ard-digit-input__static\">\n {{ data.char }}\n </div>\n }\n </div>\n }\n</div>\n" }]
176
+ {
177
+ provide: _FormFieldComponentBase,
178
+ useExisting: ArdiumDigitInputComponent,
179
+ },
180
+ ], template: "<div\r\n class=\"ard-digit-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-error]=\"hasError()\"\r\n>\r\n @for (data of configArrayData(); track $index) {\r\n <div\r\n class=\"ard-digit-input__item\"\r\n [class.ard-digit-input__item-with-input]=\"data.type === 'input'\"\r\n >\r\n @if (data.type === 'input') {\r\n <input\r\n #input\r\n #focusableElement\r\n class=\"ard-digit-input__input\"\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [readonly]=\"data.readonly\"\r\n [placeholder]=\"data.placeholder\"\r\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\r\n (paste)=\"onPaste($event, data.index!)\"\r\n (input)=\"onInput($event, data.index!)\"\r\n (focus)=\"onFocusMaster($event, data.index!)\"\r\n (blur)=\"onBlurMaster($event, data.index!)\"\r\n (keydown)=\"onKeydown($event, data.index!)\"\r\n />\r\n } @else {\r\n <div class=\"ard-digit-input__static\">\r\n {{ data.char }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n" }]
164
181
  }], ctorParameters: () => [{ type: undefined, decorators: [{
165
182
  type: Inject,
166
183
  args: [ARD_DIGIT_INPUT_DEFAULTS]
167
184
  }] }], propDecorators: { value: [{
168
185
  type: Input
169
186
  }] } });
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFDTCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBeUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQWtCdEQsTUFBTSxPQUFPLHlCQUEwQixTQUFRLHFCQUFxQjtJQUVsRSxZQUE4QyxRQUErQjtRQUMzRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFHbEIsY0FBYztRQUNMLFdBQU0sR0FBRyxZQUFZLENBQStCLE9BQU8sQ0FBQyxDQUFDO1FBRXRFLGNBQWM7UUFDRyxVQUFLLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkQsY0FBYztRQUNMLGVBQVUsR0FBRyxLQUFLLENBQXdCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFD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LElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixPQUFPO1FBQ1gsQ0FBQztJQUNILENBQUM7K0dBN0pVLHlCQUF5QixrQkFFaEIsd0JBQXdCO21HQUZqQyx5QkFBeUIsNGpDQVJ6QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7Z0JBQ3hELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixxSkNuQ0gscTlCQThCQTs7NEZET2EseUJBQXlCO2tCQWRyQyxTQUFTOytCQUNFLGlCQUFpQixpQkFHWixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDOzRCQUN4RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs7MEJBSVksTUFBTTsyQkFBQyx3QkFBd0I7eUNBd0R4QyxLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgZm9yd2FyZFJlZixcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgdmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcbmltcG9ydCB7IF9OZ01vZGVsQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL19pbnRlcm5hbC9uZ21vZGVsLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtRWxlbWVudEFwcGVhcmFuY2UsIEZvcm1FbGVtZW50VmFyaWFudCB9IGZyb20gJy4uLy4uL3R5cGVzL3RoZW1pbmcudHlwZXMnO1xuaW1wb3J0IHsgQVJEX0RJR0lUX0lOUFVUX0RFRkFVTFRTLCBBcmREaWdpdElucHV0RGVmYXVsdHMgfSBmcm9tICcuL2RpZ2l0LWlucHV0LmRlZmF1bHRzJztcbmltcG9ydCB7IERpZ2l0SW5wdXRNb2RlbCB9IGZyb20gJy4vZGlnaXQtaW5wdXQubW9kZWwnO1xuaW1wb3J0IHsgRGlnaXRJbnB1dENvbmZpZywgRGlnaXRJbnB1dFNoYXBlIH0gZnJvbSAnLi9kaWdpdC1pbnB1dC50eXBlcyc7XG5pbXBvcnQgeyBEaWdpdElucHV0TW9kZWxIb3N0IH0gZnJvbSAnLi9kaWdpdC1pbnB1dC51dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FyZC1kaWdpdC1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWdpdC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RpZ2l0LWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFyZGl1bURpZ2l0SW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXJkaXVtRGlnaXRJbnB1dENvbXBvbmVudCBleHRlbmRzIF9OZ01vZGVsQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBEaWdpdElucHV0TW9kZWxIb3N0IHtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IF9ERUZBVUxUUyE6IEFyZERpZ2l0SW5wdXREZWZhdWx0cztcbiAgY29uc3RydWN0b3IoQEluamVjdChBUkRfRElHSVRfSU5QVVRfREVGQVVMVFMpIGRlZmF1bHRzOiBBcmREaWdpdElucHV0RGVmYXVsdHMpIHtcbiAgICBzdXBlcihkZWZhdWx0cyk7XG4gIH1cblxuICAvLyEgaW5wdXRzIHJlZlxuICByZWFkb25seSBpbnB1dHMgPSB2aWV3Q2hpbGRyZW48RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ2lucHV0Jyk7XG5cbiAgLy8hIGRhdGEgbW9kZWxcbiAgcHJpdmF0ZSByZWFkb25seSBtb2RlbCA9IG5ldyBEaWdpdElucHV0TW9kZWwodGhpcyk7XG5cbiAgLy8hIGFwcGVhcmFuY2VcbiAgcmVhZG9ubHkgYXBwZWFyYW5jZSA9IGlucHV0PEZvcm1FbGVtZW50QXBwZWFyYW5jZT4odGhpcy5fREVGQVVMVFMuYXBwZWFyYW5jZSk7XG4gIHJlYWRvbmx5IHZhcmlhbnQgPSBpbnB1dDxGb3JtRWxlbWVudFZhcmlhbnQ+KHRoaXMuX0RFRkFVTFRTLnZhcmlhbnQpO1xuICByZWFkb25seSBzaGFwZSA9IGlucHV0PERpZ2l0SW5wdXRTaGFwZT4odGhpcy5fREVGQVVMVFMuc2hhcGUpO1xuXG4gIHJlYWRvbmx5IGNvbXBhY3QgPSBpbnB1dDxib29sZWFuLCBhbnk+KHRoaXMuX0RFRkFVTFRTLmNvbXBhY3QsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcblxuICByZWFkb25seSBuZ0NsYXNzZXMgPSBjb21wdXRlZCgoKTogc3RyaW5nID0+XG4gICAgW1xuICAgICAgYGFyZC1hcHBlYXJhbmNlLSR7dGhpcy5hcHBlYXJhbmNlKCl9YCxcbiAgICAgIGBhcmQtdmFyaWFudC0ke3RoaXMudmFyaWFudCgpfWAsXG4gICAgICBgYXJkLXNoYXBlLSR7dGhpcy5zaGFwZSgpfWAsXG4gICAgICB0aGlzLmNvbXBhY3QoKSA/ICdhcmQtY29tcGFjdCcgOiAnJyxcbiAgICBdLmpvaW4oJyAnKVxuICApO1xuXG4gIC8vISBtb2RlbCBhY2Nlc3MgcG9pbnRzXG4gIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPHZvaWQsIERpZ2l0SW5wdXRDb25maWc+KHtcbiAgICB0cmFuc2Zvcm06IHYgPT4gdGhpcy5tb2RlbC5zZXRDb25maWcodiksXG4gIH0pO1xuICByZWFkb25seSBjb25maWdBcnJheURhdGEgPSB0aGlzLm1vZGVsLmNvbmZpZ0FycmF5RGF0YTtcblxuICBwcml2YXRlIF9vbGRDb25maWdBcnJheURhdGFMZW5ndGggPSAtMTtcbiAgcmVhZG9ubHkgY29uZmlnQXJyYXlEYXRhRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGhpcy5jb25maWdBcnJheURhdGEoKS5sZW5ndGggPT09IHRoaXMuX29sZENvbmZpZ0FycmF5RGF0YUxlbmd0aCkgcmV0dXJuO1xuXG4gICAgdGhpcy5fb2xkQ29uZmlnQXJyYXlEYXRhTGVuZ3RoID0gdGhpcy5jb25maWdBcnJheURhdGEoKS5sZW5ndGg7XG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xuICB9KTtcblxuICBpc0lucHV0RW1wdHkoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5tb2RlbC5pc0RlZmluZWRBdEluZGV4KGluZGV4KTtcbiAgfVxuXG4gIC8vISBjb250cm9sIHZhbHVlIGFjY2Vzc29yJ3Mgd3JpdGUgdmFsdWUgaW1wbGVtZW50YXRpb25cbiAgd3JpdGVWYWx1ZSh2OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl93cml0ZVZhbHVlKHYpO1xuICB9XG4gIHByaXZhdGUgX3dyaXRlVmFsdWUodjogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWwud3JpdGVWYWx1ZSh2KTtcbiAgfVxuXG4gIC8vISB2YWx1ZSB0d28td2F5IGJpbmRpbmdcbiAgcmVhZG9ubHkgb3V0cHV0QXNTdHJpbmcgPSBpbnB1dDxib29sZWFuLCBhbnk+KHRoaXMuX0RFRkFVTFRTLm91dHB1dEFzU3RyaW5nLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XG5cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHY6IHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbCkge1xuICAgIHRoaXMud3JpdGVWYWx1ZSh2KTtcbiAgfVxuICByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG91dHB1dDxzdHJpbmcgfCAoc3RyaW5nIHwgbnVsbClbXSB8IG51bGw+KCk7XG5cbiAgcmVhZG9ubHkgc3RyaW5nVmFsdWUgPSB0aGlzLm1vZGVsLnN0cmluZ1ZhbHVlO1xuXG4gIHJlYWRvbmx5IGVtaXR0YWJsZVZhbHVlID0gY29tcHV0ZWQoKCk6IHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbCA9PiB7XG4gICAgaWYgKHRoaXMub3V0cHV0QXNTdHJpbmcoKSkgcmV0dXJuIHRoaXMubW9kZWwuc3RyaW5nVmFsdWUoKTtcbiAgICByZXR1cm4gdGhpcy5tb2RlbC52YWx1ZSgpO1xuICB9KTtcblxuICAvLyEgZXZlbnQgZW1pdHRlcnNcbiAgcmVhZG9ubHkgZmluaXNoZWRWYWx1ZSA9IG91dHB1dDxzdHJpbmcgfCAoc3RyaW5nIHwgbnVsbClbXSB8IG51bGw+KCk7XG5cbiAgcmVhZG9ubHkgZm9jdXNJbmRleEV2ZW50ID0gb3V0cHV0PG51bWJlcj4oeyBhbGlhczogJ2ZvY3VzSW5kZXgnIH0pO1xuICByZWFkb25seSBibHVySW5kZXhFdmVudCA9IG91dHB1dDxudW1iZXI+KHsgYWxpYXM6ICdibHVySW5kZXgnIH0pO1xuXG4gIC8vISBldmVudCBoYW5kbGVyc1xuICBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgbWF4TGVuZ3RoID0gdGhpcy5pbnB1dHMoKS5sZW5ndGggLSBpbmRleDtcbiAgICB2YWx1ZVxuICAgICAgLnNsaWNlKDAsIG1heExlbmd0aClcbiAgICAgIC5zcGxpdCgnJylcbiAgICAgIC5mb3JFYWNoKChjaGFyLCBpKSA9PiB7XG4gICAgICAgIHRoaXMubW9kZWwudmFsaWRhdGVJbnB1dEFuZFNldFZhbHVlKGNoYXIsIGluZGV4ICsgaSk7XG4gICAgICB9KTtcbiAgICB0aGlzLmZvY3VzQnlJbmRleChpbmRleCAtIDEgKyBNYXRoLm1pbih2YWx1ZS5sZW5ndGgsIG1heExlbmd0aCkpO1xuICB9XG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fdXBkYXRlU2luZ2xlSW5wdXRWYWx1ZSgoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLCBpbmRleCk7XG4gICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyAxKTtcbiAgfVxuICBwcml2YXRlIF91cGRhdGVTaW5nbGVJbnB1dFZhbHVlKHZhbHVlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZUNoYW5nZWQgPSB0aGlzLm1vZGVsLnZhbGlkYXRlSW5wdXRBbmRTZXRWYWx1ZSh2YWx1ZSwgaW5kZXgpO1xuICAgIGlmICghdmFsdWVDaGFuZ2VkIHx8ICF2YWx1ZUNoYW5nZWRbMF0pIHJldHVybjtcblxuICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcblxuICAgIGlmICh0aGlzLm1vZGVsLmlzVmFsdWVGdWxsKCkpIHtcbiAgICAgIHRoaXMuYmx1cigpO1xuICAgIH1cbiAgfVxuICBmb2N1c0J5SW5kZXgoaW5kZXg6IG51bWJlcik6IGJvb2xlYW47XG4gIGZvY3VzQnlJbmRleChpbmRleDogbnVtYmVyLCB0cnlGb2N1c2luZ05leHQ6IGJvb2xlYW4sIGRpcmVjdGlvbjogMSB8IC0xKTogYm9vbGVhbjtcbiAgZm9jdXNCeUluZGV4KGluZGV4OiBudW1iZXIsIHRyeUZvY3VzaW5nTmV4dD86IGJvb2xlYW4sIGRpcmVjdGlvbj86IDEgfCAtMSk6IGJvb2xlYW4ge1xuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5pbnB1dHMoKS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBuZXh0RWwgPSB0aGlzLmlucHV0cygpW2luZGV4XT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIW5leHRFbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgbmV4dEVsLmZvY3VzKCk7XG4gICAgaWYgKHRyeUZvY3VzaW5nTmV4dCAmJiBkaXJlY3Rpb24gJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gbmV4dEVsKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyBkaXJlY3Rpb24pO1xuICAgIH1cbiAgICByZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gbmV4dEVsO1xuICB9XG4gIC8vZm9jdXMsIGJsdXIsIGNoYW5nZVxuICBvbkZvY3VzTWFzdGVyKGV2ZW50OiBGb2N1c0V2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c0luZGV4RXZlbnQuZW1pdChpbmRleCk7XG4gICAgdGhpcy5vbkZvY3VzKGV2ZW50KTtcbiAgfVxuICBvbkJsdXJNYXN0ZXIoZXZlbnQ6IEZvY3VzRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmJsdXJJbmRleEV2ZW50LmVtaXQoaW5kZXgpO1xuICAgIHRoaXMub25CbHVyKGV2ZW50KTtcbiAgfVxuICBwcm90ZWN0ZWQgX2VtaXRDaGFuZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgdiA9IHRoaXMuZW1pdHRhYmxlVmFsdWUoKTtcbiAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQ/Lih2KTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodik7XG4gICAgaWYgKHRoaXMubW9kZWwuaXNWYWx1ZUZ1bGwoKSkge1xuICAgICAgdGhpcy5maW5pc2hlZFZhbHVlLmVtaXQodik7XG4gICAgfVxuICB9XG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICB0aGlzLmZvY3VzQnlJbmRleChpbmRleCAtIDEsIHRydWUsIC0xKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KGluZGV4ICsgMSwgdHJ1ZSwgKzEpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgoMCwgdHJ1ZSwgMSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KHRoaXMuaW5wdXRzLmxlbmd0aCAtIDEsIHRydWUsIC0xKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgIGNhc2UgJ0RlbGV0ZSc6XG4gICAgICAgIHRoaXMuX3VwZGF0ZVNpbmdsZUlucHV0VmFsdWUoJycsIGluZGV4KTtcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggLSAxLCB0cnVlLCAtMSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRcIlxuICBbbmdDbGFzc109XCJuZ0NsYXNzZXMoKVwiXG4+XG4gIEBmb3IgKGRhdGEgb2YgY29uZmlnQXJyYXlEYXRhKCk7IHRyYWNrICRpbmRleCkge1xuICAgIDxkaXYgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRfX2l0ZW1cIj5cbiAgICAgIEBpZiAoZGF0YS50eXBlID09PSAnaW5wdXQnKSB7XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICNmb2N1c2FibGVFbGVtZW50XG4gICAgICAgICAgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRfX2lucHV0XCJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwiZGF0YS5yZWFkb25seVwiXG4gICAgICAgICAgW2NsYXNzLmFyZC1kaWdpdC1pbnB1dF9faW5wdXQtcmVhZG9ubHldPVwiZGF0YS5yZWFkb25seVwiXG4gICAgICAgICAgW2NsYXNzLmFyZC1kaWdpdC1pbnB1dF9faW5wdXQtZW1wdHldPVwiaXNJbnB1dEVtcHR5KGRhdGEuaW5kZXghKVwiXG4gICAgICAgICAgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxuICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudCwgZGF0YS5pbmRleCEpXCJcbiAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1c01hc3RlcigkZXZlbnQsIGRhdGEuaW5kZXghKVwiXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVyTWFzdGVyKCRldmVudCwgZGF0YS5pbmRleCEpXCJcbiAgICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxuICAgICAgICAvPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRfX3N0YXRpY1wiPlxuICAgICAgICAgIHt7IGRhdGEuY2hhciB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFFTCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBeUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQXNCdEQsTUFBTSxPQUFPLHlCQUNYLFNBQVEsdUJBQXVCO0lBSS9CLFlBQThDLFFBQStCO1FBQzNFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUdsQixjQUFjO1FBQ0wsV0FBTSxHQUFHLFlBQVksQ0FBK0IsT0FBTyxDQUFDLENBQUM7UUFFdEUsY0FBYztRQUNHLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRCxjQUFjO1FBQ0wsZUFBVSxHQUFHLEtBQUssQ0FBd0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMs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NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDOzRCQUN4RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsdUJBQXVCOzRCQUNoQyxXQUFXLDJCQUEyQjt5QkFDdkM7cUJBQ0Y7OzBCQU9ZLE1BQU07MkJBQUMsd0JBQXdCO3lDQStEeEMsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIGNvbXB1dGVkLFxyXG4gIGVmZmVjdCxcclxuICBmb3J3YXJkUmVmLFxyXG4gIGlucHV0LFxyXG4gIG91dHB1dCxcclxuICB2aWV3Q2hpbGRyZW4sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xyXG5pbXBvcnQgeyBfRm9ybUZpZWxkQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL19pbnRlcm5hbC9mb3JtLWZpZWxkLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1FbGVtZW50QXBwZWFyYW5jZSwgRm9ybUVsZW1lbnRWYXJpYW50IH0gZnJvbSAnLi4vLi4vdHlwZXMvdGhlbWluZy50eXBlcyc7XHJcbmltcG9ydCB7IEFSRF9ESUdJVF9JTlBVVF9ERUZBVUxUUywgQXJkRGlnaXRJbnB1dERlZmF1bHRzIH0gZnJvbSAnLi9kaWdpdC1pbnB1dC5kZWZhdWx0cyc7XHJcbmltcG9ydCB7IERpZ2l0SW5wdXRNb2RlbCB9IGZyb20gJy4vZGlnaXQtaW5wdXQubW9kZWwnO1xyXG5pbXBvcnQgeyBEaWdpdElucHV0Q29uZmlnLCBEaWdpdElucHV0U2hhcGUgfSBmcm9tICcuL2RpZ2l0LWlucHV0LnR5cGVzJztcclxuaW1wb3J0IHsgRGlnaXRJbnB1dE1vZGVsSG9zdCB9IGZyb20gJy4vZGlnaXQtaW5wdXQudXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcmQtZGlnaXQtaW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWdpdC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGlnaXQtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXJkaXVtRGlnaXRJbnB1dENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogX0Zvcm1GaWVsZENvbXBvbmVudEJhc2UsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBBcmRpdW1EaWdpdElucHV0Q29tcG9uZW50LFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJkaXVtRGlnaXRJbnB1dENvbXBvbmVudFxyXG4gIGV4dGVuZHMgX0Zvcm1GaWVsZENvbXBvbmVudEJhc2VcclxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBEaWdpdElucHV0TW9kZWxIb3N0LCBPbkluaXRcclxue1xyXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBfREVGQVVMVFMhOiBBcmREaWdpdElucHV0RGVmYXVsdHM7XHJcbiAgY29uc3RydWN0b3IoQEluamVjdChBUkRfRElHSVRfSU5QVVRfREVGQVVMVFMpIGRlZmF1bHRzOiBBcmREaWdpdElucHV0RGVmYXVsdHMpIHtcclxuICAgIHN1cGVyKGRlZmF1bHRzKTtcclxuICB9XHJcblxyXG4gIC8vISBpbnB1dHMgcmVmXHJcbiAgcmVhZG9ubHkgaW5wdXRzID0gdmlld0NoaWxkcmVuPEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+KCdpbnB1dCcpO1xyXG5cclxuICAvLyEgZGF0YSBtb2RlbFxyXG4gIHByaXZhdGUgcmVhZG9ubHkgbW9kZWwgPSBuZXcgRGlnaXRJbnB1dE1vZGVsKHRoaXMpO1xyXG5cclxuICAvLyEgYXBwZWFyYW5jZVxyXG4gIHJlYWRvbmx5IGFwcGVhcmFuY2UgPSBpbnB1dDxGb3JtRWxlbWVudEFwcGVhcmFuY2U+KHRoaXMuX0RFRkFVTFRTLmFwcGVhcmFuY2UpO1xyXG4gIHJlYWRvbmx5IHZhcmlhbnQgPSBpbnB1dDxGb3JtRWxlbWVudFZhcmlhbnQ+KHRoaXMuX0RFRkFVTFRTLnZhcmlhbnQpO1xyXG4gIHJlYWRvbmx5IHNoYXBlID0gaW5wdXQ8RGlnaXRJbnB1dFNoYXBlPih0aGlzLl9ERUZBVUxUUy5zaGFwZSk7XHJcblxyXG4gIHJlYWRvbmx5IGNvbXBhY3QgPSBpbnB1dDxib29sZWFuLCBhbnk+KHRoaXMuX0RFRkFVTFRTLmNvbXBhY3QsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgcmVhZG9ubHkgbmdDbGFzc2VzID0gY29tcHV0ZWQoKCk6IHN0cmluZyA9PlxyXG4gICAgW1xyXG4gICAgICBgYXJkLWFwcGVhcmFuY2UtJHt0aGlzLmFwcGVhcmFuY2UoKX1gLFxyXG4gICAgICBgYXJkLXZhcmlhbnQtJHt0aGlzLnZhcmlhbnQoKX1gLFxyXG4gICAgICBgYXJkLXNoYXBlLSR7dGhpcy5zaGFwZSgpfWAsXHJcbiAgICAgIHRoaXMuY29tcGFjdCgpID8gJ2FyZC1jb21wYWN0JyA6ICcnLFxyXG4gICAgXS5qb2luKCcgJylcclxuICApO1xyXG5cclxuICAvLyEgbW9kZWwgYWNjZXNzIHBvaW50c1xyXG4gIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPHZvaWQsIERpZ2l0SW5wdXRDb25maWc+KHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiB0aGlzLm1vZGVsLnNldENvbmZpZyh2KSxcclxuICB9KTtcclxuICByZWFkb25seSBjb25maWdBcnJheURhdGEgPSB0aGlzLm1vZGVsLmNvbmZpZ0FycmF5RGF0YTtcclxuXHJcbiAgcHJpdmF0ZSBfb2xkQ29uZmlnQXJyYXlEYXRhTGVuZ3RoID0gLTE7XHJcbiAgcmVhZG9ubHkgY29uZmlnQXJyYXlEYXRhRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcclxuICAgIGlmICh0aGlzLmNvbmZpZ0FycmF5RGF0YSgpLmxlbmd0aCA9PT0gdGhpcy5fb2xkQ29uZmlnQXJyYXlEYXRhTGVuZ3RoKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5fb2xkQ29uZmlnQXJyYXlEYXRhTGVuZ3RoID0gdGhpcy5jb25maWdBcnJheURhdGEoKS5sZW5ndGg7XHJcbiAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XHJcbiAgfSk7XHJcblxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIHRoaXMuX29sZENvbmZpZ0FycmF5RGF0YUxlbmd0aCA9IHRoaXMuY29uZmlnQXJyYXlEYXRhKCkubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgaXNJbnB1dEVtcHR5KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5tb2RlbC5pc0RlZmluZWRBdEluZGV4KGluZGV4KTtcclxuICB9XHJcblxyXG4gIC8vISBjb250cm9sIHZhbHVlIGFjY2Vzc29yJ3Mgd3JpdGUgdmFsdWUgaW1wbGVtZW50YXRpb25cclxuICB3cml0ZVZhbHVlKHY6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fd3JpdGVWYWx1ZSh2KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfd3JpdGVWYWx1ZSh2OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm1vZGVsLndyaXRlVmFsdWUodik7XHJcbiAgfVxyXG5cclxuICAvLyEgdmFsdWUgdHdvLXdheSBiaW5kaW5nXHJcbiAgcmVhZG9ubHkgb3V0cHV0QXNTdHJpbmcgPSBpbnB1dDxib29sZWFuLCBhbnk+KHRoaXMuX0RFRkFVTFRTLm91dHB1dEFzU3RyaW5nLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcblxyXG4gIHJlYWRvbmx5IG91dHB1dENvbnRyb2xWYWx1ZUFjY2Vzc29yT25GaW5pc2ggPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHZhbHVlKHY6IHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbCkge1xyXG4gICAgdGhpcy53cml0ZVZhbHVlKHYpO1xyXG4gIH1cclxuICByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG91dHB1dDxzdHJpbmcgfCAoc3RyaW5nIHwgbnVsbClbXSB8IG51bGw+KCk7XHJcblxyXG4gIHJlYWRvbmx5IHN0cmluZ1ZhbHVlID0gdGhpcy5tb2RlbC5zdHJpbmdWYWx1ZTtcclxuXHJcbiAgcmVhZG9ubHkgZW1pdHRhYmxlVmFsdWUgPSBjb21wdXRlZCgoKTogc3RyaW5nIHwgKHN0cmluZyB8IG51bGwpW10gfCBudWxsID0+IHtcclxuICAgIGlmICh0aGlzLm91dHB1dEFzU3RyaW5nKCkpIHJldHVybiB0aGlzLm1vZGVsLnN0cmluZ1ZhbHVlKCk7XHJcbiAgICByZXR1cm4gdGhpcy5tb2RlbC52YWx1ZSgpO1xyXG4gIH0pO1xyXG5cclxuICAvLyEgZXZlbnQgZW1pdHRlcnNcclxuICByZWFkb25seSBmaW5pc2hlZFZhbHVlID0gb3V0cHV0PHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbD4oKTtcclxuXHJcbiAgcmVhZG9ubHkgZm9jdXNJbmRleEV2ZW50ID0gb3V0cHV0PG51bWJlcj4oeyBhbGlhczogJ2ZvY3VzSW5kZXgnIH0pO1xyXG4gIHJlYWRvbmx5IGJsdXJJbmRleEV2ZW50ID0gb3V0cHV0PG51bWJlcj4oeyBhbGlhczogJ2JsdXJJbmRleCcgfSk7XHJcblxyXG4gIC8vISBldmVudCBoYW5kbGVyc1xyXG4gIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQnKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGlmICghdmFsdWUpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBtYXhMZW5ndGggPSB0aGlzLmlucHV0cygpLmxlbmd0aCAtIGluZGV4O1xyXG4gICAgdmFsdWVcclxuICAgICAgLnNsaWNlKDAsIG1heExlbmd0aClcclxuICAgICAgLnNwbGl0KCcnKVxyXG4gICAgICAuZm9yRWFjaCgoY2hhciwgaSkgPT4ge1xyXG4gICAgICAgIHRoaXMubW9kZWwudmFsaWRhdGVJbnB1dEFuZFNldFZhbHVlKGNoYXIsIGluZGV4ICsgaSk7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggLSAxICsgTWF0aC5taW4odmFsdWUubGVuZ3RoLCBtYXhMZW5ndGgpKTtcclxuICB9XHJcbiAgb25JbnB1dChldmVudDogRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IHdhc0NoYW5nZWQgPSB0aGlzLl91cGRhdGVTaW5nbGVJbnB1dFZhbHVlKChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUsIGluZGV4KTtcclxuICAgIGlmICghd2FzQ2hhbmdlZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyAxKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfdXBkYXRlU2luZ2xlSW5wdXRWYWx1ZSh2YWx1ZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBjaGFuZ2VSZXN1bHQgPSB0aGlzLm1vZGVsLnZhbGlkYXRlSW5wdXRBbmRTZXRWYWx1ZSh2YWx1ZSwgaW5kZXgpO1xyXG4gICAgaWYgKCFjaGFuZ2VSZXN1bHQ/Lndhc0NoYW5nZWQpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMubW9kZWwuaXNWYWx1ZUZ1bGwoKSkge1xyXG4gICAgICB0aGlzLmJsdXIoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuICBmb2N1c0J5SW5kZXgoaW5kZXg6IG51bWJlcik6IGJvb2xlYW47XHJcbiAgZm9jdXNCeUluZGV4KGluZGV4OiBudW1iZXIsIHRyeUZvY3VzaW5nTmV4dDogYm9vbGVhbiwgZGlyZWN0aW9uOiAxIHwgLTEpOiBib29sZWFuO1xyXG4gIGZvY3VzQnlJbmRleChpbmRleDogbnVtYmVyLCB0cnlGb2N1c2luZ05leHQ/OiBib29sZWFuLCBkaXJlY3Rpb24/OiAxIHwgLTEpOiBib29sZWFuIHtcclxuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5pbnB1dHMoKS5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuICAgIGNvbnN0IG5leHRFbCA9IHRoaXMuaW5wdXRzKClbaW5kZXhdPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKCFuZXh0RWwpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBuZXh0RWwuZm9jdXMoKTtcclxuICAgIGlmICh0cnlGb2N1c2luZ05leHQgJiYgZGlyZWN0aW9uICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IG5leHRFbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyBkaXJlY3Rpb24pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IG5leHRFbDtcclxuICB9XHJcbiAgLy9mb2N1cywgYmx1ciwgY2hhbmdlXHJcbiAgb25Gb2N1c01hc3RlcihldmVudDogRm9jdXNFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5mb2N1c0luZGV4RXZlbnQuZW1pdChpbmRleCk7XHJcbiAgICB0aGlzLm9uRm9jdXMoZXZlbnQpO1xyXG4gIH1cclxuICBvbkJsdXJNYXN0ZXIoZXZlbnQ6IEZvY3VzRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuYmx1ckluZGV4RXZlbnQuZW1pdChpbmRleCk7XHJcbiAgICB0aGlzLm9uQmx1cihldmVudCk7XHJcbiAgfVxyXG4gIHByb3RlY3RlZCBfZW1pdENoYW5nZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHYgPSB0aGlzLmVtaXR0YWJsZVZhbHVlKCk7XHJcbiAgICBpZiAoIXRoaXMub3V0cHV0Q29udHJvbFZhbHVlQWNjZXNzb3JPbkZpbmlzaCgpIHx8IHRoaXMubW9kZWwuaXNWYWx1ZUZ1bGwoKSkgdGhpcy5fb25DaGFuZ2VSZWdpc3RlcmVkPy4odik7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodik7XHJcbiAgICBpZiAodGhpcy5tb2RlbC5pc1ZhbHVlRnVsbCgpKSB7XHJcbiAgICAgIHRoaXMuZmluaXNoZWRWYWx1ZS5lbWl0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XHJcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XHJcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggLSAxLCB0cnVlLCAtMSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcclxuICAgICAgICB0aGlzLmZvY3VzQnlJbmRleChpbmRleCArIDEsIHRydWUsICsxKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIGNhc2UgJ0hvbWUnOlxyXG4gICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KDAsIHRydWUsIDEpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgY2FzZSAnRW5kJzpcclxuICAgICAgICB0aGlzLmZvY3VzQnlJbmRleCh0aGlzLmlucHV0cy5sZW5ndGggLSAxLCB0cnVlLCAtMSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBjYXNlICdCYWNrc3BhY2UnOlxyXG4gICAgICBjYXNlICdEZWxldGUnOlxyXG4gICAgICAgIHRoaXMuX3VwZGF0ZVNpbmdsZUlucHV0VmFsdWUoJycsIGluZGV4KTtcclxuICAgICAgICB0aGlzLmZvY3VzQnlJbmRleChpbmRleCAtIDEsIHRydWUsIC0xKTtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiYXJkLWRpZ2l0LWlucHV0XCJcclxuICBbbmdDbGFzc109XCJuZ0NsYXNzZXMoKVwiXHJcbiAgW2NsYXNzLmFyZC1oYXMtZXJyb3JdPVwiaGFzRXJyb3IoKVwiXHJcbj5cclxuICBAZm9yIChkYXRhIG9mIGNvbmZpZ0FycmF5RGF0YSgpOyB0cmFjayAkaW5kZXgpIHtcclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImFyZC1kaWdpdC1pbnB1dF9faXRlbVwiXHJcbiAgICBbY2xhc3MuYXJkLWRpZ2l0LWlucHV0X19pdGVtLXdpdGgtaW5wdXRdPVwiZGF0YS50eXBlID09PSAnaW5wdXQnXCJcclxuICA+XHJcbiAgICBAaWYgKGRhdGEudHlwZSA9PT0gJ2lucHV0Jykge1xyXG4gICAgPGlucHV0XHJcbiAgICAgICNpbnB1dFxyXG4gICAgICAjZm9jdXNhYmxlRWxlbWVudFxyXG4gICAgICBjbGFzcz1cImFyZC1kaWdpdC1pbnB1dF9faW5wdXRcIlxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgIFtyZWFkb25seV09XCJkYXRhLnJlYWRvbmx5XCJcclxuICAgICAgW3BsYWNlaG9sZGVyXT1cImRhdGEucGxhY2Vob2xkZXJcIlxyXG4gICAgICBbY2xhc3MuYXJkLWRpZ2l0LWlucHV0X19pbnB1dC1yZWFkb25seV09XCJkYXRhLnJlYWRvbmx5XCJcclxuICAgICAgW2NsYXNzLmFyZC1kaWdpdC1pbnB1dF9faW5wdXQtZW1wdHldPVwiaXNJbnB1dEVtcHR5KGRhdGEuaW5kZXghKVwiXHJcbiAgICAgIChwYXN0ZSk9XCJvblBhc3RlKCRldmVudCwgZGF0YS5pbmRleCEpXCJcclxuICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxyXG4gICAgICAoZm9jdXMpPVwib25Gb2N1c01hc3RlcigkZXZlbnQsIGRhdGEuaW5kZXghKVwiXHJcbiAgICAgIChibHVyKT1cIm9uQmx1ck1hc3RlcigkZXZlbnQsIGRhdGEuaW5kZXghKVwiXHJcbiAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQsIGRhdGEuaW5kZXghKVwiXHJcbiAgICAvPlxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXJkLWRpZ2l0LWlucHV0X19zdGF0aWNcIj5cclxuICAgICAge3sgZGF0YS5jaGFyIH19XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICB9XHJcbjwvZGl2PlxyXG4iXX0=