ng-easycommerce-v18 0.2.10 → 0.2.11

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/README.md CHANGED
@@ -1,4 +1,6 @@
1
- # Version 0.2.6
1
+ # Version 0.2.11
2
+ - se cambia el block-banner-full para personalizar las flechas
3
+ # Version 0.2.10
2
4
  - Se modifica las constantes de apiURL para probar.
3
5
  # Version 0.2.5
4
6
  - Se prueba el apiURL
@@ -22,12 +22,26 @@ export class BlockBannerFullEcComponent extends BlockEcComponent {
22
22
  * Datos del bloque que contiene a los banners
23
23
  */
24
24
  meta;
25
+ // =================== PERSONALIZACIÓN DE NAVEGACIÓN ===================
26
+ /**
27
+ * Personalización de las flechas de navegación
28
+ * Por defecto usa símbolos de texto, pero se pueden especificar imágenes
29
+ */
30
+ prevArrowImage; // undefined = usa símbolo de texto
31
+ nextArrowImage; // undefined = usa símbolo de texto
32
+ prevArrowText = '<';
33
+ nextArrowText = '>';
34
+ /**
35
+ * Opción para habilitar/deshabilitar la navegación personalizada
36
+ */
37
+ enableCustomNavigation = true;
38
+ // ====================================================================
25
39
  /**
26
40
  * Servicio para Analytics
27
41
  */
28
42
  analyticsService = inject(AnalyticsService);
29
43
  /**
30
- * Signal utlizado para guarda el contenedor del carrusel
44
+ * Signal utilizado para guardar el contenedor del carrusel
31
45
  */
32
46
  swiperElement = signal(null);
33
47
  /**
@@ -36,19 +50,21 @@ export class BlockBannerFullEcComponent extends BlockEcComponent {
36
50
  * @returns
37
51
  */
38
52
  getImage = (banner) => this.getBannerImage(banner);
53
+ document;
54
+ platformId = inject(PLATFORM_ID);
39
55
  /**
40
56
  * Se mappea los banners para sumarle el objeto de translations y que
41
57
  * sean mas amigables para su uso.
42
58
  */
43
59
  ngOnInit() {
44
- this.banners = this.banners.map((banner) => { return { ...banner, ...banner.translations[this.apiConsts.LOCALE] }; });
60
+ this.banners = this.banners.map((banner) => {
61
+ return { ...banner, ...banner.translations[this.apiConsts.LOCALE] };
62
+ });
45
63
  }
46
- document;
47
- platformId = inject(PLATFORM_ID);
48
64
  /**
49
- * Ejecuta el método `afterNextRender`para cargar las configuraciones necesarias
50
- * para el carrusel del banners. Esto debe ser asi debido a que ya debe estar presente
51
- * en el Dom el element `<swiper-container>` para poder configurarlo.
65
+ * Ejecuta el método `afterNextRender` para cargar las configuraciones necesarias
66
+ * para el carrusel de banners. Esto debe ser así debido a que ya debe estar presente
67
+ * en el DOM el elemento `<swiper-container>` para poder configurarlo.
52
68
  */
53
69
  constructor() {
54
70
  super();
@@ -56,21 +72,130 @@ export class BlockBannerFullEcComponent extends BlockEcComponent {
56
72
  this.document = document;
57
73
  }
58
74
  afterNextRender(() => {
59
- const swiperElemConstructor = this.document?.querySelector('#' + this.meta?.code);
75
+ this.initializeSwiperWithNavigation();
76
+ });
77
+ }
78
+ /**
79
+ * Inicializa el Swiper con navegación personalizada
80
+ */
81
+ initializeSwiperWithNavigation() {
82
+ const swiperElemConstructor = this.document?.querySelector('#' + this.meta?.code);
83
+ if (swiperElemConstructor) {
84
+ // Configurar el Swiper con las opciones base
60
85
  Object.assign(swiperElemConstructor, this.swiperOptions());
61
86
  this.swiperElement.set(swiperElemConstructor);
62
87
  this.swiperElement()?.initialize();
88
+ // Configurar navegación personalizada si está habilitada
89
+ if (this.enableCustomNavigation) {
90
+ setTimeout(() => {
91
+ this.setupCustomNavigation();
92
+ }, 200);
93
+ }
94
+ }
95
+ }
96
+ /**
97
+ * Configura la navegación personalizada del Swiper para banners
98
+ */
99
+ setupCustomNavigation() {
100
+ const prevButton = this.document?.getElementById(`${this.meta?.code}-prev`);
101
+ const nextButton = this.document?.getElementById(`${this.meta?.code}-next`);
102
+ const swiperElement = this.document?.getElementById(this.meta?.code);
103
+ if (prevButton && nextButton && swiperElement) {
104
+ console.log('Configurando navegación personalizada para banners:', this.meta?.code);
105
+ // Actualizar configuración del Swiper existente
106
+ this.updateSwiperForBanners(swiperElement);
107
+ // Configurar los event listeners para los botones
108
+ this.setupBannerNavigationEventListeners(prevButton, nextButton, swiperElement);
109
+ console.log('Event listeners configurados para navegación de banners');
110
+ }
111
+ else {
112
+ console.log('No se pudieron encontrar los elementos de navegación para banners:', {
113
+ prevButton: !!prevButton,
114
+ nextButton: !!nextButton,
115
+ swiperElement: !!swiperElement
116
+ });
117
+ }
118
+ }
119
+ /**
120
+ * Actualiza la configuración del Swiper específicamente para banners
121
+ */
122
+ updateSwiperForBanners(swiperElement) {
123
+ if (swiperElement.swiper) {
124
+ console.log('Actualizando configuración de Swiper para banners');
125
+ // Configuración específica para banners
126
+ swiperElement.swiper.params.slidesPerGroup = 1;
127
+ swiperElement.swiper.allowSlideNext = true;
128
+ swiperElement.swiper.allowSlidePrev = true;
129
+ // Actualizar también los breakpoints si existen
130
+ if (swiperElement.swiper.params.breakpoints) {
131
+ Object.keys(swiperElement.swiper.params.breakpoints).forEach(key => {
132
+ swiperElement.swiper.params.breakpoints[key].slidesPerGroup = 1;
133
+ });
134
+ }
135
+ swiperElement.swiper.update();
136
+ }
137
+ }
138
+ /**
139
+ * Configura los event listeners para los botones de navegación de banners
140
+ */
141
+ setupBannerNavigationEventListeners(prevButton, nextButton, swiperElement) {
142
+ // Remover event listeners existentes para evitar duplicados
143
+ const prevClone = prevButton.cloneNode(true);
144
+ const nextClone = nextButton.cloneNode(true);
145
+ prevButton.parentNode?.replaceChild(prevClone, prevButton);
146
+ nextButton.parentNode?.replaceChild(nextClone, nextButton);
147
+ // Agregar nuevos event listeners
148
+ prevClone.addEventListener('click', (e) => {
149
+ e.preventDefault();
150
+ e.stopPropagation();
151
+ console.log('Click en botón anterior (banners)');
152
+ if (swiperElement.swiper) {
153
+ swiperElement.swiper.slidePrev();
154
+ }
155
+ });
156
+ nextClone.addEventListener('click', (e) => {
157
+ e.preventDefault();
158
+ e.stopPropagation();
159
+ console.log('Click en botón siguiente (banners)');
160
+ if (swiperElement.swiper) {
161
+ swiperElement.swiper.slideNext();
162
+ }
63
163
  });
64
164
  }
65
165
  /**
66
- * Aplica el evento `select_promotion` junto con el banner que interactua.
166
+ * Aplica el evento `select_promotion` junto con el banner que interactúa.
67
167
  * @param banner
68
168
  */
69
169
  selectPromotion(banner) {
70
170
  this.analyticsService.callEvent('select_promotion', banner);
71
171
  }
172
+ /**
173
+ * Obtiene la configuración específica del Swiper para banners
174
+ * Sobrescribe la configuración base si es necesario
175
+ */
176
+ getBannerSwiperConfiguration() {
177
+ return {
178
+ slidesPerView: 1,
179
+ spaceBetween: 0,
180
+ slidesPerGroup: 1,
181
+ navigation: false, // Deshabilitamos la navegación por defecto
182
+ pagination: {
183
+ el: '.swiper-pagination',
184
+ clickable: true,
185
+ },
186
+ loop: true,
187
+ autoplay: {
188
+ delay: 5000,
189
+ disableOnInteraction: false,
190
+ },
191
+ effect: 'fade',
192
+ fadeEffect: {
193
+ crossFade: true
194
+ }
195
+ };
196
+ }
72
197
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockBannerFullEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
73
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlockBannerFullEcComponent, isStandalone: true, selector: "app-block-banner-full-ec", inputs: { banners: "banners", meta: "meta" }, usesInheritance: true, ngImport: i0, template: "@if(banners.length > 0) {\r\n <section [ngClass]=\"trimClassBlock(meta?.code)+' container-fluid px-0'\"\r\n [style.background-color]=\"meta.styles?.backgroundColor\"\r\n [style.background-image]=\"meta.styles?.backgroundImage ? 'url(' + mediaUrl + meta.styles?.backgroundImage +')' : 'inherit'\">\r\n\r\n @if (banners.length == 1) {\r\n <!-- si es formato fijo -->\r\n <div class=\"row justify-content-center\">\r\n @let banner = banners[0];\r\n @if(!banners.styles?.button?.text){\r\n <!-- banner sin boton -->\r\n <a [href]=\"banner.url\" >\r\n <div class=\"item col-12\">\r\n <img class=\"img-fluid\" [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\">\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-' + (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#fff' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n </div>\r\n </div>\r\n </a>\r\n }@else {\r\n <!-- banner fijo con boton -->\r\n <div class=\"item col-12\">\r\n <img class=\"img-fluid\" [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\">\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-' + (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p \r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\r\n @if(banner.styles?.button?.text){\r\n <a href=\"{{banner.url}}\"\r\n [class]=\"'item-button-full btn btn-light '\">\r\n {{banner.styles.button.text}}\r\n </a> \r\n }\r\n \r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }@else {\r\n <!-- si es carrousel -->\r\n <!-- @if(swiperElement() != null){ -->\r\n <swiper-container init=\"false\" [id]=\"meta?.code\">\r\n @for (banner of banners; track $index) {\r\n <swiper-slide>\r\n <div class=\"item\">\r\n @if (!banner.styles?.button?.text) {\r\n <!-- banner sin boton -->\r\n @if(banner.url){\r\n <a [href]=\"banner.url\" class=\"\">\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" class=\"img-fluid w-100\" />\r\n </a>\r\n }@else {\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" class=\"img-fluid w-100\" />\r\n }\r\n }@else {\r\n <!-- banner con boton -->\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" />\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\r\n @if(banner.styles?.button?.text){\r\n <a href=\"{{banner.url}}\" [class]=\"'item-button-full btn btn-light'\">\r\n {{banner.styles.button.text}}\r\n </a>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </swiper-slide>\r\n }\r\n </swiper-container>\r\n <!-- } -->\r\n \r\n }\r\n </section>\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
198
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlockBannerFullEcComponent, isStandalone: true, selector: "app-block-banner-full-ec", inputs: { banners: "banners", meta: "meta", prevArrowImage: "prevArrowImage", nextArrowImage: "nextArrowImage", prevArrowText: "prevArrowText", nextArrowText: "nextArrowText", enableCustomNavigation: "enableCustomNavigation" }, usesInheritance: true, ngImport: i0, template: "@if(banners.length > 0) {\r\n <section [ngClass]=\"trimClassBlock(meta?.code)+' container-fluid px-0'\"\r\n [style.background-color]=\"meta.styles?.backgroundColor\"\r\n [style.background-image]=\"meta.styles?.backgroundImage ? 'url(' + mediaUrl + meta.styles?.backgroundImage +')' : 'inherit'\">\r\n\r\n @if (banners.length == 1) {\r\n <!-- si es formato fijo -->\r\n <div class=\"row justify-content-center\">\r\n @let banner = banners[0];\r\n @if(!banners.styles?.button?.text){\r\n <!-- banner sin boton -->\r\n <a [href]=\"banner.url\" >\r\n <div class=\"item col-12\">\r\n <img class=\"img-fluid\" [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\">\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-' + (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#fff' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n </div>\r\n </div>\r\n </a>\r\n }@else {\r\n <!-- banner fijo con boton -->\r\n <div class=\"item col-12\">\r\n <img class=\"img-fluid\" [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\">\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-' + (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p \r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\r\n @if(banner.styles?.button?.text){\r\n <a href=\"{{banner.url}}\"\r\n [class]=\"'item-button-full btn btn-light '\">\r\n {{banner.styles.button.text}}\r\n </a> \r\n }\r\n \r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }@else {\r\n <!-- si es carrousel -->\r\n <!-- @if(swiperElement() != null){ -->\r\n <swiper-container init=\"false\" [id]=\"meta?.code\">\r\n @for (banner of banners; track $index) {\r\n <swiper-slide>\r\n <div class=\"item\">\r\n @if (!banner.styles?.button?.text) {\r\n <!-- banner sin boton -->\r\n @if(banner.url){\r\n <a [href]=\"banner.url\" class=\"\">\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" class=\"img-fluid w-100\" />\r\n </a>\r\n }@else {\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" class=\"img-fluid w-100\" />\r\n }\r\n }@else {\r\n <!-- banner con boton -->\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" />\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\r\n @if(banner.styles?.button?.text){\r\n <a href=\"{{banner.url}}\" [class]=\"'item-button-full btn btn-light'\">\r\n {{banner.styles.button.text}}\r\n </a>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </swiper-slide>\r\n }\r\n </swiper-container>\r\n <!-- } -->\r\n \r\n }\r\n </section>\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
74
199
  }
75
200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockBannerFullEcComponent, decorators: [{
76
201
  type: Component,
@@ -83,5 +208,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
83
208
  }], meta: [{
84
209
  type: Input,
85
210
  args: [{ required: true }]
211
+ }], prevArrowImage: [{
212
+ type: Input
213
+ }], nextArrowImage: [{
214
+ type: Input
215
+ }], prevArrowText: [{
216
+ type: Input
217
+ }], nextArrowText: [{
218
+ type: Input
219
+ }], enableCustomNavigation: [{
220
+ type: Input
86
221
  }] } });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stYmFubmVyLWZ1bGwtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvYmxvY2tzLWVjL2Jsb2NrLWJhbm5lci1mdWxsLWVjL2Jsb2NrLWJhbm5lci1mdWxsLWVjLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2Jsb2Nrcy1lYy9ibG9jay1iYW5uZXItZnVsbC1lYy9ibG9jay1iYW5uZXItZnVsbC1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFlLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBbUIsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFFeEQsUUFBUSxFQUFFLENBQUM7QUFDWDs7Ozs7R0FLRztBQVNILE1BQU0sT0FBTywwQkFBMkIsU0FBUSxnQkFBZ0I7SUFDL0Q7O09BRUc7SUFHQSxPQUFPLENBQU07SUFDaEI7O09BRUc7SUFDd0IsSUFBSSxDQUFNO0lBQ3JDOztPQUVHO0lBQ0ssZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDbkQ7O09BRUc7SUFDSCxhQUFhLEdBQUcsTUFBTSxDQUF5QixJQUFJLENBQUMsQ0FBQTtJQUNwRDs7OztPQUlHO0lBQ2EsUUFBUSxHQUFHLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hFOzs7T0FHRztJQUNILFFBQVE7UUFDUCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFILENBQUM7SUFDTyxRQUFRLENBQVk7SUFDcEIsVUFBVSxHQUFRLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUU3Qzs7OztPQUlHO0lBQ0g7UUFDQyxLQUFLLEVBQUUsQ0FBQTtRQUNQLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDekIsQ0FBQztRQUNELGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUNqRixNQUFNLENBQUMsTUFBTSxDQUFDLHFCQUFzQixFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFBO1lBQzNELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLHFCQUF3QyxDQUFDLENBQUE7WUFDaEUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFBO0lBQ0gsQ0FBQztJQUNEOzs7T0FHRztJQUNILGVBQWUsQ0FBQyxNQUFXO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDNUQsQ0FBQzt3R0ExRFcsMEJBQTBCOzRGQUExQiwwQkFBMEIseUpDdkJ2QyxzM05BOEdDLHlERDVGVSxZQUFZOzs0RkFLViwwQkFBMEI7a0JBUnRDLFNBQVM7K0JBQ0MsMEJBQTBCLGNBQ3hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsV0FDMUIsQ0FBQyxzQkFBc0IsQ0FBQzt3REFVOUIsT0FBTztzQkFGVCxLQUFLO3VCQUFDO3dCQUNOLFFBQVEsRUFBRSxJQUFJO3FCQUNkO2dCQUkwQixJQUFJO3NCQUE5QixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFmdGVyTmV4dFJlbmRlciwgYWZ0ZXJSZW5kZXIsIENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBQTEFURk9STV9JRCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElCbG9jayB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBCbG9ja0VjQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYWJzdHJhY3Rpb25zLWNvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyByZWdpc3RlciwgU3dpcGVyQ29udGFpbmVyIH0gZnJvbSAnc3dpcGVyL2VsZW1lbnQvYnVuZGxlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xyXG5cclxucmVnaXN0ZXIoKTtcclxuLyoqXHJcbiAqIENvbXBvbmVudGUgcGFyYSBtYW5lamFyIGxvcyBiYW5uZXJzIGRlIHRpcG8gZnVsbFxyXG4gKiBAZXh0ZW5kcyB7QmxvY2tFY0NvbXBvbmVudH1cclxuICogQGltcGxlbWVudHMge09uSW5pdH1cclxuICogQGNsYXNzIEJsb2NrQmFubmVyRnVsbEVjQ29tcG9uZW50XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1ibG9jay1iYW5uZXItZnVsbC1lYycsXHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJMaW5rXSxcclxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL2Jsb2NrLWJhbm5lci1mdWxsLWVjLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybDogJy4vYmxvY2stYmFubmVyLWZ1bGwtZWMuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCbG9ja0Jhbm5lckZ1bGxFY0NvbXBvbmVudCBleHRlbmRzIEJsb2NrRWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cdC8qKlxyXG5cdCAqIEJhbm5lcnMgdGlwbyBmdWxsXHJcblx0ICovXHJcblx0QElucHV0KHtcclxuXHRcdHJlcXVpcmVkOiB0cnVlXHJcblx0fSkgYmFubmVyczogYW55O1xyXG5cdC8qKlxyXG5cdCAqIERhdG9zIGRlbCBibG9xdWUgcXVlIGNvbnRpZW5lIGEgbG9zIGJhbm5lcnNcclxuXHQgKi9cclxuXHRASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBtZXRhOiBhbnk7XHJcblx0LyoqXHJcblx0ICogU2VydmljaW8gcGFyYSBBbmFseXRpY3NcclxuXHQgKi9cclxuXHRwcml2YXRlIGFuYWx5dGljc1NlcnZpY2UgPSBpbmplY3QoQW5hbHl0aWNzU2VydmljZSlcclxuXHQvKipcclxuXHQgKiBTaWduYWwgdXRsaXphZG8gcGFyYSBndWFyZGEgZWwgY29udGVuZWRvciBkZWwgY2FycnVzZWxcclxuXHQgKi9cclxuXHRzd2lwZXJFbGVtZW50ID0gc2lnbmFsPFN3aXBlckNvbnRhaW5lciB8IG51bGw+KG51bGwpXHJcblx0LyoqXHJcblx0ICogTcOpdG9kbyBvcmlnaW5hbCBlbjoge0BsaW5rIEJsb2NrRWNDb21wb25lbnR9XHJcblx0ICogQHBhcmFtIGJhbm5lciBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgb3ZlcnJpZGUgZ2V0SW1hZ2UgPSAoYmFubmVyOiBhbnkpID0+IHRoaXMuZ2V0QmFubmVySW1hZ2UoYmFubmVyKTtcclxuXHQvKipcclxuXHQgKiBTZSBtYXBwZWEgbG9zIGJhbm5lcnMgcGFyYSBzdW1hcmxlIGVsIG9iamV0byBkZSB0cmFuc2xhdGlvbnMgeSBxdWVcclxuXHQgKiBzZWFuIG1hcyBhbWlnYWJsZXMgcGFyYSBzdSB1c28uXHJcblx0ICovXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmJhbm5lcnMgPSB0aGlzLmJhbm5lcnMubWFwKChiYW5uZXI6IGFueSkgPT4geyByZXR1cm4geyAuLi5iYW5uZXIsIC4uLmJhbm5lci50cmFuc2xhdGlvbnNbdGhpcy5hcGlDb25zdHMuTE9DQUxFXSB9IH0pXHJcblx0fVxyXG5cdHByaXZhdGUgZG9jdW1lbnQ/OiBEb2N1bWVudDtcclxuXHRwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSA9IGluamVjdChQTEFURk9STV9JRClcclxuXHJcblx0LyoqXHJcblx0ICogRWplY3V0YSBlbCBtw6l0b2RvIGBhZnRlck5leHRSZW5kZXJgcGFyYSBjYXJnYXIgbGFzIGNvbmZpZ3VyYWNpb25lcyBuZWNlc2FyaWFzIFxyXG5cdCAqIHBhcmEgZWwgY2FycnVzZWwgZGVsIGJhbm5lcnMuIEVzdG8gZGViZSBzZXIgYXNpIGRlYmlkbyBhIHF1ZSB5YSBkZWJlIGVzdGFyIHByZXNlbnRlXHJcblx0ICogZW4gZWwgRG9tIGVsIGVsZW1lbnQgYDxzd2lwZXItY29udGFpbmVyPmAgcGFyYSBwb2RlciBjb25maWd1cmFybG8uXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0XHRzdXBlcigpXHJcblx0XHRpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG5cdFx0XHR0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnRcclxuXHRcdH1cclxuXHRcdGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XHJcblx0XHRcdGNvbnN0IHN3aXBlckVsZW1Db25zdHJ1Y3RvciA9IHRoaXMuZG9jdW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJyMnICsgdGhpcy5tZXRhPy5jb2RlKVxyXG5cdFx0XHRPYmplY3QuYXNzaWduKHN3aXBlckVsZW1Db25zdHJ1Y3RvciEsIHRoaXMuc3dpcGVyT3B0aW9ucygpKVxyXG5cdFx0XHR0aGlzLnN3aXBlckVsZW1lbnQuc2V0KHN3aXBlckVsZW1Db25zdHJ1Y3RvciBhcyBTd2lwZXJDb250YWluZXIpXHJcblx0XHRcdHRoaXMuc3dpcGVyRWxlbWVudCgpPy5pbml0aWFsaXplKCk7XHJcblx0XHR9KVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBBcGxpY2EgZWwgZXZlbnRvIGBzZWxlY3RfcHJvbW90aW9uYCBqdW50byBjb24gZWwgYmFubmVyIHF1ZSBpbnRlcmFjdHVhLlxyXG5cdCAqIEBwYXJhbSBiYW5uZXIgXHJcblx0ICovXHJcblx0c2VsZWN0UHJvbW90aW9uKGJhbm5lcjogYW55KTogdm9pZCB7XHJcblx0XHR0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdzZWxlY3RfcHJvbW90aW9uJywgYmFubmVyKVxyXG5cdH1cclxufVxyXG4iLCJAaWYoYmFubmVycy5sZW5ndGggPiAwKSB7XHJcbiAgICA8c2VjdGlvbiBbbmdDbGFzc109XCJ0cmltQ2xhc3NCbG9jayhtZXRhPy5jb2RlKSsnIGNvbnRhaW5lci1mbHVpZCBweC0wJ1wiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwibWV0YS5zdHlsZXM/LmJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwibWV0YS5zdHlsZXM/LmJhY2tncm91bmRJbWFnZSA/ICd1cmwoJyArIG1lZGlhVXJsICsgbWV0YS5zdHlsZXM/LmJhY2tncm91bmRJbWFnZSArJyknIDogJ2luaGVyaXQnXCI+XHJcblxyXG4gICAgICAgIEBpZiAoYmFubmVycy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICA8IS0tIHNpIGVzIGZvcm1hdG8gZmlqbyAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICBAbGV0IGJhbm5lciA9IGJhbm5lcnNbMF07XHJcbiAgICAgICAgICAgICAgICBAaWYoIWJhbm5lcnMuc3R5bGVzPy5idXR0b24/LnRleHQpe1xyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gYmFubmVyIHNpbiBib3RvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJiYW5uZXIudXJsXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbSBjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctZmx1aWRcIiBbc3JjXT1cIm1lZGlhQmFubmVyVXJsICsgZ2V0SW1hZ2UoYmFubmVyKVwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHctMTAwIGgtMTAwIHN0YXJ0LTAgdG9wLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoYmFubmVyLnRpdGxlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIFtjbGFzc109XCInaXRlbS10aXRsZS1mdWxsIHB4LTIgaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nICsgKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5wb3NpdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnI2ZmZicgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Jhbm5lci50aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihiYW5uZXIuc3VidGl0bGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnIzAwMCcgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidweC00IGl0ZW0tc3VidGl0bGUtZnVsbCBpdGVtLXBvc2l0aW9uLXZlcnRpY2FsLScgKyAoYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LnBvc2l0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIuc3VidGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBiYW5uZXIgZmlqbyBjb24gYm90b24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0gY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctZmx1aWRcIiBbc3JjXT1cIm1lZGlhQmFubmVyVXJsICsgZ2V0SW1hZ2UoYmFubmVyKVwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgaC0xMDAgc3RhcnQtMCB0b3AtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGJhbm5lci50aXRsZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIFtjbGFzc109XCInaXRlbS10aXRsZS1mdWxsIHB4LTIgaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nICsgKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5wb3NpdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCIoYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LmNvbG9yKSA/IGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvciA6ICcjMDAwJyBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIudGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoYmFubmVyLnN1YnRpdGxlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnIzAwMCcgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3B4LTQgaXRlbS1zdWJ0aXRsZS1mdWxsIGl0ZW0tcG9zaXRpb24tdmVydGljYWwtJyArIChiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8ucG9zaXRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YmFubmVyLnN1YnRpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCInaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nICsgKGJhbm5lci5zdHlsZXM/LmJ1dHRvbj8ucG9zaXRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGJhbm5lci5zdHlsZXM/LmJ1dHRvbj8udGV4dCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7YmFubmVyLnVybH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidpdGVtLWJ1dHRvbi1mdWxsIGJ0biBidG4tbGlnaHQgJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIuc3R5bGVzLmJ1dHRvbi50ZXh0fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgIDwhLS0gc2kgZXMgY2Fycm91c2VsIC0tPlxyXG4gICAgICAgICAgICA8IS0tICBAaWYoc3dpcGVyRWxlbWVudCgpICE9IG51bGwpeyAtLT5cclxuICAgICAgICAgICAgICAgIDxzd2lwZXItY29udGFpbmVyIGluaXQ9XCJmYWxzZVwiIFtpZF09XCJtZXRhPy5jb2RlXCI+XHJcbiAgICAgICAgICAgICAgICBAZm9yIChiYW5uZXIgb2YgYmFubmVyczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHN3aXBlci1zbGlkZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWJhbm5lci5zdHlsZXM/LmJ1dHRvbj8udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gYmFubmVyIHNpbiBib3RvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoYmFubmVyLnVybCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cImJhbm5lci51cmxcIiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIm1lZGlhQmFubmVyVXJsICsgZ2V0SW1hZ2UoYmFubmVyKVwiIGFsdD1cIlwiIGNsYXNzPVwiaW1nLWZsdWlkIHctMTAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJtZWRpYUJhbm5lclVybCArIGdldEltYWdlKGJhbm5lcilcIiBhbHQ9XCJcIiAgY2xhc3M9XCJpbWctZmx1aWQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBiYW5uZXIgY29uIGJvdG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJtZWRpYUJhbm5lclVybCArIGdldEltYWdlKGJhbm5lcilcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB3LTEwMCBoLTEwMCBzdGFydC0wIHRvcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihiYW5uZXIudGl0bGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIFtjbGFzc109XCInaXRlbS10aXRsZS1mdWxsIHB4LTIgaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nKyAoYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LnBvc2l0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cIihiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IpID8gYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LmNvbG9yIDogJyMwMDAnIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YmFubmVyLnRpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGJhbm5lci5zdWJ0aXRsZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnIzAwMCcgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3B4LTQgaXRlbS1zdWJ0aXRsZS1mdWxsIGl0ZW0tcG9zaXRpb24tdmVydGljYWwtJyArIChiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8ucG9zaXRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIuc3VidGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIidpdGVtLXBvc2l0aW9uLXZlcnRpY2FsLScgKyAoYmFubmVyLnN0eWxlcz8uYnV0dG9uPy5wb3NpdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihiYW5uZXIuc3R5bGVzPy5idXR0b24/LnRleHQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7e2Jhbm5lci51cmx9fVwiIFtjbGFzc109XCInaXRlbS1idXR0b24tZnVsbCBidG4gYnRuLWxpZ2h0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Jhbm5lci5zdHlsZXMuYnV0dG9uLnRleHR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3dpcGVyLXNsaWRlPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3N3aXBlci1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwhLS0gIH0gLS0+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIDwvc2VjdGlvbj5cclxufSJdfQ==
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stYmFubmVyLWZ1bGwtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvYmxvY2tzLWVjL2Jsb2NrLWJhbm5lci1mdWxsLWVjL2Jsb2NrLWJhbm5lci1mdWxsLWVjLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2Jsb2Nrcy1lYy9ibG9jay1iYW5uZXItZnVsbC1lYy9ibG9jay1iYW5uZXItZnVsbC1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFlLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBbUIsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFFeEQsUUFBUSxFQUFFLENBQUM7QUFFWDs7Ozs7R0FLRztBQVNILE1BQU0sT0FBTywwQkFBMkIsU0FBUSxnQkFBZ0I7SUFDNUQ7O09BRUc7SUFHQSxPQUFPLENBQU07SUFFaEI7O09BRUc7SUFDd0IsSUFBSSxDQUFNO0lBRXJDLHdFQUF3RTtJQUN4RTs7O09BR0c7SUFDTSxjQUFjLENBQVUsQ0FBQyxtQ0FBbUM7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dGVyTmV4dFJlbmRlciwgYWZ0ZXJSZW5kZXIsIENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBQTEFURk9STV9JRCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElCbG9jayB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBCbG9ja0VjQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYWJzdHJhY3Rpb25zLWNvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyByZWdpc3RlciwgU3dpcGVyQ29udGFpbmVyIH0gZnJvbSAnc3dpcGVyL2VsZW1lbnQvYnVuZGxlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xyXG5cclxucmVnaXN0ZXIoKTtcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnRlIHBhcmEgbWFuZWphciBsb3MgYmFubmVycyBkZSB0aXBvIGZ1bGxcclxuICogQGV4dGVuZHMge0Jsb2NrRWNDb21wb25lbnR9XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqIEBjbGFzcyBCbG9ja0Jhbm5lckZ1bGxFY0NvbXBvbmVudFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1ibG9jay1iYW5uZXItZnVsbC1lYycsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTGlua10sXHJcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmxvY2stYmFubmVyLWZ1bGwtZWMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmw6ICcuL2Jsb2NrLWJhbm5lci1mdWxsLWVjLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQmxvY2tCYW5uZXJGdWxsRWNDb21wb25lbnQgZXh0ZW5kcyBCbG9ja0VjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIC8qKlxyXG4gICAgICogQmFubmVycyB0aXBvIGZ1bGxcclxuICAgICAqL1xyXG4gICAgQElucHV0KHtcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSkgYmFubmVyczogYW55O1xyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIERhdG9zIGRlbCBibG9xdWUgcXVlIGNvbnRpZW5lIGEgbG9zIGJhbm5lcnNcclxuICAgICAqL1xyXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgbWV0YTogYW55O1xyXG5cclxuICAgIC8vID09PT09PT09PT09PT09PT09PT0gUEVSU09OQUxJWkFDScOTTiBERSBOQVZFR0FDScOTTiA9PT09PT09PT09PT09PT09PT09XHJcbiAgICAvKipcclxuICAgICAqIFBlcnNvbmFsaXphY2nDs24gZGUgbGFzIGZsZWNoYXMgZGUgbmF2ZWdhY2nDs25cclxuICAgICAqIFBvciBkZWZlY3RvIHVzYSBzw61tYm9sb3MgZGUgdGV4dG8sIHBlcm8gc2UgcHVlZGVuIGVzcGVjaWZpY2FyIGltw6FnZW5lc1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwcmV2QXJyb3dJbWFnZT86IHN0cmluZzsgLy8gdW5kZWZpbmVkID0gdXNhIHPDrW1ib2xvIGRlIHRleHRvXHJcbiAgICBASW5wdXQoKSBuZXh0QXJyb3dJbWFnZT86IHN0cmluZzsgLy8gdW5kZWZpbmVkID0gdXNhIHPDrW1ib2xvIGRlIHRleHRvXHJcbiAgICBASW5wdXQoKSBwcmV2QXJyb3dUZXh0OiBzdHJpbmcgPSAnPCc7XHJcbiAgICBASW5wdXQoKSBuZXh0QXJyb3dUZXh0OiBzdHJpbmcgPSAnPic7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPcGNpw7NuIHBhcmEgaGFiaWxpdGFyL2Rlc2hhYmlsaXRhciBsYSBuYXZlZ2FjacOzbiBwZXJzb25hbGl6YWRhXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGVuYWJsZUN1c3RvbU5hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXJ2aWNpbyBwYXJhIEFuYWx5dGljc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGFuYWx5dGljc1NlcnZpY2UgPSBpbmplY3QoQW5hbHl0aWNzU2VydmljZSk7XHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogU2lnbmFsIHV0aWxpemFkbyBwYXJhIGd1YXJkYXIgZWwgY29udGVuZWRvciBkZWwgY2FycnVzZWxcclxuICAgICAqL1xyXG4gICAgc3dpcGVyRWxlbWVudCA9IHNpZ25hbDxTd2lwZXJDb250YWluZXIgfCBudWxsPihudWxsKTtcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBNw6l0b2RvIG9yaWdpbmFsIGVuOiB7QGxpbmsgQmxvY2tFY0NvbXBvbmVudH1cclxuICAgICAqIEBwYXJhbSBiYW5uZXIgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIG92ZXJyaWRlIGdldEltYWdlID0gKGJhbm5lcjogYW55KSA9PiB0aGlzLmdldEJhbm5lckltYWdlKGJhbm5lcik7XHJcbiAgICBcclxuICAgIHByaXZhdGUgZG9jdW1lbnQ/OiBEb2N1bWVudDtcclxuICAgIHByaXZhdGUgcGxhdGZvcm1JZDogYW55ID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlIG1hcHBlYSBsb3MgYmFubmVycyBwYXJhIHN1bWFybGUgZWwgb2JqZXRvIGRlIHRyYW5zbGF0aW9ucyB5IHF1ZVxyXG4gICAgICogc2VhbiBtYXMgYW1pZ2FibGVzIHBhcmEgc3UgdXNvLlxyXG4gICAgICovXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmJhbm5lcnMgPSB0aGlzLmJhbm5lcnMubWFwKChiYW5uZXI6IGFueSkgPT4geyBcclxuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYmFubmVyLCAuLi5iYW5uZXIudHJhbnNsYXRpb25zW3RoaXMuYXBpQ29uc3RzLkxPQ0FMRV0gfSBcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVqZWN1dGEgZWwgbcOpdG9kbyBgYWZ0ZXJOZXh0UmVuZGVyYCBwYXJhIGNhcmdhciBsYXMgY29uZmlndXJhY2lvbmVzIG5lY2VzYXJpYXMgXHJcbiAgICAgKiBwYXJhIGVsIGNhcnJ1c2VsIGRlIGJhbm5lcnMuIEVzdG8gZGViZSBzZXIgYXPDrSBkZWJpZG8gYSBxdWUgeWEgZGViZSBlc3RhciBwcmVzZW50ZVxyXG4gICAgICogZW4gZWwgRE9NIGVsIGVsZW1lbnRvIGA8c3dpcGVyLWNvbnRhaW5lcj5gIHBhcmEgcG9kZXIgY29uZmlndXJhcmxvLlxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQgPSBkb2N1bWVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplU3dpcGVyV2l0aE5hdmlnYXRpb24oKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaWNpYWxpemEgZWwgU3dpcGVyIGNvbiBuYXZlZ2FjacOzbiBwZXJzb25hbGl6YWRhXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZVN3aXBlcldpdGhOYXZpZ2F0aW9uKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHN3aXBlckVsZW1Db25zdHJ1Y3RvciA9IHRoaXMuZG9jdW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJyMnICsgdGhpcy5tZXRhPy5jb2RlKTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoc3dpcGVyRWxlbUNvbnN0cnVjdG9yKSB7XHJcbiAgICAgICAgICAgIC8vIENvbmZpZ3VyYXIgZWwgU3dpcGVyIGNvbiBsYXMgb3BjaW9uZXMgYmFzZVxyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHN3aXBlckVsZW1Db25zdHJ1Y3RvciwgdGhpcy5zd2lwZXJPcHRpb25zKCkpO1xyXG4gICAgICAgICAgICB0aGlzLnN3aXBlckVsZW1lbnQuc2V0KHN3aXBlckVsZW1Db25zdHJ1Y3RvciBhcyBTd2lwZXJDb250YWluZXIpO1xyXG4gICAgICAgICAgICB0aGlzLnN3aXBlckVsZW1lbnQoKT8uaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgICAgICAgICAgLy8gQ29uZmlndXJhciBuYXZlZ2FjacOzbiBwZXJzb25hbGl6YWRhIHNpIGVzdMOhIGhhYmlsaXRhZGFcclxuICAgICAgICAgICAgaWYgKHRoaXMuZW5hYmxlQ3VzdG9tTmF2aWdhdGlvbikge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR1cEN1c3RvbU5hdmlnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25maWd1cmEgbGEgbmF2ZWdhY2nDs24gcGVyc29uYWxpemFkYSBkZWwgU3dpcGVyIHBhcmEgYmFubmVyc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHNldHVwQ3VzdG9tTmF2aWdhdGlvbigpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBwcmV2QnV0dG9uID0gdGhpcy5kb2N1bWVudD8uZ2V0RWxlbWVudEJ5SWQoYCR7dGhpcy5tZXRhPy5jb2RlfS1wcmV2YCk7XHJcbiAgICAgICAgY29uc3QgbmV4dEJ1dHRvbiA9IHRoaXMuZG9jdW1lbnQ/LmdldEVsZW1lbnRCeUlkKGAke3RoaXMubWV0YT8uY29kZX0tbmV4dGApO1xyXG4gICAgICAgIGNvbnN0IHN3aXBlckVsZW1lbnQgPSB0aGlzLmRvY3VtZW50Py5nZXRFbGVtZW50QnlJZCh0aGlzLm1ldGE/LmNvZGUpIGFzIGFueTtcclxuXHJcbiAgICAgICAgaWYgKHByZXZCdXR0b24gJiYgbmV4dEJ1dHRvbiAmJiBzd2lwZXJFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDb25maWd1cmFuZG8gbmF2ZWdhY2nDs24gcGVyc29uYWxpemFkYSBwYXJhIGJhbm5lcnM6JywgdGhpcy5tZXRhPy5jb2RlKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIEFjdHVhbGl6YXIgY29uZmlndXJhY2nDs24gZGVsIFN3aXBlciBleGlzdGVudGVcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVTd2lwZXJGb3JCYW5uZXJzKHN3aXBlckVsZW1lbnQpO1xyXG5cclxuICAgICAgICAgICAgLy8gQ29uZmlndXJhciBsb3MgZXZlbnQgbGlzdGVuZXJzIHBhcmEgbG9zIGJvdG9uZXNcclxuICAgICAgICAgICAgdGhpcy5zZXR1cEJhbm5lck5hdmlnYXRpb25FdmVudExpc3RlbmVycyhwcmV2QnV0dG9uLCBuZXh0QnV0dG9uLCBzd2lwZXJFbGVtZW50KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdFdmVudCBsaXN0ZW5lcnMgY29uZmlndXJhZG9zIHBhcmEgbmF2ZWdhY2nDs24gZGUgYmFubmVycycpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdObyBzZSBwdWRpZXJvbiBlbmNvbnRyYXIgbG9zIGVsZW1lbnRvcyBkZSBuYXZlZ2FjacOzbiBwYXJhIGJhbm5lcnM6Jywge1xyXG4gICAgICAgICAgICAgICAgcHJldkJ1dHRvbjogISFwcmV2QnV0dG9uLFxyXG4gICAgICAgICAgICAgICAgbmV4dEJ1dHRvbjogISFuZXh0QnV0dG9uLFxyXG4gICAgICAgICAgICAgICAgc3dpcGVyRWxlbWVudDogISFzd2lwZXJFbGVtZW50XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFjdHVhbGl6YSBsYSBjb25maWd1cmFjacOzbiBkZWwgU3dpcGVyIGVzcGVjw61maWNhbWVudGUgcGFyYSBiYW5uZXJzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlU3dpcGVyRm9yQmFubmVycyhzd2lwZXJFbGVtZW50OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoc3dpcGVyRWxlbWVudC5zd2lwZXIpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0FjdHVhbGl6YW5kbyBjb25maWd1cmFjacOzbiBkZSBTd2lwZXIgcGFyYSBiYW5uZXJzJyk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyBDb25maWd1cmFjacOzbiBlc3BlY8OtZmljYSBwYXJhIGJhbm5lcnNcclxuICAgICAgICAgICAgc3dpcGVyRWxlbWVudC5zd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwID0gMTtcclxuICAgICAgICAgICAgc3dpcGVyRWxlbWVudC5zd2lwZXIuYWxsb3dTbGlkZU5leHQgPSB0cnVlO1xyXG4gICAgICAgICAgICBzd2lwZXJFbGVtZW50LnN3aXBlci5hbGxvd1NsaWRlUHJldiA9IHRydWU7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyBBY3R1YWxpemFyIHRhbWJpw6luIGxvcyBicmVha3BvaW50cyBzaSBleGlzdGVuXHJcbiAgICAgICAgICAgIGlmIChzd2lwZXJFbGVtZW50LnN3aXBlci5wYXJhbXMuYnJlYWtwb2ludHMpIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHN3aXBlckVsZW1lbnQuc3dpcGVyLnBhcmFtcy5icmVha3BvaW50cykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHN3aXBlckVsZW1lbnQuc3dpcGVyLnBhcmFtcy5icmVha3BvaW50c1trZXldLnNsaWRlc1Blckdyb3VwID0gMTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBzd2lwZXJFbGVtZW50LnN3aXBlci51cGRhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25maWd1cmEgbG9zIGV2ZW50IGxpc3RlbmVycyBwYXJhIGxvcyBib3RvbmVzIGRlIG5hdmVnYWNpw7NuIGRlIGJhbm5lcnNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXR1cEJhbm5lck5hdmlnYXRpb25FdmVudExpc3RlbmVycyhwcmV2QnV0dG9uOiBFbGVtZW50LCBuZXh0QnV0dG9uOiBFbGVtZW50LCBzd2lwZXJFbGVtZW50OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICAvLyBSZW1vdmVyIGV2ZW50IGxpc3RlbmVycyBleGlzdGVudGVzIHBhcmEgZXZpdGFyIGR1cGxpY2Fkb3NcclxuICAgICAgICBjb25zdCBwcmV2Q2xvbmUgPSBwcmV2QnV0dG9uLmNsb25lTm9kZSh0cnVlKTtcclxuICAgICAgICBjb25zdCBuZXh0Q2xvbmUgPSBuZXh0QnV0dG9uLmNsb25lTm9kZSh0cnVlKTtcclxuICAgICAgICBwcmV2QnV0dG9uLnBhcmVudE5vZGU/LnJlcGxhY2VDaGlsZChwcmV2Q2xvbmUsIHByZXZCdXR0b24pO1xyXG4gICAgICAgIG5leHRCdXR0b24ucGFyZW50Tm9kZT8ucmVwbGFjZUNoaWxkKG5leHRDbG9uZSwgbmV4dEJ1dHRvbik7XHJcblxyXG4gICAgICAgIC8vIEFncmVnYXIgbnVldm9zIGV2ZW50IGxpc3RlbmVyc1xyXG4gICAgICAgIHByZXZDbG9uZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0NsaWNrIGVuIGJvdMOzbiBhbnRlcmlvciAoYmFubmVycyknKTtcclxuICAgICAgICAgICAgaWYgKHN3aXBlckVsZW1lbnQuc3dpcGVyKSB7XHJcbiAgICAgICAgICAgICAgICBzd2lwZXJFbGVtZW50LnN3aXBlci5zbGlkZVByZXYoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBuZXh0Q2xvbmUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDbGljayBlbiBib3TDs24gc2lndWllbnRlIChiYW5uZXJzKScpO1xyXG4gICAgICAgICAgICBpZiAoc3dpcGVyRWxlbWVudC5zd2lwZXIpIHtcclxuICAgICAgICAgICAgICAgIHN3aXBlckVsZW1lbnQuc3dpcGVyLnNsaWRlTmV4dCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcGxpY2EgZWwgZXZlbnRvIGBzZWxlY3RfcHJvbW90aW9uYCBqdW50byBjb24gZWwgYmFubmVyIHF1ZSBpbnRlcmFjdMO6YS5cclxuICAgICAqIEBwYXJhbSBiYW5uZXIgXHJcbiAgICAgKi9cclxuICAgIHNlbGVjdFByb21vdGlvbihiYW5uZXI6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ3NlbGVjdF9wcm9tb3Rpb24nLCBiYW5uZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT2J0aWVuZSBsYSBjb25maWd1cmFjacOzbiBlc3BlY8OtZmljYSBkZWwgU3dpcGVyIHBhcmEgYmFubmVyc1xyXG4gICAgICogU29icmVzY3JpYmUgbGEgY29uZmlndXJhY2nDs24gYmFzZSBzaSBlcyBuZWNlc2FyaW9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRCYW5uZXJTd2lwZXJDb25maWd1cmF0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDEsXHJcbiAgICAgICAgICAgIHNwYWNlQmV0d2VlbjogMCxcclxuICAgICAgICAgICAgc2xpZGVzUGVyR3JvdXA6IDEsXHJcbiAgICAgICAgICAgIG5hdmlnYXRpb246IGZhbHNlLCAvLyBEZXNoYWJpbGl0YW1vcyBsYSBuYXZlZ2FjacOzbiBwb3IgZGVmZWN0b1xyXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICBlbDogJy5zd2lwZXItcGFnaW5hdGlvbicsXHJcbiAgICAgICAgICAgICAgICBjbGlja2FibGU6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGxvb3A6IHRydWUsXHJcbiAgICAgICAgICAgIGF1dG9wbGF5OiB7XHJcbiAgICAgICAgICAgICAgICBkZWxheTogNTAwMCxcclxuICAgICAgICAgICAgICAgIGRpc2FibGVPbkludGVyYWN0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZWZmZWN0OiAnZmFkZScsXHJcbiAgICAgICAgICAgIGZhZGVFZmZlY3Q6IHtcclxuICAgICAgICAgICAgICAgIGNyb3NzRmFkZTogdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYoYmFubmVycy5sZW5ndGggPiAwKSB7XHJcbiAgICA8c2VjdGlvbiBbbmdDbGFzc109XCJ0cmltQ2xhc3NCbG9jayhtZXRhPy5jb2RlKSsnIGNvbnRhaW5lci1mbHVpZCBweC0wJ1wiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwibWV0YS5zdHlsZXM/LmJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwibWV0YS5zdHlsZXM/LmJhY2tncm91bmRJbWFnZSA/ICd1cmwoJyArIG1lZGlhVXJsICsgbWV0YS5zdHlsZXM/LmJhY2tncm91bmRJbWFnZSArJyknIDogJ2luaGVyaXQnXCI+XHJcblxyXG4gICAgICAgIEBpZiAoYmFubmVycy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICA8IS0tIHNpIGVzIGZvcm1hdG8gZmlqbyAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICBAbGV0IGJhbm5lciA9IGJhbm5lcnNbMF07XHJcbiAgICAgICAgICAgICAgICBAaWYoIWJhbm5lcnMuc3R5bGVzPy5idXR0b24/LnRleHQpe1xyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gYmFubmVyIHNpbiBib3RvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJiYW5uZXIudXJsXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbSBjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctZmx1aWRcIiBbc3JjXT1cIm1lZGlhQmFubmVyVXJsICsgZ2V0SW1hZ2UoYmFubmVyKVwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHctMTAwIGgtMTAwIHN0YXJ0LTAgdG9wLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoYmFubmVyLnRpdGxlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIFtjbGFzc109XCInaXRlbS10aXRsZS1mdWxsIHB4LTIgaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nICsgKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5wb3NpdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnI2ZmZicgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Jhbm5lci50aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihiYW5uZXIuc3VidGl0bGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnIzAwMCcgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidweC00IGl0ZW0tc3VidGl0bGUtZnVsbCBpdGVtLXBvc2l0aW9uLXZlcnRpY2FsLScgKyAoYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LnBvc2l0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIuc3VidGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBiYW5uZXIgZmlqbyBjb24gYm90b24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0gY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctZmx1aWRcIiBbc3JjXT1cIm1lZGlhQmFubmVyVXJsICsgZ2V0SW1hZ2UoYmFubmVyKVwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgaC0xMDAgc3RhcnQtMCB0b3AtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGJhbm5lci50aXRsZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIFtjbGFzc109XCInaXRlbS10aXRsZS1mdWxsIHB4LTIgaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nICsgKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5wb3NpdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCIoYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LmNvbG9yKSA/IGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvciA6ICcjMDAwJyBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIudGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoYmFubmVyLnN1YnRpdGxlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnIzAwMCcgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3B4LTQgaXRlbS1zdWJ0aXRsZS1mdWxsIGl0ZW0tcG9zaXRpb24tdmVydGljYWwtJyArIChiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8ucG9zaXRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YmFubmVyLnN1YnRpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCInaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nICsgKGJhbm5lci5zdHlsZXM/LmJ1dHRvbj8ucG9zaXRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGJhbm5lci5zdHlsZXM/LmJ1dHRvbj8udGV4dCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7YmFubmVyLnVybH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidpdGVtLWJ1dHRvbi1mdWxsIGJ0biBidG4tbGlnaHQgJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIuc3R5bGVzLmJ1dHRvbi50ZXh0fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgIDwhLS0gc2kgZXMgY2Fycm91c2VsIC0tPlxyXG4gICAgICAgICAgICA8IS0tICBAaWYoc3dpcGVyRWxlbWVudCgpICE9IG51bGwpeyAtLT5cclxuICAgICAgICAgICAgICAgIDxzd2lwZXItY29udGFpbmVyIGluaXQ9XCJmYWxzZVwiIFtpZF09XCJtZXRhPy5jb2RlXCI+XHJcbiAgICAgICAgICAgICAgICBAZm9yIChiYW5uZXIgb2YgYmFubmVyczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHN3aXBlci1zbGlkZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWJhbm5lci5zdHlsZXM/LmJ1dHRvbj8udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gYmFubmVyIHNpbiBib3RvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoYmFubmVyLnVybCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cImJhbm5lci51cmxcIiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIm1lZGlhQmFubmVyVXJsICsgZ2V0SW1hZ2UoYmFubmVyKVwiIGFsdD1cIlwiIGNsYXNzPVwiaW1nLWZsdWlkIHctMTAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJtZWRpYUJhbm5lclVybCArIGdldEltYWdlKGJhbm5lcilcIiBhbHQ9XCJcIiAgY2xhc3M9XCJpbWctZmx1aWQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBiYW5uZXIgY29uIGJvdG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJtZWRpYUJhbm5lclVybCArIGdldEltYWdlKGJhbm5lcilcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB3LTEwMCBoLTEwMCBzdGFydC0wIHRvcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihiYW5uZXIudGl0bGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIFtjbGFzc109XCInaXRlbS10aXRsZS1mdWxsIHB4LTIgaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nKyAoYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LnBvc2l0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cIihiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IpID8gYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LmNvbG9yIDogJyMwMDAnIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YmFubmVyLnRpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGJhbm5lci5zdWJ0aXRsZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnIzAwMCcgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3B4LTQgaXRlbS1zdWJ0aXRsZS1mdWxsIGl0ZW0tcG9zaXRpb24tdmVydGljYWwtJyArIChiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8ucG9zaXRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIuc3VidGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIidpdGVtLXBvc2l0aW9uLXZlcnRpY2FsLScgKyAoYmFubmVyLnN0eWxlcz8uYnV0dG9uPy5wb3NpdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihiYW5uZXIuc3R5bGVzPy5idXR0b24/LnRleHQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7e2Jhbm5lci51cmx9fVwiIFtjbGFzc109XCInaXRlbS1idXR0b24tZnVsbCBidG4gYnRuLWxpZ2h0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Jhbm5lci5zdHlsZXMuYnV0dG9uLnRleHR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3dpcGVyLXNsaWRlPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3N3aXBlci1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwhLS0gIH0gLS0+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIDwvc2VjdGlvbj5cclxufSJdfQ==
@@ -70,7 +70,7 @@ export class BlocksEcComponent {
70
70
  }
