ctt-puro 0.47.9 → 0.48.1
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/puro-engine-modal/puro-engine-modal.component.mjs +13 -25
- package/esm2022/lib/components/puro-webmap/puro-webmap.component.mjs +3 -3
- package/esm2022/lib/directives/puro-script/puro-modal-scripts.directive.mjs +83 -0
- package/esm2022/lib/services/mapper/mapper.service.mjs +2 -2
- package/fesm2022/ctt-puro.mjs +91 -25
- package/fesm2022/ctt-puro.mjs.map +1 -1
- package/lib/directives/puro-script/puro-modal-scripts.directive.d.ts +11 -0
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ import { AutoImageZoomWrapperDirective, PuroLinkTypeDirective } from '../../dire
|
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export class PuroWebmapComponent {
|
|
6
6
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroWebmapComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroWebmapComponent, isStandalone: true, selector: "lib-puro-webmap", inputs: { title: "title", links: "links", img: "img" }, ngImport: i0, template: "<section class=\"webmap\">\n <div class=\"webmap__inner\">\n <div class=\"webmap__graphic\">\n <div class=\"webmap__graphicInner\">\n @if (img) {\n <img\n [ngSrc]=\"img.src\"\n [alt]=\"img.alt\"\n class=\"webmap__graphicInner--img\"\n loading=\"lazy\"\n width=\"765\"\n height=\"725\"\n decoding=\"async\"\n />\n }\n </div>\n </div>\n <div class=\"webmap__content\">\n @if (title) {\n <span class=\"webmap__title\">{{ title }}</span>\n }\n @if (links && links.length) {\n <ul class=\"webmap__list\">\n @for (link of links; track $index) {\n @if (link) {\n <li class=\"webmap__link\">\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n </li>\n }\n }\n </ul>\n }\n </div>\n </div>\n</section>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }, { kind: "directive", type: AutoImageZoomWrapperDirective, selector: "img[ngSrc], img[src]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroWebmapComponent, isStandalone: true, selector: "lib-puro-webmap", inputs: { title: "title", links: "links", img: "img" }, ngImport: i0, template: "<section class=\"webmap generalMargin\">\n <div class=\"webmap__inner\">\n <div class=\"webmap__graphic\">\n <div class=\"webmap__graphicInner\">\n @if (img) {\n <img\n [ngSrc]=\"img.src\"\n [alt]=\"img.alt\"\n class=\"webmap__graphicInner--img\"\n loading=\"lazy\"\n width=\"765\"\n height=\"725\"\n decoding=\"async\"\n />\n }\n </div>\n </div>\n <div class=\"webmap__content\">\n @if (title) {\n <span class=\"webmap__title\">{{ title }}</span>\n }\n @if (links && links.length) {\n <ul class=\"webmap__list\">\n @for (link of links; track $index) {\n @if (link) {\n <li class=\"webmap__link\">\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n </li>\n }\n }\n </ul>\n }\n </div>\n </div>\n</section>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }, { kind: "directive", type: AutoImageZoomWrapperDirective, selector: "img[ngSrc], img[src]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
8
8
|
}
|
|
9
9
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroWebmapComponent, decorators: [{
|
|
10
10
|
type: Component,
|
|
@@ -13,7 +13,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
13
13
|
PuroLinkTypeDirective,
|
|
14
14
|
NgOptimizedImage,
|
|
15
15
|
AutoImageZoomWrapperDirective,
|
|
16
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"webmap\">\n <div class=\"webmap__inner\">\n <div class=\"webmap__graphic\">\n <div class=\"webmap__graphicInner\">\n @if (img) {\n <img\n [ngSrc]=\"img.src\"\n [alt]=\"img.alt\"\n class=\"webmap__graphicInner--img\"\n loading=\"lazy\"\n width=\"765\"\n height=\"725\"\n decoding=\"async\"\n />\n }\n </div>\n </div>\n <div class=\"webmap__content\">\n @if (title) {\n <span class=\"webmap__title\">{{ title }}</span>\n }\n @if (links && links.length) {\n <ul class=\"webmap__list\">\n @for (link of links; track $index) {\n @if (link) {\n <li class=\"webmap__link\">\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n </li>\n }\n }\n </ul>\n }\n </div>\n </div>\n</section>\n" }]
|
|
16
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"webmap generalMargin\">\n <div class=\"webmap__inner\">\n <div class=\"webmap__graphic\">\n <div class=\"webmap__graphicInner\">\n @if (img) {\n <img\n [ngSrc]=\"img.src\"\n [alt]=\"img.alt\"\n class=\"webmap__graphicInner--img\"\n loading=\"lazy\"\n width=\"765\"\n height=\"725\"\n decoding=\"async\"\n />\n }\n </div>\n </div>\n <div class=\"webmap__content\">\n @if (title) {\n <span class=\"webmap__title\">{{ title }}</span>\n }\n @if (links && links.length) {\n <ul class=\"webmap__list\">\n @for (link of links; track $index) {\n @if (link) {\n <li class=\"webmap__link\">\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n </li>\n }\n }\n </ul>\n }\n </div>\n </div>\n</section>\n" }]
|
|
17
17
|
}], propDecorators: { title: [{
|
|
18
18
|
type: Input
|
|
19
19
|
}], links: [{
|
|
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
21
21
|
}], img: [{
|
|
22
22
|
type: Input
|
|
23
23
|
}] } });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby13ZWJtYXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby13ZWJtYXAvcHVyby13ZWJtYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby13ZWJtYXAvcHVyby13ZWJtYXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFlBQVksRUFDWixnQkFBZ0IsR0FDbkIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFnQnhGLE1BQU0sT0FBTyxtQkFBbUI7K0dBQW5CLG1CQUFtQjttR0FBbkIsbUJBQW1CLG1JQ3JCaEMscTlDQXdDQSx5REQ1QlEsWUFBWSwrQkFDWixxQkFBcUIsNElBQ3JCLGdCQUFnQixnUEFDaEIsNkJBQTZCOzs0RkFNeEIsbUJBQW1CO2tCQWIvQixTQUFTOytCQUNJLGlCQUFpQixjQUNmLElBQUksV0FDUDt3QkFDTCxZQUFZO3dCQUNaLHFCQUFxQjt3QkFDckIsZ0JBQWdCO3dCQUNoQiw2QkFBNkI7cUJBQ2hDLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE5nT3B0aW1pemVkSW1hZ2UsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0b0ltYWdlWm9vbVdyYXBwZXJEaXJlY3RpdmUsIFB1cm9MaW5rVHlwZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgUHVyb0J1dHRvbkksIFB1cm9JbWFnZUkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItcHVyby13ZWJtYXAnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFB1cm9MaW5rVHlwZURpcmVjdGl2ZSxcbiAgICAgICAgTmdPcHRpbWl6ZWRJbWFnZSxcbiAgICAgICAgQXV0b0ltYWdlWm9vbVdyYXBwZXJEaXJlY3RpdmUsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHVyby13ZWJtYXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9wdXJvLXdlYm1hcC5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFB1cm9XZWJtYXBDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGxpbmtzPzogUHVyb0J1dHRvbklbXTtcbiAgICBASW5wdXQoKSBpbWc/OiBQdXJvSW1hZ2VJO1xufVxuIiwiPHNlY3Rpb24gY2xhc3M9XCJ3ZWJtYXAgZ2VuZXJhbE1hcmdpblwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3ZWJtYXBfX2lubmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWJtYXBfX2dyYXBoaWNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWJtYXBfX2dyYXBoaWNJbm5lclwiPlxuICAgICAgICAgICAgICAgIEBpZiAoaW1nKSB7XG4gICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1NyY109XCJpbWcuc3JjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaW1nLmFsdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndlYm1hcF9fZ3JhcGhpY0lubmVyLS1pbWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI3NjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiNzI1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kaW5nPVwiYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndlYm1hcF9fY29udGVudFwiPlxuICAgICAgICAgICAgQGlmICh0aXRsZSkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid2VibWFwX190aXRsZVwiPnt7IHRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChsaW5rcyAmJiBsaW5rcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJ3ZWJtYXBfX2xpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAobGluayBvZiBsaW5rczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGxpbmspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ3ZWJtYXBfX2xpbmtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImxpbmsudXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJsaW5rLmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGluay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgbGluay5sYWJlbCB9fTwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Directive, effect, input, Inject, PLATFORM_ID } from '@angular/core';
|
|
2
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
3
|
+
import { DatepickerLocaleUtil } from '../../utils/datepicker-locale.util';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class EngineModalScriptsDirective {
|
|
6
|
+
constructor(platformId) {
|
|
7
|
+
this.platformId = platformId;
|
|
8
|
+
this.active = input.required();
|
|
9
|
+
effect(() => {
|
|
10
|
+
if (!this.active())
|
|
11
|
+
return;
|
|
12
|
+
this.init();
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
init() {
|
|
16
|
+
if (!isPlatformBrowser(this.platformId))
|
|
17
|
+
return;
|
|
18
|
+
if (typeof $ === 'undefined')
|
|
19
|
+
return;
|
|
20
|
+
setTimeout(() => {
|
|
21
|
+
DatepickerLocaleUtil.setLocale(DatepickerLocaleUtil.detectLanguage());
|
|
22
|
+
this.initDatepickers();
|
|
23
|
+
this.initGuests();
|
|
24
|
+
}, 50);
|
|
25
|
+
}
|
|
26
|
+
/* ======================
|
|
27
|
+
* DATEPICKER (MODAL)
|
|
28
|
+
* ====================== */
|
|
29
|
+
initDatepickers() {
|
|
30
|
+
const init = (selector) => {
|
|
31
|
+
$(selector).each(function () {
|
|
32
|
+
if ($(this).hasClass('hasDatepicker')) {
|
|
33
|
+
$(this).datepicker('destroy');
|
|
34
|
+
}
|
|
35
|
+
$(this).datepicker({
|
|
36
|
+
showAnim: 'fadeIn',
|
|
37
|
+
changeMonth: true,
|
|
38
|
+
changeYear: true,
|
|
39
|
+
showOtherMonths: true,
|
|
40
|
+
selectOtherMonths: true,
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
init('#In-date2');
|
|
45
|
+
init('#Out-date2');
|
|
46
|
+
}
|
|
47
|
+
/* ======================
|
|
48
|
+
* GUESTS (MODAL)
|
|
49
|
+
* ====================== */
|
|
50
|
+
initGuests() {
|
|
51
|
+
$('.js-personas-subfields')
|
|
52
|
+
.off('click.engine')
|
|
53
|
+
.on('click.engine', function () {
|
|
54
|
+
$(this).next('.js-fieldSub').slideToggle();
|
|
55
|
+
});
|
|
56
|
+
$('.js-apply-guests1')
|
|
57
|
+
.off('click.engine')
|
|
58
|
+
.on('click.engine', function () {
|
|
59
|
+
const wrapper = $(this).parents('.booking__fieldSub');
|
|
60
|
+
const adults = parseInt($('#adult1').val(), 10) || 0;
|
|
61
|
+
const kids = parseInt($('#child1').val(), 10) || 0;
|
|
62
|
+
const total = adults + kids;
|
|
63
|
+
wrapper.hide();
|
|
64
|
+
wrapper
|
|
65
|
+
.siblings('.js-personas-subfields')
|
|
66
|
+
.find('.booking__fieldControl')
|
|
67
|
+
.text(total <= 9 ? '0' + total : total);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EngineModalScriptsDirective, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
71
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.12", type: EngineModalScriptsDirective, isStandalone: true, selector: "[engineModalScripts]", inputs: { active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
|
|
72
|
+
}
|
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EngineModalScriptsDirective, decorators: [{
|
|
74
|
+
type: Directive,
|
|
75
|
+
args: [{
|
|
76
|
+
selector: '[engineModalScripts]',
|
|
77
|
+
standalone: true,
|
|
78
|
+
}]
|
|
79
|
+
}], ctorParameters: () => [{ type: Object, decorators: [{
|
|
80
|
+
type: Inject,
|
|
81
|
+
args: [PLATFORM_ID]
|
|
82
|
+
}] }] });
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1tb2RhbC1zY3JpcHRzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3B1cm8vc3JjL2xpYi9kaXJlY3RpdmVzL3B1cm8tc2NyaXB0L3B1cm8tbW9kYWwtc2NyaXB0cy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBUTFFLE1BQU0sT0FBTywyQkFBMkI7SUFHcEMsWUFBeUMsVUFBa0I7UUFBbEIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUYzRCxXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO1FBRy9CLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFBRSxPQUFPO1lBQzNCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxJQUFJO1FBQ1IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFBRSxPQUFPO1FBQ2hELElBQUksT0FBTyxDQUFDLEtBQUssV0FBVztZQUFFLE9BQU87UUFFckMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLG9CQUFvQixDQUFDLFNBQVMsQ0FDMUIsb0JBQW9CLENBQUMsY0FBYyxFQUFFLENBQ3hDLENBQUM7WUFFRixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRDs7Z0NBRTRCO0lBQ3BCLGVBQWU7UUFDbkIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxRQUFnQixFQUFFLEVBQUU7WUFDOUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDYixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUU7b0JBQ25DLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ2pDO2dCQUVELENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUM7b0JBQ2YsUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLFdBQVcsRUFBRSxJQUFJO29CQUNqQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsZUFBZSxFQUFFLElBQUk7b0JBQ3JCLGlCQUFpQixFQUFFLElBQUk7aUJBQzFCLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O2dDQUU0QjtJQUNwQixVQUFVO1FBQ2QsQ0FBQyxDQUFDLHdCQUF3QixDQUFDO2FBQ3RCLEdBQUcsQ0FBQyxjQUFjLENBQUM7YUFDbkIsRUFBRSxDQUFDLGNBQWMsRUFBRTtZQUNoQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO1FBRVAsQ0FBQyxDQUFDLG1CQUFtQixDQUFDO2FBQ2pCLEdBQUcsQ0FBQyxjQUFjLENBQUM7YUFDbkIsRUFBRSxDQUFDLGNBQWMsRUFBRTtZQUNoQixNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDdEQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQztZQUU1QixPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixPQUFPO2lCQUNGLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQztpQkFDbEMsSUFBSSxDQUFDLHdCQUF3QixDQUFDO2lCQUM5QixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDOytHQXhFUSwyQkFBMkIsa0JBR2hCLFdBQVc7bUdBSHRCLDJCQUEyQjs7NEZBQTNCLDJCQUEyQjtrQkFKdkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OzBCQUlnQixNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGVmZmVjdCwgaW5wdXQsIEluamVjdCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERhdGVwaWNrZXJMb2NhbGVVdGlsIH0gZnJvbSAnLi4vLi4vdXRpbHMvZGF0ZXBpY2tlci1sb2NhbGUudXRpbCc7XG5cbmRlY2xhcmUgdmFyICQ6IGFueTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZW5naW5lTW9kYWxTY3JpcHRzXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRW5naW5lTW9kYWxTY3JpcHRzRGlyZWN0aXZlIHtcbiAgICBhY3RpdmUgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5hY3RpdmUoKSkgcmV0dXJuO1xuICAgICAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgJCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIERhdGVwaWNrZXJMb2NhbGVVdGlsLnNldExvY2FsZShcbiAgICAgICAgICAgICAgICBEYXRlcGlja2VyTG9jYWxlVXRpbC5kZXRlY3RMYW5ndWFnZSgpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmluaXREYXRlcGlja2VycygpO1xuICAgICAgICAgICAgdGhpcy5pbml0R3Vlc3RzKCk7XG4gICAgICAgIH0sIDUwKTtcbiAgICB9XG5cbiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09XG4gICAgICogREFURVBJQ0tFUiAoTU9EQUwpXG4gICAgICogPT09PT09PT09PT09PT09PT09PT09PSAqL1xuICAgIHByaXZhdGUgaW5pdERhdGVwaWNrZXJzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbml0ID0gKHNlbGVjdG9yOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICQoc2VsZWN0b3IpLmVhY2goZnVuY3Rpb24gKHRoaXM6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKCQodGhpcykuaGFzQ2xhc3MoJ2hhc0RhdGVwaWNrZXInKSkge1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmRhdGVwaWNrZXIoJ2Rlc3Ryb3knKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAkKHRoaXMpLmRhdGVwaWNrZXIoe1xuICAgICAgICAgICAgICAgICAgICBzaG93QW5pbTogJ2ZhZGVJbicsXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZU1vbnRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VZZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzaG93T3RoZXJNb250aHM6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdE90aGVyTW9udGhzOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaW5pdCgnI0luLWRhdGUyJyk7XG4gICAgICAgIGluaXQoJyNPdXQtZGF0ZTInKTtcbiAgICB9XG5cbiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09XG4gICAgICogR1VFU1RTIChNT0RBTClcbiAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09ICovXG4gICAgcHJpdmF0ZSBpbml0R3Vlc3RzKCk6IHZvaWQge1xuICAgICAgICAkKCcuanMtcGVyc29uYXMtc3ViZmllbGRzJylcbiAgICAgICAgICAgIC5vZmYoJ2NsaWNrLmVuZ2luZScpXG4gICAgICAgICAgICAub24oJ2NsaWNrLmVuZ2luZScsIGZ1bmN0aW9uICh0aGlzOiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICQodGhpcykubmV4dCgnLmpzLWZpZWxkU3ViJykuc2xpZGVUb2dnbGUoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICQoJy5qcy1hcHBseS1ndWVzdHMxJylcbiAgICAgICAgICAgIC5vZmYoJ2NsaWNrLmVuZ2luZScpXG4gICAgICAgICAgICAub24oJ2NsaWNrLmVuZ2luZScsIGZ1bmN0aW9uICh0aGlzOiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXIgPSAkKHRoaXMpLnBhcmVudHMoJy5ib29raW5nX19maWVsZFN1YicpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkdWx0cyA9IHBhcnNlSW50KCQoJyNhZHVsdDEnKS52YWwoKSBhcyBhbnksIDEwKSB8fCAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGtpZHMgPSBwYXJzZUludCgkKCcjY2hpbGQxJykudmFsKCkgYXMgYW55LCAxMCkgfHwgMDtcbiAgICAgICAgICAgICAgICBjb25zdCB0b3RhbCA9IGFkdWx0cyArIGtpZHM7XG5cbiAgICAgICAgICAgICAgICB3cmFwcGVyLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB3cmFwcGVyXG4gICAgICAgICAgICAgICAgICAgIC5zaWJsaW5ncygnLmpzLXBlcnNvbmFzLXN1YmZpZWxkcycpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKCcuYm9va2luZ19fZmllbGRDb250cm9sJylcbiAgICAgICAgICAgICAgICAgICAgLnRleHQodG90YWwgPD0gOSA/ICcwJyArIHRvdGFsIDogdG90YWwpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|