valtech-components 2.0.455 → 2.0.457
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +21 -6
- package/esm2022/lib/components/molecules/pin-input/types.mjs +1 -1
- package/esm2022/lib/services/link-processor.service.mjs +54 -54
- package/fesm2022/valtech-components.mjs +73 -58
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/pin-input/types.d.ts +6 -0
- package/package.json +1 -1
|
@@ -2,6 +2,12 @@ import { Component, Input, ViewChild } from '@angular/core';
|
|
|
2
2
|
import { NgOtpInputComponent, NgOtpInputModule } from 'ng-otp-input';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "ng-otp-input";
|
|
5
|
+
/** Size configurations for PIN input boxes */
|
|
6
|
+
const SIZE_CONFIG = {
|
|
7
|
+
small: { width: '40px', height: '44px', fontSize: '24px' },
|
|
8
|
+
medium: { width: '50px', height: '54px', fontSize: '28px' },
|
|
9
|
+
large: { width: '58px', height: '60px', fontSize: '32px' },
|
|
10
|
+
};
|
|
5
11
|
/**
|
|
6
12
|
* val-pin-input
|
|
7
13
|
*
|
|
@@ -17,9 +23,9 @@ export class PinInputComponent {
|
|
|
17
23
|
this.codeLength = 5;
|
|
18
24
|
this.otpInputConfig = {
|
|
19
25
|
inputStyles: {
|
|
20
|
-
'font-size':
|
|
21
|
-
width:
|
|
22
|
-
height:
|
|
26
|
+
'font-size': SIZE_CONFIG.medium.fontSize,
|
|
27
|
+
width: SIZE_CONFIG.medium.width,
|
|
28
|
+
height: SIZE_CONFIG.medium.height,
|
|
23
29
|
},
|
|
24
30
|
inputClass: 'otp-input-box',
|
|
25
31
|
length: this.codeLength,
|
|
@@ -29,10 +35,19 @@ export class PinInputComponent {
|
|
|
29
35
|
ngOnInit() {
|
|
30
36
|
// Usar props.length si se proporciona, sino mantener default 5
|
|
31
37
|
const length = this.props.length ?? 5;
|
|
38
|
+
// Usar props.size si se proporciona, sino mantener default 'medium'
|
|
39
|
+
const size = this.props.size ?? 'medium';
|
|
40
|
+
const sizeStyles = SIZE_CONFIG[size];
|
|
32
41
|
this.otpInputConfig = {
|
|
33
42
|
...this.otpInputConfig,
|
|
34
43
|
length,
|
|
35
44
|
allowNumbersOnly: this.props.allowNumbersOnly ?? true,
|
|
45
|
+
inputStyles: {
|
|
46
|
+
'font-size': sizeStyles.fontSize,
|
|
47
|
+
width: sizeStyles.width,
|
|
48
|
+
height: sizeStyles.height,
|
|
49
|
+
...this.props.inputStyles, // Allow custom overrides
|
|
50
|
+
},
|
|
36
51
|
};
|
|
37
52
|
}
|
|
38
53
|
reset() {
|
|
@@ -45,7 +60,7 @@ export class PinInputComponent {
|
|
|
45
60
|
<div class="otp">
|
|
46
61
|
<ng-otp-input [formCtrl]="props.control" [config]="otpInputConfig"></ng-otp-input>
|
|
47
62
|
</div>
|
|
48
|
-
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}.otp-input-box:focus{border-color:#0ff}\n"], dependencies: [{ kind: "ngmodule", type: NgOtpInputModule }, { kind: "component", type: i1.NgOtpInputComponent, selector: "ng-otp-input", inputs: ["config", "formCtrl"], outputs: ["onInputChange"] }] }); }
|
|
63
|
+
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}@media (max-width: 480px){.otp ::ng-deep .otp-input{width:40px!important;height:44px!important;font-size:24px!important}}.otp-input-box:focus{border-color:#0ff}\n"], dependencies: [{ kind: "ngmodule", type: NgOtpInputModule }, { kind: "component", type: i1.NgOtpInputComponent, selector: "ng-otp-input", inputs: ["config", "formCtrl"], outputs: ["onInputChange"] }] }); }
|
|
49
64
|
}
|
|
50
65
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PinInputComponent, decorators: [{
|
|
51
66
|
type: Component,
|
|
@@ -53,11 +68,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
53
68
|
<div class="otp">
|
|
54
69
|
<ng-otp-input [formCtrl]="props.control" [config]="otpInputConfig"></ng-otp-input>
|
|
55
70
|
</div>
|
|
56
|
-
`, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}.otp-input-box:focus{border-color:#0ff}\n"] }]
|
|
71
|
+
`, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}@media (max-width: 480px){.otp ::ng-deep .otp-input{width:40px!important;height:44px!important;font-size:24px!important}}.otp-input-box:focus{border-color:#0ff}\n"] }]
|
|
57
72
|
}], ctorParameters: () => [], propDecorators: { pinCode: [{
|
|
58
73
|
type: ViewChild,
|
|
59
74
|
args: [NgOtpInputComponent, { static: false }]
|
|
60
75
|
}], props: [{
|
|
61
76
|
type: Input
|
|
62
77
|
}] } });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcGluLWlucHV0L3Bpbi1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBb0IsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7OztBQUd2Riw4Q0FBOEM7QUFDOUMsTUFBTSxXQUFXLEdBQThFO0lBQzdGLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO0lBQzFELE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO0lBQzNELEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO0NBQzNELENBQUM7QUFhRjs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBdUI1QjtRQVpBLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixtQkFBYyxHQUFxQjtZQUNqQyxXQUFXLEVBQUU7Z0JBQ1gsV0FBVyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUTtnQkFDeEMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSztnQkFDL0IsTUFBTSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTTthQUNsQztZQUNELFVBQVUsRUFBRSxlQUFlO1lBQzNCLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVTtZQUN2QixnQkFBZ0IsRUFBRSxJQUFJO1NBQ3ZCLENBQUM7SUFFYSxDQUFDO0lBRWhCLFFBQVE7UUFDTiwrREFBK0Q7UUFDL0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQ3RDLG9FQUFvRTtRQUNwRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxRQUFRLENBQUM7UUFDekMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJDLElBQUksQ0FBQyxjQUFjLEdBQUc7WUFDcEIsR0FBRyxJQUFJLENBQUMsY0FBYztZQUN0QixNQUFNO1lBQ04sZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJO1lBQ3JELFdBQVcsRUFBRTtnQkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLFFBQVE7Z0JBQ2hDLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSztnQkFDdkIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO2dCQUN6QixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLHlCQUF5QjthQUNyRDtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDOytHQWpEVSxpQkFBaUI7bUdBQWpCLGlCQUFpQiw4SUFDakIsbUJBQW1CLGdEQWxCcEI7Ozs7R0FJVCw4NkZBTFMsZ0JBQWdCOzs0RkFrQmYsaUJBQWlCO2tCQXJCN0IsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLENBQUMsWUFDakI7Ozs7R0FJVDt3REFja0QsT0FBTztzQkFBekQsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBUXhDLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ090cElucHV0Q29tcG9uZW50LCBOZ090cElucHV0Q29uZmlnLCBOZ090cElucHV0TW9kdWxlIH0gZnJvbSAnbmctb3RwLWlucHV0JztcbmltcG9ydCB7IFBpbklucHV0TWV0YWRhdGEsIFBpbklucHV0U2l6ZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKiogU2l6ZSBjb25maWd1cmF0aW9ucyBmb3IgUElOIGlucHV0IGJveGVzICovXG5jb25zdCBTSVpFX0NPTkZJRzogUmVjb3JkPFBpbklucHV0U2l6ZSwgeyB3aWR0aDogc3RyaW5nOyBoZWlnaHQ6IHN0cmluZzsgZm9udFNpemU6IHN0cmluZyB9PiA9IHtcbiAgc21hbGw6IHsgd2lkdGg6ICc0MHB4JywgaGVpZ2h0OiAnNDRweCcsIGZvbnRTaXplOiAnMjRweCcgfSxcbiAgbWVkaXVtOiB7IHdpZHRoOiAnNTBweCcsIGhlaWdodDogJzU0cHgnLCBmb250U2l6ZTogJzI4cHgnIH0sXG4gIGxhcmdlOiB7IHdpZHRoOiAnNThweCcsIGhlaWdodDogJzYwcHgnLCBmb250U2l6ZTogJzMycHgnIH0sXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcGluLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nT3RwSW5wdXRNb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJvdHBcIj5cbiAgICAgIDxuZy1vdHAtaW5wdXQgW2Zvcm1DdHJsXT1cInByb3BzLmNvbnRyb2xcIiBbY29uZmlnXT1cIm90cElucHV0Q29uZmlnXCI+PC9uZy1vdHAtaW5wdXQ+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3Bpbi1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLXBpbi1pbnB1dFxuICpcbiAqIEEgUElOIGNvZGUgaW5wdXQgdXNpbmcgbmctb3RwLWlucHV0LCBpbnRlZ3JhdGVkIHdpdGggQW5ndWxhciBmb3Jtcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1waW4taW5wdXQgW3Byb3BzXT1cInsgY29udHJvbDogbXlDb250cm9sIH1cIj48L3ZhbC1waW4taW5wdXQ+XG4gKlxuICogQGlucHV0IHByb3BzOiBQaW5JbnB1dE1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIFBJTiBpbnB1dCAoZm9ybSBjb250cm9sLCBsZW5ndGgsIGV0Yy4pXG4gKi9cbmV4cG9ydCBjbGFzcyBQaW5JbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoTmdPdHBJbnB1dENvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pIHBpbkNvZGU6IE5nT3RwSW5wdXRDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIElucHV0IGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKiBAdHlwZSB7UGluSW5wdXRNZXRhZGF0YX1cbiAgICogQHByb3BlcnR5IGNvbnRyb2wgLSBUaGUgQW5ndWxhciBGb3JtQ29udHJvbCBmb3IgdGhlIFBJTiBpbnB1dC5cbiAgICogQHByb3BlcnR5IGxlbmd0aCAtIE51bWJlciBvZiBkaWdpdHMgaW4gUElOIChkZWZhdWx0OiA1KS5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBQaW5JbnB1dE1ldGFkYXRhO1xuXG4gIGNvZGVMZW5ndGggPSA1O1xuICBvdHBJbnB1dENvbmZpZzogTmdPdHBJbnB1dENvbmZpZyA9IHtcbiAgICBpbnB1dFN0eWxlczoge1xuICAgICAgJ2ZvbnQtc2l6ZSc6IFNJWkVfQ09ORklHLm1lZGl1bS5mb250U2l6ZSxcbiAgICAgIHdpZHRoOiBTSVpFX0NPTkZJRy5tZWRpdW0ud2lkdGgsXG4gICAgICBoZWlnaHQ6IFNJWkVfQ09ORklHLm1lZGl1bS5oZWlnaHQsXG4gICAgfSxcbiAgICBpbnB1dENsYXNzOiAnb3RwLWlucHV0LWJveCcsXG4gICAgbGVuZ3RoOiB0aGlzLmNvZGVMZW5ndGgsXG4gICAgYWxsb3dOdW1iZXJzT25seTogdHJ1ZSxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gVXNhciBwcm9wcy5sZW5ndGggc2kgc2UgcHJvcG9yY2lvbmEsIHNpbm8gbWFudGVuZXIgZGVmYXVsdCA1XG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5wcm9wcy5sZW5ndGggPz8gNTtcbiAgICAvLyBVc2FyIHByb3BzLnNpemUgc2kgc2UgcHJvcG9yY2lvbmEsIHNpbm8gbWFudGVuZXIgZGVmYXVsdCAnbWVkaXVtJ1xuICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgPz8gJ21lZGl1bSc7XG4gICAgY29uc3Qgc2l6ZVN0eWxlcyA9IFNJWkVfQ09ORklHW3NpemVdO1xuXG4gICAgdGhpcy5vdHBJbnB1dENvbmZpZyA9IHtcbiAgICAgIC4uLnRoaXMub3RwSW5wdXRDb25maWcsXG4gICAgICBsZW5ndGgsXG4gICAgICBhbGxvd051bWJlcnNPbmx5OiB0aGlzLnByb3BzLmFsbG93TnVtYmVyc09ubHkgPz8gdHJ1ZSxcbiAgICAgIGlucHV0U3R5bGVzOiB7XG4gICAgICAgICdmb250LXNpemUnOiBzaXplU3R5bGVzLmZvbnRTaXplLFxuICAgICAgICB3aWR0aDogc2l6ZVN0eWxlcy53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBzaXplU3R5bGVzLmhlaWdodCxcbiAgICAgICAgLi4udGhpcy5wcm9wcy5pbnB1dFN0eWxlcywgLy8gQWxsb3cgY3VzdG9tIG92ZXJyaWRlc1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgaWYgKHRoaXMucGluQ29kZSkge1xuICAgICAgdGhpcy5waW5Db2RlLnNldFZhbHVlKCcnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3Bpbi1pbnB1dC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb2xvciB9IGZyb20gJ0Bpb25pYy9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG4vKipcbiAqIFNpemUgb3B0aW9ucyBmb3IgUElOIGlucHV0IGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IHR5cGUgUGluSW5wdXRTaXplID0gJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJztcblxuLyoqXG4gKiBNZXRhZGF0YSBmb3IgdGhlIFBJTiBpbnB1dCBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGluSW5wdXRNZXRhZGF0YSB7XG4gIC8qKiBGb3JtIGNvbnRyb2wgZm9yIHRoZSBQSU4gdmFsdWUgKHN0b3JlcyBzdHJpbmcpICovXG4gIGNvbnRyb2w6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAvKiogVW5pcXVlIHRva2VuIGZvciB0aGUgaW5wdXQgKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG4gIC8qKiBEaXNwbGF5IGxhYmVsICovXG4gIGxhYmVsPzogc3RyaW5nO1xuICAvKiogRmllbGQgbmFtZSAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKiogSGVscCB0ZXh0ICovXG4gIGhpbnQ/OiBzdHJpbmc7XG4gIC8qKiBGaWVsZCBzdGF0ZSAqL1xuICBzdGF0ZT86IENvbXBvbmVudFN0YXRlO1xuXG4gIC8vID09PSBQSU4gY29uZmlndXJhdGlvbiA9PT1cbiAgLyoqIE51bWJlciBvZiBkaWdpdHMgaW4gUElOIChkZWZhdWx0OiA1KSAqL1xuICBsZW5ndGg/OiBudW1iZXI7XG4gIC8qKiBTaXplIG9mIHRoZSBpbnB1dCBib3hlczogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyAoZGVmYXVsdDogJ21lZGl1bScpICovXG4gIHNpemU/OiBQaW5JbnB1dFNpemU7XG4gIC8qKiBBbGxvdyBvbmx5IG51bWJlcnMgKi9cbiAgYWxsb3dOdW1iZXJzT25seT86IGJvb2xlYW47XG4gIC8qKiBNYXNrIGlucHV0IChzaG93IGRvdHMgaW5zdGVhZCBvZiBjaGFyYWN0ZXJzKSAqL1xuICBtYXNrPzogYm9vbGVhbjtcbiAgLyoqIE1hc2sgY2hhcmFjdGVyIHRvIGRpc3BsYXkgKi9cbiAgbWFza0NoYXI/OiBzdHJpbmc7XG4gIC8qKiBEaXNhYmxlIHBhc3RlIGZ1bmN0aW9uYWxpdHkgKi9cbiAgZGlzYWJsZVBhc3RlPzogYm9vbGVhbjtcbiAgLyoqIEF1dG8gZm9jdXMgZmlyc3QgaW5wdXQgKi9cbiAgYXV0b0ZvY3VzPzogYm9vbGVhbjtcbiAgLyoqIEF1dG8gc3VibWl0IHdoZW4gY29tcGxldGUgKi9cbiAgYXV0b1N1Ym1pdD86IGJvb2xlYW47XG5cbiAgLy8gPT09IFN0eWxpbmcgPT09XG4gIC8qKiBDb21wb25lbnQgY29sb3IgKi9cbiAgY29sb3I/OiBDb2xvcjtcbiAgLyoqIEN1c3RvbSBDU1MgY2xhc3MgKi9cbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG4gIC8qKiBJbnB1dCBib3ggc3R5bGVzICovXG4gIGlucHV0U3R5bGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIElucHV0IGJveCBjbGFzcyAqL1xuICBpbnB1dENsYXNzPzogc3RyaW5nO1xuXG4gIC8vID09PSBSZWFjdGl2ZSBjb250ZW50ID09PVxuICAvKiogQ29udGVudCBrZXkgZm9yIHJlYWN0aXZlIGxhYmVsICovXG4gIGNvbnRlbnRLZXk/OiBzdHJpbmc7XG4gIC8qKiBDb21wb25lbnQgY2xhc3MgbmFtZSBmb3IgY29udGVudCBsb29rdXAgKi9cbiAgY29udGVudENsYXNzPzogc3RyaW5nO1xuICAvKiogRmFsbGJhY2sgdGV4dCBpZiBjb250ZW50IGtleSBpcyBub3QgZm91bmQgKi9cbiAgY29udGVudEZhbGxiYWNrPzogc3RyaW5nO1xuXG4gIC8vID09PSBWYWxpZGF0aW9uIGRpc3BsYXkgPT09XG4gIC8qKiBDdXN0b20gZXJyb3IgbWVzc2FnZXMgKi9cbiAgZXJyb3JzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIFNob3cgdmFsaWRhdGlvbiBlcnJvcnMgKi9cbiAgc2hvd0Vycm9ycz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIFBJTiBpbnB1dCBjaGFuZ2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpbklucHV0Q2hhbmdlRXZlbnQge1xuICAvKiogQ3VycmVudCBQSU4gdmFsdWUgKi9cbiAgdmFsdWU6IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhlIFBJTiBpcyBjb21wbGV0ZSAqL1xuICBpc0NvbXBsZXRlOiBib29sZWFuO1xuICAvKiogTnVtYmVyIG9mIGRpZ2l0cyBlbnRlcmVkICovXG4gIGxlbmd0aDogbnVtYmVyO1xufVxuIl19
|
|
@@ -76,32 +76,32 @@ export class LinkProcessorService {
|
|
|
76
76
|
let processedText = text;
|
|
77
77
|
// 1. Procesar enlaces estilo Markdown [texto](url) primero
|
|
78
78
|
if (processMarkdownLinks) {
|
|
79
|
-
//
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
79
|
+
// Usar exec en bucle (compatible con ES2018)
|
|
80
|
+
const markdownMatches = [];
|
|
81
|
+
this.markdownLinkRegex.lastIndex = 0;
|
|
82
|
+
let mdMatch;
|
|
83
|
+
while ((mdMatch = this.markdownLinkRegex.exec(processedText)) !== null) {
|
|
84
|
+
markdownMatches.push(mdMatch);
|
|
85
|
+
}
|
|
86
86
|
// Procesar de atrás hacia adelante para mantener las posiciones
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
87
|
+
for (let i = markdownMatches.length - 1; i >= 0; i--) {
|
|
88
|
+
const match = markdownMatches[i];
|
|
89
|
+
const [fullMatch, linkText, url] = match;
|
|
90
|
+
const startIndex = match.index;
|
|
91
|
+
const endIndex = startIndex + fullMatch.length;
|
|
92
|
+
hasLinks = true;
|
|
93
|
+
const isExternal = /^https?:\/\//.test(url);
|
|
94
|
+
const target = (isExternal ? openExternalInNewTab : openInternalInNewTab)
|
|
95
|
+
? isExternal
|
|
96
|
+
? ' target="_blank" rel="noopener noreferrer"'
|
|
97
|
+
: ' target="_blank"'
|
|
98
|
+
: '';
|
|
99
|
+
const typeClass = isExternal ? externalLinkClass : internalLinkClass;
|
|
100
|
+
const classes = `${linkClass} ${typeClass}`.trim();
|
|
101
|
+
const linkHtml = `<a href="${url}"${target} class="${classes}">${linkText}</a>`;
|
|
102
|
+
processedText =
|
|
103
|
+
processedText.substring(0, startIndex) + linkHtml + processedText.substring(endIndex);
|
|
104
|
+
}
|
|
105
105
|
}
|
|
106
106
|
// 2. Procesar URLs externas directas
|
|
107
107
|
// Usar exec en bucle (compatible con ES2018)
|
|
@@ -139,35 +139,35 @@ export class LinkProcessorService {
|
|
|
139
139
|
processedText.substring(0, startIndex) + replacement + processedText.substring(endIndex);
|
|
140
140
|
}
|
|
141
141
|
// 3. Procesar rutas internas
|
|
142
|
-
//
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
142
|
+
// Usar exec en bucle (compatible con ES2018)
|
|
143
|
+
const internalMatches = [];
|
|
144
|
+
this.internalRouteRegex.lastIndex = 0;
|
|
145
|
+
let internalMatch;
|
|
146
|
+
while ((internalMatch = this.internalRouteRegex.exec(processedText)) !== null) {
|
|
147
|
+
internalMatches.push(internalMatch);
|
|
148
|
+
}
|
|
149
149
|
// Procesar de atrás hacia adelante para mantener las posiciones
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
150
|
+
for (let i = internalMatches.length - 1; i >= 0; i--) {
|
|
151
|
+
const match = internalMatches[i];
|
|
152
|
+
const [fullMatch, prefix, route] = match;
|
|
153
|
+
const startIndex = match.index;
|
|
154
|
+
const endIndex = startIndex + fullMatch.length;
|
|
155
|
+
// Verificar que no esté ya dentro de un enlace HTML existente
|
|
156
|
+
const textBefore = processedText.substring(0, startIndex);
|
|
157
|
+
const lastOpenTag = textBefore.lastIndexOf('<a ');
|
|
158
|
+
const lastCloseTag = textBefore.lastIndexOf('</a>');
|
|
159
|
+
// Si hay un tag <a abierto sin cerrar, no procesamos
|
|
160
|
+
if (lastOpenTag > lastCloseTag) {
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
hasLinks = true;
|
|
164
|
+
const target = openInternalInNewTab ? ' target="_blank"' : '';
|
|
165
|
+
const classes = `${linkClass} ${internalLinkClass}`.trim();
|
|
166
|
+
const linkHtml = `<a href="${route}"${target} class="${classes}">${route}</a>`;
|
|
167
|
+
const replacement = `${prefix}${linkHtml}`;
|
|
168
|
+
processedText =
|
|
169
|
+
processedText.substring(0, startIndex) + replacement + processedText.substring(endIndex);
|
|
170
|
+
}
|
|
171
171
|
// Si hay enlaces, sanitizar el HTML
|
|
172
172
|
if (hasLinks) {
|
|
173
173
|
return this.sanitizer.bypassSecurityTrustHtml(processedText);
|
|
@@ -256,4 +256,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
256
256
|
providedIn: 'root',
|
|
257
257
|
}]
|
|
258
258
|
}], ctorParameters: () => [{ type: i1.DomSanitizer }] });
|
|
259
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1wcm9jZXNzb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvbGluay1wcm9jZXNzb3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFrQjNDOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBSUgsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQixZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBVDNDLHFHQUFxRztRQUNwRixhQUFRLEdBQUcsc0JBQXNCLENBQUM7UUFFbkQseUZBQXlGO1FBQ3hFLHVCQUFrQixHQUFHLG1CQUFtQixDQUFDO1FBRTFELDJEQUEyRDtRQUMxQyxzQkFBaUIsR0FBRywwQkFBMEIsQ0FBQztJQUVsQixDQUFDO0lBRS9DOzs7O09BSUc7SUFDSyxtQkFBbUIsQ0FBQyxHQUFXO1FBQ3JDLG9GQUFvRjtRQUNwRixvRkFBb0Y7UUFDcEYsTUFBTSxtQkFBbUIsR0FBRyxZQUFZLENBQUM7UUFFekMsMEZBQTBGO1FBQzFGLG9EQUFvRDtRQUNwRCxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUvQyxJQUFJLG9CQUFvQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDN0MsNERBQTREO1lBQzVELEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FvQkc7SUFDSCxZ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LENBQUMsQ0FBQztZQUNuRCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzsrR0EvUVUsb0JBQW9CO21IQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBMaW5rUHJvY2Vzc29yQ29uZmlnIHtcbiAgLyoqIFdoZXRoZXIgdG8gb3BlbiBleHRlcm5hbCBsaW5rcyBpbiBuZXcgdGFiIChkZWZhdWx0OiB0cnVlKSAqL1xuICBvcGVuRXh0ZXJuYWxJbk5ld1RhYj86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRvIG9wZW4gaW50ZXJuYWwgbGlua3MgaW4gbmV3IHRhYiAoZGVmYXVsdDogZmFsc2UpICovXG4gIG9wZW5JbnRlcm5hbEluTmV3VGFiPzogYm9vbGVhbjtcbiAgLyoqIEN1c3RvbSBDU1MgY2xhc3NlcyBmb3IgbGlua3MgKi9cbiAgbGlua0NsYXNzPzogc3RyaW5nO1xuICAvKiogQ3VzdG9tIENTUyBjbGFzc2VzIGZvciBleHRlcm5hbCBsaW5rcyAqL1xuICBleHRlcm5hbExpbmtDbGFzcz86IHN0cmluZztcbiAgLyoqIEN1c3RvbSBDU1MgY2xhc3NlcyBmb3IgaW50ZXJuYWwgbGlua3MgKi9cbiAgaW50ZXJuYWxMaW5rQ2xhc3M/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRvIHByb2Nlc3MgTWFya2Rvd24tc3R5bGUgbGlua3MgW3RleHRdKHVybCkgKGRlZmF1bHQ6IHRydWUpICovXG4gIHByb2Nlc3NNYXJrZG93bkxpbmtzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBMaW5rUHJvY2Vzc29yU2VydmljZSAtIFNlcnZpY2UgZm9yIHByb2Nlc3NpbmcgdGV4dCBjb250ZW50IHRvIGNvbnZlcnQgVVJMcyBhbmQgaW50ZXJuYWwgcm91dGVzIGludG8gY2xpY2thYmxlIGxpbmtzLlxuICpcbiAqIFRoaXMgc2VydmljZSBhdXRvbWF0aWNhbGx5IGRldGVjdHMgZXh0ZXJuYWwgVVJMcyAoaHR0cC9odHRwcyksIGludGVybmFsIHJvdXRlcyAoc3RhcnRpbmcgd2l0aCAvKSxcbiAqIGFuZCBNYXJrZG93bi1zdHlsZSBsaW5rcyBbdGV4dF0odXJsKSBhbmQgY29udmVydHMgdGhlbSBpbnRvIEhUTUwgYW5jaG9yIGVsZW1lbnRzIHdpdGggYXBwcm9wcmlhdGUgYXR0cmlidXRlcy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgbGlua1Byb2Nlc3NvcjogTGlua1Byb2Nlc3NvclNlcnZpY2UpIHt9XG4gKlxuICogcHJvY2Vzc1RleHQoKSB7XG4gKiAgIGNvbnN0IHRleHQgPSAnVmlzaXQgaHR0cHM6Ly9leGFtcGxlLmNvbSwgZ28gdG8gL3Byb2ZpbGUsIG9yIFtjaGVjayBkb2NzXShodHRwczovL2RvY3MuZXhhbXBsZS5jb20pJztcbiAqICAgY29uc3QgcHJvY2Vzc2VkID0gdGhpcy5saW5rUHJvY2Vzc29yLnByb2Nlc3NMaW5rcyh0ZXh0KTtcbiAqICAgLy8gUmV0dXJucyBTYWZlSHRtbCB3aXRoIGNsaWNrYWJsZSBsaW5rc1xuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMaW5rUHJvY2Vzc29yU2VydmljZSB7XG4gIC8vIFJlZ2V4IHBhcmEgZGV0ZWN0YXIgVVJMcyBjb21wbGV0YXMgKGh0dHAvaHR0cHMpIC0gY2FwdHVyYSB0b2RhIGxhIFVSTCB5IGx1ZWdvIGxpbXBpYW1vcyBwdW50dWFjacOzblxuICBwcml2YXRlIHJlYWRvbmx5IHVybFJlZ2V4ID0gLyhodHRwcz86XFwvXFwvW15cXHNdKykvZztcblxuICAvLyBSZWdleCBwYXJhIGRldGVjdGFyIHJ1dGFzIGludGVybmFzIC0gY2FwdHVyYSB0b2RhIGxhIHJ1dGEgeSBsdWVnbyBsaW1waWFtb3MgcHVudHVhY2nDs25cbiAgcHJpdmF0ZSByZWFkb25seSBpbnRlcm5hbFJvdXRlUmVnZXggPSAvKFxcc3xeKShcXC9bXlxcc10qKS9nO1xuXG4gIC8vIFJlZ2V4IHBhcmEgZGV0ZWN0YXIgZW5sYWNlcyBlc3RpbG8gTWFya2Rvd24gW3RleHRvXSh1cmwpXG4gIHByaXZhdGUgcmVhZG9ubHkgbWFya2Rvd25MaW5rUmVnZXggPSAvXFxbKFteXFxdXSspXFxdXFwoKFteKV0rKVxcKS9nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgLyoqXG4gICAqIExpbXBpYSBsYSBwdW50dWFjacOzbiBkZWwgZmluYWwgZGUgdW5hIFVSTC5cbiAgICogTWFudGllbmUgY2FyYWN0ZXJlcyB2w6FsaWRvcyBkZSBVUkwgcGVybyByZW11ZXZlIHNpZ25vcyBkZSBwdW50dWFjacOzbiBjb211bmVzIGFsIGZpbmFsLlxuICAgKiBQcmVzZXJ2YSBwYXLDoW1ldHJvcyBkZSBjb25zdWx0YSwgZnJhZ21lbnRvcyB5IGNhcmFjdGVyZXMgdsOhbGlkb3MgZW4gVVJMcy5cbiAgICovXG4gIHByaXZhdGUgY2xlYW5VcmxQdW5jdHVhdGlvbih1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gQ2FyYWN0ZXJlcyBxdWUgY29uc2lkZXJhbW9zIHB1bnR1YWNpw7NuIGFsIGZpbmFsIGRlIG9yYWNpw7NuLCBwZXJvIE5PIHBhcnRlIGRlIFVSTHNcbiAgICAvLyBObyBpbmNsdWltb3MgJiBvID0gcXVlIHNvbiBwYXJ0ZSBkZSBxdWVyeSBwYXJhbXMsIG5pICMgcXVlIGVzIHBhcnRlIGRlIGZyYWdtZW50b3NcbiAgICBjb25zdCB0cmFpbGluZ1B1bmN0dWF0aW9uID0gL1suLDshPyldKyQvO1xuXG4gICAgLy8gQ2Fzb3MgZXNwZWNpYWxlczogc2kgbGEgVVJMIHRlcm1pbmEgY29uIHBhcsOpbnRlc2lzIHBlcm8gbm8gdGllbmUgcGFyw6ludGVzaXMgZGUgYXBlcnR1cmFcbiAgICAvLyBwcm9iYWJsZW1lbnRlIGVsIHBhcsOpbnRlc2lzIG5vIGVzIHBhcnRlIGRlIGxhIFVSTFxuICAgIGNvbnN0IGhhc09wZW5pbmdQYXJlbiA9IHVybC5pbmNsdWRlcygnKCcpO1xuICAgIGNvbnN0IGVuZHNXaXRoQ2xvc2luZ1BhcmVuID0gdXJsLmVuZHNXaXRoKCcpJyk7XG5cbiAgICBpZiAoZW5kc1dpdGhDbG9zaW5nUGFyZW4gJiYgIWhhc09wZW5pbmdQYXJlbikge1xuICAgICAgLy8gUmVtb3ZlciBlbCBwYXLDqW50ZXNpcyBkZSBjaWVycmUgc2kgbm8gaGF5IHVubyBkZSBhcGVydHVyYVxuICAgICAgdXJsID0gdXJsLnJlcGxhY2UoL1xcKSQvLCAnJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybC5yZXBsYWNlKHRyYWlsaW5nUHVuY3R1YXRpb24sICcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNhIHRleHRvIHBhcmEgY29udmVydGlyIGVubGFjZXMgZW4gZWxlbWVudG9zIDxhPiBjbGlja2VhYmxlcy5cbiAgICogRGV0ZWN0YSBhdXRvbcOhdGljYW1lbnRlIFVSTHMgZXh0ZXJuYXMsIHJ1dGFzIGludGVybmFzIHkgZW5sYWNlcyBlc3RpbG8gTWFya2Rvd24uXG4gICAqXG4gICAqIEBwYXJhbSB0ZXh0IC0gVGV4dG8gYSBwcm9jZXNhclxuICAgKiBAcGFyYW0gY29uZmlnIC0gQ29uZmlndXJhY2nDs24gZGVsIHByb2Nlc2FtaWVudG9cbiAgICogQHJldHVybnMgU2FmZUh0bWwgY29uIGVubGFjZXMgcHJvY2VzYWRvcyBvIHN0cmluZyBvcmlnaW5hbFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJlc3VsdCA9IHRoaXMubGlua1Byb2Nlc3Nvci5wcm9jZXNzTGlua3MoXG4gICAqICAgJ1Zpc2l0IGh0dHBzOi8vZXhhbXBsZS5jb20sIGdvIHRvIC9wcm9maWxlLCBvciBbY2hlY2sgZG9jc10oaHR0cHM6Ly9kb2NzLmV4YW1wbGUuY29tKScsXG4gICAqICAge1xuICAgKiAgICAgb3BlbkV4dGVybmFsSW5OZXdUYWI6IHRydWUsXG4gICAqICAgICBvcGVuSW50ZXJuYWxJbk5ld1RhYjogZmFsc2UsXG4gICAqICAgICBwcm9jZXNzTWFya2Rvd25MaW5rczogdHJ1ZSxcbiAgICogICAgIGxpbmtDbGFzczogJ2N1c3RvbS1saW5rJ1xuICAgKiAgIH1cbiAgICogKTtcbiAgICogYGBgXG4gICAqL1xuICBwcm9jZXNzTGlua3ModGV4dDogc3RyaW5nLCBjb25maWc6IExpbmtQcm9jZXNzb3JDb25maWcgPSB7fSk6IFNhZmVIdG1sIHwgc3RyaW5nIHtcbiAgICBpZiAoIXRleHQpIHJldHVybiAnJztcblxuICAgIGNvbnN0IHtcbiAgICAgIG9wZW5FeHRlcm5hbEluTmV3VGFiID0gdHJ1ZSxcbiAgICAgIG9wZW5JbnRlcm5hbEluTmV3VGFiID0gZmFsc2UsXG4gICAgICBsaW5rQ2xhc3MgPSAncHJvY2Vzc2VkLWxpbmsnLFxuICAgICAgZXh0ZXJuYWxMaW5rQ2xhc3MgPSAnZXh0ZXJuYWwtbGluaycsXG4gICAgICBpbnRlcm5hbExpbmtDbGFzcyA9ICdpbnRlcm5hbC1saW5rJyxcbiAgICAgIHByb2Nlc3NNYXJrZG93bkxpbmtzID0gdHJ1ZSxcbiAgICB9ID0gY29uZmlnO1xuXG4gICAgbGV0IGhhc0xpbmtzID0gZmFsc2U7XG4gICAgbGV0IHByb2Nlc3NlZFRleHQgPSB0ZXh0O1xuXG4gICAgLy8gMS4gUHJvY2VzYXIgZW5sYWNlcyBlc3RpbG8gTWFya2Rvd24gW3RleHRvXSh1cmwpIHByaW1lcm9cbiAgICBpZiAocHJvY2Vzc01hcmtkb3duTGlua3MpIHtcbiAgICAgIC8vIC8vIFVzYXIgZXhlYyBlbiBidWNsZSAoY29tcGF0aWJsZSBjb24gRVMyMDE4KVxuICAgICAgLy8gY29uc3QgbWFya2Rvd25NYXRjaGVzOiBSZWdFeHBFeGVjQXJyYXlbXSA9IFtdO1xuICAgICAgLy8gdGhpcy5tYXJrZG93bkxpbmtSZWdleC5sYXN0SW5kZXggPSAwO1xuICAgICAgLy8gbGV0IG1kTWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGw7XG4gICAgICAvLyB3aGlsZSAoKG1kTWF0Y2ggPSB0aGlzLm1hcmtkb3duTGlua1JlZ2V4LmV4ZWMocHJvY2Vzc2VkVGV4dCkpICE9PSBudWxsKSB7XG4gICAgICAvLyAgIG1hcmtkb3duTWF0Y2hlcy5wdXNoKG1kTWF0Y2gpO1xuICAgICAgLy8gfVxuXG4gICAgICAvLyBQcm9jZXNhciBkZSBhdHLDoXMgaGFjaWEgYWRlbGFudGUgcGFyYSBtYW50ZW5lciBsYXMgcG9zaWNpb25lc1xuICAgICAgLy8gZm9yIChsZXQgaSA9IG1hcmtkb3duTWF0Y2hlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgLy8gICBjb25zdCBtYXRjaCA9IG1hcmtkb3duTWF0Y2hlc1tpXTtcbiAgICAgIC8vICAgY29uc3QgW2Z1bGxNYXRjaCwgbGlua1RleHQsIHVybF0gPSBtYXRjaDtcbiAgICAgIC8vICAgY29uc3Qgc3RhcnRJbmRleCA9IG1hdGNoLmluZGV4ITtcbiAgICAgIC8vICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgZnVsbE1hdGNoLmxlbmd0aDtcblxuICAgICAgLy8gICBoYXNMaW5rcyA9IHRydWU7XG4gICAgICAvLyAgIGNvbnN0IGlzRXh0ZXJuYWwgPSAvXmh0dHBzPzpcXC9cXC8vLnRlc3QodXJsKTtcbiAgICAgIC8vICAgY29uc3QgdGFyZ2V0ID0gKGlzRXh0ZXJuYWwgPyBvcGVuRXh0ZXJuYWxJbk5ld1RhYiA6IG9wZW5JbnRlcm5hbEluTmV3VGFiKVxuICAgICAgLy8gICAgID8gaXNFeHRlcm5hbFxuICAgICAgLy8gICAgICAgPyAnIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIidcbiAgICAgIC8vICAgICAgIDogJyB0YXJnZXQ9XCJfYmxhbmtcIidcbiAgICAgIC8vICAgICA6ICcnO1xuICAgICAgLy8gICBjb25zdCB0eXBlQ2xhc3MgPSBpc0V4dGVybmFsID8gZXh0ZXJuYWxMaW5rQ2xhc3MgOiBpbnRlcm5hbExpbmtDbGFzcztcbiAgICAgIC8vICAgY29uc3QgY2xhc3NlcyA9IGAke2xpbmtDbGFzc30gJHt0eXBlQ2xhc3N9YC50cmltKCk7XG4gICAgICAvLyAgIGNvbnN0IGxpbmtIdG1sID0gYDxhIGhyZWY9XCIke3VybH1cIiR7dGFyZ2V0fSBjbGFzcz1cIiR7Y2xhc3Nlc31cIj4ke2xpbmtUZXh0fTwvYT5gO1xuXG4gICAgICAvLyAgIHByb2Nlc3NlZFRleHQgPVxuICAgICAgLy8gICAgIHByb2Nlc3NlZFRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0SW5kZXgpICsgbGlua0h0bWwgKyBwcm9jZXNzZWRUZXh0LnN1YnN0cmluZyhlbmRJbmRleCk7XG4gICAgICAvLyB9XG4gICAgfVxuXG4gICAgLy8gMi4gUHJvY2VzYXIgVVJMcyBleHRlcm5hcyBkaXJlY3Rhc1xuICAgIC8vIFVzYXIgZXhlYyBlbiBidWNsZSAoY29tcGF0aWJsZSBjb24gRVMyMDE4KVxuICAgIGNvbnN0IHVybE1hdGNoZXM6IFJlZ0V4cEV4ZWNBcnJheVtdID0gW107XG4gICAgdGhpcy51cmxSZWdleC5sYXN0SW5kZXggPSAwO1xuICAgIGxldCB1cmxNYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgICB3aGlsZSAoKHVybE1hdGNoID0gdGhpcy51cmxSZWdleC5leGVjKHByb2Nlc3NlZFRleHQpKSAhPT0gbnVsbCkge1xuICAgICAgdXJsTWF0Y2hlcy5wdXNoKHVybE1hdGNoKTtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNhciBkZSBhdHLDoXMgaGFjaWEgYWRlbGFudGUgcGFyYSBtYW50ZW5lciBsYXMgcG9zaWNpb25lc1xuICAgIGZvciAobGV0IGkgPSB1cmxNYXRjaGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IHVybE1hdGNoZXNbaV07XG4gICAgICBjb25zdCBbZnVsbE1hdGNoLCB1cmxdID0gbWF0Y2g7XG4gICAgICBjb25zdCBzdGFydEluZGV4ID0gbWF0Y2guaW5kZXghO1xuICAgICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgZnVsbE1hdGNoLmxlbmd0aDtcblxuICAgICAgLy8gVmVyaWZpY2FyIHF1ZSBubyBlc3TDqSB5YSBkZW50cm8gZGUgdW4gZW5sYWNlIEhUTUwgZXhpc3RlbnRlXG4gICAgICBjb25zdCB0ZXh0QmVmb3JlID0gcHJvY2Vzc2VkVGV4dC5zdWJzdHJpbmcoMCwgc3RhcnRJbmRleCk7XG4gICAgICBjb25zdCBsYXN0T3BlblRhZyA9IHRleHRCZWZvcmUubGFzdEluZGV4T2YoJzxhICcpO1xuICAgICAgY29uc3QgbGFzdENsb3NlVGFnID0gdGV4dEJlZm9yZS5sYXN0SW5kZXhPZignPC9hPicpO1xuXG4gICAgICAvLyBTaSBoYXkgdW4gdGFnIDxhIGFiaWVydG8gc2luIGNlcnJhciwgbm8gcHJvY2VzYW1vc1xuICAgICAgaWYgKGxhc3RPcGVuVGFnID4gbGFzdENsb3NlVGFnKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBMaW1waWFyIHB1bnR1YWNpw7NuIGRlbCBmaW5hbCBkZSBsYSBVUkxcbiAgICAgIGNvbnN0IGNsZWFuVXJsID0gdGhpcy5jbGVhblVybFB1bmN0dWF0aW9uKHVybCk7XG4gICAgICBjb25zdCBwdW5jdHVhdGlvblJlbW92ZWQgPSB1cmwgIT09IGNsZWFuVXJsO1xuICAgICAgY29uc3QgcHVuY3R1YXRpb24gPSBwdW5jdHVhdGlvblJlbW92ZWQgPyB1cmwuc3Vic3RyaW5nKGNsZWFuVXJsLmxlbmd0aCkgOiAnJztcblxuICAgICAgaGFzTGlua3MgPSB0cnVlO1xuICAgICAgY29uc3QgdGFyZ2V0ID0gb3BlbkV4dGVybmFsSW5OZXdUYWIgPyAnIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIicgOiAnJztcbiAgICAgIGNvbnN0IGNsYXNzZXMgPSBgJHtsaW5rQ2xhc3N9ICR7ZXh0ZXJuYWxMaW5rQ2xhc3N9YC50cmltKCk7XG4gICAgICBjb25zdCBsaW5rSHRtbCA9IGA8YSBocmVmPVwiJHtjbGVhblVybH1cIiR7dGFyZ2V0fSBjbGFzcz1cIiR7Y2xhc3Nlc31cIj4ke2NsZWFuVXJsfTwvYT5gO1xuXG4gICAgICAvLyBSZWVtcGxhemFyIGVsIFVSTCBvcmlnaW5hbCBjb24gZWwgZW5sYWNlICsgcHVudHVhY2nDs24gc2kgZXhpc3TDrWFcbiAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gcHVuY3R1YXRpb25SZW1vdmVkID8gbGlua0h0bWwgKyBwdW5jdHVhdGlvbiA6IGxpbmtIdG1sO1xuICAgICAgcHJvY2Vzc2VkVGV4dCA9XG4gICAgICAgIHByb2Nlc3NlZFRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0SW5kZXgpICsgcmVwbGFjZW1lbnQgKyBwcm9jZXNzZWRUZXh0LnN1YnN0cmluZyhlbmRJbmRleCk7XG4gICAgfVxuXG4gICAgLy8gMy4gUHJvY2VzYXIgcnV0YXMgaW50ZXJuYXNcbiAgICAvLyAvLyBVc2FyIGV4ZWMgZW4gYnVjbGUgKGNvbXBhdGlibGUgY29uIEVTMjAxOClcbiAgICAvLyBjb25zdCBpbnRlcm5hbE1hdGNoZXM6IFJlZ0V4cEV4ZWNBcnJheVtdID0gW107XG4gICAgLy8gdGhpcy5pbnRlcm5hbFJvdXRlUmVnZXgubGFzdEluZGV4ID0gMDtcbiAgICAvLyBsZXQgaW50ZXJuYWxNYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgICAvLyB3aGlsZSAoKGludGVybmFsTWF0Y2ggPSB0aGlzLmludGVybmFsUm91dGVSZWdleC5leGVjKHByb2Nlc3NlZFRleHQpKSAhPT0gbnVsbCkge1xuICAgIC8vICAgaW50ZXJuYWxNYXRjaGVzLnB1c2goaW50ZXJuYWxNYXRjaCk7XG4gICAgLy8gfVxuXG4gICAgLy8gUHJvY2VzYXIgZGUgYXRyw6FzIGhhY2lhIGFkZWxhbnRlIHBhcmEgbWFudGVuZXIgbGFzIHBvc2ljaW9uZXNcbiAgICAvLyBmb3IgKGxldCBpID0gaW50ZXJuYWxNYXRjaGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgLy8gICBjb25zdCBtYXRjaCA9IGludGVybmFsTWF0Y2hlc1tpXTtcbiAgICAvLyAgIGNvbnN0IFtmdWxsTWF0Y2gsIHByZWZpeCwgcm91dGVdID0gbWF0Y2g7XG4gICAgLy8gICBjb25zdCBzdGFydEluZGV4ID0gbWF0Y2guaW5kZXghO1xuICAgIC8vICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgZnVsbE1hdGNoLmxlbmd0aDtcblxuICAgIC8vICAgLy8gVmVyaWZpY2FyIHF1ZSBubyBlc3TDqSB5YSBkZW50cm8gZGUgdW4gZW5sYWNlIEhUTUwgZXhpc3RlbnRlXG4gICAgLy8gICBjb25zdCB0ZXh0QmVmb3JlID0gcHJvY2Vzc2VkVGV4dC5zdWJzdHJpbmcoMCwgc3RhcnRJbmRleCk7XG4gICAgLy8gICBjb25zdCBsYXN0T3BlblRhZyA9IHRleHRCZWZvcmUubGFzdEluZGV4T2YoJzxhICcpO1xuICAgIC8vICAgY29uc3QgbGFzdENsb3NlVGFnID0gdGV4dEJlZm9yZS5sYXN0SW5kZXhPZignPC9hPicpO1xuXG4gICAgLy8gICAvLyBTaSBoYXkgdW4gdGFnIDxhIGFiaWVydG8gc2luIGNlcnJhciwgbm8gcHJvY2VzYW1vc1xuICAgIC8vICAgaWYgKGxhc3RPcGVuVGFnID4gbGFzdENsb3NlVGFnKSB7XG4gICAgLy8gICAgIGNvbnRpbnVlO1xuICAgIC8vICAgfVxuXG4gICAgLy8gICBoYXNMaW5rcyA9IHRydWU7XG4gICAgLy8gICBjb25zdCB0YXJnZXQgPSBvcGVuSW50ZXJuYWxJbk5ld1RhYiA/ICcgdGFyZ2V0PVwiX2JsYW5rXCInIDogJyc7XG4gICAgLy8gICBjb25zdCBjbGFzc2VzID0gYCR7bGlua0NsYXNzfSAke2ludGVybmFsTGlua0NsYXNzfWAudHJpbSgpO1xuICAgIC8vICAgY29uc3QgbGlua0h0bWwgPSBgPGEgaHJlZj1cIiR7cm91dGV9XCIke3RhcmdldH0gY2xhc3M9XCIke2NsYXNzZXN9XCI+JHtyb3V0ZX08L2E+YDtcblxuICAgIC8vICAgY29uc3QgcmVwbGFjZW1lbnQgPSBgJHtwcmVmaXh9JHtsaW5rSHRtbH1gO1xuICAgIC8vICAgcHJvY2Vzc2VkVGV4dCA9XG4gICAgLy8gICAgIHByb2Nlc3NlZFRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0SW5kZXgpICsgcmVwbGFjZW1lbnQgKyBwcm9jZXNzZWRUZXh0LnN1YnN0cmluZyhlbmRJbmRleCk7XG4gICAgLy8gfVxuXG4gICAgLy8gU2kgaGF5IGVubGFjZXMsIHNhbml0aXphciBlbCBIVE1MXG4gICAgaWYgKGhhc0xpbmtzKSB7XG4gICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwocHJvY2Vzc2VkVGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZWN0YSBzaSB1biB0ZXh0byBjb250aWVuZSBlbmxhY2VzIChVUkxzLCBydXRhcyBpbnRlcm5hcyBvIGVubGFjZXMgTWFya2Rvd24pLlxuICAgKlxuICAgKiBAcGFyYW0gdGV4dCAtIFRleHRvIGEgYW5hbGl6YXJcbiAgICogQHJldHVybnMgdHJ1ZSBzaSBjb250aWVuZSBlbmxhY2VzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgaGFzTGlua3MgPSB0aGlzLmxpbmtQcm9jZXNzb3IuaGFzTGlua3MoJ1Zpc2l0IGh0dHBzOi8vZXhhbXBsZS5jb20gb3IgW2RvY3NdKGh0dHBzOi8vZG9jcy5jb20pJyk7XG4gICAqIC8vIFJldHVybnM6IHRydWVcbiAgICogYGBgXG4gICAqL1xuICBoYXNMaW5rcyh0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRleHQpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIFJlc2V0IHJlZ2V4IGluZGljZXNcbiAgICB0aGlzLnVybFJlZ2V4Lmxhc3RJbmRleCA9IDA7XG4gICAgdGhpcy5pbnRlcm5hbFJvdXRlUmVnZXgubGFzdEluZGV4ID0gMDtcbiAgICB0aGlzLm1hcmtkb3duTGlua1JlZ2V4Lmxhc3RJbmRleCA9IDA7XG5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy51cmxSZWdleC50ZXN0KHRleHQpIHx8XG4gICAgICB0aGlzLmludGVybmFsUm91dGVSZWdleC50ZXN0KHRleHQpIHx8XG4gICAgICB0aGlzLm1hcmtkb3duTGlua1JlZ2V4LnRlc3QodGV4dClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhZSB0b2RvcyBsb3MgZW5sYWNlcyBkZSB1biB0ZXh0by5cbiAgICpcbiAgICogQHBhcmFtIHRleHQgLSBUZXh0byBhIGFuYWxpemFyXG4gICAqIEByZXR1cm5zIEFycmF5IGRlIGVubGFjZXMgZW5jb250cmFkb3MgY29uIHN1IHRpcG8geSB0ZXh0byAoc2kgZXMgTWFya2Rvd24pXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgbGlua3MgPSB0aGlzLmxpbmtQcm9jZXNzb3IuZXh0cmFjdExpbmtzKCdWaXNpdCBodHRwczovL2V4YW1wbGUuY29tLCAvcHJvZmlsZSwgb3IgW2RvY3NdKGh0dHBzOi8vZG9jcy5jb20pJyk7XG4gICAqIC8vIFJldHVybnM6IFtcbiAgICogLy8gICB7IHVybDogJ2h0dHBzOi8vZXhhbXBsZS5jb20nLCB0eXBlOiAnZXh0ZXJuYWwnLCB0ZXh0OiAnaHR0cHM6Ly9leGFtcGxlLmNvbScgfSxcbiAgICogLy8gICB7IHVybDogJy9wcm9maWxlJywgdHlwZTogJ2ludGVybmFsJywgdGV4dDogJy9wcm9maWxlJyB9LFxuICAgKiAvLyAgIHsgdXJsOiAnaHR0cHM6Ly9kb2NzLmNvbScsIHR5cGU6ICdleHRlcm5hbCcsIHRleHQ6ICdkb2NzJyB9XG4gICAqIC8vIF1cbiAgICogYGBgXG4gICAqL1xuICBleHRyYWN0TGlua3ModGV4dDogc3RyaW5nKTogQXJyYXk8eyB1cmw6IHN0cmluZzsgdHlwZTogJ2V4dGVybmFsJyB8ICdpbnRlcm5hbCc7IHRleHQ6IHN0cmluZyB9PiB7XG4gICAgaWYgKCF0ZXh0KSByZXR1cm4gW107XG5cbiAgICBjb25zdCBsaW5rczogQXJyYXk8eyB1cmw6IHN0cmluZzsgdHlwZTogJ2V4dGVybmFsJyB8ICdpbnRlcm5hbCc7IHRleHQ6IHN0cmluZyB9PiA9IFtdO1xuXG4gICAgLy8gUmVzZXQgcmVnZXggaW5kaWNlc1xuICAgIHRoaXMudXJsUmVnZXgubGFzdEluZGV4ID0gMDtcbiAgICB0aGlzLmludGVybmFsUm91dGVSZWdleC5sYXN0SW5kZXggPSAwO1xuICAgIHRoaXMubWFya2Rvd25MaW5rUmVnZXgubGFzdEluZGV4ID0gMDtcblxuICAgIC8vIEV4dHJhZXIgZW5sYWNlcyBNYXJrZG93biBwcmltZXJvXG4gICAgbGV0IG1hdGNoO1xuICAgIHdoaWxlICgobWF0Y2ggPSB0aGlzLm1hcmtkb3duTGlua1JlZ2V4LmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB1cmwgPSBtYXRjaFsyXTtcbiAgICAgIGNvbnN0IGxpbmtUZXh0ID0gbWF0Y2hbMV07XG4gICAgICBjb25zdCB0eXBlID0gL15odHRwcz86XFwvXFwvLy50ZXN0KHVybCkgPyAnZXh0ZXJuYWwnIDogJ2ludGVybmFsJztcbiAgICAgIGxpbmtzLnB1c2goeyB1cmwsIHR5cGUsIHRleHQ6IGxpbmtUZXh0IH0pO1xuICAgIH1cblxuICAgIC8vIEV4dHJhZXIgVVJMcyBleHRlcm5hcyBkaXJlY3Rhc1xuICAgIHdoaWxlICgobWF0Y2ggPSB0aGlzLnVybFJlZ2V4LmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB1cmwgPSBtYXRjaFsxXTtcbiAgICAgIC8vIFZlcmlmaWNhciBxdWUgbm8gZXN0w6kgeWEgY2FwdHVyYWRvIGNvbW8gTWFya2Rvd24gbGlua1xuICAgICAgaWYgKCFsaW5rcy5zb21lKGxpbmsgPT4gbGluay51cmwgPT09IHVybCkpIHtcbiAgICAgICAgbGlua3MucHVzaCh7IHVybCwgdHlwZTogJ2V4dGVybmFsJywgdGV4dDogdXJsIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4dHJhZXIgcnV0YXMgaW50ZXJuYXMgZGlyZWN0YXNcbiAgICB3aGlsZSAoKG1hdGNoID0gdGhpcy5pbnRlcm5hbFJvdXRlUmVnZXguZXhlYyh0ZXh0KSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHVybCA9IG1hdGNoWzJdO1xuICAgICAgLy8gVmVyaWZpY2FyIHF1ZSBubyBlc3TDqSB5YSBjYXB0dXJhZG8gY29tbyBNYXJrZG93biBsaW5rXG4gICAgICBpZiAoIWxpbmtzLnNvbWUobGluayA9PiBsaW5rLnVybCA9PT0gdXJsKSkge1xuICAgICAgICBsaW5rcy5wdXNoKHsgdXJsLCB0eXBlOiAnaW50ZXJuYWwnLCB0ZXh0OiB1cmwgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmtzO1xuICB9XG59XG4iXX0=
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1wcm9jZXNzb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvbGluay1wcm9jZXNzb3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFrQjNDOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBSUgsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQixZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBVDNDLHFHQUFxRztRQUNwRixhQUFRLEdBQUcsc0JBQXNCLENBQUM7UUFFbkQseUZBQXlGO1FBQ3hFLHVCQUFrQixHQUFHLG1CQUFtQixDQUFDO1FBRTFELDJEQUEyRDtRQUMxQyxzQkFBaUIsR0FBRywwQkFBMEIsQ0FBQztJQUVsQixDQUFDO0lBRS9DOzs7O09BSUc7SUFDSyxtQkFBbUIsQ0FBQyxHQUFXO1FBQ3JDLG9GQUFvRjtRQUNwRixvRkFBb0Y7UUFDcEYsTUFBTSxtQkFBbUIsR0FBRyxZQUFZLENBQUM7UUFFekMsMEZBQTBGO1FBQzFGLG9EQUFvRDtRQUNwRCxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUvQyxJQUFJLG9CQUFvQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDN0MsNERBQTREO1lBQzVELEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FvQkc7SUFDSCxZ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TUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBMaW5rUHJvY2Vzc29yQ29uZmlnIHtcbiAgLyoqIFdoZXRoZXIgdG8gb3BlbiBleHRlcm5hbCBsaW5rcyBpbiBuZXcgdGFiIChkZWZhdWx0OiB0cnVlKSAqL1xuICBvcGVuRXh0ZXJuYWxJbk5ld1RhYj86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRvIG9wZW4gaW50ZXJuYWwgbGlua3MgaW4gbmV3IHRhYiAoZGVmYXVsdDogZmFsc2UpICovXG4gIG9wZW5JbnRlcm5hbEluTmV3VGFiPzogYm9vbGVhbjtcbiAgLyoqIEN1c3RvbSBDU1MgY2xhc3NlcyBmb3IgbGlua3MgKi9cbiAgbGlua0NsYXNzPzogc3RyaW5nO1xuICAvKiogQ3VzdG9tIENTUyBjbGFzc2VzIGZvciBleHRlcm5hbCBsaW5rcyAqL1xuICBleHRlcm5hbExpbmtDbGFzcz86IHN0cmluZztcbiAgLyoqIEN1c3RvbSBDU1MgY2xhc3NlcyBmb3IgaW50ZXJuYWwgbGlua3MgKi9cbiAgaW50ZXJuYWxMaW5rQ2xhc3M/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRvIHByb2Nlc3MgTWFya2Rvd24tc3R5bGUgbGlua3MgW3RleHRdKHVybCkgKGRlZmF1bHQ6IHRydWUpICovXG4gIHByb2Nlc3NNYXJrZG93bkxpbmtzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBMaW5rUHJvY2Vzc29yU2VydmljZSAtIFNlcnZpY2UgZm9yIHByb2Nlc3NpbmcgdGV4dCBjb250ZW50IHRvIGNvbnZlcnQgVVJMcyBhbmQgaW50ZXJuYWwgcm91dGVzIGludG8gY2xpY2thYmxlIGxpbmtzLlxuICpcbiAqIFRoaXMgc2VydmljZSBhdXRvbWF0aWNhbGx5IGRldGVjdHMgZXh0ZXJuYWwgVVJMcyAoaHR0cC9odHRwcyksIGludGVybmFsIHJvdXRlcyAoc3RhcnRpbmcgd2l0aCAvKSxcbiAqIGFuZCBNYXJrZG93bi1zdHlsZSBsaW5rcyBbdGV4dF0odXJsKSBhbmQgY29udmVydHMgdGhlbSBpbnRvIEhUTUwgYW5jaG9yIGVsZW1lbnRzIHdpdGggYXBwcm9wcmlhdGUgYXR0cmlidXRlcy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgbGlua1Byb2Nlc3NvcjogTGlua1Byb2Nlc3NvclNlcnZpY2UpIHt9XG4gKlxuICogcHJvY2Vzc1RleHQoKSB7XG4gKiAgIGNvbnN0IHRleHQgPSAnVmlzaXQgaHR0cHM6Ly9leGFtcGxlLmNvbSwgZ28gdG8gL3Byb2ZpbGUsIG9yIFtjaGVjayBkb2NzXShodHRwczovL2RvY3MuZXhhbXBsZS5jb20pJztcbiAqICAgY29uc3QgcHJvY2Vzc2VkID0gdGhpcy5saW5rUHJvY2Vzc29yLnByb2Nlc3NMaW5rcyh0ZXh0KTtcbiAqICAgLy8gUmV0dXJucyBTYWZlSHRtbCB3aXRoIGNsaWNrYWJsZSBsaW5rc1xuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMaW5rUHJvY2Vzc29yU2VydmljZSB7XG4gIC8vIFJlZ2V4IHBhcmEgZGV0ZWN0YXIgVVJMcyBjb21wbGV0YXMgKGh0dHAvaHR0cHMpIC0gY2FwdHVyYSB0b2RhIGxhIFVSTCB5IGx1ZWdvIGxpbXBpYW1vcyBwdW50dWFjacOzblxuICBwcml2YXRlIHJlYWRvbmx5IHVybFJlZ2V4ID0gLyhodHRwcz86XFwvXFwvW15cXHNdKykvZztcblxuICAvLyBSZWdleCBwYXJhIGRldGVjdGFyIHJ1dGFzIGludGVybmFzIC0gY2FwdHVyYSB0b2RhIGxhIHJ1dGEgeSBsdWVnbyBsaW1waWFtb3MgcHVudHVhY2nDs25cbiAgcHJpdmF0ZSByZWFkb25seSBpbnRlcm5hbFJvdXRlUmVnZXggPSAvKFxcc3xeKShcXC9bXlxcc10qKS9nO1xuXG4gIC8vIFJlZ2V4IHBhcmEgZGV0ZWN0YXIgZW5sYWNlcyBlc3RpbG8gTWFya2Rvd24gW3RleHRvXSh1cmwpXG4gIHByaXZhdGUgcmVhZG9ubHkgbWFya2Rvd25MaW5rUmVnZXggPSAvXFxbKFteXFxdXSspXFxdXFwoKFteKV0rKVxcKS9nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgLyoqXG4gICAqIExpbXBpYSBsYSBwdW50dWFjacOzbiBkZWwgZmluYWwgZGUgdW5hIFVSTC5cbiAgICogTWFudGllbmUgY2FyYWN0ZXJlcyB2w6FsaWRvcyBkZSBVUkwgcGVybyByZW11ZXZlIHNpZ25vcyBkZSBwdW50dWFjacOzbiBjb211bmVzIGFsIGZpbmFsLlxuICAgKiBQcmVzZXJ2YSBwYXLDoW1ldHJvcyBkZSBjb25zdWx0YSwgZnJhZ21lbnRvcyB5IGNhcmFjdGVyZXMgdsOhbGlkb3MgZW4gVVJMcy5cbiAgICovXG4gIHByaXZhdGUgY2xlYW5VcmxQdW5jdHVhdGlvbih1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gQ2FyYWN0ZXJlcyBxdWUgY29uc2lkZXJhbW9zIHB1bnR1YWNpw7NuIGFsIGZpbmFsIGRlIG9yYWNpw7NuLCBwZXJvIE5PIHBhcnRlIGRlIFVSTHNcbiAgICAvLyBObyBpbmNsdWltb3MgJiBvID0gcXVlIHNvbiBwYXJ0ZSBkZSBxdWVyeSBwYXJhbXMsIG5pICMgcXVlIGVzIHBhcnRlIGRlIGZyYWdtZW50b3NcbiAgICBjb25zdCB0cmFpbGluZ1B1bmN0dWF0aW9uID0gL1suLDshPyldKyQvO1xuXG4gICAgLy8gQ2Fzb3MgZXNwZWNpYWxlczogc2kgbGEgVVJMIHRlcm1pbmEgY29uIHBhcsOpbnRlc2lzIHBlcm8gbm8gdGllbmUgcGFyw6ludGVzaXMgZGUgYXBlcnR1cmFcbiAgICAvLyBwcm9iYWJsZW1lbnRlIGVsIHBhcsOpbnRlc2lzIG5vIGVzIHBhcnRlIGRlIGxhIFVSTFxuICAgIGNvbnN0IGhhc09wZW5pbmdQYXJlbiA9IHVybC5pbmNsdWRlcygnKCcpO1xuICAgIGNvbnN0IGVuZHNXaXRoQ2xvc2luZ1BhcmVuID0gdXJsLmVuZHNXaXRoKCcpJyk7XG5cbiAgICBpZiAoZW5kc1dpdGhDbG9zaW5nUGFyZW4gJiYgIWhhc09wZW5pbmdQYXJlbikge1xuICAgICAgLy8gUmVtb3ZlciBlbCBwYXLDqW50ZXNpcyBkZSBjaWVycmUgc2kgbm8gaGF5IHVubyBkZSBhcGVydHVyYVxuICAgICAgdXJsID0gdXJsLnJlcGxhY2UoL1xcKSQvLCAnJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybC5yZXBsYWNlKHRyYWlsaW5nUHVuY3R1YXRpb24sICcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNhIHRleHRvIHBhcmEgY29udmVydGlyIGVubGFjZXMgZW4gZWxlbWVudG9zIDxhPiBjbGlja2VhYmxlcy5cbiAgICogRGV0ZWN0YSBhdXRvbcOhdGljYW1lbnRlIFVSTHMgZXh0ZXJuYXMsIHJ1dGFzIGludGVybmFzIHkgZW5sYWNlcyBlc3RpbG8gTWFya2Rvd24uXG4gICAqXG4gICAqIEBwYXJhbSB0ZXh0IC0gVGV4dG8gYSBwcm9jZXNhclxuICAgKiBAcGFyYW0gY29uZmlnIC0gQ29uZmlndXJhY2nDs24gZGVsIHByb2Nlc2FtaWVudG9cbiAgICogQHJldHVybnMgU2FmZUh0bWwgY29uIGVubGFjZXMgcHJvY2VzYWRvcyBvIHN0cmluZyBvcmlnaW5hbFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJlc3VsdCA9IHRoaXMubGlua1Byb2Nlc3Nvci5wcm9jZXNzTGlua3MoXG4gICAqICAgJ1Zpc2l0IGh0dHBzOi8vZXhhbXBsZS5jb20sIGdvIHRvIC9wcm9maWxlLCBvciBbY2hlY2sgZG9jc10oaHR0cHM6Ly9kb2NzLmV4YW1wbGUuY29tKScsXG4gICAqICAge1xuICAgKiAgICAgb3BlbkV4dGVybmFsSW5OZXdUYWI6IHRydWUsXG4gICAqICAgICBvcGVuSW50ZXJuYWxJbk5ld1RhYjogZmFsc2UsXG4gICAqICAgICBwcm9jZXNzTWFya2Rvd25MaW5rczogdHJ1ZSxcbiAgICogICAgIGxpbmtDbGFzczogJ2N1c3RvbS1saW5rJ1xuICAgKiAgIH1cbiAgICogKTtcbiAgICogYGBgXG4gICAqL1xuICBwcm9jZXNzTGlua3ModGV4dDogc3RyaW5nLCBjb25maWc6IExpbmtQcm9jZXNzb3JDb25maWcgPSB7fSk6IFNhZmVIdG1sIHwgc3RyaW5nIHtcbiAgICBpZiAoIXRleHQpIHJldHVybiAnJztcblxuICAgIGNvbnN0IHtcbiAgICAgIG9wZW5FeHRlcm5hbEluTmV3VGFiID0gdHJ1ZSxcbiAgICAgIG9wZW5JbnRlcm5hbEluTmV3VGFiID0gZmFsc2UsXG4gICAgICBsaW5rQ2xhc3MgPSAncHJvY2Vzc2VkLWxpbmsnLFxuICAgICAgZXh0ZXJuYWxMaW5rQ2xhc3MgPSAnZXh0ZXJuYWwtbGluaycsXG4gICAgICBpbnRlcm5hbExpbmtDbGFzcyA9ICdpbnRlcm5hbC1saW5rJyxcbiAgICAgIHByb2Nlc3NNYXJrZG93bkxpbmtzID0gdHJ1ZSxcbiAgICB9ID0gY29uZmlnO1xuXG4gICAgbGV0IGhhc0xpbmtzID0gZmFsc2U7XG4gICAgbGV0IHByb2Nlc3NlZFRleHQgPSB0ZXh0O1xuXG4gICAgLy8gMS4gUHJvY2VzYXIgZW5sYWNlcyBlc3RpbG8gTWFya2Rvd24gW3RleHRvXSh1cmwpIHByaW1lcm9cbiAgICBpZiAocHJvY2Vzc01hcmtkb3duTGlua3MpIHtcbiAgICAgIC8vIFVzYXIgZXhlYyBlbiBidWNsZSAoY29tcGF0aWJsZSBjb24gRVMyMDE4KVxuICAgICAgY29uc3QgbWFya2Rvd25NYXRjaGVzOiBSZWdFeHBFeGVjQXJyYXlbXSA9IFtdO1xuICAgICAgdGhpcy5tYXJrZG93bkxpbmtSZWdleC5sYXN0SW5kZXggPSAwO1xuICAgICAgbGV0IG1kTWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGw7XG4gICAgICB3aGlsZSAoKG1kTWF0Y2ggPSB0aGlzLm1hcmtkb3duTGlua1JlZ2V4LmV4ZWMocHJvY2Vzc2VkVGV4dCkpICE9PSBudWxsKSB7XG4gICAgICAgIG1hcmtkb3duTWF0Y2hlcy5wdXNoKG1kTWF0Y2gpO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZXNhciBkZSBhdHLDoXMgaGFjaWEgYWRlbGFudGUgcGFyYSBtYW50ZW5lciBsYXMgcG9zaWNpb25lc1xuICAgICAgZm9yIChsZXQgaSA9IG1hcmtkb3duTWF0Y2hlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IG1hcmtkb3duTWF0Y2hlc1tpXTtcbiAgICAgICAgY29uc3QgW2Z1bGxNYXRjaCwgbGlua1RleHQsIHVybF0gPSBtYXRjaDtcbiAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IG1hdGNoLmluZGV4ITtcbiAgICAgICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgZnVsbE1hdGNoLmxlbmd0aDtcblxuICAgICAgICBoYXNMaW5rcyA9IHRydWU7XG4gICAgICAgIGNvbnN0IGlzRXh0ZXJuYWwgPSAvXmh0dHBzPzpcXC9cXC8vLnRlc3QodXJsKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gKGlzRXh0ZXJuYWwgPyBvcGVuRXh0ZXJuYWxJbk5ld1RhYiA6IG9wZW5JbnRlcm5hbEluTmV3VGFiKVxuICAgICAgICAgID8gaXNFeHRlcm5hbFxuICAgICAgICAgICAgPyAnIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIidcbiAgICAgICAgICAgIDogJyB0YXJnZXQ9XCJfYmxhbmtcIidcbiAgICAgICAgICA6ICcnO1xuICAgICAgICBjb25zdCB0eXBlQ2xhc3MgPSBpc0V4dGVybmFsID8gZXh0ZXJuYWxMaW5rQ2xhc3MgOiBpbnRlcm5hbExpbmtDbGFzcztcbiAgICAgICAgY29uc3QgY2xhc3NlcyA9IGAke2xpbmtDbGFzc30gJHt0eXBlQ2xhc3N9YC50cmltKCk7XG4gICAgICAgIGNvbnN0IGxpbmtIdG1sID0gYDxhIGhyZWY9XCIke3VybH1cIiR7dGFyZ2V0fSBjbGFzcz1cIiR7Y2xhc3Nlc31cIj4ke2xpbmtUZXh0fTwvYT5gO1xuXG4gICAgICAgIHByb2Nlc3NlZFRleHQgPVxuICAgICAgICAgIHByb2Nlc3NlZFRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0SW5kZXgpICsgbGlua0h0bWwgKyBwcm9jZXNzZWRUZXh0LnN1YnN0cmluZyhlbmRJbmRleCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gMi4gUHJvY2VzYXIgVVJMcyBleHRlcm5hcyBkaXJlY3Rhc1xuICAgIC8vIFVzYXIgZXhlYyBlbiBidWNsZSAoY29tcGF0aWJsZSBjb24gRVMyMDE4KVxuICAgIGNvbnN0IHVybE1hdGNoZXM6IFJlZ0V4cEV4ZWNBcnJheVtdID0gW107XG4gICAgdGhpcy51cmxSZWdleC5sYXN0SW5kZXggPSAwO1xuICAgIGxldCB1cmxNYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgICB3aGlsZSAoKHVybE1hdGNoID0gdGhpcy51cmxSZWdleC5leGVjKHByb2Nlc3NlZFRleHQpKSAhPT0gbnVsbCkge1xuICAgICAgdXJsTWF0Y2hlcy5wdXNoKHVybE1hdGNoKTtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNhciBkZSBhdHLDoXMgaGFjaWEgYWRlbGFudGUgcGFyYSBtYW50ZW5lciBsYXMgcG9zaWNpb25lc1xuICAgIGZvciAobGV0IGkgPSB1cmxNYXRjaGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IHVybE1hdGNoZXNbaV07XG4gICAgICBjb25zdCBbZnVsbE1hdGNoLCB1cmxdID0gbWF0Y2g7XG4gICAgICBjb25zdCBzdGFydEluZGV4ID0gbWF0Y2guaW5kZXghO1xuICAgICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgZnVsbE1hdGNoLmxlbmd0aDtcblxuICAgICAgLy8gVmVyaWZpY2FyIHF1ZSBubyBlc3TDqSB5YSBkZW50cm8gZGUgdW4gZW5sYWNlIEhUTUwgZXhpc3RlbnRlXG4gICAgICBjb25zdCB0ZXh0QmVmb3JlID0gcHJvY2Vzc2VkVGV4dC5zdWJzdHJpbmcoMCwgc3RhcnRJbmRleCk7XG4gICAgICBjb25zdCBsYXN0T3BlblRhZyA9IHRleHRCZWZvcmUubGFzdEluZGV4T2YoJzxhICcpO1xuICAgICAgY29uc3QgbGFzdENsb3NlVGFnID0gdGV4dEJlZm9yZS5sYXN0SW5kZXhPZignPC9hPicpO1xuXG4gICAgICAvLyBTaSBoYXkgdW4gdGFnIDxhIGFiaWVydG8gc2luIGNlcnJhciwgbm8gcHJvY2VzYW1vc1xuICAgICAgaWYgKGxhc3RPcGVuVGFnID4gbGFzdENsb3NlVGFnKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBMaW1waWFyIHB1bnR1YWNpw7NuIGRlbCBmaW5hbCBkZSBsYSBVUkxcbiAgICAgIGNvbnN0IGNsZWFuVXJsID0gdGhpcy5jbGVhblVybFB1bmN0dWF0aW9uKHVybCk7XG4gICAgICBjb25zdCBwdW5jdHVhdGlvblJlbW92ZWQgPSB1cmwgIT09IGNsZWFuVXJsO1xuICAgICAgY29uc3QgcHVuY3R1YXRpb24gPSBwdW5jdHVhdGlvblJlbW92ZWQgPyB1cmwuc3Vic3RyaW5nKGNsZWFuVXJsLmxlbmd0aCkgOiAnJztcblxuICAgICAgaGFzTGlua3MgPSB0cnVlO1xuICAgICAgY29uc3QgdGFyZ2V0ID0gb3BlbkV4dGVybmFsSW5OZXdUYWIgPyAnIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIicgOiAnJztcbiAgICAgIGNvbnN0IGNsYXNzZXMgPSBgJHtsaW5rQ2xhc3N9ICR7ZXh0ZXJuYWxMaW5rQ2xhc3N9YC50cmltKCk7XG4gICAgICBjb25zdCBsaW5rSHRtbCA9IGA8YSBocmVmPVwiJHtjbGVhblVybH1cIiR7dGFyZ2V0fSBjbGFzcz1cIiR7Y2xhc3Nlc31cIj4ke2NsZWFuVXJsfTwvYT5gO1xuXG4gICAgICAvLyBSZWVtcGxhemFyIGVsIFVSTCBvcmlnaW5hbCBjb24gZWwgZW5sYWNlICsgcHVudHVhY2nDs24gc2kgZXhpc3TDrWFcbiAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gcHVuY3R1YXRpb25SZW1vdmVkID8gbGlua0h0bWwgKyBwdW5jdHVhdGlvbiA6IGxpbmtIdG1sO1xuICAgICAgcHJvY2Vzc2VkVGV4dCA9XG4gICAgICAgIHByb2Nlc3NlZFRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0SW5kZXgpICsgcmVwbGFjZW1lbnQgKyBwcm9jZXNzZWRUZXh0LnN1YnN0cmluZyhlbmRJbmRleCk7XG4gICAgfVxuXG4gICAgLy8gMy4gUHJvY2VzYXIgcnV0YXMgaW50ZXJuYXNcbiAgICAvLyBVc2FyIGV4ZWMgZW4gYnVjbGUgKGNvbXBhdGlibGUgY29uIEVTMjAxOClcbiAgICBjb25zdCBpbnRlcm5hbE1hdGNoZXM6IFJlZ0V4cEV4ZWNBcnJheVtdID0gW107XG4gICAgdGhpcy5pbnRlcm5hbFJvdXRlUmVnZXgubGFzdEluZGV4ID0gMDtcbiAgICBsZXQgaW50ZXJuYWxNYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgICB3aGlsZSAoKGludGVybmFsTWF0Y2ggPSB0aGlzLmludGVybmFsUm91dGVSZWdleC5leGVjKHByb2Nlc3NlZFRleHQpKSAhPT0gbnVsbCkge1xuICAgICAgaW50ZXJuYWxNYXRjaGVzLnB1c2goaW50ZXJuYWxNYXRjaCk7XG4gICAgfVxuXG4gICAgLy8gUHJvY2VzYXIgZGUgYXRyw6FzIGhhY2lhIGFkZWxhbnRlIHBhcmEgbWFudGVuZXIgbGFzIHBvc2ljaW9uZXNcbiAgICBmb3IgKGxldCBpID0gaW50ZXJuYWxNYXRjaGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IGludGVybmFsTWF0Y2hlc1tpXTtcbiAgICAgIGNvbnN0IFtmdWxsTWF0Y2gsIHByZWZpeCwgcm91dGVdID0gbWF0Y2g7XG4gICAgICBjb25zdCBzdGFydEluZGV4ID0gbWF0Y2guaW5kZXghO1xuICAgICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgZnVsbE1hdGNoLmxlbmd0aDtcblxuICAgICAgLy8gVmVyaWZpY2FyIHF1ZSBubyBlc3TDqSB5YSBkZW50cm8gZGUgdW4gZW5sYWNlIEhUTUwgZXhpc3RlbnRlXG4gICAgICBjb25zdCB0ZXh0QmVmb3JlID0gcHJvY2Vzc2VkVGV4dC5zdWJzdHJpbmcoMCwgc3RhcnRJbmRleCk7XG4gICAgICBjb25zdCBsYXN0T3BlblRhZyA9IHRleHRCZWZvcmUubGFzdEluZGV4T2YoJzxhICcpO1xuICAgICAgY29uc3QgbGFzdENsb3NlVGFnID0gdGV4dEJlZm9yZS5sYXN0SW5kZXhPZignPC9hPicpO1xuXG4gICAgICAvLyBTaSBoYXkgdW4gdGFnIDxhIGFiaWVydG8gc2luIGNlcnJhciwgbm8gcHJvY2VzYW1vc1xuICAgICAgaWYgKGxhc3RPcGVuVGFnID4gbGFzdENsb3NlVGFnKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBoYXNMaW5rcyA9IHRydWU7XG4gICAgICBjb25zdCB0YXJnZXQgPSBvcGVuSW50ZXJuYWxJbk5ld1RhYiA/ICcgdGFyZ2V0PVwiX2JsYW5rXCInIDogJyc7XG4gICAgICBjb25zdCBjbGFzc2VzID0gYCR7bGlua0NsYXNzfSAke2ludGVybmFsTGlua0NsYXNzfWAudHJpbSgpO1xuICAgICAgY29uc3QgbGlua0h0bWwgPSBgPGEgaHJlZj1cIiR7cm91dGV9XCIke3RhcmdldH0gY2xhc3M9XCIke2NsYXNzZXN9XCI+JHtyb3V0ZX08L2E+YDtcblxuICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSBgJHtwcmVmaXh9JHtsaW5rSHRtbH1gO1xuICAgICAgcHJvY2Vzc2VkVGV4dCA9XG4gICAgICAgIHByb2Nlc3NlZFRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0SW5kZXgpICsgcmVwbGFjZW1lbnQgKyBwcm9jZXNzZWRUZXh0LnN1YnN0cmluZyhlbmRJbmRleCk7XG4gICAgfVxuXG4gICAgLy8gU2kgaGF5IGVubGFjZXMsIHNhbml0aXphciBlbCBIVE1MXG4gICAgaWYgKGhhc0xpbmtzKSB7XG4gICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwocHJvY2Vzc2VkVGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZWN0YSBzaSB1biB0ZXh0byBjb250aWVuZSBlbmxhY2VzIChVUkxzLCBydXRhcyBpbnRlcm5hcyBvIGVubGFjZXMgTWFya2Rvd24pLlxuICAgKlxuICAgKiBAcGFyYW0gdGV4dCAtIFRleHRvIGEgYW5hbGl6YXJcbiAgICogQHJldHVybnMgdHJ1ZSBzaSBjb250aWVuZSBlbmxhY2VzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgaGFzTGlua3MgPSB0aGlzLmxpbmtQcm9jZXNzb3IuaGFzTGlua3MoJ1Zpc2l0IGh0dHBzOi8vZXhhbXBsZS5jb20gb3IgW2RvY3NdKGh0dHBzOi8vZG9jcy5jb20pJyk7XG4gICAqIC8vIFJldHVybnM6IHRydWVcbiAgICogYGBgXG4gICAqL1xuICBoYXNMaW5rcyh0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRleHQpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIFJlc2V0IHJlZ2V4IGluZGljZXNcbiAgICB0aGlzLnVybFJlZ2V4Lmxhc3RJbmRleCA9IDA7XG4gICAgdGhpcy5pbnRlcm5hbFJvdXRlUmVnZXgubGFzdEluZGV4ID0gMDtcbiAgICB0aGlzLm1hcmtkb3duTGlua1JlZ2V4Lmxhc3RJbmRleCA9IDA7XG5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy51cmxSZWdleC50ZXN0KHRleHQpIHx8XG4gICAgICB0aGlzLmludGVybmFsUm91dGVSZWdleC50ZXN0KHRleHQpIHx8XG4gICAgICB0aGlzLm1hcmtkb3duTGlua1JlZ2V4LnRlc3QodGV4dClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhZSB0b2RvcyBsb3MgZW5sYWNlcyBkZSB1biB0ZXh0by5cbiAgICpcbiAgICogQHBhcmFtIHRleHQgLSBUZXh0byBhIGFuYWxpemFyXG4gICAqIEByZXR1cm5zIEFycmF5IGRlIGVubGFjZXMgZW5jb250cmFkb3MgY29uIHN1IHRpcG8geSB0ZXh0byAoc2kgZXMgTWFya2Rvd24pXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgbGlua3MgPSB0aGlzLmxpbmtQcm9jZXNzb3IuZXh0cmFjdExpbmtzKCdWaXNpdCBodHRwczovL2V4YW1wbGUuY29tLCAvcHJvZmlsZSwgb3IgW2RvY3NdKGh0dHBzOi8vZG9jcy5jb20pJyk7XG4gICAqIC8vIFJldHVybnM6IFtcbiAgICogLy8gICB7IHVybDogJ2h0dHBzOi8vZXhhbXBsZS5jb20nLCB0eXBlOiAnZXh0ZXJuYWwnLCB0ZXh0OiAnaHR0cHM6Ly9leGFtcGxlLmNvbScgfSxcbiAgICogLy8gICB7IHVybDogJy9wcm9maWxlJywgdHlwZTogJ2ludGVybmFsJywgdGV4dDogJy9wcm9maWxlJyB9LFxuICAgKiAvLyAgIHsgdXJsOiAnaHR0cHM6Ly9kb2NzLmNvbScsIHR5cGU6ICdleHRlcm5hbCcsIHRleHQ6ICdkb2NzJyB9XG4gICAqIC8vIF1cbiAgICogYGBgXG4gICAqL1xuICBleHRyYWN0TGlua3ModGV4dDogc3RyaW5nKTogQXJyYXk8eyB1cmw6IHN0cmluZzsgdHlwZTogJ2V4dGVybmFsJyB8ICdpbnRlcm5hbCc7IHRleHQ6IHN0cmluZyB9PiB7XG4gICAgaWYgKCF0ZXh0KSByZXR1cm4gW107XG5cbiAgICBjb25zdCBsaW5rczogQXJyYXk8eyB1cmw6IHN0cmluZzsgdHlwZTogJ2V4dGVybmFsJyB8ICdpbnRlcm5hbCc7IHRleHQ6IHN0cmluZyB9PiA9IFtdO1xuXG4gICAgLy8gUmVzZXQgcmVnZXggaW5kaWNlc1xuICAgIHRoaXMudXJsUmVnZXgubGFzdEluZGV4ID0gMDtcbiAgICB0aGlzLmludGVybmFsUm91dGVSZWdleC5sYXN0SW5kZXggPSAwO1xuICAgIHRoaXMubWFya2Rvd25MaW5rUmVnZXgubGFzdEluZGV4ID0gMDtcblxuICAgIC8vIEV4dHJhZXIgZW5sYWNlcyBNYXJrZG93biBwcmltZXJvXG4gICAgbGV0IG1hdGNoO1xuICAgIHdoaWxlICgobWF0Y2ggPSB0aGlzLm1hcmtkb3duTGlua1JlZ2V4LmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB1cmwgPSBtYXRjaFsyXTtcbiAgICAgIGNvbnN0IGxpbmtUZXh0ID0gbWF0Y2hbMV07XG4gICAgICBjb25zdCB0eXBlID0gL15odHRwcz86XFwvXFwvLy50ZXN0KHVybCkgPyAnZXh0ZXJuYWwnIDogJ2ludGVybmFsJztcbiAgICAgIGxpbmtzLnB1c2goeyB1cmwsIHR5cGUsIHRleHQ6IGxpbmtUZXh0IH0pO1xuICAgIH1cblxuICAgIC8vIEV4dHJhZXIgVVJMcyBleHRlcm5hcyBkaXJlY3Rhc1xuICAgIHdoaWxlICgobWF0Y2ggPSB0aGlzLnVybFJlZ2V4LmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB1cmwgPSBtYXRjaFsxXTtcbiAgICAgIC8vIFZlcmlmaWNhciBxdWUgbm8gZXN0w6kgeWEgY2FwdHVyYWRvIGNvbW8gTWFya2Rvd24gbGlua1xuICAgICAgaWYgKCFsaW5rcy5zb21lKGxpbmsgPT4gbGluay51cmwgPT09IHVybCkpIHtcbiAgICAgICAgbGlua3MucHVzaCh7IHVybCwgdHlwZTogJ2V4dGVybmFsJywgdGV4dDogdXJsIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4dHJhZXIgcnV0YXMgaW50ZXJuYXMgZGlyZWN0YXNcbiAgICB3aGlsZSAoKG1hdGNoID0gdGhpcy5pbnRlcm5hbFJvdXRlUmVnZXguZXhlYyh0ZXh0KSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHVybCA9IG1hdGNoWzJdO1xuICAgICAgLy8gVmVyaWZpY2FyIHF1ZSBubyBlc3TDqSB5YSBjYXB0dXJhZG8gY29tbyBNYXJrZG93biBsaW5rXG4gICAgICBpZiAoIWxpbmtzLnNvbWUobGluayA9PiBsaW5rLnVybCA9PT0gdXJsKSkge1xuICAgICAgICBsaW5rcy5wdXNoKHsgdXJsLCB0eXBlOiAnaW50ZXJuYWwnLCB0ZXh0OiB1cmwgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmtzO1xuICB9XG59XG4iXX0=
|
|
@@ -1586,32 +1586,32 @@ class LinkProcessorService {
|
|
|
1586
1586
|
let processedText = text;
|
|
1587
1587
|
// 1. Procesar enlaces estilo Markdown [texto](url) primero
|
|
1588
1588
|
if (processMarkdownLinks) {
|
|
1589
|
-
//
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1589
|
+
// Usar exec en bucle (compatible con ES2018)
|
|
1590
|
+
const markdownMatches = [];
|
|
1591
|
+
this.markdownLinkRegex.lastIndex = 0;
|
|
1592
|
+
let mdMatch;
|
|
1593
|
+
while ((mdMatch = this.markdownLinkRegex.exec(processedText)) !== null) {
|
|
1594
|
+
markdownMatches.push(mdMatch);
|
|
1595
|
+
}
|
|
1596
1596
|
// Procesar de atrás hacia adelante para mantener las posiciones
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1597
|
+
for (let i = markdownMatches.length - 1; i >= 0; i--) {
|
|
1598
|
+
const match = markdownMatches[i];
|
|
1599
|
+
const [fullMatch, linkText, url] = match;
|
|
1600
|
+
const startIndex = match.index;
|
|
1601
|
+
const endIndex = startIndex + fullMatch.length;
|
|
1602
|
+
hasLinks = true;
|
|
1603
|
+
const isExternal = /^https?:\/\//.test(url);
|
|
1604
|
+
const target = (isExternal ? openExternalInNewTab : openInternalInNewTab)
|
|
1605
|
+
? isExternal
|
|
1606
|
+
? ' target="_blank" rel="noopener noreferrer"'
|
|
1607
|
+
: ' target="_blank"'
|
|
1608
|
+
: '';
|
|
1609
|
+
const typeClass = isExternal ? externalLinkClass : internalLinkClass;
|
|
1610
|
+
const classes = `${linkClass} ${typeClass}`.trim();
|
|
1611
|
+
const linkHtml = `<a href="${url}"${target} class="${classes}">${linkText}</a>`;
|
|
1612
|
+
processedText =
|
|
1613
|
+
processedText.substring(0, startIndex) + linkHtml + processedText.substring(endIndex);
|
|
1614
|
+
}
|
|
1615
1615
|
}
|
|
1616
1616
|
// 2. Procesar URLs externas directas
|
|
1617
1617
|
// Usar exec en bucle (compatible con ES2018)
|
|
@@ -1649,35 +1649,35 @@ class LinkProcessorService {
|
|
|
1649
1649
|
processedText.substring(0, startIndex) + replacement + processedText.substring(endIndex);
|
|
1650
1650
|
}
|
|
1651
1651
|
// 3. Procesar rutas internas
|
|
1652
|
-
//
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1652
|
+
// Usar exec en bucle (compatible con ES2018)
|
|
1653
|
+
const internalMatches = [];
|
|
1654
|
+
this.internalRouteRegex.lastIndex = 0;
|
|
1655
|
+
let internalMatch;
|
|
1656
|
+
while ((internalMatch = this.internalRouteRegex.exec(processedText)) !== null) {
|
|
1657
|
+
internalMatches.push(internalMatch);
|
|
1658
|
+
}
|
|
1659
1659
|
// Procesar de atrás hacia adelante para mantener las posiciones
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1660
|
+
for (let i = internalMatches.length - 1; i >= 0; i--) {
|
|
1661
|
+
const match = internalMatches[i];
|
|
1662
|
+
const [fullMatch, prefix, route] = match;
|
|
1663
|
+
const startIndex = match.index;
|
|
1664
|
+
const endIndex = startIndex + fullMatch.length;
|
|
1665
|
+
// Verificar que no esté ya dentro de un enlace HTML existente
|
|
1666
|
+
const textBefore = processedText.substring(0, startIndex);
|
|
1667
|
+
const lastOpenTag = textBefore.lastIndexOf('<a ');
|
|
1668
|
+
const lastCloseTag = textBefore.lastIndexOf('</a>');
|
|
1669
|
+
// Si hay un tag <a abierto sin cerrar, no procesamos
|
|
1670
|
+
if (lastOpenTag > lastCloseTag) {
|
|
1671
|
+
continue;
|
|
1672
|
+
}
|
|
1673
|
+
hasLinks = true;
|
|
1674
|
+
const target = openInternalInNewTab ? ' target="_blank"' : '';
|
|
1675
|
+
const classes = `${linkClass} ${internalLinkClass}`.trim();
|
|
1676
|
+
const linkHtml = `<a href="${route}"${target} class="${classes}">${route}</a>`;
|
|
1677
|
+
const replacement = `${prefix}${linkHtml}`;
|
|
1678
|
+
processedText =
|
|
1679
|
+
processedText.substring(0, startIndex) + replacement + processedText.substring(endIndex);
|
|
1680
|
+
}
|
|
1681
1681
|
// Si hay enlaces, sanitizar el HTML
|
|
1682
1682
|
if (hasLinks) {
|
|
1683
1683
|
return this.sanitizer.bypassSecurityTrustHtml(processedText);
|
|
@@ -6338,6 +6338,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6338
6338
|
type: Input
|
|
6339
6339
|
}] } });
|
|
6340
6340
|
|
|
6341
|
+
/** Size configurations for PIN input boxes */
|
|
6342
|
+
const SIZE_CONFIG = {
|
|
6343
|
+
small: { width: '40px', height: '44px', fontSize: '24px' },
|
|
6344
|
+
medium: { width: '50px', height: '54px', fontSize: '28px' },
|
|
6345
|
+
large: { width: '58px', height: '60px', fontSize: '32px' },
|
|
6346
|
+
};
|
|
6341
6347
|
/**
|
|
6342
6348
|
* val-pin-input
|
|
6343
6349
|
*
|
|
@@ -6353,9 +6359,9 @@ class PinInputComponent {
|
|
|
6353
6359
|
this.codeLength = 5;
|
|
6354
6360
|
this.otpInputConfig = {
|
|
6355
6361
|
inputStyles: {
|
|
6356
|
-
'font-size':
|
|
6357
|
-
width:
|
|
6358
|
-
height:
|
|
6362
|
+
'font-size': SIZE_CONFIG.medium.fontSize,
|
|
6363
|
+
width: SIZE_CONFIG.medium.width,
|
|
6364
|
+
height: SIZE_CONFIG.medium.height,
|
|
6359
6365
|
},
|
|
6360
6366
|
inputClass: 'otp-input-box',
|
|
6361
6367
|
length: this.codeLength,
|
|
@@ -6365,10 +6371,19 @@ class PinInputComponent {
|
|
|
6365
6371
|
ngOnInit() {
|
|
6366
6372
|
// Usar props.length si se proporciona, sino mantener default 5
|
|
6367
6373
|
const length = this.props.length ?? 5;
|
|
6374
|
+
// Usar props.size si se proporciona, sino mantener default 'medium'
|
|
6375
|
+
const size = this.props.size ?? 'medium';
|
|
6376
|
+
const sizeStyles = SIZE_CONFIG[size];
|
|
6368
6377
|
this.otpInputConfig = {
|
|
6369
6378
|
...this.otpInputConfig,
|
|
6370
6379
|
length,
|
|
6371
6380
|
allowNumbersOnly: this.props.allowNumbersOnly ?? true,
|
|
6381
|
+
inputStyles: {
|
|
6382
|
+
'font-size': sizeStyles.fontSize,
|
|
6383
|
+
width: sizeStyles.width,
|
|
6384
|
+
height: sizeStyles.height,
|
|
6385
|
+
...this.props.inputStyles, // Allow custom overrides
|
|
6386
|
+
},
|
|
6372
6387
|
};
|
|
6373
6388
|
}
|
|
6374
6389
|
reset() {
|
|
@@ -6381,7 +6396,7 @@ class PinInputComponent {
|
|
|
6381
6396
|
<div class="otp">
|
|
6382
6397
|
<ng-otp-input [formCtrl]="props.control" [config]="otpInputConfig"></ng-otp-input>
|
|
6383
6398
|
</div>
|
|
6384
|
-
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}.otp-input-box:focus{border-color:#0ff}\n"], dependencies: [{ kind: "ngmodule", type: NgOtpInputModule }, { kind: "component", type: i1$4.NgOtpInputComponent, selector: "ng-otp-input", inputs: ["config", "formCtrl"], outputs: ["onInputChange"] }] }); }
|
|
6399
|
+
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}@media (max-width: 480px){.otp ::ng-deep .otp-input{width:40px!important;height:44px!important;font-size:24px!important}}.otp-input-box:focus{border-color:#0ff}\n"], dependencies: [{ kind: "ngmodule", type: NgOtpInputModule }, { kind: "component", type: i1$4.NgOtpInputComponent, selector: "ng-otp-input", inputs: ["config", "formCtrl"], outputs: ["onInputChange"] }] }); }
|
|
6385
6400
|
}
|
|
6386
6401
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PinInputComponent, decorators: [{
|
|
6387
6402
|
type: Component,
|
|
@@ -6389,7 +6404,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6389
6404
|
<div class="otp">
|
|
6390
6405
|
<ng-otp-input [formCtrl]="props.control" [config]="otpInputConfig"></ng-otp-input>
|
|
6391
6406
|
</div>
|
|
6392
|
-
`, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}.otp-input-box:focus{border-color:#0ff}\n"] }]
|
|
6407
|
+
`, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}@media (max-width: 480px){.otp ::ng-deep .otp-input{width:40px!important;height:44px!important;font-size:24px!important}}.otp-input-box:focus{border-color:#0ff}\n"] }]
|
|
6393
6408
|
}], ctorParameters: () => [], propDecorators: { pinCode: [{
|
|
6394
6409
|
type: ViewChild,
|
|
6395
6410
|
args: [NgOtpInputComponent, { static: false }]
|