71
71
  }
72
72
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlocksEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
73
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlocksEcComponent, isStandalone: true, selector: "app-blocks-ec", inputs: { templates: "templates", show_loading: "show_loading", section: "section", blockFilters: "blockFilters" }, ngImport: i0, template: "@if(blocks$ | async; as blocks){\r\n @if(blocks.length > 0){\r\n <div class=\"container-fluid px-0\">\r\n <div class=\"row\">\r\n @for (block of blocks; track $index) {\r\n @switch (block.contentType) {\r\n @case ('banner') {\r\n @switch(block.design){\r\n @case ('full') {\r\n <app-block-banner-full-ec [banners]=\"block.banners\" [meta]=\"block\" />\r\n }\r\n @case ('boxes') {\r\n <app-block-banner-box-ec [banners]=\"block.banners\" [meta]=\"block\"/>\r\n }\r\n }\r\n }\r\n @case ('html') {\r\n @if(showBlock(block)){\r\n <app-block-html-ec [html_content]=\"getHTMLContent(block)\" />\r\n }\r\n }\r\n @case ('products') {\r\n <app-block-products-ec [products]=\"block.products?.items\" [meta]=\"block\" />\r\n }\r\n @case ('contact_form') {\r\n @if(isNewsletter(block)){\r\n <app-block-newsletter-ec [block]=\"block.contactForm\" />\r\n } @else {\r\n <app-block-form-contact-ec [block]=\"block.contactForm\" />\r\n }\r\n }\r\n }\r\n }\r\n </div>\r\n </div>\r\n }\r\n}", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: BlockBannerFullEcComponent, selector: "app-block-banner-full-ec", inputs: ["banners", "meta"] }, { kind: "component", type: BlockBannerBoxEcComponent, selector: "app-block-banner-box-ec", inputs: ["banners", "meta"] }, { kind: "component", type: BlockHtmlEcComponent, selector: "app-block-html-ec", inputs: ["html_content"] }, { kind: "component", type: BlockProductsEcComponent, selector: "app-block-products-ec", inputs: ["prevArrowImage", "nextArrowImage", "prevArrowText", "nextArrowText", "appProduct", "products", "meta"] }, { kind: "component", type: BlockNewsletterEcComponent, selector: "app-block-newsletter-ec", inputs: ["block", "success_message", "subject"] }, { kind: "component", type: BlockFormContactEcComponent, selector: "app-block-form-contact-ec", inputs: ["block", "success_message", "redirect", "subject"] }] });
73
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlocksEcComponent, isStandalone: true, selector: "app-blocks-ec", inputs: { templates: "templates", show_loading: "show_loading", section: "section", blockFilters: "blockFilters" }, ngImport: i0, template: "@if(blocks$ | async; as blocks){\r\n @if(blocks.length > 0){\r\n <div class=\"container-fluid px-0\">\r\n <div class=\"row\">\r\n @for (block of blocks; track $index) {\r\n @switch (block.contentType) {\r\n @case ('banner') {\r\n @switch(block.design){\r\n @case ('full') {\r\n <app-block-banner-full-ec [banners]=\"block.banners\" [meta]=\"block\" />\r\n }\r\n @case ('boxes') {\r\n <app-block-banner-box-ec [banners]=\"block.banners\" [meta]=\"block\"/>\r\n }\r\n }\r\n }\r\n @case ('html') {\r\n @if(showBlock(block)){\r\n <app-block-html-ec [html_content]=\"getHTMLContent(block)\" />\r\n }\r\n }\r\n @case ('products') {\r\n <app-block-products-ec [products]=\"block.products?.items\" [meta]=\"block\" />\r\n }\r\n @case ('contact_form') {\r\n @if(isNewsletter(block)){\r\n <app-block-newsletter-ec [block]=\"block.contactForm\" />\r\n } @else {\r\n <app-block-form-contact-ec [block]=\"block.contactForm\" />\r\n }\r\n }\r\n }\r\n }\r\n </div>\r\n </div>\r\n }\r\n}", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: BlockBannerFullEcComponent, selector: "app-block-banner-full-ec", inputs: ["banners", "meta", "prevArrowImage", "nextArrowImage", "prevArrowText", "nextArrowText", "enableCustomNavigation"] }, { kind: "component", type: BlockBannerBoxEcComponent, selector: "app-block-banner-box-ec", inputs: ["banners", "meta"] }, { kind: "component", type: BlockHtmlEcComponent, selector: "app-block-html-ec", inputs: ["html_content"] }, { kind: "component", type: BlockProductsEcComponent, selector: "app-block-products-ec", inputs: ["prevArrowImage", "nextArrowImage", "prevArrowText", "nextArrowText", "appProduct", "products", "meta"] }, { kind: "component", type: BlockNewsletterEcComponent, selector: "app-block-newsletter-ec", inputs: ["block", "success_message", "subject"] }, { kind: "component", type: BlockFormContactEcComponent, selector: "app-block-form-contact-ec", inputs: ["block", "success_message", "redirect", "subject"] }] });
74
74
  }
