valtech-components 2.0.451 → 2.0.452
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/organisms/tabbed-content/tabbed-content.component.mjs +170 -0
- package/esm2022/lib/components/organisms/tabbed-content/types.mjs +2 -0
- package/esm2022/lib/components/templates/page-content/page-content.component.mjs +11 -11
- package/esm2022/lib/components/templates/page-template/page-template.component.mjs +3 -5
- package/esm2022/lib/services/link-processor.service.mjs +61 -43
- package/esm2022/lib/services/modal/modal.service.mjs +8 -9
- package/esm2022/lib/services/navigation.service.mjs +11 -11
- package/esm2022/public-api.mjs +24 -3
- package/fesm2022/valtech-components.mjs +407 -101
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/tabbed-content/tabbed-content.component.d.ts +65 -0
- package/lib/components/organisms/tabbed-content/types.d.ts +53 -0
- package/lib/components/templates/page-content/page-content.component.d.ts +3 -0
- package/lib/services/modal/modal.service.d.ts +2 -0
- package/lib/services/navigation.service.d.ts +4 -4
- package/package.json +3 -1
- package/public-api.d.ts +7 -0
- package/fesm2022/valtech-components-simple-modal-content.component-DQhEgUmS.mjs +0 -136
- package/fesm2022/valtech-components-simple-modal-content.component-DQhEgUmS.mjs.map +0 -1
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, signal, computed, ChangeDetectionStrategy, } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { SegmentControlComponent } from '../../molecules/segment-control/segment-control.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
/**
|
|
7
|
+
* val-tabbed-content
|
|
8
|
+
*
|
|
9
|
+
* A container component that combines segment navigation with dynamic content panels.
|
|
10
|
+
* Uses segment-control internally for tab navigation and renders the associated
|
|
11
|
+
* template for the active tab.
|
|
12
|
+
*
|
|
13
|
+
* @example Basic usage with templates
|
|
14
|
+
* ```html
|
|
15
|
+
* <ng-template #catalogTemplate>
|
|
16
|
+
* <div>Catalog Content</div>
|
|
17
|
+
* </ng-template>
|
|
18
|
+
* <ng-template #settingsTemplate>
|
|
19
|
+
* <div>Settings Content</div>
|
|
20
|
+
* </ng-template>
|
|
21
|
+
*
|
|
22
|
+
* <val-tabbed-content [props]="{
|
|
23
|
+
* tabs: [
|
|
24
|
+
* { value: 'catalog', label: 'Catalog', icon: 'layers-outline', template: catalogTemplate },
|
|
25
|
+
* { value: 'settings', label: 'Settings', icon: 'settings-outline', template: settingsTemplate }
|
|
26
|
+
* ],
|
|
27
|
+
* selectedTab: 'catalog',
|
|
28
|
+
* scrollable: true,
|
|
29
|
+
* animated: true
|
|
30
|
+
* }" (tabChange)="onTabChange($event)"></val-tabbed-content>
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @input props: TabbedContentMetadata - Configuration for the tabbed content
|
|
34
|
+
* @output tabChange: string - Emits the selected tab value when changed
|
|
35
|
+
*/
|
|
36
|
+
export class TabbedContentComponent {
|
|
37
|
+
constructor() {
|
|
38
|
+
/**
|
|
39
|
+
* Emits when the active tab changes.
|
|
40
|
+
*/
|
|
41
|
+
this.tabChange = new EventEmitter();
|
|
42
|
+
/** Currently selected tab value */
|
|
43
|
+
this.selectedValue = signal('');
|
|
44
|
+
/** Whether a transition is in progress */
|
|
45
|
+
this.isTransitioning = signal(false);
|
|
46
|
+
/** Computed animation duration string */
|
|
47
|
+
this.animationDuration = computed(() => `${this.props.animationDuration || 300}ms`);
|
|
48
|
+
/** Computed segment control props derived from tabs config */
|
|
49
|
+
this.segmentControlProps = computed(() => {
|
|
50
|
+
const options = this.props.tabs.map(tab => ({
|
|
51
|
+
value: tab.value,
|
|
52
|
+
label: tab.label,
|
|
53
|
+
icon: tab.icon,
|
|
54
|
+
disabled: tab.disabled,
|
|
55
|
+
layout: tab.layout || 'icon-top',
|
|
56
|
+
}));
|
|
57
|
+
return {
|
|
58
|
+
options,
|
|
59
|
+
value: this.selectedValue(),
|
|
60
|
+
color: this.props.color || 'primary',
|
|
61
|
+
scrollable: this.props.scrollable ?? false,
|
|
62
|
+
swipeGesture: this.props.swipeGesture ?? true,
|
|
63
|
+
mode: this.props.mode,
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
/** Computed active tab object */
|
|
67
|
+
this.activeTab = computed(() => {
|
|
68
|
+
return this.props.tabs.find(tab => tab.value === this.selectedValue());
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
ngOnInit() {
|
|
72
|
+
// Set initial selected tab
|
|
73
|
+
const initialValue = this.props.selectedTab || this.props.tabs[0]?.value || '';
|
|
74
|
+
this.selectedValue.set(initialValue);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Handles segment change events.
|
|
78
|
+
*/
|
|
79
|
+
onSegmentChange(value) {
|
|
80
|
+
if (value === this.selectedValue()) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
// Trigger transition animation
|
|
84
|
+
if (this.props.animated !== false) {
|
|
85
|
+
this.isTransitioning.set(true);
|
|
86
|
+
// Reset transition state after animation completes
|
|
87
|
+
setTimeout(() => {
|
|
88
|
+
this.selectedValue.set(value);
|
|
89
|
+
this.isTransitioning.set(false);
|
|
90
|
+
this.tabChange.emit(value);
|
|
91
|
+
}, (this.props.animationDuration || 300) / 2);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.selectedValue.set(value);
|
|
95
|
+
this.tabChange.emit(value);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Creates the context object for the template outlet.
|
|
100
|
+
*/
|
|
101
|
+
getTemplateContext(tab) {
|
|
102
|
+
const index = this.props.tabs.findIndex(t => t.value === tab.value);
|
|
103
|
+
return {
|
|
104
|
+
$implicit: tab.value,
|
|
105
|
+
tab,
|
|
106
|
+
index,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TabbedContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
110
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TabbedContentComponent, isStandalone: true, selector: "val-tabbed-content", inputs: { props: "props" }, outputs: { tabChange: "tabChange" }, ngImport: i0, template: `
|
|
111
|
+
<div
|
|
112
|
+
class="tabbed-content"
|
|
113
|
+
[class]="props.cssClass"
|
|
114
|
+
[style.--animation-duration]="animationDuration()"
|
|
115
|
+
>
|
|
116
|
+
<!-- Segment Control Navigation -->
|
|
117
|
+
<val-segment-control
|
|
118
|
+
[props]="segmentControlProps()"
|
|
119
|
+
(segmentChange)="onSegmentChange($event)"
|
|
120
|
+
></val-segment-control>
|
|
121
|
+
|
|
122
|
+
<!-- Tab Content Panel -->
|
|
123
|
+
<div
|
|
124
|
+
class="tabbed-content__panel"
|
|
125
|
+
[class.tabbed-content__panel--animated]="props.animated !== false"
|
|
126
|
+
[class.tabbed-content__panel--transitioning]="isTransitioning()"
|
|
127
|
+
>
|
|
128
|
+
@if (activeTab(); as tab) {
|
|
129
|
+
<ng-container
|
|
130
|
+
*ngTemplateOutlet="tab.template; context: getTemplateContext(tab)"
|
|
131
|
+
></ng-container>
|
|
132
|
+
}
|
|
133
|
+
</div>
|
|
134
|
+
</div>
|
|
135
|
+
`, isInline: true, styles: [".tabbed-content{display:flex;flex-direction:column;width:100%}.tabbed-content val-segment-control{margin-bottom:1rem}.tabbed-content val-segment-control ion-segment{--background: var(--ion-color-light);border-radius:12px;padding:4px}.tabbed-content__panel{width:100%;min-height:100px}.tabbed-content__panel--animated{animation:fadeIn var(--animation-duration, .3s) ease-out}.tabbed-content__panel--transitioning{opacity:0;animation:fadeOut calc(var(--animation-duration, .3s) / 2) ease-out forwards}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-10px)}}:host-context(.dark) .tabbed-content val-segment-control ion-segment,:host-context([data-theme=dark]) .tabbed-content val-segment-control ion-segment{--background: var(--ion-color-dark-tint)}@media (max-width: 576px){.tabbed-content val-segment-control ion-segment{padding:2px}.tabbed-content val-segment-control ion-segment-button{min-width:auto;padding:8px 12px}.tabbed-content val-segment-control ion-segment-button ion-label{font-size:.75rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SegmentControlComponent, selector: "val-segment-control", inputs: ["props"], outputs: ["segmentChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
136
|
+
}
|
|
137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TabbedContentComponent, decorators: [{
|
|
138
|
+
type: Component,
|
|
139
|
+
args: [{ selector: 'val-tabbed-content', standalone: true, imports: [CommonModule, SegmentControlComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
140
|
+
<div
|
|
141
|
+
class="tabbed-content"
|
|
142
|
+
[class]="props.cssClass"
|
|
143
|
+
[style.--animation-duration]="animationDuration()"
|
|
144
|
+
>
|
|
145
|
+
<!-- Segment Control Navigation -->
|
|
146
|
+
<val-segment-control
|
|
147
|
+
[props]="segmentControlProps()"
|
|
148
|
+
(segmentChange)="onSegmentChange($event)"
|
|
149
|
+
></val-segment-control>
|
|
150
|
+
|
|
151
|
+
<!-- Tab Content Panel -->
|
|
152
|
+
<div
|
|
153
|
+
class="tabbed-content__panel"
|
|
154
|
+
[class.tabbed-content__panel--animated]="props.animated !== false"
|
|
155
|
+
[class.tabbed-content__panel--transitioning]="isTransitioning()"
|
|
156
|
+
>
|
|
157
|
+
@if (activeTab(); as tab) {
|
|
158
|
+
<ng-container
|
|
159
|
+
*ngTemplateOutlet="tab.template; context: getTemplateContext(tab)"
|
|
160
|
+
></ng-container>
|
|
161
|
+
}
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
`, styles: [".tabbed-content{display:flex;flex-direction:column;width:100%}.tabbed-content val-segment-control{margin-bottom:1rem}.tabbed-content val-segment-control ion-segment{--background: var(--ion-color-light);border-radius:12px;padding:4px}.tabbed-content__panel{width:100%;min-height:100px}.tabbed-content__panel--animated{animation:fadeIn var(--animation-duration, .3s) ease-out}.tabbed-content__panel--transitioning{opacity:0;animation:fadeOut calc(var(--animation-duration, .3s) / 2) ease-out forwards}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-10px)}}:host-context(.dark) .tabbed-content val-segment-control ion-segment,:host-context([data-theme=dark]) .tabbed-content val-segment-control ion-segment{--background: var(--ion-color-dark-tint)}@media (max-width: 576px){.tabbed-content val-segment-control ion-segment{padding:2px}.tabbed-content val-segment-control ion-segment-button{min-width:auto;padding:8px 12px}.tabbed-content val-segment-control ion-segment-button ion-label{font-size:.75rem}}\n"] }]
|
|
165
|
+
}], propDecorators: { props: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], tabChange: [{
|
|
168
|
+
type: Output
|
|
169
|
+
}] } });
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmVkLWNvbnRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy90YWJiZWQtY29udGVudC90YWJiZWQtY29udGVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLHVCQUF1QixHQUV4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkRBQTJELENBQUM7OztBQUlwRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFrQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQWpDbkM7UUF1Q0U7O1dBRUc7UUFDTyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVqRCxtQ0FBbUM7UUFDM0Isa0JBQWEsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFM0MsMENBQTBDO1FBQzFDLG9CQUFlLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRXpDLHlDQUF5QztRQUN6QyxzQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFL0UsOERBQThEO1FBQzlELHdCQUFtQixHQUFHLFFBQVEsQ0FBeUIsR0FBRyxFQUFFO1lBQzFELE1BQU0sT0FBTyxHQUFvQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRCxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7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WUFBWSxzTUFBRSx1QkFBdUI7OzRGQThCcEMsc0JBQXNCO2tCQWpDbEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHVCQUF1QixDQUFDLG1CQUMvQix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJUOzhCQU9RLEtBQUs7c0JBQWIsS0FBSztnQkFLSSxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNlZ21lbnRDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3NlZ21lbnQtY29udHJvbC9zZWdtZW50LWNvbnRyb2wuY29tcG9uZW50JztcbmltcG9ydCB7IFNlZ21lbnRDb250cm9sTWV0YWRhdGEsIFNlZ21lbnRPcHRpb24gfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvc2VnbWVudC1jb250cm9sL3R5cGVzJztcbmltcG9ydCB7IFRhYmJlZENvbnRlbnRNZXRhZGF0YSwgVGFiYmVkQ29udGVudFRhYiwgVGFiYmVkQ29udGVudENvbnRleHQgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiB2YWwtdGFiYmVkLWNvbnRlbnRcbiAqXG4gKiBBIGNvbnRhaW5lciBjb21wb25lbnQgdGhhdCBjb21iaW5lcyBzZWdtZW50IG5hdmlnYXRpb24gd2l0aCBkeW5hbWljIGNvbnRlbnQgcGFuZWxzLlxuICogVXNlcyBzZWdtZW50LWNvbnRyb2wgaW50ZXJuYWxseSBmb3IgdGFiIG5hdmlnYXRpb24gYW5kIHJlbmRlcnMgdGhlIGFzc29jaWF0ZWRcbiAqIHRlbXBsYXRlIGZvciB0aGUgYWN0aXZlIHRhYi5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZSB3aXRoIHRlbXBsYXRlc1xuICogYGBgaHRtbFxuICogPG5nLXRlbXBsYXRlICNjYXRhbG9nVGVtcGxhdGU+XG4gKiAgIDxkaXY+Q2F0YWxvZyBDb250ZW50PC9kaXY+XG4gKiA8L25nLXRlbXBsYXRlPlxuICogPG5nLXRlbXBsYXRlICNzZXR0aW5nc1RlbXBsYXRlPlxuICogICA8ZGl2PlNldHRpbmdzIENvbnRlbnQ8L2Rpdj5cbiAqIDwvbmctdGVtcGxhdGU+XG4gKlxuICogPHZhbC10YWJiZWQtY29udGVudCBbcHJvcHNdPVwie1xuICogICB0YWJzOiBbXG4gKiAgICAgeyB2YWx1ZTogJ2NhdGFsb2cnLCBsYWJlbDogJ0NhdGFsb2cnLCBpY29uOiAnbGF5ZXJzLW91dGxpbmUnLCB0ZW1wbGF0ZTogY2F0YWxvZ1RlbXBsYXRlIH0sXG4gKiAgICAgeyB2YWx1ZTogJ3NldHRpbmdzJywgbGFiZWw6ICdTZXR0aW5ncycsIGljb246ICdzZXR0aW5ncy1vdXRsaW5lJywgdGVtcGxhdGU6IHNldHRpbmdzVGVtcGxhdGUgfVxuICogICBdLFxuICogICBzZWxlY3RlZFRhYjogJ2NhdGFsb2cnLFxuICogICBzY3JvbGxhYmxlOiB0cnVlLFxuICogICBhbmltYXRlZDogdHJ1ZVxuICogfVwiICh0YWJDaGFuZ2UpPVwib25UYWJDaGFuZ2UoJGV2ZW50KVwiPjwvdmFsLXRhYmJlZC1jb250ZW50PlxuICogYGBgXG4gKlxuICogQGlucHV0IHByb3BzOiBUYWJiZWRDb250ZW50TWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgdGFiYmVkIGNvbnRlbnRcbiAqIEBvdXRwdXQgdGFiQ2hhbmdlOiBzdHJpbmcgLSBFbWl0cyB0aGUgc2VsZWN0ZWQgdGFiIHZhbHVlIHdoZW4gY2hhbmdlZFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtdGFiYmVkLWNvbnRlbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTZWdtZW50Q29udHJvbENvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwidGFiYmVkLWNvbnRlbnRcIlxuICAgICAgW2NsYXNzXT1cInByb3BzLmNzc0NsYXNzXCJcbiAgICAgIFtzdHlsZS4tLWFuaW1hdGlvbi1kdXJhdGlvbl09XCJhbmltYXRpb25EdXJhdGlvbigpXCJcbiAgICA+XG4gICAgICA8IS0tIFNlZ21lbnQgQ29udHJvbCBOYXZpZ2F0aW9uIC0tPlxuICAgICAgPHZhbC1zZWdtZW50LWNvbnRyb2xcbiAgICAgICAgW3Byb3BzXT1cInNlZ21lbnRDb250cm9sUHJvcHMoKVwiXG4gICAgICAgIChzZWdtZW50Q2hhbmdlKT1cIm9uU2VnbWVudENoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L3ZhbC1zZWdtZW50LWNvbnRyb2w+XG5cbiAgICAgIDwhLS0gVGFiIENvbnRlbnQgUGFuZWwgLS0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidGFiYmVkLWNvbnRlbnRfX3BhbmVsXCJcbiAgICAgICAgW2NsYXNzLnRhYmJlZC1jb250ZW50X19wYW5lbC0tYW5pbWF0ZWRdPVwicHJvcHMuYW5pbWF0ZWQgIT09IGZhbHNlXCJcbiAgICAgICAgW2NsYXNzLnRhYmJlZC1jb250ZW50X19wYW5lbC0tdHJhbnNpdGlvbmluZ109XCJpc1RyYW5zaXRpb25pbmcoKVwiXG4gICAgICA+XG4gICAgICAgIEBpZiAoYWN0aXZlVGFiKCk7IGFzIHRhYikge1xuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFiLnRlbXBsYXRlOyBjb250ZXh0OiBnZXRUZW1wbGF0ZUNvbnRleHQodGFiKVwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vdGFiYmVkLWNvbnRlbnQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFiYmVkQ29udGVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIG9iamVjdCBmb3IgdGhlIHRhYmJlZCBjb250ZW50LlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHMhOiBUYWJiZWRDb250ZW50TWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGFjdGl2ZSB0YWIgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKSB0YWJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIHRhYiB2YWx1ZSAqL1xuICBwcml2YXRlIHNlbGVjdGVkVmFsdWUgPSBzaWduYWw8c3RyaW5nPignJyk7XG5cbiAgLyoqIFdoZXRoZXIgYSB0cmFuc2l0aW9uIGlzIGluIHByb2dyZXNzICovXG4gIGlzVHJhbnNpdGlvbmluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgLyoqIENvbXB1dGVkIGFuaW1hdGlvbiBkdXJhdGlvbiBzdHJpbmcgKi9cbiAgYW5pbWF0aW9uRHVyYXRpb24gPSBjb21wdXRlZCgoKSA9PiBgJHt0aGlzLnByb3BzLmFuaW1hdGlvbkR1cmF0aW9uIHx8IDMwMH1tc2ApO1xuXG4gIC8qKiBDb21wdXRlZCBzZWdtZW50IGNvbnRyb2wgcHJvcHMgZGVyaXZlZCBmcm9tIHRhYnMgY29uZmlnICovXG4gIHNlZ21lbnRDb250cm9sUHJvcHMgPSBjb21wdXRlZDxTZWdtZW50Q29udHJvbE1ldGFkYXRhPigoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9uczogU2VnbWVudE9wdGlvbltdID0gdGhpcy5wcm9wcy50YWJzLm1hcCh0YWIgPT4gKHtcbiAgICAgIHZhbHVlOiB0YWIudmFsdWUsXG4gICAgICBsYWJlbDogdGFiLmxhYmVsLFxuICAgICAgaWNvbjogdGFiLmljb24sXG4gICAgICBkaXNhYmxlZDogdGFiLmRpc2FibGVkLFxuICAgICAgbGF5b3V0OiB0YWIubGF5b3V0IHx8ICdpY29uLXRvcCcsXG4gICAgfSkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG9wdGlvbnMsXG4gICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZFZhbHVlKCksXG4gICAgICBjb2xvcjogdGhpcy5wcm9wcy5jb2xvciB8fCAncHJpbWFyeScsXG4gICAgICBzY3JvbGxhYmxlOiB0aGlzLnByb3BzLnNjcm9sbGFibGUgPz8gZmFsc2UsXG4gICAgICBzd2lwZUdlc3R1cmU6IHRoaXMucHJvcHMuc3dpcGVHZXN0dXJlID8/IHRydWUsXG4gICAgICBtb2RlOiB0aGlzLnByb3BzLm1vZGUsXG4gICAgfTtcbiAgfSk7XG5cbiAgLyoqIENvbXB1dGVkIGFjdGl2ZSB0YWIgb2JqZWN0ICovXG4gIGFjdGl2ZVRhYiA9IGNvbXB1dGVkPFRhYmJlZENvbnRlbnRUYWIgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy50YWJzLmZpbmQodGFiID0+IHRhYi52YWx1ZSA9PT0gdGhpcy5zZWxlY3RlZFZhbHVlKCkpO1xuICB9KTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBTZXQgaW5pdGlhbCBzZWxlY3RlZCB0YWJcbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSB0aGlzLnByb3BzLnNlbGVjdGVkVGFiIHx8IHRoaXMucHJvcHMudGFic1swXT8udmFsdWUgfHwgJyc7XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlLnNldChpbml0aWFsVmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgc2VnbWVudCBjaGFuZ2UgZXZlbnRzLlxuICAgKi9cbiAgb25TZWdtZW50Q2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUgPT09IHRoaXMuc2VsZWN0ZWRWYWx1ZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVHJpZ2dlciB0cmFuc2l0aW9uIGFuaW1hdGlvblxuICAgIGlmICh0aGlzLnByb3BzLmFuaW1hdGVkICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5pc1RyYW5zaXRpb25pbmcuc2V0KHRydWUpO1xuXG4gICAgICAvLyBSZXNldCB0cmFuc2l0aW9uIHN0YXRlIGFmdGVyIGFuaW1hdGlvbiBjb21wbGV0ZXNcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUuc2V0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5pc1RyYW5zaXRpb25pbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy50YWJDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICB9LCAodGhpcy5wcm9wcy5hbmltYXRpb25EdXJhdGlvbiB8fCAzMDApIC8gMik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5zZXQodmFsdWUpO1xuICAgICAgdGhpcy50YWJDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIGNvbnRleHQgb2JqZWN0IGZvciB0aGUgdGVtcGxhdGUgb3V0bGV0LlxuICAgKi9cbiAgZ2V0VGVtcGxhdGVDb250ZXh0KHRhYjogVGFiYmVkQ29udGVudFRhYik6IFRhYmJlZENvbnRlbnRDb250ZXh0IHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucHJvcHMudGFicy5maW5kSW5kZXgodCA9PiB0LnZhbHVlID09PSB0YWIudmFsdWUpO1xuICAgIHJldHVybiB7XG4gICAgICAkaW1wbGljaXQ6IHRhYi52YWx1ZSxcbiAgICAgIHRhYixcbiAgICAgIGluZGV4LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3RhYmJlZC1jb250ZW50L3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sb3IgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5cbi8qKlxuICogQ29udGV4dCBwYXNzZWQgdG8gZWFjaCB0YWIncyB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJiZWRDb250ZW50Q29udGV4dCB7XG4gIC8qKiBUaGUgdmFsdWUgb2YgdGhlIGFjdGl2ZSB0YWIgKi9cbiAgJGltcGxpY2l0OiBzdHJpbmc7XG4gIC8qKiBUaGUgZnVsbCB0YWIgY29uZmlndXJhdGlvbiAqL1xuICB0YWI6IFRhYmJlZENvbnRlbnRUYWI7XG4gIC8qKiBJbmRleCBvZiB0aGUgdGFiICovXG4gIGluZGV4OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgYSBzaW5nbGUgdGFiLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmJlZENvbnRlbnRUYWIge1xuICAvKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSB0YWIgKi9cbiAgdmFsdWU6IHN0cmluZztcbiAgLyoqIERpc3BsYXkgbGFiZWwgZm9yIHRoZSB0YWIgYnV0dG9uICovXG4gIGxhYmVsPzogc3RyaW5nO1xuICAvKiogSWNvbiBuYW1lIChJb25pY29ucykgKi9cbiAgaWNvbj86IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhlIHRhYiBpcyBkaXNhYmxlZCAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKiBMYXlvdXQgZGlyZWN0aW9uIGZvciBpY29uIGFuZCBsYWJlbCAqL1xuICBsYXlvdXQ/OiAnaWNvbi1zdGFydCcgfCAnaWNvbi1lbmQnIHwgJ2ljb24tdG9wJyB8ICdpY29uLWJvdHRvbSc7XG4gIC8qKiBUZW1wbGF0ZSB0byByZW5kZXIgd2hlbiB0aGlzIHRhYiBpcyBhY3RpdmUgKi9cbiAgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPFRhYmJlZENvbnRlbnRDb250ZXh0Pjtcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBmb3IgdGhlIHRhYmJlZC1jb250ZW50IGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJiZWRDb250ZW50TWV0YWRhdGEge1xuICAvKiogQXJyYXkgb2YgdGFiIGNvbmZpZ3VyYXRpb25zICovXG4gIHRhYnM6IFRhYmJlZENvbnRlbnRUYWJbXTtcbiAgLyoqIEluaXRpYWxseSBzZWxlY3RlZCB0YWIgdmFsdWUgKGRlZmF1bHRzIHRvIGZpcnN0IHRhYikgKi9cbiAgc2VsZWN0ZWRUYWI/OiBzdHJpbmc7XG4gIC8qKiBDb2xvciB0aGVtZSBmb3IgdGhlIHNlZ21lbnQgY29udHJvbCAqL1xuICBjb2xvcj86IENvbG9yO1xuICAvKiogQWxsb3cgaG9yaXpvbnRhbCBzY3JvbGxpbmcgZm9yIG1hbnkgdGFicyAqL1xuICBzY3JvbGxhYmxlPzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBzd2lwZSBnZXN0dXJlIHRvIGNoYW5nZSB0YWJzIChpT1Mgb25seSkgKi9cbiAgc3dpcGVHZXN0dXJlPzogYm9vbGVhbjtcbiAgLyoqIFZpc3VhbCBtb2RlIHN0eWxlICovXG4gIG1vZGU/OiAnaW9zJyB8ICdtZCc7XG4gIC8qKiBFbmFibGUgZmFkZSBhbmltYXRpb24gb24gdGFiIGNoYW5nZSAqL1xuICBhbmltYXRlZD86IGJvb2xlYW47XG4gIC8qKiBBbmltYXRpb24gZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzICovXG4gIGFuaW1hdGlvbkR1cmF0aW9uPzogbnVtYmVyO1xuICAvKiogQWRkaXRpb25hbCBDU1MgY2xhc3MgZm9yIHRoZSBjb250YWluZXIgKi9cbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, EventEmitter,
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
3
|
import { IonContent } from '@ionic/angular/standalone';
|
|
4
4
|
import { HeaderComponent } from '../../organisms/header/header.component';
|
|
5
|
-
import { ThemeService } from '../../../services/theme.service';
|
|
6
|
-
import { NavigationService } from '../../../services/navigation.service';
|
|
7
5
|
import { resolveColor } from '../../../shared/utils/styles';
|
|
8
6
|
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "
|
|
7
|
+
import * as i1 from "../../../services/theme.service";
|
|
8
|
+
import * as i2 from "../../../services/navigation.service";
|
|
9
|
+
import * as i3 from "@angular/common";
|
|
10
10
|
/**
|
|
11
11
|
* val-page-content
|
|
12
12
|
*
|
|
@@ -34,9 +34,9 @@ import * as i1 from "@angular/common";
|
|
|
34
34
|
* @output onHeaderClick - Emits when a header action is clicked
|
|
35
35
|
*/
|
|
36
36
|
export class PageContentComponent {
|
|
37
|
-
constructor() {
|
|
38
|
-
this.theme =
|
|
39
|
-
this.nav =
|
|
37
|
+
constructor(theme, nav) {
|
|
38
|
+
this.theme = theme;
|
|
39
|
+
this.nav = nav;
|
|
40
40
|
/**
|
|
41
41
|
* Page content configuration.
|
|
42
42
|
*/
|
|
@@ -108,7 +108,7 @@ export class PageContentComponent {
|
|
|
108
108
|
this.nav.navigateByUrl(this.props.homeRoute);
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
111
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageContentComponent, deps: [{ token: i1.ThemeService }, { token: i2.NavigationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
112
112
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PageContentComponent, isStandalone: true, selector: "val-page-content", inputs: { props: "props" }, outputs: { onHeaderClick: "onHeaderClick" }, ngImport: i0, template: `
|
|
113
113
|
<div class="ion-page">
|
|
114
114
|
<val-header
|
|
@@ -128,7 +128,7 @@ export class PageContentComponent {
|
|
|
128
128
|
</ion-content>
|
|
129
129
|
<ng-content select="[extra-footer]"></ng-content>
|
|
130
130
|
</div>
|
|
131
|
-
`, isInline: true, styles: ["main{min-height:60vh}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type:
|
|
131
|
+
`, isInline: true, styles: ["main{min-height:60vh}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: HeaderComponent, selector: "val-header", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }] }); }
|
|
132
132
|
}
|
|
133
133
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageContentComponent, decorators: [{
|
|
134
134
|
type: Component,
|
|
@@ -152,9 +152,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
152
152
|
<ng-content select="[extra-footer]"></ng-content>
|
|
153
153
|
</div>
|
|
154
154
|
`, styles: ["main{min-height:60vh}\n"] }]
|
|
155
|
-
}], propDecorators: { props: [{
|
|
155
|
+
}], ctorParameters: () => [{ type: i1.ThemeService }, { type: i2.NavigationService }], propDecorators: { props: [{
|
|
156
156
|
type: Input
|
|
157
157
|
}], onHeaderClick: [{
|
|
158
158
|
type: Output
|
|
159
159
|
}] } });
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvcGFnZS1jb250ZW50L3BhZ2UtY29udGVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUkxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7O0FBRTVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBK0JILE1BQU0sT0FBTyxvQkFBb0I7SUFNL0IsWUFDVSxLQUFtQixFQUNuQixHQUFzQjtRQUR0QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBUGhDOztXQUVHO1FBQ00sVUFBSyxHQUF3QixFQUFFLENBQUM7UUFPekM7O1dBRUc7UUFDTyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFckQ7O1dBRUc7UUFDYyxrQkFBYSxHQUFHO1lBQy9CLFFBQVEsRUFBRSxJQUFJO1lBQ2QsV0FBVyxFQUFFLElBQUk7WUFDakIsT0FBTyxFQUFFO2dCQUNQLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixTQUFTLEVBQUUsTUFBZTtnQkFDMUIsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsT0FBTyxFQUFFO29CQUNQO3dCQUNFLEtBQUssRUFBRSxhQUFhO3dCQUNwQixXQUFXLEVBQUUsRUFBRTt3QkFDZixRQUFRLEVBQUUsTUFBZTt3QkFDekIsSUFBSSxFQUFFLE9BQWdCO3dCQUN0QixLQUFLLEVBQUU7NEJBQ0wsS0FBSyxFQUFFLEVBQUU7NEJBQ1QsR0FBRyxFQUFFLGFBQWE7NEJBQ2xCLEdBQUcsRUFBRSxhQUFhOzRCQUNsQixJQUFJLEVBQUUsS0FBYzs0QkFDcEIsTUFBTSxFQUFFLEtBQUs7NEJBQ2IsUUFBUSxFQUFFLEtBQUs7NEJBQ2YsSUFBSSxFQUFFLE9BQWdCOzRCQUN0QixPQUFPLEVBQUUsS0FBSzs0QkFDZCxJQUFJLEVBQUUsSUFBSTt5QkFDWDtxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQztJQXZDQyxDQUFDO0lBeUNKOztPQUVHO0lBQ0gsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ2pELENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEIsT0FBTyw2QkFBNkIsQ0FBQztRQUN2QyxDQUFDO1FBRUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDakMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1IsT0FBTyw2QkFBNkIsQ0FBQztRQUN2QyxDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvQiw0REFBNEQ7UUFDNUQsSUFBSSxLQUFLLEtBQUssYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQzsrR0FuRlUsb0JBQW9CO21HQUFwQixvQkFBb0IscUpBMUJyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CVCxnR0FwQlMsWUFBWSxvSEFBRSxlQUFlLGdHQUFFLFVBQVU7OzRGQTJCeEMsb0JBQW9CO2tCQTlCaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUMsWUFDMUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQlQ7aUhBV1EsS0FBSztzQkFBYixLQUFLO2dCQVVJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkNvbnRlbnQgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBhZ2VDb250ZW50TWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHJlc29sdmVDb2xvciB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9zdHlsZXMnO1xuXG4vKipcbiAqIHZhbC1wYWdlLWNvbnRlbnRcbiAqXG4gKiBBIHBhZ2UgY29udGVudCB0ZW1wbGF0ZSB3aXRoIGNvcnBvcmF0ZSBoZWFkZXIsIG1haW4gY29udGVudCBhcmVhLFxuICogYW5kIGZvb3RlciBzbG90cy4gU3VwcG9ydHMgZGFyayBtb2RlIGFuZCBjdXN0b21pemFibGUgYmFja2dyb3VuZHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtcGFnZS1jb250ZW50XG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgaGVhZGVyOiB7IC4uLiB9LFxuICogICAgIGJhY2tncm91bmQ6ICctLW1haW4tYmFja2dyb3VuZCcsXG4gKiAgICAgaG9tZVJvdXRlOiAnLydcbiAqICAgfVwiXG4gKiAgIChvbkhlYWRlckNsaWNrKT1cImhhbmRsZUhlYWRlckFjdGlvbigkZXZlbnQpXCJcbiAqID5cbiAqICAgPGRpdiBjb250ZW50PlxuICogICAgIDwhLS0gTWFpbiBwYWdlIGNvbnRlbnQgLS0+XG4gKiAgIDwvZGl2PlxuICogICA8ZGl2IGZvb3Rlcj5cbiAqICAgICA8dmFsLWNvbXBhbnktZm9vdGVyIFtwcm9wc109XCJmb290ZXJQcm9wc1wiPjwvdmFsLWNvbXBhbnktZm9vdGVyPlxuICogICA8L2Rpdj5cbiAqIDwvdmFsLXBhZ2UtY29udGVudD5cbiAqXG4gKiBAaW5wdXQgcHJvcHMgLSBQYWdlIGNvbnRlbnQgY29uZmlndXJhdGlvblxuICogQG91dHB1dCBvbkhlYWRlckNsaWNrIC0gRW1pdHMgd2hlbiBhIGhlYWRlciBhY3Rpb24gaXMgY2xpY2tlZFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcGFnZS1jb250ZW50JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSGVhZGVyQ29tcG9uZW50LCBJb25Db250ZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZ2VcIj5cbiAgICAgIDx2YWwtaGVhZGVyXG4gICAgICAgIFtwcm9wc109XCJoZWFkZXJQcm9wc1wiXG4gICAgICAgIChvbkNsaWNrKT1cIm9uSGVhZGVyQ2xpY2tIYW5kbGVyKCRldmVudClcIlxuICAgICAgLz5cbiAgICAgIDxpb24tY29udGVudFxuICAgICAgICBbZnVsbHNjcmVlbl09XCJ0cnVlXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICctLWJhY2tncm91bmQnOiBnZXRCYWNrZ3JvdW5kKClcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIDxtYWluPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9tYWluPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZm9vdGVyXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvaW9uLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZXh0cmEtZm9vdGVyXVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBgXG4gICAgbWFpbiB7XG4gICAgICBtaW4taGVpZ2h0OiA2MHZoO1xuICAgIH1cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUNvbnRlbnRDb21wb25lbnQge1xuICAvKipcbiAgICogUGFnZSBjb250ZW50IGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBASW5wdXQoKSBwcm9wczogUGFnZUNvbnRlbnRNZXRhZGF0YSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGhlbWU6IFRoZW1lU2VydmljZSxcbiAgICBwcml2YXRlIG5hdjogTmF2aWdhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGEgaGVhZGVyIGFjdGlvbiBpcyBjbGlja2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIG9uSGVhZGVyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogRGVmYXVsdCBoZWFkZXIgY29uZmlndXJhdGlvbiAoY2FjaGVkIHRvIGF2b2lkIGluZmluaXRlIGNoYW5nZSBkZXRlY3Rpb24pLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0SGVhZGVyID0ge1xuICAgIGJvcmRlcmVkOiB0cnVlLFxuICAgIHRyYW5zbHVjZW50OiB0cnVlLFxuICAgIHRvb2xiYXI6IHtcbiAgICAgIHdpdGhCYWNrOiBmYWxzZSxcbiAgICAgIHdpdGhBY3Rpb25zOiB0cnVlLFxuICAgICAgdGV4dENvbG9yOiAnZGFyaycgYXMgY29uc3QsXG4gICAgICB3aXRoTWVudTogdHJ1ZSxcbiAgICAgIHRpdGxlOiAnJyxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRva2VuOiAnaGVhZGVyLWxvZ28nLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICBwb3NpdGlvbjogJ2xlZnQnIGFzIGNvbnN0LFxuICAgICAgICAgIHR5cGU6ICdJTUFHRScgYXMgY29uc3QsXG4gICAgICAgICAgaW1hZ2U6IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMCxcbiAgICAgICAgICAgIHNyYzogJy0tbWFpbi1sb2dvJyxcbiAgICAgICAgICAgIGFsdDogJ2hlYWRlciBsb2dvJyxcbiAgICAgICAgICAgIG1vZGU6ICdib3gnIGFzIGNvbnN0LFxuICAgICAgICAgICAgc2hhZGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGJvcmRlcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIHNpemU6ICdzbWFsbCcgYXMgY29uc3QsXG4gICAgICAgICAgICBsaW1pdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGZsZXg6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfTtcblxuICAvKipcbiAgICogR2V0cyBoZWFkZXIgcHJvcHMsIHVzaW5nIGNhY2hlZCBkZWZhdWx0IGlmIG5vdCBwcm92aWRlZC5cbiAgICovXG4gIGdldCBoZWFkZXJQcm9wcygpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5oZWFkZXIgfHwgdGhpcy5kZWZhdWx0SGVhZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGJhY2tncm91bmQgY29sb3IgYmFzZWQgb24gdGhlbWUuXG4gICAqL1xuICBnZXRCYWNrZ3JvdW5kKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMudGhlbWUuSXNEYXJrKSB7XG4gICAgICByZXR1cm4gJ3ZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yKSc7XG4gICAgfVxuXG4gICAgY29uc3QgYmcgPSB0aGlzLnByb3BzLmJhY2tncm91bmQ7XG4gICAgaWYgKCFiZykge1xuICAgICAgcmV0dXJuICd2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciknO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvbHZlQ29sb3IoYmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgaGVhZGVyIGFjdGlvbiBjbGlja3MuXG4gICAqL1xuICBvbkhlYWRlckNsaWNrSGFuZGxlcih0b2tlbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vbkhlYWRlckNsaWNrLmVtaXQodG9rZW4pO1xuXG4gICAgLy8gTmF2aWdhdGUgdG8gaG9tZSByb3V0ZSBpZiBjb25maWd1cmVkIGFuZCBsb2dvIHdhcyBjbGlja2VkXG4gICAgaWYgKHRva2VuID09PSAnaGVhZGVyLWxvZ28nICYmIHRoaXMucHJvcHMuaG9tZVJvdXRlKSB7XG4gICAgICB0aGlzLm5hdi5uYXZpZ2F0ZUJ5VXJsKHRoaXMucHJvcHMuaG9tZVJvdXRlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -72,7 +72,6 @@ export class PageTemplateComponent {
|
|
|
72
72
|
limit: props.descriptionLimit || 180,
|
|
73
73
|
content: props.pageDescription,
|
|
74
74
|
color: props.descriptionColor || 'dark',
|
|
75
|
-
expandText: 'more'
|
|
76
75
|
}"
|
|
77
76
|
/>
|
|
78
77
|
</div>
|
|
@@ -88,7 +87,7 @@ export class PageTemplateComponent {
|
|
|
88
87
|
<val-button
|
|
89
88
|
class="back-button"
|
|
90
89
|
[props]="{
|
|
91
|
-
text: props.backButtonText || '
|
|
90
|
+
text: props.backButtonText || 'Volver',
|
|
92
91
|
color: 'dark',
|
|
93
92
|
size: 'small',
|
|
94
93
|
type: 'button',
|
|
@@ -138,7 +137,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
138
137
|
limit: props.descriptionLimit || 180,
|
|
139
138
|
content: props.pageDescription,
|
|
140
139
|
color: props.descriptionColor || 'dark',
|
|
141
|
-
expandText: 'more'
|
|
142
140
|
}"
|
|
143
141
|
/>
|
|
144
142
|
</div>
|
|
@@ -154,7 +152,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
154
152
|
<val-button
|
|
155
153
|
class="back-button"
|
|
156
154
|
[props]="{
|
|
157
|
-
text: props.backButtonText || '
|
|
155
|
+
text: props.backButtonText || 'Volver',
|
|
158
156
|
color: 'dark',
|
|
159
157
|
size: 'small',
|
|
160
158
|
type: 'button',
|
|
@@ -178,4 +176,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
178
176
|
}], onBack: [{
|
|
179
177
|
type: Output
|
|
180
178
|
}] } });
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL3BhZ2UtdGVtcGxhdGUvcGFnZS10ZW1wbGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBR3RFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBNkZILE1BQU0sT0FBTyxxQkFBcUI7SUE1RmxDO1FBNkZVLFFBQUcsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFcEM7O1dBRUc7UUFDTSxVQUFLLEdBQXlCLEVBQUUsQ0FBQztRQUUxQzs7V0FFRztRQUNPLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0tBUzdDO0lBUEM7O09BRUc7SUFDSCxVQUFVO1FBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xCLENBQUM7K0dBbkJVLHFCQUFxQjttR0FBckIscUJBQXFCLHdJQTlFdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1EVCxvU0E3REMsWUFBWSwrQkFDWixTQUFTLG9HQUNULFVBQVUsbUZBQ1YsUUFBUSxpRkFDUix1QkFBdUIsbUZBQ3ZCLE9BQU8sd0VBQ1AsTUFBTSxvREFDTixNQUFNLGtUQUNOLGVBQWU7OzRGQWdGTixxQkFBcUI7a0JBNUZqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixTQUFTO3dCQUNULFVBQVU7d0JBQ1YsUUFBUTt3QkFDUix1QkFBdUI7d0JBQ3ZCLE9BQU87d0JBQ1AsTUFBTTt3QkFDTixNQUFNO3dCQUNOLGVBQWU7cUJBQ2hCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1EVDs4QkFpQ1EsS0FBSztzQkFBYixLQUFLO2dCQUtJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgSW9uQ29sLCBJb25HcmlkLCBJb25IZWFkZXIsIElvblJvdywgSW9uVGl0bGUsIElvblRvb2xiYXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEV4cGFuZGFibGVUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2V4cGFuZGFibGUtdGV4dC9leHBhbmRhYmxlLXRleHQuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IFBhZ2VUZW1wbGF0ZU1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogdmFsLXBhZ2UtdGVtcGxhdGVcbiAqXG4gKiBBIHBhZ2UgdGVtcGxhdGUgY29tcG9uZW50IHdpdGggdGl0bGUsIGV4cGFuZGFibGUgZGVzY3JpcHRpb24sXG4gKiBjb250ZW50IHByb2plY3Rpb24sIGFuZCBvcHRpb25hbCBiYWNrIG5hdmlnYXRpb24gYnV0dG9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLXBhZ2UtdGVtcGxhdGVcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBwYWdlVGl0bGU6ICdHZXR0aW5nIFN0YXJ0ZWQnLFxuICogICAgIHBhZ2VEZXNjcmlwdGlvbjogJ0xlYXJuIGhvdyB0byB1c2Ugb3VyIGNvbXBvbmVudHMuLi4nLFxuICogICAgIHNob3dCYWNrQnV0dG9uOiB0cnVlXG4gKiAgIH1cIlxuICogPlxuICogICA8ZGl2IGV4dHJhLWRlc2NyaXB0aW9uPlxuICogICAgIDxwPkFkZGl0aW9uYWwgaW5mbyBoZXJlPC9wPlxuICogICA8L2Rpdj5cbiAqXG4gKiAgIDwhLS0gTWFpbiBjb250ZW50IC0tPlxuICogICA8bXktY29udGVudD48L215LWNvbnRlbnQ+XG4gKlxuICogICA8ZGl2IGV4dHJhLWZvb3Rlcj5cbiAqICAgICA8cD5Gb290ZXIgY29udGVudDwvcD5cbiAqICAgPC9kaXY+XG4gKiA8L3ZhbC1wYWdlLXRlbXBsYXRlPlxuICpcbiAqIEBpbnB1dCBwcm9wcyAtIFBhZ2UgdGVtcGxhdGUgY29uZmlndXJhdGlvblxuICogQG91dHB1dCBvbkJhY2sgLSBFbWl0cyB3aGVuIGJhY2sgYnV0dG9uIGlzIGNsaWNrZWRcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXBhZ2UtdGVtcGxhdGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIElvbkhlYWRlcixcbiAgICBJb25Ub29sYmFyLFxuICAgIElvblRpdGxlLFxuICAgIEV4cGFuZGFibGVUZXh0Q29tcG9uZW50LFxuICAgIElvbkdyaWQsXG4gICAgSW9uUm93LFxuICAgIElvbkNvbCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChwcm9wcy5wYWdlVGl0bGUpIHtcbiAgICAgIDxpb24taGVhZGVyIFtjbGFzcy5pb24tbm8tYm9yZGVyXT1cInRydWVcIj5cbiAgICAgICAgPGlvbi10b29sYmFyIHN0eWxlPVwiLS1iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcIj5cbiAgICAgICAgICA8aW9uLXRpdGxlIGNsYXNzPVwicGFnZS10aXRsZVwiIHNpemU9XCJsYXJnZVwiPnt7IHByb3BzLnBhZ2VUaXRsZSB9fTwvaW9uLXRpdGxlPlxuICAgICAgICA8L2lvbi10b29sYmFyPlxuICAgICAgPC9pb24taGVhZGVyPlxuICAgIH1cbiAgICA8aW9uLWdyaWQ+XG4gICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGRlc2NyaXB0aW9uLXJvd1wiPlxuICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBzaXplLW1kPVwiMTBcIiBzaXplLWxnPVwiOFwiPlxuICAgICAgICAgIEBpZiAocHJvcHMucGFnZURlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDx2YWwtZXhwYW5kYWJsZS10ZXh0XG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIGxpbWl0OiBwcm9wcy5kZXNjcmlwdGlvbkxpbWl0IHx8IDE4MCxcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHByb3BzLnBhZ2VEZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiBwcm9wcy5kZXNjcmlwdGlvbkNvbG9yIHx8ICdkYXJrJyxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZXh0cmEtZGVzY3JpcHRpb25dXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2lvbi1jb2w+XG4gICAgICA8L2lvbi1yb3c+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZXh0cmEtZm9vdGVyXVwiPjwvbmctY29udGVudD5cbiAgICAgIEBpZiAocHJvcHMuc2hvd0JhY2tCdXR0b24pIHtcbiAgICAgICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tanVzdGlmeS1jb250ZW50LWNlbnRlciBiYWNrLXJvd1wiPlxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIHNpemUtbWQ9XCIxMFwiIHNpemUtbGc9XCI4XCI+XG4gICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJhY2stYnV0dG9uXCJcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcy5iYWNrQnV0dG9uVGV4dCB8fCAnVm9sdmVyJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgICAgICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICAgICAgICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICAgICAgICAgICAgaWNvbjoge1xuICAgICAgICAgICAgICAgICAgbmFtZTogJ2Fycm93LWJhY2stb3V0bGluZScsXG4gICAgICAgICAgICAgICAgICBzbG90OiAnc3RhcnQnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlQmFjaygpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICA8L2lvbi1yb3c+XG4gICAgICB9XG4gICAgPC9pb24tZ3JpZD5cbiAgYCxcbiAgc3R5bGVzOiBgXG4gICAgLnBhZ2UtdGl0bGUge1xuICAgICAgbWFyZ2luLWxlZnQ6IC00cHg7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgZm9udC1zaXplOiAyLjVyZW07XG4gICAgICBmb250LXdlaWdodDogODAwO1xuICAgIH1cblxuICAgIC5kZXNjcmlwdGlvbi1yb3cge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICB9XG5cbiAgICAuZGVzY3JpcHRpb24tY29udGFpbmVyIHtcbiAgICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgfVxuXG4gICAgLmJhY2stcm93IHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgfVxuXG4gICAgLmJhY2stYnV0dG9uIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgbWFyZ2luOiAxcmVtIDA7XG4gICAgfVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlVGVtcGxhdGVDb21wb25lbnQge1xuICBwcml2YXRlIG5hdiA9IGluamVjdChOYXZDb250cm9sbGVyKTtcblxuICAvKipcbiAgICogUGFnZSB0ZW1wbGF0ZSBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IFBhZ2VUZW1wbGF0ZU1ldGFkYXRhID0ge307XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGJhY2sgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgb25CYWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGJhY2sgbmF2aWdhdGlvbi5cbiAgICovXG4gIGhhbmRsZUJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5vbkJhY2suZW1pdCgpO1xuICAgIHRoaXMubmF2LmJhY2soKTtcbiAgfVxufVxuIl19
|
|
@@ -76,29 +76,41 @@ export class LinkProcessorService {
|
|
|
76
76
|
let processedText = text;
|
|
77
77
|
// 1. Procesar enlaces estilo Markdown [texto](url) primero
|
|
78
78
|
if (processMarkdownLinks) {
|
|
79
|
-
|
|
79
|
+
// // Usar exec en bucle (compatible con ES2018)
|
|
80
|
+
// const markdownMatches: RegExpExecArray[] = [];
|
|
81
|
+
// this.markdownLinkRegex.lastIndex = 0;
|
|
82
|
+
// let mdMatch: RegExpExecArray | null;
|
|
83
|
+
// while ((mdMatch = this.markdownLinkRegex.exec(processedText)) !== null) {
|
|
84
|
+
// markdownMatches.push(mdMatch);
|
|
85
|
+
// }
|
|
80
86
|
// Procesar de atrás hacia adelante para mantener las posiciones
|
|
81
|
-
for (let i = markdownMatches.length - 1; i >= 0; i--) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
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
|
+
// }
|
|
99
105
|
}
|
|
100
106
|
// 2. Procesar URLs externas directas
|
|
101
|
-
|
|
107
|
+
// Usar exec en bucle (compatible con ES2018)
|
|
108
|
+
const urlMatches = [];
|
|
109
|
+
this.urlRegex.lastIndex = 0;
|
|
110
|
+
let urlMatch;
|
|
111
|
+
while ((urlMatch = this.urlRegex.exec(processedText)) !== null) {
|
|
112
|
+
urlMatches.push(urlMatch);
|
|
113
|
+
}
|
|
102
114
|
// Procesar de atrás hacia adelante para mantener las posiciones
|
|
103
115
|
for (let i = urlMatches.length - 1; i >= 0; i--) {
|
|
104
116
|
const match = urlMatches[i];
|
|
@@ -127,29 +139,35 @@ export class LinkProcessorService {
|
|
|
127
139
|
processedText.substring(0, startIndex) + replacement + processedText.substring(endIndex);
|
|
128
140
|
}
|
|
129
141
|
// 3. Procesar rutas internas
|
|
130
|
-
|
|
142
|
+
// // Usar exec en bucle (compatible con ES2018)
|
|
143
|
+
// const internalMatches: RegExpExecArray[] = [];
|
|
144
|
+
// this.internalRouteRegex.lastIndex = 0;
|
|
145
|
+
// let internalMatch: RegExpExecArray | null;
|
|
146
|
+
// while ((internalMatch = this.internalRouteRegex.exec(processedText)) !== null) {
|
|
147
|
+
// internalMatches.push(internalMatch);
|
|
148
|
+
// }
|
|
131
149
|
// Procesar de atrás hacia adelante para mantener las posiciones
|
|
132
|
-
for (let i = internalMatches.length - 1; i >= 0; i--) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
}
|
|
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
|
+
// }
|
|
153
171
|
// Si hay enlaces, sanitizar el HTML
|
|
154
172
|
if (hasLinks) {
|
|
155
173
|
return this.sanitizer.bypassSecurityTrustHtml(processedText);
|
|
@@ -238,4 +256,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
238
256
|
providedIn: 'root',
|
|
239
257
|
}]
|
|
240
258
|
}], ctorParameters: () => [{ type: i1.DomSanitizer }] });
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1wcm9jZXNzb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvbGluay1wcm9jZXNzb3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFrQjNDOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBSUgsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQixZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBVDNDLHFHQUFxRztRQUNwRixhQUFRLEdBQUcsc0JBQXNCLENBQUM7UUFFbkQseUZBQXlGO1FBQ3hFLHVCQUFrQixHQUFHLG1CQUFtQixDQUFDO1FBRTFELDJEQUEyRDtRQUMxQyxzQkFBaUIsR0FBRywwQkFBMEIsQ0FBQztJQUVsQixDQUFDO0lBRS9DOzs7O09BSUc7SUFDSyxtQkFBbUIsQ0FBQyxHQUFXO1FBQ3JDLG9GQUFvRjtRQUNwRixvRkFBb0Y7UUFDcEYsTUFBTSxtQkFBbUIsR0FBRyxZQUFZLENBQUM7UUFFekMsMEZBQTBGO1FBQzFGLG9EQUFvRDtRQUNwRCxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUvQyxJQUFJLG9CQUFvQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDN0MsNERBQTREO1lBQzVELEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FvQkc7SUFDSCxZ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QUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM3RCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckIsd0RBQXdEO1lBQ3hELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDbkQsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7K0dBN1BVLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlua1Byb2Nlc3NvckNvbmZpZyB7XG4gIC8qKiBXaGV0aGVyIHRvIG9wZW4gZXh0ZXJuYWwgbGlua3MgaW4gbmV3IHRhYiAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgb3BlbkV4dGVybmFsSW5OZXdUYWI/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0byBvcGVuIGludGVybmFsIGxpbmtzIGluIG5ldyB0YWIgKGRlZmF1bHQ6IGZhbHNlKSAqL1xuICBvcGVuSW50ZXJuYWxJbk5ld1RhYj86IGJvb2xlYW47XG4gIC8qKiBDdXN0b20gQ1NTIGNsYXNzZXMgZm9yIGxpbmtzICovXG4gIGxpbmtDbGFzcz86IHN0cmluZztcbiAgLyoqIEN1c3RvbSBDU1MgY2xhc3NlcyBmb3IgZXh0ZXJuYWwgbGlua3MgKi9cbiAgZXh0ZXJuYWxMaW5rQ2xhc3M/OiBzdHJpbmc7XG4gIC8qKiBDdXN0b20gQ1NTIGNsYXNzZXMgZm9yIGludGVybmFsIGxpbmtzICovXG4gIGludGVybmFsTGlua0NsYXNzPzogc3RyaW5nO1xuICAvKiogV2hldGhlciB0byBwcm9jZXNzIE1hcmtkb3duLXN0eWxlIGxpbmtzIFt0ZXh0XSh1cmwpIChkZWZhdWx0OiB0cnVlKSAqL1xuICBwcm9jZXNzTWFya2Rvd25MaW5rcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogTGlua1Byb2Nlc3NvclNlcnZpY2UgLSBTZXJ2aWNlIGZvciBwcm9jZXNzaW5nIHRleHQgY29udGVudCB0byBjb252ZXJ0IFVSTHMgYW5kIGludGVybmFsIHJvdXRlcyBpbnRvIGNsaWNrYWJsZSBsaW5rcy5cbiAqXG4gKiBUaGlzIHNlcnZpY2UgYXV0b21hdGljYWxseSBkZXRlY3RzIGV4dGVybmFsIFVSTHMgKGh0dHAvaHR0cHMpLCBpbnRlcm5hbCByb3V0ZXMgKHN0YXJ0aW5nIHdpdGggLyksXG4gKiBhbmQgTWFya2Rvd24tc3R5bGUgbGlua3MgW3RleHRdKHVybCkgYW5kIGNvbnZlcnRzIHRoZW0gaW50byBIVE1MIGFuY2hvciBlbGVtZW50cyB3aXRoIGFwcHJvcHJpYXRlIGF0dHJpYnV0ZXMuXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2U6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdHJ1Y3Rvcihwcml2YXRlIGxpbmtQcm9jZXNzb3I6IExpbmtQcm9jZXNzb3JTZXJ2aWNlKSB7fVxuICpcbiAqIHByb2Nlc3NUZXh0KCkge1xuICogICBjb25zdCB0ZXh0ID0gJ1Zpc2l0IGh0dHBzOi8vZXhhbXBsZS5jb20sIGdvIHRvIC9wcm9maWxlLCBvciBbY2hlY2sgZG9jc10oaHR0cHM6Ly9kb2NzLmV4YW1wbGUuY29tKSc7XG4gKiAgIGNvbnN0IHByb2Nlc3NlZCA9IHRoaXMubGlua1Byb2Nlc3Nvci5wcm9jZXNzTGlua3ModGV4dCk7XG4gKiAgIC8vIFJldHVybnMgU2FmZUh0bWwgd2l0aCBjbGlja2FibGUgbGlua3NcbiAqIH1cbiAqIGBgYFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTGlua1Byb2Nlc3NvclNlcnZpY2Uge1xuICAvLyBSZWdleCBwYXJhIGRldGVjdGFyIFVSTHMgY29tcGxldGFzIChodHRwL2h0dHBzKSAtIGNhcHR1cmEgdG9kYSBsYSBVUkwgeSBsdWVnbyBsaW1waWFtb3MgcHVudHVhY2nDs25cbiAgcHJpdmF0ZSByZWFkb25seSB1cmxSZWdleCA9IC8oaHR0cHM/OlxcL1xcL1teXFxzXSspL2c7XG5cbiAgLy8gUmVnZXggcGFyYSBkZXRlY3RhciBydXRhcyBpbnRlcm5hcyAtIGNhcHR1cmEgdG9kYSBsYSBydXRhIHkgbHVlZ28gbGltcGlhbW9zIHB1bnR1YWNpw7NuXG4gIHByaXZhdGUgcmVhZG9ubHkgaW50ZXJuYWxSb3V0ZVJlZ2V4ID0gLyhcXHN8XikoXFwvW15cXHNdKikvZztcblxuICAvLyBSZWdleCBwYXJhIGRldGVjdGFyIGVubGFjZXMgZXN0aWxvIE1hcmtkb3duIFt0ZXh0b10odXJsKVxuICBwcml2YXRlIHJlYWRvbmx5IG1hcmtkb3duTGlua1JlZ2V4ID0gL1xcWyhbXlxcXV0rKVxcXVxcKChbXildKylcXCkvZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7fVxuXG4gIC8qKlxuICAgKiBMaW1waWEgbGEgcHVudHVhY2nDs24gZGVsIGZpbmFsIGRlIHVuYSBVUkwuXG4gICAqIE1hbnRpZW5lIGNhcmFjdGVyZXMgdsOhbGlkb3MgZGUgVVJMIHBlcm8gcmVtdWV2ZSBzaWdub3MgZGUgcHVudHVhY2nDs24gY29tdW5lcyBhbCBmaW5hbC5cbiAgICogUHJlc2VydmEgcGFyw6FtZXRyb3MgZGUgY29uc3VsdGEsIGZyYWdtZW50b3MgeSBjYXJhY3RlcmVzIHbDoWxpZG9zIGVuIFVSTHMuXG4gICAqL1xuICBwcml2YXRlIGNsZWFuVXJsUHVuY3R1YXRpb24odXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIENhcmFjdGVyZXMgcXVlIGNvbnNpZGVyYW1vcyBwdW50dWFjacOzbiBhbCBmaW5hbCBkZSBvcmFjacOzbiwgcGVybyBOTyBwYXJ0ZSBkZSBVUkxzXG4gICAgLy8gTm8gaW5jbHVpbW9zICYgbyA9IHF1ZSBzb24gcGFydGUgZGUgcXVlcnkgcGFyYW1zLCBuaSAjIHF1ZSBlcyBwYXJ0ZSBkZSBmcmFnbWVudG9zXG4gICAgY29uc3QgdHJhaWxpbmdQdW5jdHVhdGlvbiA9IC9bLiw7IT8pXSskLztcblxuICAgIC8vIENhc29zIGVzcGVjaWFsZXM6IHNpIGxhIFVSTCB0ZXJtaW5hIGNvbiBwYXLDqW50ZXNpcyBwZXJvIG5vIHRpZW5lIHBhcsOpbnRlc2lzIGRlIGFwZXJ0dXJhXG4gICAgLy8gcHJvYmFibGVtZW50ZSBlbCBwYXLDqW50ZXNpcyBubyBlcyBwYXJ0ZSBkZSBsYSBVUkxcbiAgICBjb25zdCBoYXNPcGVuaW5nUGFyZW4gPSB1cmwuaW5jbHVkZXMoJygnKTtcbiAgICBjb25zdCBlbmRzV2l0aENsb3NpbmdQYXJlbiA9IHVybC5lbmRzV2l0aCgnKScpO1xuXG4gICAgaWYgKGVuZHNXaXRoQ2xvc2luZ1BhcmVuICYmICFoYXNPcGVuaW5nUGFyZW4pIHtcbiAgICAgIC8vIFJlbW92ZXIgZWwgcGFyw6ludGVzaXMgZGUgY2llcnJlIHNpIG5vIGhheSB1bm8gZGUgYXBlcnR1cmFcbiAgICAgIHVybCA9IHVybC5yZXBsYWNlKC9cXCkkLywgJycpO1xuICAgIH1cblxuICAgIHJldHVybiB1cmwucmVwbGFjZSh0cmFpbGluZ1B1bmN0dWF0aW9uLCAnJyk7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzYSB0ZXh0byBwYXJhIGNvbnZlcnRpciBlbmxhY2VzIGVuIGVsZW1lbnRvcyA8YT4gY2xpY2tlYWJsZXMuXG4gICAqIERldGVjdGEgYXV0b23DoXRpY2FtZW50ZSBVUkxzIGV4dGVybmFzLCBydXRhcyBpbnRlcm5hcyB5IGVubGFjZXMgZXN0aWxvIE1hcmtkb3duLlxuICAgKlxuICAgKiBAcGFyYW0gdGV4dCAtIFRleHRvIGEgcHJvY2VzYXJcbiAgICogQHBhcmFtIGNvbmZpZyAtIENvbmZpZ3VyYWNpw7NuIGRlbCBwcm9jZXNhbWllbnRvXG4gICAqIEByZXR1cm5zIFNhZmVIdG1sIGNvbiBlbmxhY2VzIHByb2Nlc2Fkb3MgbyBzdHJpbmcgb3JpZ2luYWxcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCByZXN1bHQgPSB0aGlzLmxpbmtQcm9jZXNzb3IucHJvY2Vzc0xpbmtzKFxuICAgKiAgICdWaXNpdCBodHRwczovL2V4YW1wbGUuY29tLCBnbyB0byAvcHJvZmlsZSwgb3IgW2NoZWNrIGRvY3NdKGh0dHBzOi8vZG9jcy5leGFtcGxlLmNvbSknLFxuICAgKiAgIHtcbiAgICogICAgIG9wZW5FeHRlcm5hbEluTmV3VGFiOiB0cnVlLFxuICAgKiAgICAgb3BlbkludGVybmFsSW5OZXdUYWI6IGZhbHNlLFxuICAgKiAgICAgcHJvY2Vzc01hcmtkb3duTGlua3M6IHRydWUsXG4gICAqICAgICBsaW5rQ2xhc3M6ICdjdXN0b20tbGluaydcbiAgICogICB9XG4gICAqICk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHJvY2Vzc0xpbmtzKHRleHQ6IHN0cmluZywgY29uZmlnOiBMaW5rUHJvY2Vzc29yQ29uZmlnID0ge30pOiBTYWZlSHRtbCB8IHN0cmluZyB7XG4gICAgaWYgKCF0ZXh0KSByZXR1cm4gJyc7XG5cbiAgICBjb25zdCB7XG4gICAgICBvcGVuRXh0ZXJuYWxJbk5ld1RhYiA9IHRydWUsXG4gICAgICBvcGVuSW50ZXJuYWxJbk5ld1RhYiA9IGZhbHNlLFxuICAgICAgbGlua0NsYXNzID0gJ3Byb2Nlc3NlZC1saW5rJyxcbiAgICAgIGV4dGVybmFsTGlua0NsYXNzID0gJ2V4dGVybmFsLWxpbmsnLFxuICAgICAgaW50ZXJuYWxMaW5rQ2xhc3MgPSAnaW50ZXJuYWwtbGluaycsXG4gICAgICBwcm9jZXNzTWFya2Rvd25MaW5rcyA9IHRydWUsXG4gICAgfSA9IGNvbmZpZztcblxuICAgIGxldCBoYXNMaW5rcyA9IGZhbHNlO1xuICAgIGxldCBwcm9jZXNzZWRUZXh0ID0gdGV4dDtcblxuICAgIC8vIDEuIFByb2Nlc2FyIGVubGFjZXMgZXN0aWxvIE1hcmtkb3duIFt0ZXh0b10odXJsKSBwcmltZXJvXG4gICAgaWYgKHByb2Nlc3NNYXJrZG93bkxpbmtzKSB7XG4gICAgICBjb25zdCBtYXJrZG93bk1hdGNoZXMgPSBBcnJheS5mcm9tKHByb2Nlc3NlZFRleHQubWF0Y2hBbGwodGhpcy5tYXJrZG93bkxpbmtSZWdleCkpO1xuXG4gICAgICAvLyBQcm9jZXNhciBkZSBhdHLDoXMgaGFjaWEgYWRlbGFudGUgcGFyYSBtYW50ZW5lciBsYXMgcG9zaWNpb25lc1xuICAgICAgZm9yIChsZXQgaSA9IG1hcmtkb3duTWF0Y2hlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IG1hcmtkb3duTWF0Y2hlc1tpXTtcbiAgICAgICAgY29uc3QgW2Z1bGxNYXRjaCwgbGlua1RleHQsIHVybF0gPSBtYXRjaDtcbiAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IG1hdGNoLmluZGV4ITtcbiAgICAgICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgZnVsbE1hdGNoLmxlbmd0aDtcblxuICAgICAgICBoYXNMaW5rcyA9IHRydWU7XG4gICAgICAgIGNvbnN0IGlzRXh0ZXJuYWwgPSAvXmh0dHBzPzpcXC9cXC8vLnRlc3QodXJsKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gKGlzRXh0ZXJuYWwgPyBvcGVuRXh0ZXJuYWxJbk5ld1RhYiA6IG9wZW5JbnRlcm5hbEluTmV3VGFiKVxuICAgICAgICAgID8gaXNFeHRlcm5hbFxuICAgICAgICAgICAgPyAnIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIidcbiAgICAgICAgICAgIDogJyB0YXJnZXQ9XCJfYmxhbmtcIidcbiAgICAgICAgICA6ICcnO1xuICAgICAgICBjb25zdCB0eXBlQ2xhc3MgPSBpc0V4dGVybmFsID8gZXh0ZXJuYWxMaW5rQ2xhc3MgOiBpbnRlcm5hbExpbmtDbGFzcztcbiAgICAgICAgY29uc3QgY2xhc3NlcyA9IGAke2xpbmtDbGFzc30gJHt0eXBlQ2xhc3N9YC50cmltKCk7XG4gICAgICAgIGNvbnN0IGxpbmtIdG1sID0gYDxhIGhyZWY9XCIke3VybH1cIiR7dGFyZ2V0fSBjbGFzcz1cIiR7Y2xhc3Nlc31cIj4ke2xpbmtUZXh0fTwvYT5gO1xuXG4gICAgICAgIHByb2Nlc3NlZFRleHQgPVxuICAgICAgICAgIHByb2Nlc3NlZFRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0SW5kZXgpICsgbGlua0h0bWwgKyBwcm9jZXNzZWRUZXh0LnN1YnN0cmluZyhlbmRJbmRleCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gMi4gUHJvY2VzYXIgVVJMcyBleHRlcm5hcyBkaXJlY3Rhc1xuICAgIGNvbnN0IHVybE1hdGNoZXMgPSBBcnJheS5mcm9tKHByb2Nlc3NlZFRleHQubWF0Y2hBbGwodGhpcy51cmxSZWdleCkpO1xuXG4gICAgLy8gUHJvY2VzYXIgZGUgYXRyw6FzIGhhY2lhIGFkZWxhbnRlIHBhcmEgbWFudGVuZXIgbGFzIHBvc2ljaW9uZXNcbiAgICBmb3IgKGxldCBpID0gdXJsTWF0Y2hlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgY29uc3QgbWF0Y2ggPSB1cmxNYXRjaGVzW2ldO1xuICAgICAgY29uc3QgW2Z1bGxNYXRjaCwgdXJsXSA9IG1hdGNoO1xuICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IG1hdGNoLmluZGV4ITtcbiAgICAgIGNvbnN0IGVuZEluZGV4ID0gc3RhcnRJbmRleCArIGZ1bGxNYXRjaC5sZW5ndGg7XG5cbiAgICAgIC8vIFZlcmlmaWNhciBxdWUgbm8gZXN0w6kgeWEgZGVudHJvIGRlIHVuIGVubGFjZSBIVE1MIGV4aXN0ZW50ZVxuICAgICAgY29uc3QgdGV4dEJlZm9yZSA9IHByb2Nlc3NlZFRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0SW5kZXgpO1xuICAgICAgY29uc3QgbGFzdE9wZW5UYWcgPSB0ZXh0QmVmb3JlLmxhc3RJbmRleE9mKCc8YSAnKTtcbiAgICAgIGNvbnN0IGxhc3RDbG9zZVRhZyA9IHRleHRCZWZvcmUubGFzdEluZGV4T2YoJzwvYT4nKTtcblxuICAgICAgLy8gU2kgaGF5IHVuIHRhZyA8YSBhYmllcnRvIHNpbiBjZXJyYXIsIG5vIHByb2Nlc2Ftb3NcbiAgICAgIGlmIChsYXN0T3BlblRhZyA+IGxhc3RDbG9zZVRhZykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gTGltcGlhciBwdW50dWFjacOzbiBkZWwgZmluYWwgZGUgbGEgVVJMXG4gICAgICBjb25zdCBjbGVhblVybCA9IHRoaXMuY2xlYW5VcmxQdW5jdHVhdGlvbih1cmwpO1xuICAgICAgY29uc3QgcHVuY3R1YXRpb25SZW1vdmVkID0gdXJsICE9PSBjbGVhblVybDtcbiAgICAgIGNvbnN0IHB1bmN0dWF0aW9uID0gcHVuY3R1YXRpb25SZW1vdmVkID8gdXJsLnN1YnN0cmluZyhjbGVhblVybC5sZW5ndGgpIDogJyc7XG5cbiAgICAgIGhhc0xpbmtzID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHRhcmdldCA9IG9wZW5FeHRlcm5hbEluTmV3VGFiID8gJyB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCInIDogJyc7XG4gICAgICBjb25zdCBjbGFzc2VzID0gYCR7bGlua0NsYXNzfSAke2V4dGVybmFsTGlua0NsYXNzfWAudHJpbSgpO1xuICAgICAgY29uc3QgbGlua0h0bWwgPSBgPGEgaHJlZj1cIiR7Y2xlYW5Vcmx9XCIke3RhcmdldH0gY2xhc3M9XCIke2NsYXNzZXN9XCI+JHtjbGVhblVybH08L2E+YDtcblxuICAgICAgLy8gUmVlbXBsYXphciBlbCBVUkwgb3JpZ2luYWwgY29uIGVsIGVubGFjZSArIHB1bnR1YWNpw7NuIHNpIGV4aXN0w61hXG4gICAgICBjb25zdCByZXBsYWNlbWVudCA9IHB1bmN0dWF0aW9uUmVtb3ZlZCA/IGxpbmtIdG1sICsgcHVuY3R1YXRpb24gOiBsaW5rSHRtbDtcbiAgICAgIHByb2Nlc3NlZFRleHQgPVxuICAgICAgICBwcm9jZXNzZWRUZXh0LnN1YnN0cmluZygwLCBzdGFydEluZGV4KSArIHJlcGxhY2VtZW50ICsgcHJvY2Vzc2VkVGV4dC5zdWJzdHJpbmcoZW5kSW5kZXgpO1xuICAgIH1cblxuICAgIC8vIDMuIFByb2Nlc2FyIHJ1dGFzIGludGVybmFzXG4gICAgY29uc3QgaW50ZXJuYWxNYXRjaGVzID0gQXJyYXkuZnJvbShwcm9jZXNzZWRUZXh0Lm1hdGNoQWxsKHRoaXMuaW50ZXJuYWxSb3V0ZVJlZ2V4KSk7XG5cbiAgICAvLyBQcm9jZXNhciBkZSBhdHLDoXMgaGFjaWEgYWRlbGFudGUgcGFyYSBtYW50ZW5lciBsYXMgcG9zaWNpb25lc1xuICAgIGZvciAobGV0IGkgPSBpbnRlcm5hbE1hdGNoZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gaW50ZXJuYWxNYXRjaGVzW2ldO1xuICAgICAgY29uc3QgW2Z1bGxNYXRjaCwgcHJlZml4LCByb3V0ZV0gPSBtYXRjaDtcbiAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBtYXRjaC5pbmRleCE7XG4gICAgICBjb25zdCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBmdWxsTWF0Y2gubGVuZ3RoO1xuXG4gICAgICAvLyBWZXJpZmljYXIgcXVlIG5vIGVzdMOpIHlhIGRlbnRybyBkZSB1biBlbmxhY2UgSFRNTCBleGlzdGVudGVcbiAgICAgIGNvbnN0IHRleHRCZWZvcmUgPSBwcm9jZXNzZWRUZXh0LnN1YnN0cmluZygwLCBzdGFydEluZGV4KTtcbiAgICAgIGNvbnN0IGxhc3RPcGVuVGFnID0gdGV4dEJlZm9yZS5sYXN0SW5kZXhPZignPGEgJyk7XG4gICAgICBjb25zdCBsYXN0Q2xvc2VUYWcgPSB0ZXh0QmVmb3JlLmxhc3RJbmRleE9mKCc8L2E+Jyk7XG5cbiAgICAgIC8vIFNpIGhheSB1biB0YWcgPGEgYWJpZXJ0byBzaW4gY2VycmFyLCBubyBwcm9jZXNhbW9zXG4gICAgICBpZiAobGFzdE9wZW5UYWcgPiBsYXN0Q2xvc2VUYWcpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGhhc0xpbmtzID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHRhcmdldCA9IG9wZW5JbnRlcm5hbEluTmV3VGFiID8gJyB0YXJnZXQ9XCJfYmxhbmtcIicgOiAnJztcbiAgICAgIGNvbnN0IGNsYXNzZXMgPSBgJHtsaW5rQ2xhc3N9ICR7aW50ZXJuYWxMaW5rQ2xhc3N9YC50cmltKCk7XG4gICAgICBjb25zdCBsaW5rSHRtbCA9IGA8YSBocmVmPVwiJHtyb3V0ZX1cIiR7dGFyZ2V0fSBjbGFzcz1cIiR7Y2xhc3Nlc31cIj4ke3JvdXRlfTwvYT5gO1xuXG4gICAgICBjb25zdCByZXBsYWNlbWVudCA9IGAke3ByZWZpeH0ke2xpbmtIdG1sfWA7XG4gICAgICBwcm9jZXNzZWRUZXh0ID1cbiAgICAgICAgcHJvY2Vzc2VkVGV4dC5zdWJzdHJpbmcoMCwgc3RhcnRJbmRleCkgKyByZXBsYWNlbWVudCArIHByb2Nlc3NlZFRleHQuc3Vic3RyaW5nKGVuZEluZGV4KTtcbiAgICB9XG5cbiAgICAvLyBTaSBoYXkgZW5sYWNlcywgc2FuaXRpemFyIGVsIEhUTUxcbiAgICBpZiAoaGFzTGlua3MpIHtcbiAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChwcm9jZXNzZWRUZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlY3RhIHNpIHVuIHRleHRvIGNvbnRpZW5lIGVubGFjZXMgKFVSTHMsIHJ1dGFzIGludGVybmFzIG8gZW5sYWNlcyBNYXJrZG93bikuXG4gICAqXG4gICAqIEBwYXJhbSB0ZXh0IC0gVGV4dG8gYSBhbmFsaXphclxuICAgKiBAcmV0dXJucyB0cnVlIHNpIGNvbnRpZW5lIGVubGFjZXNcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBoYXNMaW5rcyA9IHRoaXMubGlua1Byb2Nlc3Nvci5oYXNMaW5rcygnVmlzaXQgaHR0cHM6Ly9leGFtcGxlLmNvbSBvciBbZG9jc10oaHR0cHM6Ly9kb2NzLmNvbSknKTtcbiAgICogLy8gUmV0dXJuczogdHJ1ZVxuICAgKiBgYGBcbiAgICovXG4gIGhhc0xpbmtzKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGV4dCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gUmVzZXQgcmVnZXggaW5kaWNlc1xuICAgIHRoaXMudXJsUmVnZXgubGFzdEluZGV4ID0gMDtcbiAgICB0aGlzLmludGVybmFsUm91dGVSZWdleC5sYXN0SW5kZXggPSAwO1xuICAgIHRoaXMubWFya2Rvd25MaW5rUmVnZXgubGFzdEluZGV4ID0gMDtcblxuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnVybFJlZ2V4LnRlc3QodGV4dCkgfHxcbiAgICAgIHRoaXMuaW50ZXJuYWxSb3V0ZVJlZ2V4LnRlc3QodGV4dCkgfHxcbiAgICAgIHRoaXMubWFya2Rvd25MaW5rUmVnZXgudGVzdCh0ZXh0KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFlIHRvZG9zIGxvcyBlbmxhY2VzIGRlIHVuIHRleHRvLlxuICAgKlxuICAgKiBAcGFyYW0gdGV4dCAtIFRleHRvIGEgYW5hbGl6YXJcbiAgICogQHJldHVybnMgQXJyYXkgZGUgZW5sYWNlcyBlbmNvbnRyYWRvcyBjb24gc3UgdGlwbyB5IHRleHRvIChzaSBlcyBNYXJrZG93bilcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBsaW5rcyA9IHRoaXMubGlua1Byb2Nlc3Nvci5leHRyYWN0TGlua3MoJ1Zpc2l0IGh0dHBzOi8vZXhhbXBsZS5jb20sIC9wcm9maWxlLCBvciBbZG9jc10oaHR0cHM6Ly9kb2NzLmNvbSknKTtcbiAgICogLy8gUmV0dXJuczogW1xuICAgKiAvLyAgIHsgdXJsOiAnaHR0cHM6Ly9leGFtcGxlLmNvbScsIHR5cGU6ICdleHRlcm5hbCcsIHRleHQ6ICdodHRwczovL2V4YW1wbGUuY29tJyB9LFxuICAgKiAvLyAgIHsgdXJsOiAnL3Byb2ZpbGUnLCB0eXBlOiAnaW50ZXJuYWwnLCB0ZXh0OiAnL3Byb2ZpbGUnIH0sXG4gICAqIC8vICAgeyB1cmw6ICdodHRwczovL2RvY3MuY29tJywgdHlwZTogJ2V4dGVybmFsJywgdGV4dDogJ2RvY3MnIH1cbiAgICogLy8gXVxuICAgKiBgYGBcbiAgICovXG4gIGV4dHJhY3RMaW5rcyh0ZXh0OiBzdHJpbmcpOiBBcnJheTx7IHVybDogc3RyaW5nOyB0eXBlOiAnZXh0ZXJuYWwnIHwgJ2ludGVybmFsJzsgdGV4dDogc3RyaW5nIH0+IHtcbiAgICBpZiAoIXRleHQpIHJldHVybiBbXTtcblxuICAgIGNvbnN0IGxpbmtzOiBBcnJheTx7IHVybDogc3RyaW5nOyB0eXBlOiAnZXh0ZXJuYWwnIHwgJ2ludGVybmFsJzsgdGV4dDogc3RyaW5nIH0+ID0gW107XG5cbiAgICAvLyBSZXNldCByZWdleCBpbmRpY2VzXG4gICAgdGhpcy51cmxSZWdleC5sYXN0SW5kZXggPSAwO1xuICAgIHRoaXMuaW50ZXJuYWxSb3V0ZVJlZ2V4Lmxhc3RJbmRleCA9IDA7XG4gICAgdGhpcy5tYXJrZG93bkxpbmtSZWdleC5sYXN0SW5kZXggPSAwO1xuXG4gICAgLy8gRXh0cmFlciBlbmxhY2VzIE1hcmtkb3duIHByaW1lcm9cbiAgICBsZXQgbWF0Y2g7XG4gICAgd2hpbGUgKChtYXRjaCA9IHRoaXMubWFya2Rvd25MaW5rUmVnZXguZXhlYyh0ZXh0KSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHVybCA9IG1hdGNoWzJdO1xuICAgICAgY29uc3QgbGlua1RleHQgPSBtYXRjaFsxXTtcbiAgICAgIGNvbnN0IHR5cGUgPSAvXmh0dHBzPzpcXC9cXC8vLnRlc3QodXJsKSA/ICdleHRlcm5hbCcgOiAnaW50ZXJuYWwnO1xuICAgICAgbGlua3MucHVzaCh7IHVybCwgdHlwZSwgdGV4dDogbGlua1RleHQgfSk7XG4gICAgfVxuXG4gICAgLy8gRXh0cmFlciBVUkxzIGV4dGVybmFzIGRpcmVjdGFzXG4gICAgd2hpbGUgKChtYXRjaCA9IHRoaXMudXJsUmVnZXguZXhlYyh0ZXh0KSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHVybCA9IG1hdGNoWzFdO1xuICAgICAgLy8gVmVyaWZpY2FyIHF1ZSBubyBlc3TDqSB5YSBjYXB0dXJhZG8gY29tbyBNYXJrZG93biBsaW5rXG4gICAgICBpZiAoIWxpbmtzLnNvbWUobGluayA9PiBsaW5rLnVybCA9PT0gdXJsKSkge1xuICAgICAgICBsaW5rcy5wdXNoKHsgdXJsLCB0eXBlOiAnZXh0ZXJuYWwnLCB0ZXh0OiB1cmwgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXh0cmFlciBydXRhcyBpbnRlcm5hcyBkaXJlY3Rhc1xuICAgIHdoaWxlICgobWF0Y2ggPSB0aGlzLmludGVybmFsUm91dGVSZWdleC5leGVjKHRleHQpKSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdXJsID0gbWF0Y2hbMl07XG4gICAgICAvLyBWZXJpZmljYXIgcXVlIG5vIGVzdMOpIHlhIGNhcHR1cmFkbyBjb21vIE1hcmtkb3duIGxpbmtcbiAgICAgIGlmICghbGlua3Muc29tZShsaW5rID0+IGxpbmsudXJsID09PSB1cmwpKSB7XG4gICAgICAgIGxpbmtzLnB1c2goeyB1cmwsIHR5cGU6ICdpbnRlcm5hbCcsIHRleHQ6IHVybCB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGlua3M7XG4gIH1cbn1cbiJdfQ==
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1wcm9jZXNzb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvbGluay1wcm9jZXNzb3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFrQjNDOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBSUgsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQixZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBVDNDLHFHQUFxRztRQUNwRixhQUFRLEdBQUcsc0JBQXNCLENBQUM7UUFFbkQseUZBQXlGO1FBQ3hFLHVCQUFrQixHQUFHLG1CQUFtQixDQUFDO1FBRTFELDJEQUEyRDtRQUMxQyxzQkFBaUIsR0FBRywwQkFBMEIsQ0FBQztJQUVsQixDQUFDO0lBRS9DOzs7O09BSUc7SUFDSyxtQkFBbUIsQ0FBQyxHQUFXO1FBQ3JDLG9GQUFvRjtRQUNwRixvRkFBb0Y7UUFDcEYsTUFBTSxtQkFBbUIsR0FBRyxZQUFZLENBQUM7UUFFekMsMEZBQTBGO1FBQzFGLG9EQUFvRDtRQUNwRCxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUvQyxJQUFJLG9CQUFvQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDN0MsNERBQTREO1lBQzVELEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FvQkc7SUFDSCxZ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LENBQUMsQ0FBQztZQUNuRCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzsrR0EvUVUsb0JBQW9CO21IQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBMaW5rUHJvY2Vzc29yQ29uZmlnIHtcbiAgLyoqIFdoZXRoZXIgdG8gb3BlbiBleHRlcm5hbCBsaW5rcyBpbiBuZXcgdGFiIChkZWZhdWx0OiB0cnVlKSAqL1xuICBvcGVuRXh0ZXJuYWxJbk5ld1RhYj86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRvIG9wZW4gaW50ZXJuYWwgbGlua3MgaW4gbmV3IHRhYiAoZGVmYXVsdDogZmFsc2UpICovXG4gIG9wZW5JbnRlcm5hbEluTmV3VGFiPzogYm9vbGVhbjtcbiAgLyoqIEN1c3RvbSBDU1MgY2xhc3NlcyBmb3IgbGlua3MgKi9cbiAgbGlua0NsYXNzPzogc3RyaW5nO1xuICAvKiogQ3VzdG9tIENTUyBjbGFzc2VzIGZvciBleHRlcm5hbCBsaW5rcyAqL1xuICBleHRlcm5hbExpbmtDbGFzcz86IHN0cmluZztcbiAgLyoqIEN1c3RvbSBDU1MgY2xhc3NlcyBmb3IgaW50ZXJuYWwgbGlua3MgKi9cbiAgaW50ZXJuYWxMaW5rQ2xhc3M/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRvIHByb2Nlc3MgTWFya2Rvd24tc3R5bGUgbGlua3MgW3RleHRdKHVybCkgKGRlZmF1bHQ6IHRydWUpICovXG4gIHByb2Nlc3NNYXJrZG93bkxpbmtzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBMaW5rUHJvY2Vzc29yU2VydmljZSAtIFNlcnZpY2UgZm9yIHByb2Nlc3NpbmcgdGV4dCBjb250ZW50IHRvIGNvbnZlcnQgVVJMcyBhbmQgaW50ZXJuYWwgcm91dGVzIGludG8gY2xpY2thYmxlIGxpbmtzLlxuICpcbiAqIFRoaXMgc2VydmljZSBhdXRvbWF0aWNhbGx5IGRldGVjdHMgZXh0ZXJuYWwgVVJMcyAoaHR0cC9odHRwcyksIGludGVybmFsIHJvdXRlcyAoc3RhcnRpbmcgd2l0aCAvKSxcbiAqIGFuZCBNYXJrZG93bi1zdHlsZSBsaW5rcyBbdGV4dF0odXJsKSBhbmQgY29udmVydHMgdGhlbSBpbnRvIEhUTUwgYW5jaG9yIGVsZW1lbnRzIHdpdGggYXBwcm9wcmlhdGUgYXR0cmlidXRlcy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgbGlua1Byb2Nlc3NvcjogTGlua1Byb2Nlc3NvclNlcnZpY2UpIHt9XG4gKlxuICogcHJvY2Vzc1RleHQoKSB7XG4gKiAgIGNvbnN0IHRleHQgPSAnVmlzaXQgaHR0cHM6Ly9leGFtcGxlLmNvbSwgZ28gdG8gL3Byb2ZpbGUsIG9yIFtjaGVjayBkb2NzXShodHRwczovL2RvY3MuZXhhbXBsZS5jb20pJztcbiAqICAgY29uc3QgcHJvY2Vzc2VkID0gdGhpcy5saW5rUHJvY2Vzc29yLnByb2Nlc3NMaW5rcyh0ZXh0KTtcbiAqICAgLy8gUmV0dXJucyBTYWZlSHRtbCB3aXRoIGNsaWNrYWJsZSBsaW5rc1xuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMaW5rUHJvY2Vzc29yU2VydmljZSB7XG4gIC8vIFJlZ2V4IHBhcmEgZGV0ZWN0YXIgVVJMcyBjb21wbGV0YXMgKGh0dHAvaHR0cHMpIC0gY2FwdHVyYSB0b2RhIGxhIFVSTCB5IGx1ZWdvIGxpbXBpYW1vcyBwdW50dWFjacOzblxuICBwcml2YXRlIHJlYWRvbmx5IHVybFJlZ2V4ID0gLyhodHRwcz86XFwvXFwvW15cXHNdKykvZztcblxuICAvLyBSZWdleCBwYXJhIGRldGVjdGFyIHJ1dGFzIGludGVybmFzIC0gY2FwdHVyYSB0b2RhIGxhIHJ1dGEgeSBsdWVnbyBsaW1waWFtb3MgcHVudHVhY2nDs25cbiAgcHJpdmF0ZSByZWFkb25seSBpbnRlcm5hbFJvdXRlUmVnZXggPSAvKFxcc3xeKShcXC9bXlxcc10qKS9nO1xuXG4gIC8vIFJlZ2V4IHBhcmEgZGV0ZWN0YXIgZW5sYWNlcyBlc3RpbG8gTWFya2Rvd24gW3RleHRvXSh1cmwpXG4gIHByaXZhdGUgcmVhZG9ubHkgbWFya2Rvd25MaW5rUmVnZXggPSAvXFxbKFteXFxdXSspXFxdXFwoKFteKV0rKVxcKS9nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgLyoqXG4gICAqIExpbXBpYSBsYSBwdW50dWFjacOzbiBkZWwgZmluYWwgZGUgdW5hIFVSTC5cbiAgICogTWFudGllbmUgY2FyYWN0ZXJlcyB2w6FsaWRvcyBkZSBVUkwgcGVybyByZW11ZXZlIHNpZ25vcyBkZSBwdW50dWFjacOzbiBjb211bmVzIGFsIGZpbmFsLlxuICAgKiBQcmVzZXJ2YSBwYXLDoW1ldHJvcyBkZSBjb25zdWx0YSwgZnJhZ21lbnRvcyB5IGNhcmFjdGVyZXMgdsOhbGlkb3MgZW4gVVJMcy5cbiAgICovXG4gIHByaXZhdGUgY2xlYW5VcmxQdW5jdHVhdGlvbih1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gQ2FyYWN0ZXJlcyBxdWUgY29uc2lkZXJhbW9zIHB1bnR1YWNpw7NuIGFsIGZpbmFsIGRlIG9yYWNpw7NuLCBwZXJvIE5PIHBhcnRlIGRlIFVSTHNcbiAgICAvLyBObyBpbmNsdWltb3MgJiBvID0gcXVlIHNvbiBwYXJ0ZSBkZSBxdWVyeSBwYXJhbXMsIG5pICMgcXVlIGVzIHBhcnRlIGRlIGZyYWdtZW50b3NcbiAgICBjb25zdCB0cmFpbGluZ1B1bmN0dWF0aW9uID0gL1suLDshPyldKyQvO1xuXG4gICAgLy8gQ2Fzb3MgZXNwZWNpYWxlczogc2kgbGEgVVJMIHRlcm1pbmEgY29uIHBhcsOpbnRlc2lzIHBlcm8gbm8gdGllbmUgcGFyw6ludGVzaXMgZGUgYXBlcnR1cmFcbiAgICAvLyBwcm9iYWJsZW1lbnRlIGVsIHBhcsOpbnRlc2lzIG5vIGVzIHBhcnRlIGRlIGxhIFVSTFxuICAgIGNvbnN0IGhhc09wZW5pbmdQYXJlbiA9IHVybC5pbmNsdWRlcygnKCcpO1xuICAgIGNvbnN0IGVuZHNXaXRoQ2xvc2luZ1BhcmVuID0gdXJsLmVuZHNXaXRoKCcpJyk7XG5cbiAgICBpZiAoZW5kc1dpdGhDbG9zaW5nUGFyZW4gJiYgIWhhc09wZW5pbmdQYXJlbikge1xuICAgICAgLy8gUmVtb3ZlciBlbCBwYXLDqW50ZXNpcyBkZSBjaWVycmUgc2kgbm8gaGF5IHVubyBkZSBhcGVydHVyYVxuICAgICAgdXJsID0gdXJsLnJlcGxhY2UoL1xcKSQvLCAnJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybC5yZXBsYWNlKHRyYWlsaW5nUHVuY3R1YXRpb24sICcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNhIHRleHRvIHBhcmEgY29udmVydGlyIGVubGFjZXMgZW4gZWxlbWVudG9zIDxhPiBjbGlja2VhYmxlcy5cbiAgICogRGV0ZWN0YSBhdXRvbcOhdGljYW1lbnRlIFVSTHMgZXh0ZXJuYXMsIHJ1dGFzIGludGVybmFzIHkgZW5sYWNlcyBlc3RpbG8gTWFya2Rvd24uXG4gICAqXG4gICAqIEBwYXJhbSB0ZXh0IC0gVGV4dG8gYSBwcm9jZXNhclxuICAgKiBAcGFyYW0gY29uZmlnIC0gQ29uZmlndXJhY2nDs24gZGVsIHByb2Nlc2FtaWVudG9cbiAgICogQHJldHVybnMgU2FmZUh0bWwgY29uIGVubGFjZXMgcHJvY2VzYWRvcyBvIHN0cmluZyBvcmlnaW5hbFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJlc3VsdCA9IHRoaXMubGlua1Byb2Nlc3Nvci5wcm9jZXNzTGlua3MoXG4gICAqICAgJ1Zpc2l0IGh0dHBzOi8vZXhhbXBsZS5jb20sIGdvIHRvIC9wcm9maWxlLCBvciBbY2hlY2sgZG9jc10oaHR0cHM6Ly9kb2NzLmV4YW1wbGUuY29tKScsXG4gICAqICAge1xuICAgKiAgICAgb3BlbkV4dGVybmFsSW5OZXdUYWI6IHRydWUsXG4gICAqICAgICBvcGVuSW50ZXJuYWxJbk5ld1RhYjogZmFsc2UsXG4gICAqICAgICBwcm9jZXNzTWFya2Rvd25MaW5rczogdHJ1ZSxcbiAgICogICAgIGxpbmtDbGFzczogJ2N1c3RvbS1saW5rJ1xuICAgKiAgIH1cbiAgICogKTtcbiAgICogYGBgXG4gICAqL1xuICBwcm9jZXNzTGlua3ModGV4dDogc3RyaW5nLCBjb25maWc6IExpbmtQcm9jZXNzb3JDb25maWcgPSB7fSk6IFNhZmVIdG1sIHwgc3RyaW5nIHtcbiAgICBpZiAoIXRleHQpIHJldHVybiAnJztcblxuICAgIGNvbnN0IHtcbiAgICAgIG9wZW5FeHRlcm5hbEluTmV3VGFiID0gdHJ1ZSxcbiAgICAgIG9wZW5JbnRlcm5hbEluTmV3VGFiID0gZmFsc2UsXG4gICAgICBsaW5rQ2xhc3MgPSAncHJvY2Vzc2VkLWxpbmsnLFxuICAgICAgZXh0ZXJuYWxMaW5rQ2xhc3MgPSAnZXh0ZXJuYWwtbGluaycsXG4gICAgICBpbnRlcm5hbExpbmtDbGFzcyA9ICdpbnRlcm5hbC1saW5rJyxcbiAgICAgIHByb2Nlc3NNYXJrZG93bkxpbmtzID0gdHJ1ZSxcbiAgICB9ID0gY29uZmlnO1xuXG4gICAgbGV0IGhhc0xpbmtzID0gZmFsc2U7XG4gICAgbGV0IHByb2Nlc3NlZFRleHQgPSB0ZXh0O1xuXG4gICAgLy8gMS4gUHJvY2VzYXIgZW5sYWNlcyBlc3RpbG8gTWFya2Rvd24gW3RleHRvXSh1cmwpIHByaW1lcm9cbiAgICBpZiAocHJvY2Vzc01hcmtkb3duTGlua3MpIHtcbiAgICAgIC8vIC8vIFVzYXIgZXhlYyBlbiBidWNsZSAoY29tcGF0aWJsZSBjb24gRVMyMDE4KVxuICAgICAgLy8gY29uc3QgbWFya2Rvd25NYXRjaGVzOiBSZWdFeHBFeGVjQXJyYXlbXSA9IFtdO1xuICAgICAgLy8gdGhpcy5tYXJrZG93bkxpbmtSZWdleC5sYXN0SW5kZXggPSAwO1xuICAgICAgLy8gbGV0IG1kTWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGw7XG4gICAgICAvLyB3aGlsZSAoKG1kTWF0Y2ggPSB0aGlzLm1hcmtkb3duTGlua1JlZ2V4LmV4ZWMocHJvY2Vzc2VkVGV4dCkpICE9PSBudWxsKSB7XG4gICAgICAvLyAgIG1hcmtkb3duTWF0Y2hlcy5wdXNoKG1kTWF0Y2gpO1xuICAgICAgLy8gfVxuXG4gICAgICAvLyBQcm9jZXNhciBkZSBhdHLDoXMgaGFjaWEgYWRlbGFudGUgcGFyYSBtYW50ZW5lciBsYXMgcG9zaWNpb25lc1xuICAgICAgLy8gZm9yIChsZXQgaSA9IG1hcmtkb3duTWF0Y2hlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgLy8gICBjb25zdCBtYXRjaCA9IG1hcmtkb3duTWF0Y2hlc1tpXTtcbiAgICAgIC8vICAgY29uc3QgW2Z1bGxNYXRjaCwgbGlua1RleHQsIHVybF0gPSBtYXRjaDtcbiAgICAgIC8vICAgY29uc3Qgc3RhcnRJbmRleCA9IG1hdGNoLmluZGV4ITtcbiAgICAgIC8vICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgZnVsbE1hdGNoLmxlbmd0aDtcblxuICAgICAgLy8gICBoYXNMaW5rcyA9IHRydWU7XG4gICAgICAvLyAgIGNvbnN0IGlzRXh0ZXJuYWwgPSAvXmh0dHBzPzpcXC9cXC8vLnRlc3QodXJsKTtcbiAgICAgIC8vICAgY29uc3QgdGFyZ2V0ID0gKGlzRXh0ZXJuYWwgPyBvcGVuRXh0ZXJuYWxJbk5ld1RhYiA6IG9wZW5JbnRlcm5hbEluTmV3VGFiKVxuICAgICAgLy8gICAgID8gaXNFeHRlcm5hbFxuICAgICAgLy8gICAgICAgPyAnIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIidcbiAgICAgIC8vICAgICAgIDogJyB0YXJnZXQ9XCJfYmxhbmtcIidcbiAgICAgIC8vICAgICA6ICcnO1xuICAgICAgLy8gICBjb25zdCB0eXBlQ2xhc3MgPSBpc0V4dGVybmFsID8gZXh0ZXJuYWxMaW5rQ2xhc3MgOiBpbnRlcm5hbExpbmtDbGFzcztcbiAgICAgIC8vICAgY29uc3QgY2xhc3NlcyA9IGAke2xpbmtDbGFzc30gJHt0eXBlQ2xhc3N9YC50cmltKCk7XG4gICAgICAvLyAgIGNvbnN0IGxpbmtIdG1sID0gYDxhIGhyZWY9XCIke3VybH1cIiR7dGFyZ2V0fSBjbGFzcz1cIiR7Y2xhc3Nlc31cIj4ke2xpbmtUZXh0fTwvYT5gO1xuXG4gICAgICAvLyAgIHByb2Nlc3NlZFRleHQgPVxuICAgICAgLy8gICAgIHByb2Nlc3NlZFRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0SW5kZXgpICsgbGlua0h0bWwgKyBwcm9jZXNzZWRUZXh0LnN1YnN0cmluZyhlbmRJbmRleCk7XG4gICAgICAvLyB9XG4gICAgfVxuXG4gICAgLy8gMi4gUHJvY2VzYXIgVVJMcyBleHRlcm5hcyBkaXJlY3Rhc1xuICAgIC8vIFVzYXIgZXhlYyBlbiBidWNsZSAoY29tcGF0aWJsZSBjb24gRVMyMDE4KVxuICAgIGNvbnN0IHVybE1hdGNoZXM6IFJlZ0V4cEV4ZWNBcnJheVtdID0gW107XG4gICAgdGhpcy51cmxSZWdleC5sYXN0SW5kZXggPSAwO1xuICAgIGxldCB1cmxNYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgICB3aGlsZSAoKHVybE1hdGNoID0gdGhpcy51cmxSZWdleC5leGVjKHByb2Nlc3NlZFRleHQpKSAhPT0gbnVsbCkge1xuICAgICAgdXJsTWF0Y2hlcy5wdXNoKHVybE1hdGNoKTtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNhciBkZSBhdHLDoXMgaGFjaWEgYWRlbGFudGUgcGFyYSBtYW50ZW5lciBsYXMgcG9zaWNpb25lc1xuICAgIGZvciAobGV0IGkgPSB1cmxNYXRjaGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IHVybE1hdGNoZXNbaV07XG4gICAgICBjb25zdCBbZnVsbE1hdGNoLCB1cmxdID0gbWF0Y2g7XG4gICAgICBjb25zdCBzdGFydEluZGV4ID0gbWF0Y2guaW5kZXghO1xuICAgICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgZnVsbE1hdGNoLmxlbmd0aDtcblxuICAgICAgLy8gVmVyaWZpY2FyIHF1ZSBubyBlc3TDqSB5YSBkZW50cm8gZGUgdW4gZW5sYWNlIEhUTUwgZXhpc3RlbnRlXG4gICAgICBjb25zdCB0ZXh0QmVmb3JlID0gcHJvY2Vzc2VkVGV4dC5zdWJzdHJpbmcoMCwgc3RhcnRJbmRleCk7XG4gICAgICBjb25zdCBsYXN0T3BlblRhZyA9IHRleHRCZWZvcmUubGFzdEluZGV4T2YoJzxhICcpO1xuICAgICAgY29uc3QgbGFzdENsb3NlVGFnID0gdGV4dEJlZm9yZS5sYXN0SW5kZXhPZignPC9hPicpO1xuXG4gICAgICAvLyBTaSBoYXkgdW4gdGFnIDxhIGFiaWVydG8gc2luIGNlcnJhciwgbm8gcHJvY2VzYW1vc1xuICAgICAgaWYgKGxhc3RPcGVuVGFnID4gbGFzdENsb3NlVGFnKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBMaW1waWFyIHB1bnR1YWNpw7NuIGRlbCBmaW5hbCBkZSBsYSBVUkxcbiAgICAgIGNvbnN0IGNsZWFuVXJsID0gdGhpcy5jbGVhblVybFB1bmN0dWF0aW9uKHVybCk7XG4gICAgICBjb25zdCBwdW5jdHVhdGlvblJlbW92ZWQgPSB1cmwgIT09IGNsZWFuVXJsO1xuICAgICAgY29uc3QgcHVuY3R1YXRpb24gPSBwdW5jdHVhdGlvblJlbW92ZWQgPyB1cmwuc3Vic3RyaW5nKGNsZWFuVXJsLmxlbmd0aCkgOiAnJztcblxuICAgICAgaGFzTGlua3MgPSB0cnVlO1xuICAgICAgY29uc3QgdGFyZ2V0ID0gb3BlbkV4dGVybmFsSW5OZXdUYWIgPyAnIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIicgOiAnJztcbiAgICAgIGNvbnN0IGNsYXNzZXMgPSBgJHtsaW5rQ2xhc3N9ICR7ZXh0ZXJuYWxMaW5rQ2xhc3N9YC50cmltKCk7XG4gICAgICBjb25zdCBsaW5rSHRtbCA9IGA8YSBocmVmPVwiJHtjbGVhblVybH1cIiR7dGFyZ2V0fSBjbGFzcz1cIiR7Y2xhc3Nlc31cIj4ke2NsZWFuVXJsfTwvYT5gO1xuXG4gICAgICAvLyBSZWVtcGxhemFyIGVsIFVSTCBvcmlnaW5hbCBjb24gZWwgZW5sYWNlICsgcHVudHVhY2nDs24gc2kgZXhpc3TDrWFcbiAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gcHVuY3R1YXRpb25SZW1vdmVkID8gbGlua0h0bWwgKyBwdW5jdHVhdGlvbiA6IGxpbmtIdG1sO1xuICAgICAgcHJvY2Vzc2VkVGV4dCA9XG4gICAgICAgIHByb2Nlc3NlZFRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0SW5kZXgpICsgcmVwbGFjZW1lbnQgKyBwcm9jZXNzZWRUZXh0LnN1YnN0cmluZyhlbmRJbmRleCk7XG4gICAgfVxuXG4gICAgLy8gMy4gUHJvY2VzYXIgcnV0YXMgaW50ZXJuYXNcbiAgICAvLyAvLyBVc2FyIGV4ZWMgZW4gYnVjbGUgKGNvbXBhdGlibGUgY29uIEVTMjAxOClcbiAgICAvLyBjb25zdCBpbnRlcm5hbE1hdGNoZXM6IFJlZ0V4cEV4ZWNBcnJheVtdID0gW107XG4gICAgLy8gdGhpcy5pbnRlcm5hbFJvdXRlUmVnZXgubGFzdEluZGV4ID0gMDtcbiAgICAvLyBsZXQgaW50ZXJuYWxNYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgICAvLyB3aGlsZSAoKGludGVybmFsTWF0Y2ggPSB0aGlzLmludGVybmFsUm91dGVSZWdleC5leGVjKHByb2Nlc3NlZFRleHQpKSAhPT0gbnVsbCkge1xuICAgIC8vICAgaW50ZXJuYWxNYXRjaGVzLnB1c2goaW50ZXJuYWxNYXRjaCk7XG4gICAgLy8gfVxuXG4gICAgLy8gUHJvY2VzYXIgZGUgYXRyw6FzIGhhY2lhIGFkZWxhbnRlIHBhcmEgbWFudGVuZXIgbGFzIHBvc2ljaW9uZXNcbiAgICAvLyBmb3IgKGxldCBpID0gaW50ZXJuYWxNYXRjaGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgLy8gICBjb25zdCBtYXRjaCA9IGludGVybmFsTWF0Y2hlc1tpXTtcbiAgICAvLyAgIGNvbnN0IFtmdWxsTWF0Y2gsIHByZWZpeCwgcm91dGVdID0gbWF0Y2g7XG4gICAgLy8gICBjb25zdCBzdGFydEluZGV4ID0gbWF0Y2guaW5kZXghO1xuICAgIC8vICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgZnVsbE1hdGNoLmxlbmd0aDtcblxuICAgIC8vICAgLy8gVmVyaWZpY2FyIHF1ZSBubyBlc3TDqSB5YSBkZW50cm8gZGUgdW4gZW5sYWNlIEhUTUwgZXhpc3RlbnRlXG4gICAgLy8gICBjb25zdCB0ZXh0QmVmb3JlID0gcHJvY2Vzc2VkVGV4dC5zdWJzdHJpbmcoMCwgc3RhcnRJbmRleCk7XG4gICAgLy8gICBjb25zdCBsYXN0T3BlblRhZyA9IHRleHRCZWZvcmUubGFzdEluZGV4T2YoJzxhICcpO1xuICAgIC8vICAgY29uc3QgbGFzdENsb3NlVGFnID0gdGV4dEJlZm9yZS5sYXN0SW5kZXhPZignPC9hPicpO1xuXG4gICAgLy8gICAvLyBTaSBoYXkgdW4gdGFnIDxhIGFiaWVydG8gc2luIGNlcnJhciwgbm8gcHJvY2VzYW1vc1xuICAgIC8vICAgaWYgKGxhc3RPcGVuVGFnID4gbGFzdENsb3NlVGFnKSB7XG4gICAgLy8gICAgIGNvbnRpbnVlO1xuICAgIC8vICAgfVxuXG4gICAgLy8gICBoYXNMaW5rcyA9IHRydWU7XG4gICAgLy8gICBjb25zdCB0YXJnZXQgPSBvcGVuSW50ZXJuYWxJbk5ld1RhYiA/ICcgdGFyZ2V0PVwiX2JsYW5rXCInIDogJyc7XG4gICAgLy8gICBjb25zdCBjbGFzc2VzID0gYCR7bGlua0NsYXNzfSAke2ludGVybmFsTGlua0NsYXNzfWAudHJpbSgpO1xuICAgIC8vICAgY29uc3QgbGlua0h0bWwgPSBgPGEgaHJlZj1cIiR7cm91dGV9XCIke3RhcmdldH0gY2xhc3M9XCIke2NsYXNzZXN9XCI+JHtyb3V0ZX08L2E+YDtcblxuICAgIC8vICAgY29uc3QgcmVwbGFjZW1lbnQgPSBgJHtwcmVmaXh9JHtsaW5rSHRtbH1gO1xuICAgIC8vICAgcHJvY2Vzc2VkVGV4dCA9XG4gICAgLy8gICAgIHByb2Nlc3NlZFRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0SW5kZXgpICsgcmVwbGFjZW1lbnQgKyBwcm9jZXNzZWRUZXh0LnN1YnN0cmluZyhlbmRJbmRleCk7XG4gICAgLy8gfVxuXG4gICAgLy8gU2kgaGF5IGVubGFjZXMsIHNhbml0aXphciBlbCBIVE1MXG4gICAgaWYgKGhhc0xpbmtzKSB7XG4gICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwocHJvY2Vzc2VkVGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZWN0YSBzaSB1biB0ZXh0byBjb250aWVuZSBlbmxhY2VzIChVUkxzLCBydXRhcyBpbnRlcm5hcyBvIGVubGFjZXMgTWFya2Rvd24pLlxuICAgKlxuICAgKiBAcGFyYW0gdGV4dCAtIFRleHRvIGEgYW5hbGl6YXJcbiAgICogQHJldHVybnMgdHJ1ZSBzaSBjb250aWVuZSBlbmxhY2VzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgaGFzTGlua3MgPSB0aGlzLmxpbmtQcm9jZXNzb3IuaGFzTGlua3MoJ1Zpc2l0IGh0dHBzOi8vZXhhbXBsZS5jb20gb3IgW2RvY3NdKGh0dHBzOi8vZG9jcy5jb20pJyk7XG4gICAqIC8vIFJldHVybnM6IHRydWVcbiAgICogYGBgXG4gICAqL1xuICBoYXNMaW5rcyh0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRleHQpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIFJlc2V0IHJlZ2V4IGluZGljZXNcbiAgICB0aGlzLnVybFJlZ2V4Lmxhc3RJbmRleCA9IDA7XG4gICAgdGhpcy5pbnRlcm5hbFJvdXRlUmVnZXgubGFzdEluZGV4ID0gMDtcbiAgICB0aGlzLm1hcmtkb3duTGlua1JlZ2V4Lmxhc3RJbmRleCA9IDA7XG5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy51cmxSZWdleC50ZXN0KHRleHQpIHx8XG4gICAgICB0aGlzLmludGVybmFsUm91dGVSZWdleC50ZXN0KHRleHQpIHx8XG4gICAgICB0aGlzLm1hcmtkb3duTGlua1JlZ2V4LnRlc3QodGV4dClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhZSB0b2RvcyBsb3MgZW5sYWNlcyBkZSB1biB0ZXh0by5cbiAgICpcbiAgICogQHBhcmFtIHRleHQgLSBUZXh0byBhIGFuYWxpemFyXG4gICAqIEByZXR1cm5zIEFycmF5IGRlIGVubGFjZXMgZW5jb250cmFkb3MgY29uIHN1IHRpcG8geSB0ZXh0byAoc2kgZXMgTWFya2Rvd24pXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgbGlua3MgPSB0aGlzLmxpbmtQcm9jZXNzb3IuZXh0cmFjdExpbmtzKCdWaXNpdCBodHRwczovL2V4YW1wbGUuY29tLCAvcHJvZmlsZSwgb3IgW2RvY3NdKGh0dHBzOi8vZG9jcy5jb20pJyk7XG4gICAqIC8vIFJldHVybnM6IFtcbiAgICogLy8gICB7IHVybDogJ2h0dHBzOi8vZXhhbXBsZS5jb20nLCB0eXBlOiAnZXh0ZXJuYWwnLCB0ZXh0OiAnaHR0cHM6Ly9leGFtcGxlLmNvbScgfSxcbiAgICogLy8gICB7IHVybDogJy9wcm9maWxlJywgdHlwZTogJ2ludGVybmFsJywgdGV4dDogJy9wcm9maWxlJyB9LFxuICAgKiAvLyAgIHsgdXJsOiAnaHR0cHM6Ly9kb2NzLmNvbScsIHR5cGU6ICdleHRlcm5hbCcsIHRleHQ6ICdkb2NzJyB9XG4gICAqIC8vIF1cbiAgICogYGBgXG4gICAqL1xuICBleHRyYWN0TGlua3ModGV4dDogc3RyaW5nKTogQXJyYXk8eyB1cmw6IHN0cmluZzsgdHlwZTogJ2V4dGVybmFsJyB8ICdpbnRlcm5hbCc7IHRleHQ6IHN0cmluZyB9PiB7XG4gICAgaWYgKCF0ZXh0KSByZXR1cm4gW107XG5cbiAgICBjb25zdCBsaW5rczogQXJyYXk8eyB1cmw6IHN0cmluZzsgdHlwZTogJ2V4dGVybmFsJyB8ICdpbnRlcm5hbCc7IHRleHQ6IHN0cmluZyB9PiA9IFtdO1xuXG4gICAgLy8gUmVzZXQgcmVnZXggaW5kaWNlc1xuICAgIHRoaXMudXJsUmVnZXgubGFzdEluZGV4ID0gMDtcbiAgICB0aGlzLmludGVybmFsUm91dGVSZWdleC5sYXN0SW5kZXggPSAwO1xuICAgIHRoaXMubWFya2Rvd25MaW5rUmVnZXgubGFzdEluZGV4ID0gMDtcblxuICAgIC8vIEV4dHJhZXIgZW5sYWNlcyBNYXJrZG93biBwcmltZXJvXG4gICAgbGV0IG1hdGNoO1xuICAgIHdoaWxlICgobWF0Y2ggPSB0aGlzLm1hcmtkb3duTGlua1JlZ2V4LmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB1cmwgPSBtYXRjaFsyXTtcbiAgICAgIGNvbnN0IGxpbmtUZXh0ID0gbWF0Y2hbMV07XG4gICAgICBjb25zdCB0eXBlID0gL15odHRwcz86XFwvXFwvLy50ZXN0KHVybCkgPyAnZXh0ZXJuYWwnIDogJ2ludGVybmFsJztcbiAgICAgIGxpbmtzLnB1c2goeyB1cmwsIHR5cGUsIHRleHQ6IGxpbmtUZXh0IH0pO1xuICAgIH1cblxuICAgIC8vIEV4dHJhZXIgVVJMcyBleHRlcm5hcyBkaXJlY3Rhc1xuICAgIHdoaWxlICgobWF0Y2ggPSB0aGlzLnVybFJlZ2V4LmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB1cmwgPSBtYXRjaFsxXTtcbiAgICAgIC8vIFZlcmlmaWNhciBxdWUgbm8gZXN0w6kgeWEgY2FwdHVyYWRvIGNvbW8gTWFya2Rvd24gbGlua1xuICAgICAgaWYgKCFsaW5rcy5zb21lKGxpbmsgPT4gbGluay51cmwgPT09IHVybCkpIHtcbiAgICAgICAgbGlua3MucHVzaCh7IHVybCwgdHlwZTogJ2V4dGVybmFsJywgdGV4dDogdXJsIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4dHJhZXIgcnV0YXMgaW50ZXJuYXMgZGlyZWN0YXNcbiAgICB3aGlsZSAoKG1hdGNoID0gdGhpcy5pbnRlcm5hbFJvdXRlUmVnZXguZXhlYyh0ZXh0KSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHVybCA9IG1hdGNoWzJdO1xuICAgICAgLy8gVmVyaWZpY2FyIHF1ZSBubyBlc3TDqSB5YSBjYXB0dXJhZG8gY29tbyBNYXJrZG93biBsaW5rXG4gICAgICBpZiAoIWxpbmtzLnNvbWUobGluayA9PiBsaW5rLnVybCA9PT0gdXJsKSkge1xuICAgICAgICBsaW5rcy5wdXNoKHsgdXJsLCB0eXBlOiAnaW50ZXJuYWwnLCB0ZXh0OiB1cmwgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmtzO1xuICB9XG59XG4iXX0=
|