75
75
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlocksEcComponent, decorators: [{
76
76
  type: Component,
@@ -96,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
96
96
  }], blockFilters: [{
97
97
  type: Input
98
98
  }] } });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2Jsb2Nrcy1lYy9ibG9ja3MtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvYmxvY2tzLWVjL2Jsb2Nrcy1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBRTlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ25HLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDOztBQUN0Rzs7Ozs7R0FLRztBQWlCSCxNQUFNLE9BQU8saUJBQWlCO0lBQzdCOztPQUVHO0lBQ0ssY0FBYyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvQzs7O09BR0c7SUFDSyxhQUFhLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDcEQ7O09BRUc7SUFDSSxPQUFPLENBQW1DO0lBQ2pEOztPQUVHO0lBQ0ssV0FBVyxHQUFrQixJQUFJLENBQUM7SUFDMUM7OztPQUdHO0lBQ00sU0FBUyxDQUFvQjtJQUN0Qzs7T0FFRztJQUNNLFlBQVksR0FBWSxLQUFLLENBQUM7SUFDdkM7O09BRUc7SUFDSCxJQUVPLE9BQU8sQ0FBQyxLQUFvQjtRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUNRLFlBQVksR0FBb0IsSUFBSSxDQUFDO0lBQzlDLGdCQUFnQixDQUFDO0lBRWpCLFFBQVEsS0FBVyxDQUFDO0lBQ3BCOzs7O09BSUc7SUFDSCxjQUFjLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUVoSCxZQUFZLENBQUMsS0FBVSxJQUFhLE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFBLENBQUM7SUFFckYsU0FBUyxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUVoRzs7S0FFSTtJQUNJLFVBQVU7UUFDakIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNGLENBQUM7d0dBMURXLGlCQUFpQjs0RkFBakIsaUJBQWlCLDZMQ2xDOUIsMHVEQW9DQyxxRERkQyxTQUFTLDhDQUVULDBCQUEwQixrR0FDMUIseUJBQXlCLGlHQUN6QixvQkFBb0Isd0ZBQ3BCLHdCQUF3QixvTEFDeEIsMEJBQTBCLHFIQUMxQiwyQkFBMkI7OzRGQUtoQixpQkFBaUI7a0JBaEI3QixTQUFTOytCQUNDLGVBQWUsY0FDYixJQUFJLFdBQ1A7d0JBQ1IsU0FBUzt3QkFDVCxRQUFRO3dCQUNSLDBCQUEwQjt3QkFDMUIseUJBQXlCO3dCQUN6QixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsMEJBQTBCO3dCQUMxQiwyQkFBMkI7cUJBQzNCO3dEQTBCUSxTQUFTO3NCQUFqQixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBTUMsT0FBTztzQkFGYixLQUFLO3VCQUFDO3dCQUNOLFFBQVEsRUFBRSxJQUFJO3FCQUNkO2dCQUlRLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCbG9ja3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBBc3luY1BpcGUsIEpzb25QaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSUJsb2NrIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEJsb2NrQmFubmVyRnVsbEVjQ29tcG9uZW50IH0gZnJvbSAnLi9ibG9jay1iYW5uZXItZnVsbC1lYy9ibG9jay1iYW5uZXItZnVsbC1lYy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCbG9ja0Jhbm5lckJveEVjQ29tcG9uZW50IH0gZnJvbSBcIi4vYmxvY2stYmFubmVyLWJveC1lYy9ibG9jay1iYW5uZXItYm94LWVjLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBCbG9ja0h0bWxFY0NvbXBvbmVudCB9IGZyb20gXCIuL2Jsb2NrLWh0bWwtZWMvYmxvY2staHRtbC1lYy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQXBpQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IEJsb2NrUHJvZHVjdHNFY0NvbXBvbmVudCB9IGZyb20gXCIuL2Jsb2NrLXByb2R1Y3RzLWVjL2Jsb2NrLXByb2R1Y3RzLWVjLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBCbG9ja05ld3NsZXR0ZXJFY0NvbXBvbmVudCB9IGZyb20gXCIuL2Jsb2NrLW5ld3NsZXR0ZXItZWMvYmxvY2stbmV3c2xldHRlci1lYy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQmxvY2tGb3JtQ29udGFjdEVjQ29tcG9uZW50IH0gZnJvbSBcIi4vYmxvY2stZm9ybS1jb250YWN0LWVjL2Jsb2NrLWZvcm0tY29udGFjdC1lYy5jb21wb25lbnRcIjtcclxuLyoqXHJcbiAqIENvbXBvbmVudGUgcXVlIGVzIHV0aWxpemFkbyBwYXJhIG1hbmVqYXIgbG9zIGRpc3RpbnRvcyB0aXBvc1xyXG4gKiBkZSBibG9xdWVzIHkgZGlzdHJpYnVpcmxvcyBwb3IgbGEgYXBsaWNhY2nDs24uXHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqIEBjbGFzcyBCbG9ja3NFY0NvbXBvbmVudFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtYmxvY2tzLWVjJyxcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdEFzeW5jUGlwZSxcclxuXHRcdEpzb25QaXBlLFxyXG5cdFx0QmxvY2tCYW5uZXJGdWxsRWNDb21wb25lbnQsXHJcblx0XHRCbG9ja0Jhbm5lckJveEVjQ29tcG9uZW50LFxyXG5cdFx0QmxvY2tIdG1sRWNDb21wb25lbnQsXHJcblx0XHRCbG9ja1Byb2R1Y3RzRWNDb21wb25lbnQsXHJcblx0XHRCbG9ja05ld3NsZXR0ZXJFY0NvbXBvbmVudCxcclxuXHRcdEJsb2NrRm9ybUNvbnRhY3RFY0NvbXBvbmVudFxyXG5cdF0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL2Jsb2Nrcy1lYy5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmw6ICcuL2Jsb2Nrcy1lYy5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEJsb2Nrc0VjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHQvKipcclxuXHQgKiBTZXJ2aWNpbyBkZSBCbG9xdWVzXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfYmxvY2tzU2VydmljZSA9IGluamVjdChCbG9ja3NTZXJ2aWNlKTtcclxuXHQvKipcdHByaXZhdGUgX2Jsb2Nrc1NlcnZpY2UgPSBpbmplY3QoQmxvY2tzU2VydmljZSk7XHJcblxyXG5cdCAqIENvbnN0YW50ZXMgZGUgbGEgQVBJXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfYXBpQ29uc3RhbnRzID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xyXG5cdC8qKlxyXG5cdCAqIE9ic2VydmFibGUgZGUgYmxvcXVlc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBibG9ja3MkOiBPYnNlcnZhYmxlPElCbG9ja1tdPiB8IHVuZGVmaW5lZDtcclxuXHQvKipcclxuXHQgKiBOb21icmUgZGUgbGEgc2VjY2nDs24gcXVlIGFsYmVyZ2EgYSBsb3MgYmxvcXVlcy5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9zdHJzZWN0aW9uOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHQvKipcclxuXHQgKiBDb2xlY2Npw7NuIGRlIFRlbXBsYXRlcyBwYXJhIHJlZW1wbGF6YXIgZW4gbG9zIGRpc3RpbnRvcyB0aXBvc1xyXG5cdCAqIGRlIGJsb3F1ZSBwb3IgYmxvcXVlcyBsb2NhbGVzIGdlbmVyYWRvcyBlbiBlbCBmcm9udGVuZC5cclxuXHQgKi9cclxuXHRASW5wdXQoKSB0ZW1wbGF0ZXMhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cdC8qKlxyXG5cdCAqIEluZGljYWRvciBwYXJhIGN1YW5kbyBzZSBlc3RlbiBjYXJnYW5kbyBsb3MgYmxvcXVlcy5cclxuXHQgKi9cclxuXHRASW5wdXQoKSBzaG93X2xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHQvKipcclxuXHQgKiBOb21icmUgZGUgbGEgc2VjY2nDs24gZGVsIGJsb3F1ZS4gXHJcblx0ICovXHJcblx0QElucHV0KHtcclxuXHRcdHJlcXVpcmVkOiB0cnVlLFxyXG5cdH0pIHNldCBzZWN0aW9uKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XHJcblx0XHR0aGlzLl9zdHJzZWN0aW9uID0gdmFsdWU7XHJcblx0XHR0aGlzLmxvYWRCbG9ja3MoKTtcclxuXHR9XHJcblx0QElucHV0KCkgYmxvY2tGaWx0ZXJzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsO1xyXG5cdGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQgeyB9XHJcblx0LyoqXHJcblx0ICogT2J0aWVuZSBlbCBjb250ZW5pZG8gaHRtbCBkZSB1biBibG9xdWUsIGVzdGUgbcOpdG9kbyBlcyB1c2FkbyBjdWFuZG8gZWwgYmxvcXVlIGVzIGRlIHRpcG8gKipIVE1MKipcclxuXHQgKiBAcGFyYW0gYmxvY2sgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0Z2V0SFRNTENvbnRlbnQgPSAoYmxvY2s6IElCbG9jaykgPT4gYmxvY2sudHJhbnNsYXRpb25zICYmIGJsb2NrLnRyYW5zbGF0aW9uc1t0aGlzLl9hcGlDb25zdGFudHMuTE9DQUxFXS5jb250ZW50O1xyXG5cclxuXHRpc05ld3NsZXR0ZXIoYmxvY2s6IGFueSk6IGJvb2xlYW4geyByZXR1cm4gYmxvY2suY29udGFjdEZvcm0uY29kZS5pbmNsdWRlcygnbmV3cycpIH07XHJcblxyXG5cdHNob3dCbG9jayA9IChibG9jazogSUJsb2NrKSA9PiB0aGlzLmJsb2NrRmlsdGVycyA/IHRoaXMuYmxvY2tGaWx0ZXJzLmluY2x1ZGVzKGJsb2NrLmNvZGUpIDogdHJ1ZVxyXG5cclxuXHQvKipcclxuICAgKiBDYXJnYSBsb3MgYmxvcXVlcyBkZSBsYSBzZWNjacOzbiBhY3R1YWwuXHJcbiAgICovXHJcblx0cHJpdmF0ZSBsb2FkQmxvY2tzKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuX3N0cnNlY3Rpb24pIHtcclxuXHRcdFx0dGhpcy5ibG9ja3MkID0gdGhpcy5fYmxvY2tzU2VydmljZS5nZXRCbG9ja3ModGhpcy5fc3Ryc2VjdGlvbik7XHJcblx0XHR9XHJcblx0fVxyXG59XHRcclxuIiwiQGlmKGJsb2NrcyQgfCBhc3luYzsgYXMgYmxvY2tzKXtcclxuICAgIEBpZihibG9ja3MubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBweC0wXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIEBmb3IgKGJsb2NrIG9mIGJsb2NrczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAoYmxvY2suY29udGVudFR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdiYW5uZXInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc3dpdGNoKGJsb2NrLmRlc2lnbil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdmdWxsJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJsb2NrLWJhbm5lci1mdWxsLWVjIFtiYW5uZXJzXT1cImJsb2NrLmJhbm5lcnNcIiBbbWV0YV09XCJibG9ja1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnYm94ZXMnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYmxvY2stYmFubmVyLWJveC1lYyBbYmFubmVyc109XCJibG9jay5iYW5uZXJzXCIgW21ldGFdPVwiYmxvY2tcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnaHRtbCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihzaG93QmxvY2soYmxvY2spKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJsb2NrLWh0bWwtZWMgW2h0bWxfY29udGVudF09XCJnZXRIVE1MQ29udGVudChibG9jaylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgncHJvZHVjdHMnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJsb2NrLXByb2R1Y3RzLWVjIFtwcm9kdWN0c109XCJibG9jay5wcm9kdWN0cz8uaXRlbXNcIiBbbWV0YV09XCJibG9ja1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdjb250YWN0X2Zvcm0nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoaXNOZXdzbGV0dGVyKGJsb2NrKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1ibG9jay1uZXdzbGV0dGVyLWVjIFtibG9ja109XCJibG9jay5jb250YWN0Rm9ybVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJsb2NrLWZvcm0tY29udGFjdC1lYyBbYmxvY2tdPVwiYmxvY2suY29udGFjdEZvcm1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIH1cclxufSJdfQ==
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2Jsb2Nrcy1lYy9ibG9ja3MtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvYmxvY2tzLWVjL2Jsb2Nrcy1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBRTlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ25HLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDOztBQUN0Rzs7Ozs7R0FLRztBQWlCSCxNQUFNLE9BQU8saUJBQWlCO0lBQzdCOztPQUVHO0lBQ0ssY0FBYyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvQzs7O09BR0c7SUFDSyxhQUFhLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDcEQ7O09BRUc7SUFDSSxPQUFPLENBQW1DO0lBQ2pEOztPQUVHO0lBQ0ssV0FBVyxHQUFrQixJQUFJLENBQUM7SUFDMUM7OztPQUdHO0lBQ00sU0FBUyxDQUFvQjtJQUN0Qzs7T0FFRztJQUNNLFlBQVksR0FBWSxLQUFLLENBQUM7SUFDdkM7O09BRUc7SUFDSCxJQUVPLE9BQU8sQ0FBQyxLQUFvQjtRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUNRLFlBQVksR0FBb0IsSUFBSSxDQUFDO0lBQzlDLGdCQUFnQixDQUFDO0lBRWpCLFFBQVEsS0FBVyxDQUFDO0lBQ3BCOzs7O09BSUc7SUFDSCxjQUFjLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUVoSCxZQUFZLENBQUMsS0FBVSxJQUFhLE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFBLENBQUM7SUFFckYsU0FBUyxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUVoRzs7S0FFSTtJQUNJLFVBQVU7UUFDakIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNGLENBQUM7d0dBMURXLGlCQUFpQjs0RkFBakIsaUJBQWlCLDZMQ2xDOUIsMHVEQW9DQyxxRERkQyxTQUFTLDhDQUVULDBCQUEwQixrTUFDMUIseUJBQXlCLGlHQUN6QixvQkFBb0Isd0ZBQ3BCLHdCQUF3QixvTEFDeEIsMEJBQTBCLHFIQUMxQiwyQkFBMkI7OzRGQUtoQixpQkFBaUI7a0JBaEI3QixTQUFTOytCQUNDLGVBQWUsY0FDYixJQUFJLFdBQ1A7d0JBQ1IsU0FBUzt3QkFDVCxRQUFRO3dCQUNSLDBCQUEwQjt3QkFDMUIseUJBQXlCO3dCQUN6QixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsMEJBQTBCO3dCQUMxQiwyQkFBMkI7cUJBQzNCO3dEQTBCUSxTQUFTO3NCQUFqQixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBTUMsT0FBTztzQkFGYixLQUFLO3VCQUFDO3dCQUNOLFFBQVEsRUFBRSxJQUFJO3FCQUNkO2dCQUlRLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCbG9ja3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBBc3luY1BpcGUsIEpzb25QaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSUJsb2NrIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEJsb2NrQmFubmVyRnVsbEVjQ29tcG9uZW50IH0gZnJvbSAnLi9ibG9jay1iYW5uZXItZnVsbC1lYy9ibG9jay1iYW5uZXItZnVsbC1lYy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCbG9ja0Jhbm5lckJveEVjQ29tcG9uZW50IH0gZnJvbSBcIi4vYmxvY2stYmFubmVyLWJveC1lYy9ibG9jay1iYW5uZXItYm94LWVjLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBCbG9ja0h0bWxFY0NvbXBvbmVudCB9IGZyb20gXCIuL2Jsb2NrLWh0bWwtZWMvYmxvY2staHRtbC1lYy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQXBpQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IEJsb2NrUHJvZHVjdHNFY0NvbXBvbmVudCB9IGZyb20gXCIuL2Jsb2NrLXByb2R1Y3RzLWVjL2Jsb2NrLXByb2R1Y3RzLWVjLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBCbG9ja05ld3NsZXR0ZXJFY0NvbXBvbmVudCB9IGZyb20gXCIuL2Jsb2NrLW5ld3NsZXR0ZXItZWMvYmxvY2stbmV3c2xldHRlci1lYy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQmxvY2tGb3JtQ29udGFjdEVjQ29tcG9uZW50IH0gZnJvbSBcIi4vYmxvY2stZm9ybS1jb250YWN0LWVjL2Jsb2NrLWZvcm0tY29udGFjdC1lYy5jb21wb25lbnRcIjtcclxuLyoqXHJcbiAqIENvbXBvbmVudGUgcXVlIGVzIHV0aWxpemFkbyBwYXJhIG1hbmVqYXIgbG9zIGRpc3RpbnRvcyB0aXBvc1xyXG4gKiBkZSBibG9xdWVzIHkgZGlzdHJpYnVpcmxvcyBwb3IgbGEgYXBsaWNhY2nDs24uXHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqIEBjbGFzcyBCbG9ja3NFY0NvbXBvbmVudFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtYmxvY2tzLWVjJyxcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdEFzeW5jUGlwZSxcclxuXHRcdEpzb25QaXBlLFxyXG5cdFx0QmxvY2tCYW5uZXJGdWxsRWNDb21wb25lbnQsXHJcblx0XHRCbG9ja0Jhbm5lckJveEVjQ29tcG9uZW50LFxyXG5cdFx0QmxvY2tIdG1sRWNDb21wb25lbnQsXHJcblx0XHRCbG9ja1Byb2R1Y3RzRWNDb21wb25lbnQsXHJcblx0XHRCbG9ja05ld3NsZXR0ZXJFY0NvbXBvbmVudCxcclxuXHRcdEJsb2NrRm9ybUNvbnRhY3RFY0NvbXBvbmVudFxyXG5cdF0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL2Jsb2Nrcy1lYy5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmw6ICcuL2Jsb2Nrcy1lYy5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEJsb2Nrc0VjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHQvKipcclxuXHQgKiBTZXJ2aWNpbyBkZSBCbG9xdWVzXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfYmxvY2tzU2VydmljZSA9IGluamVjdChCbG9ja3NTZXJ2aWNlKTtcclxuXHQvKipcdHByaXZhdGUgX2Jsb2Nrc1NlcnZpY2UgPSBpbmplY3QoQmxvY2tzU2VydmljZSk7XHJcblxyXG5cdCAqIENvbnN0YW50ZXMgZGUgbGEgQVBJXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfYXBpQ29uc3RhbnRzID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xyXG5cdC8qKlxyXG5cdCAqIE9ic2VydmFibGUgZGUgYmxvcXVlc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBibG9ja3MkOiBPYnNlcnZhYmxlPElCbG9ja1tdPiB8IHVuZGVmaW5lZDtcclxuXHQvKipcclxuXHQgKiBOb21icmUgZGUgbGEgc2VjY2nDs24gcXVlIGFsYmVyZ2EgYSBsb3MgYmxvcXVlcy5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9zdHJzZWN0aW9uOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHQvKipcclxuXHQgKiBDb2xlY2Npw7NuIGRlIFRlbXBsYXRlcyBwYXJhIHJlZW1wbGF6YXIgZW4gbG9zIGRpc3RpbnRvcyB0aXBvc1xyXG5cdCAqIGRlIGJsb3F1ZSBwb3IgYmxvcXVlcyBsb2NhbGVzIGdlbmVyYWRvcyBlbiBlbCBmcm9udGVuZC5cclxuXHQgKi9cclxuXHRASW5wdXQoKSB0ZW1wbGF0ZXMhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cdC8qKlxyXG5cdCAqIEluZGljYWRvciBwYXJhIGN1YW5kbyBzZSBlc3RlbiBjYXJnYW5kbyBsb3MgYmxvcXVlcy5cclxuXHQgKi9cclxuXHRASW5wdXQoKSBzaG93X2xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHQvKipcclxuXHQgKiBOb21icmUgZGUgbGEgc2VjY2nDs24gZGVsIGJsb3F1ZS4gXHJcblx0ICovXHJcblx0QElucHV0KHtcclxuXHRcdHJlcXVpcmVkOiB0cnVlLFxyXG5cdH0pIHNldCBzZWN0aW9uKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XHJcblx0XHR0aGlzLl9zdHJzZWN0aW9uID0gdmFsdWU7XHJcblx0XHR0aGlzLmxvYWRCbG9ja3MoKTtcclxuXHR9XHJcblx0QElucHV0KCkgYmxvY2tGaWx0ZXJzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsO1xyXG5cdGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQgeyB9XHJcblx0LyoqXHJcblx0ICogT2J0aWVuZSBlbCBjb250ZW5pZG8gaHRtbCBkZSB1biBibG9xdWUsIGVzdGUgbcOpdG9kbyBlcyB1c2FkbyBjdWFuZG8gZWwgYmxvcXVlIGVzIGRlIHRpcG8gKipIVE1MKipcclxuXHQgKiBAcGFyYW0gYmxvY2sgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0Z2V0SFRNTENvbnRlbnQgPSAoYmxvY2s6IElCbG9jaykgPT4gYmxvY2sudHJhbnNsYXRpb25zICYmIGJsb2NrLnRyYW5zbGF0aW9uc1t0aGlzLl9hcGlDb25zdGFudHMuTE9DQUxFXS5jb250ZW50O1xyXG5cclxuXHRpc05ld3NsZXR0ZXIoYmxvY2s6IGFueSk6IGJvb2xlYW4geyByZXR1cm4gYmxvY2suY29udGFjdEZvcm0uY29kZS5pbmNsdWRlcygnbmV3cycpIH07XHJcblxyXG5cdHNob3dCbG9jayA9IChibG9jazogSUJsb2NrKSA9PiB0aGlzLmJsb2NrRmlsdGVycyA/IHRoaXMuYmxvY2tGaWx0ZXJzLmluY2x1ZGVzKGJsb2NrLmNvZGUpIDogdHJ1ZVxyXG5cclxuXHQvKipcclxuICAgKiBDYXJnYSBsb3MgYmxvcXVlcyBkZSBsYSBzZWNjacOzbiBhY3R1YWwuXHJcbiAgICovXHJcblx0cHJpdmF0ZSBsb2FkQmxvY2tzKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuX3N0cnNlY3Rpb24pIHtcclxuXHRcdFx0dGhpcy5ibG9ja3MkID0gdGhpcy5fYmxvY2tzU2VydmljZS5nZXRCbG9ja3ModGhpcy5fc3Ryc2VjdGlvbik7XHJcblx0XHR9XHJcblx0fVxyXG59XHRcclxuIiwiQGlmKGJsb2NrcyQgfCBhc3luYzsgYXMgYmxvY2tzKXtcclxuICAgIEBpZihibG9ja3MubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBweC0wXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIEBmb3IgKGJsb2NrIG9mIGJsb2NrczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAoYmxvY2suY29udGVudFR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdiYW5uZXInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc3dpdGNoKGJsb2NrLmRlc2lnbil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdmdWxsJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJsb2NrLWJhbm5lci1mdWxsLWVjIFtiYW5uZXJzXT1cImJsb2NrLmJhbm5lcnNcIiBbbWV0YV09XCJibG9ja1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnYm94ZXMnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYmxvY2stYmFubmVyLWJveC1lYyBbYmFubmVyc109XCJibG9jay5iYW5uZXJzXCIgW21ldGFdPVwiYmxvY2tcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnaHRtbCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihzaG93QmxvY2soYmxvY2spKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJsb2NrLWh0bWwtZWMgW2h0bWxfY29udGVudF09XCJnZXRIVE1MQ29udGVudChibG9jaylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgncHJvZHVjdHMnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJsb2NrLXByb2R1Y3RzLWVjIFtwcm9kdWN0c109XCJibG9jay5wcm9kdWN0cz8uaXRlbXNcIiBbbWV0YV09XCJibG9ja1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdjb250YWN0X2Zvcm0nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoaXNOZXdzbGV0dGVyKGJsb2NrKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1ibG9jay1uZXdzbGV0dGVyLWVjIFtibG9ja109XCJibG9jay5jb250YWN0Rm9ybVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJsb2NrLWZvcm0tY29udGFjdC1lYyBbYmxvY2tdPVwiYmxvY2suY29udGFjdEZvcm1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIH1cclxufSJdfQ==