ng-miam 6.4.13 → 7.0.0
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/bundles/ng-miam.umd.js +8539 -10855
- package/bundles/ng-miam.umd.js.map +1 -1
- package/bundles/ng-miam.umd.min.js +2 -2
- package/bundles/ng-miam.umd.min.js.map +1 -1
- package/esm2015/lib/_components/abstracts/event-tracer.component.js +3 -2
- package/esm2015/lib/_components/accordion/accordion.component.js +75 -0
- package/esm2015/lib/_components/components.module.js +27 -21
- package/esm2015/lib/_components/counter-input/counter-input.component.js +86 -76
- package/esm2015/lib/_components/icon/icon.component.js +1 -1
- package/esm2015/lib/_components/index.js +5 -5
- package/esm2015/lib/_components/like-button/like-button.component.js +1 -1
- package/esm2015/lib/_components/list-input/list-input.component.js +5 -5
- package/esm2015/lib/_components/loader/loader.component.js +1 -1
- package/esm2015/lib/_components/meals-planner-link/meals-planner-link.component.js +3 -3
- package/esm2015/lib/_components/modal/modal.component.js +155 -137
- package/esm2015/lib/_components/product-card/product-card.component.js +333 -0
- package/esm2015/lib/_components/products-picker/products-picker.component.js +155 -0
- package/esm2015/lib/_components/progress-tracker/progress-tracker.component.js +1 -1
- package/esm2015/lib/_components/recipe-filters/recipe-filters.component.js +166 -217
- package/esm2015/lib/_components/recipe-pricing/recipe-pricing.component.js +55 -35
- package/esm2015/lib/_components/slider-tabs/slider-tabs.component.js +84 -0
- package/esm2015/lib/_components/sponsor-blocks/sponsor-image-and-text-block/sponsor-image-and-text-block.component.js +1 -1
- package/esm2015/lib/_components/sponsor-blocks/sponsor-text-and-image-block/sponsor-text-and-image-block.component.js +1 -1
- package/esm2015/lib/_components/tabs/tabs.component.js +48 -88
- package/esm2015/lib/_components/toaster/toaster.component.js +48 -84
- package/esm2015/lib/_components/tooltipable-content/tooltipable-content.component.js +1 -1
- package/esm2015/lib/_models/basket-entry.js +33 -49
- package/esm2015/lib/_models/basket-preview-line.js +5 -5
- package/esm2015/lib/_models/basket.js +15 -12
- package/esm2015/lib/_models/item.js +2 -2
- package/esm2015/lib/_models/recipe.js +2 -15
- package/esm2015/lib/_models/user.js +1 -1
- package/esm2015/lib/_services/analytics.service.js +24 -5
- package/esm2015/lib/_services/baskets-synchronizing/baskets-comparator.service.js +1 -10
- package/esm2015/lib/_services/baskets-synchronizing/baskets-synchronizer.service.js +15 -15
- package/esm2015/lib/_services/baskets.service.js +478 -60
- package/esm2015/lib/_services/context.service.js +22 -35
- package/esm2015/lib/_services/index.js +3 -5
- package/esm2015/lib/_services/interceptor.service.js +2 -2
- package/esm2015/lib/_services/items.service.js +27 -4
- package/esm2015/lib/_services/recipe-details.service.js +198 -0
- package/esm2015/lib/_services/recipe-likes.service.js +1 -1
- package/esm2015/lib/_services/recipes.service.js +24 -53
- package/esm2015/lib/_services/scrolling.service.js +17 -0
- package/esm2015/lib/_services/toaster.service.js +4 -5
- package/esm2015/lib/_services/user.service.js +2 -2
- package/esm2015/lib/_types/basket-action-type.enum.js +11 -0
- package/esm2015/lib/_types/basket-action.js +2 -0
- package/esm2015/lib/_types/basket-stats.js +2 -0
- package/esm2015/lib/_types/builded/miam-interface.js +1 -1
- package/esm2015/lib/_types/event-trace.js +5 -0
- package/esm2015/lib/_types/items-comparator.js +1 -10
- package/esm2015/lib/_types/recipe-filters.js +1 -1
- package/esm2015/lib/_types/toaster.js +1 -1
- package/esm2015/lib/_utils/directives/index.js +2 -1
- package/esm2015/lib/_utils/directives/reach-top.directive.js +33 -0
- package/esm2015/lib/_utils/pipes/readable-float-number/readable-float-number.pipe.js +8 -2
- package/esm2015/lib/_utils/utils.module.js +12 -8
- package/esm2015/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.js +140 -118
- package/esm2015/lib/_web-components/basket-preview/basket-preview-disabled/basket-preview-disabled.component.js +2 -2
- package/esm2015/lib/_web-components/basket-preview/basket-preview-line/basket-preview-line.component.js +125 -444
- package/esm2015/lib/_web-components/basket-preview/replace-item/replace-item.component.js +211 -108
- package/esm2015/lib/_web-components/index.js +1 -4
- package/esm2015/lib/_web-components/list-scan/basket-preview/basket-preview.component.js +11 -14
- package/esm2015/lib/_web-components/list-scan/files-inputs/files-inputs.component.js +13 -13
- package/esm2015/lib/_web-components/list-scan/ingredients-list/ingredients-list.component.js +6 -6
- package/esm2015/lib/_web-components/list-scan/list-scan.component.js +10 -10
- package/esm2015/lib/_web-components/list-scan/overlay-button/overlay-button.component.js +23 -11
- package/esm2015/lib/_web-components/meals-planner/meals-planner-basket-confirmation/meals-planner-basket-confirmation.component.js +1 -1
- package/esm2015/lib/_web-components/meals-planner/meals-planner-catalog/meals-planner-catalog.component.js +1 -1
- package/esm2015/lib/_web-components/meals-planner/meals-planner-form/meals-planner-form.component.js +7 -7
- package/esm2015/lib/_web-components/meals-planner/meals-planner-result/meals-planner-result.component.js +5 -5
- package/esm2015/lib/_web-components/meals-planner/meals-planner.component.js +16 -20
- package/esm2015/lib/_web-components/planner-side-menu/planner-side-menu.component.js +4 -53
- package/esm2015/lib/_web-components/recipe-cards/add-recipe-card/add-recipe-card.component.js +1 -1
- package/esm2015/lib/_web-components/recipe-cards/index.js +1 -3
- package/esm2015/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.js +326 -404
- package/esm2015/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.js +50 -146
- package/esm2015/lib/_web-components/recipe-cards/recipe-cards.module.js +3 -15
- package/esm2015/lib/_web-components/recipe-catalog/catalog-article-card/catalog-article-card.component.js +1 -1
- package/esm2015/lib/_web-components/recipe-catalog/catalog-category/catalog-category.component.js +35 -29
- package/esm2015/lib/_web-components/recipe-catalog/catalog-header/catalog-header.component.js +1 -1
- package/esm2015/lib/_web-components/recipe-catalog/catalog-list/catalog-list.component.js +27 -31
- package/esm2015/lib/_web-components/recipe-catalog/recipe-catalog.component.js +98 -100
- package/esm2015/lib/_web-components/recipe-creation/recipe-form/recipe-form.component.js +2 -2
- package/esm2015/lib/_web-components/recipe-creation/recipe-stepper/recipe-stepper.component.js +7 -7
- package/esm2015/lib/_web-components/recipe-creation/tags-creator/tags-creator.component.js +4 -4
- package/esm2015/lib/_web-components/recipe-creation/tags-selector/tags-selector.component.js +8 -8
- package/esm2015/lib/_web-components/recipe-details/recipe-addon/recipe-addon.component.js +7 -3
- package/esm2015/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.js +57 -358
- package/esm2015/lib/_web-components/recipe-details/recipe-details-ingredients/recipe-details-ingredients.component.js +59 -122
- package/esm2015/lib/_web-components/recipe-details/recipe-details-steps/recipe-details-steps.component.js +51 -72
- package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +313 -363
- package/esm2015/lib/_web-components/recipe-details/recipe-details.module.js +8 -4
- package/esm2015/lib/_web-components/recipe-details/sponsor-storytelling/sponsor-storytelling.component.js +1 -1
- package/esm2015/lib/_web-components/recipe-helper/recipe-helper.component.js +89 -113
- package/esm2015/lib/_web-components/recipe-modal/recipe-modal.component.js +78 -69
- package/esm2015/lib/_web-components/recipe-tags/recipe-tags.component.js +5 -5
- package/esm2015/lib/_web-components/toaster-stack/toaster-stack.component.js +8 -4
- package/esm2015/lib/_web-components/web-components.module.js +3 -19
- package/esm2015/lib/ng-miam.module.js +5 -7
- package/fesm2015/ng-miam.js +5165 -6973
- package/fesm2015/ng-miam.js.map +1 -1
- package/lib/_components/abstracts/event-tracer.component.d.ts +2 -1
- package/lib/_components/accordion/accordion.component.d.ts +23 -0
- package/lib/_components/components.module.d.ts +38 -36
- package/lib/_components/counter-input/counter-input.component.d.ts +12 -14
- package/lib/_components/index.d.ts +4 -4
- package/lib/_components/modal/modal.component.d.ts +18 -18
- package/lib/_components/product-card/product-card.component.d.ts +40 -0
- package/lib/_components/products-picker/products-picker.component.d.ts +17 -0
- package/lib/_components/recipe-pricing/recipe-pricing.component.d.ts +12 -8
- package/lib/_components/slider-tabs/slider-tabs.component.d.ts +16 -0
- package/lib/_components/tabs/tabs.component.d.ts +11 -11
- package/lib/_components/toaster/toaster.component.d.ts +4 -2
- package/lib/_models/basket-entry.d.ts +16 -20
- package/lib/_models/basket-preview-line.d.ts +1 -0
- package/lib/_models/basket.d.ts +12 -5
- package/lib/_models/item.d.ts +1 -1
- package/lib/_models/recipe.d.ts +0 -5
- package/lib/_models/user.d.ts +0 -1
- package/lib/_services/analytics.service.d.ts +8 -22
- package/lib/_services/baskets-synchronizing/baskets-comparator.service.d.ts +0 -5
- package/lib/_services/baskets-synchronizing/baskets-synchronizer.service.d.ts +3 -6
- package/lib/_services/baskets.service.d.ts +137 -18
- package/lib/_services/context.service.d.ts +2 -4
- package/lib/_services/index.d.ts +2 -4
- package/lib/_services/items.service.d.ts +9 -2
- package/lib/_services/recipe-details.service.d.ts +84 -0
- package/lib/_services/recipe-likes.service.d.ts +2 -1
- package/lib/_services/recipes.service.d.ts +10 -14
- package/lib/_services/scrolling.service.d.ts +8 -0
- package/lib/_services/toaster.service.d.ts +1 -1
- package/lib/_types/basket-action-type.enum.d.ts +9 -0
- package/lib/_types/basket-action.d.ts +14 -0
- package/lib/_types/basket-stats.d.ts +5 -0
- package/lib/_types/builded/miam-interface.d.ts +16 -25
- package/lib/_types/event-trace.d.ts +22 -0
- package/lib/_types/items-comparator.d.ts +0 -5
- package/lib/_types/recipe-filters.d.ts +0 -2
- package/lib/_types/toaster.d.ts +1 -1
- package/lib/_utils/directives/index.d.ts +1 -0
- package/lib/_utils/directives/reach-top.directive.d.ts +13 -0
- package/lib/_utils/pipes/readable-float-number/readable-float-number.pipe.d.ts +1 -1
- package/lib/_utils/utils.module.d.ts +2 -2
- package/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.d.ts +9 -8
- package/lib/_web-components/basket-preview/basket-preview-line/basket-preview-line.component.d.ts +11 -9
- package/lib/_web-components/basket-preview/replace-item/replace-item.component.d.ts +27 -20
- package/lib/_web-components/index.d.ts +0 -3
- package/lib/_web-components/list-scan/basket-preview/basket-preview.component.d.ts +1 -2
- package/lib/_web-components/list-scan/files-inputs/files-inputs.component.d.ts +6 -5
- package/lib/_web-components/list-scan/ingredients-list/ingredients-list.component.d.ts +3 -3
- package/lib/_web-components/list-scan/list-scan.component.d.ts +3 -3
- package/lib/_web-components/list-scan/overlay-button/overlay-button.component.d.ts +8 -6
- package/lib/_web-components/meals-planner/meals-planner.component.d.ts +2 -3
- package/lib/_web-components/recipe-cards/index.d.ts +0 -2
- package/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.d.ts +58 -17
- package/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.d.ts +5 -12
- package/lib/_web-components/recipe-cards/recipe-cards.module.d.ts +7 -9
- package/lib/_web-components/recipe-catalog/catalog-category/catalog-category.component.d.ts +8 -6
- package/lib/_web-components/recipe-catalog/catalog-list/catalog-list.component.d.ts +7 -4
- package/lib/_web-components/recipe-catalog/recipe-catalog.component.d.ts +2 -3
- package/lib/_web-components/recipe-details/recipe-addon/recipe-addon.component.d.ts +5 -2
- package/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.d.ts +6 -18
- package/lib/_web-components/recipe-details/recipe-details-ingredients/recipe-details-ingredients.component.d.ts +6 -13
- package/lib/_web-components/recipe-details/recipe-details-steps/recipe-details-steps.component.d.ts +2 -10
- package/lib/_web-components/recipe-details/recipe-details.component.d.ts +29 -36
- package/lib/_web-components/recipe-details/recipe-details.module.d.ts +2 -1
- package/lib/_web-components/recipe-helper/recipe-helper.component.d.ts +2 -6
- package/lib/_web-components/recipe-modal/recipe-modal.component.d.ts +11 -9
- package/lib/_web-components/toaster-stack/toaster-stack.component.d.ts +5 -2
- package/lib/_web-components/web-components.module.d.ts +23 -29
- package/miam-style.css +1 -1
- package/package.json +1 -1
- package/esm2015/lib/_components/abstracts/abstract-recipe-card.component.js +0 -130
- package/esm2015/lib/_components/skeleton/skeleton.component.js +0 -70
- package/esm2015/lib/_components/tabs/tab-body.component.js +0 -30
- package/esm2015/lib/_components/tabs/tab-item.component.js +0 -36
- package/esm2015/lib/_components/tabs/tab-label.component.js +0 -30
- package/esm2015/lib/_models/groceries-entry.js +0 -42
- package/esm2015/lib/_models/groceries-list.js +0 -36
- package/esm2015/lib/_services/counter.service.js +0 -20
- package/esm2015/lib/_services/groceries-entries.service.js +0 -21
- package/esm2015/lib/_services/groceries-lists.service.js +0 -240
- package/esm2015/lib/_services/recipe-events.service.js +0 -63
- package/esm2015/lib/_types/skeleton.enum.js +0 -7
- package/esm2015/lib/_web-components/drawer/drawer.component.js +0 -273
- package/esm2015/lib/_web-components/pos-card/pos-card.component.js +0 -207
- package/esm2015/lib/_web-components/pos-selection/pos-selection.component.js +0 -283
- package/esm2015/lib/_web-components/recipe-cards/catalog-recipe-card/catalog-recipe-card.component.js +0 -632
- package/esm2015/lib/_web-components/recipe-cards/suggestion-card/suggestion-card.component.js +0 -144
- package/lib/_components/abstracts/abstract-recipe-card.component.d.ts +0 -49
- package/lib/_components/skeleton/skeleton.component.d.ts +0 -11
- package/lib/_components/tabs/tab-body.component.d.ts +0 -8
- package/lib/_components/tabs/tab-item.component.d.ts +0 -11
- package/lib/_components/tabs/tab-label.component.d.ts +0 -8
- package/lib/_models/groceries-entry.d.ts +0 -20
- package/lib/_models/groceries-list.d.ts +0 -30
- package/lib/_services/counter.service.d.ts +0 -10
- package/lib/_services/groceries-entries.service.d.ts +0 -10
- package/lib/_services/groceries-lists.service.d.ts +0 -68
- package/lib/_services/recipe-events.service.d.ts +0 -23
- package/lib/_types/skeleton.enum.d.ts +0 -5
- package/lib/_web-components/drawer/drawer.component.d.ts +0 -37
- package/lib/_web-components/pos-card/pos-card.component.d.ts +0 -24
- package/lib/_web-components/pos-selection/pos-selection.component.d.ts +0 -38
- package/lib/_web-components/recipe-cards/catalog-recipe-card/catalog-recipe-card.component.d.ts +0 -49
- package/lib/_web-components/recipe-cards/suggestion-card/suggestion-card.component.d.ts +0 -42
|
@@ -1,320 +1,290 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { ContextService, GroceriesListsService, PointOfSalesService, RecipeEventsService, RecipesService, SponsorBlockService, UserService } from '../../_services';
|
|
5
|
-
import { forkJoin, of } from 'rxjs';
|
|
6
|
-
import { skipWhile, switchMap, take, tap } from 'rxjs/operators';
|
|
7
|
-
import { MediaMatcher } from '@angular/cdk/layout';
|
|
8
|
-
import { AnalyticsService } from '../../_services/analytics.service';
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { merge, of } from 'rxjs';
|
|
3
|
+
import { skipWhile, switchMap, tap } from 'rxjs/operators';
|
|
9
4
|
import { EventTracerComponent } from '../../_components/abstracts/event-tracer.component';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
5
|
+
import { AnalyticsService, BasketsService, ContextService, PointOfSalesService, RecipesService, SponsorBlockService, UserService } from '../../_services';
|
|
6
|
+
import { RecipeDetailsService } from '../../_services/recipe-details.service';
|
|
7
|
+
import { Icon } from '../../_types/icon.enum';
|
|
12
8
|
import * as i0 from "@angular/core";
|
|
13
9
|
import * as i1 from "../../_services";
|
|
14
|
-
import * as i2 from "
|
|
15
|
-
import * as i3 from "
|
|
16
|
-
import * as i4 from "../../
|
|
17
|
-
import * as i5 from "
|
|
18
|
-
import * as i6 from "../../
|
|
19
|
-
import * as i7 from "./recipe-details-
|
|
20
|
-
import * as i8 from "../../_components/
|
|
21
|
-
import * as i9 from "
|
|
22
|
-
import * as i10 from "
|
|
23
|
-
import * as i11 from "
|
|
24
|
-
import * as i12 from "./recipe-details-
|
|
25
|
-
import * as i13 from "
|
|
26
|
-
import * as i14 from "../../_components/
|
|
10
|
+
import * as i2 from "../../_services/recipe-details.service";
|
|
11
|
+
import * as i3 from "@angular/common";
|
|
12
|
+
import * as i4 from "../../_components/like-button/like-button.component";
|
|
13
|
+
import * as i5 from "../../_components/counter-input/counter-input.component";
|
|
14
|
+
import * as i6 from "../../_utils/directives/reach-top.directive";
|
|
15
|
+
import * as i7 from "./recipe-details-infos/recipe-details-infos.component";
|
|
16
|
+
import * as i8 from "../../_components/slider-tabs/slider-tabs.component";
|
|
17
|
+
import * as i9 from "../../_components/addon-link/addon-link.component";
|
|
18
|
+
import * as i10 from "@angular/youtube-player";
|
|
19
|
+
import * as i11 from "../../_components/products-picker/products-picker.component";
|
|
20
|
+
import * as i12 from "./recipe-details-ingredients/recipe-details-ingredients.component";
|
|
21
|
+
import * as i13 from "./recipe-details-steps/recipe-details-steps.component";
|
|
22
|
+
import * as i14 from "../../_components/recipe-pricing/recipe-pricing.component";
|
|
27
23
|
import * as i15 from "./recipe-addon/recipe-addon.component";
|
|
24
|
+
import * as i16 from "../basket-preview/replace-item/replace-item.component";
|
|
28
25
|
const _c0 = ["topContainerImg"];
|
|
29
|
-
function
|
|
30
|
-
i0.ɵɵelement(0, "
|
|
31
|
-
} }
|
|
32
|
-
function RecipeDetailsComponent_div_0_ng_template_5_Template(rf, ctx) { if (rf & 1) {
|
|
33
|
-
i0.ɵɵelement(0, "img", 14);
|
|
26
|
+
function RecipeDetailsComponent_div_0_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
27
|
+
i0.ɵɵelement(0, "div", 6);
|
|
34
28
|
} }
|
|
35
|
-
function
|
|
36
|
-
i0.ɵɵ
|
|
37
|
-
i0.ɵɵ
|
|
29
|
+
function RecipeDetailsComponent_div_0_div_3_ng_miam_addon_link_2_Template(rf, ctx) { if (rf & 1) {
|
|
30
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
31
|
+
i0.ɵɵelementStart(0, "ng-miam-addon-link", 44);
|
|
32
|
+
i0.ɵɵlistener("showAddon", function RecipeDetailsComponent_div_0_div_3_ng_miam_addon_link_2_Template_ng_miam_addon_link_showAddon_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r17 = i0.ɵɵnextContext(3); return ctx_r17.toggleAddon(); });
|
|
38
33
|
i0.ɵɵelementEnd();
|
|
39
34
|
} if (rf & 2) {
|
|
40
|
-
const
|
|
41
|
-
i0.ɵɵ
|
|
42
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r7.recipe == null ? null : ctx_r7.recipe.attributes["title"], " ");
|
|
35
|
+
const ctx_r5 = i0.ɵɵnextContext(3);
|
|
36
|
+
i0.ɵɵproperty("hasStorytelling", ctx_r5.sponsorHasStorytelling)("recipe", ctx_r5.recipeDetailsService.recipe);
|
|
43
37
|
} }
|
|
44
|
-
function
|
|
45
|
-
|
|
46
|
-
i0.ɵɵelementStart(0, "ng-miam-addon-link", 42);
|
|
47
|
-
i0.ɵɵlistener("showAddon", function RecipeDetailsComponent_div_0_div_11_ng_miam_addon_link_5_Template_ng_miam_addon_link_showAddon_0_listener() { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(3); return ctx_r24.toggleAddon(); });
|
|
48
|
-
i0.ɵɵelementEnd();
|
|
38
|
+
function RecipeDetailsComponent_div_0_div_3_img_15_Template(rf, ctx) { if (rf & 1) {
|
|
39
|
+
i0.ɵɵelement(0, "img", 45);
|
|
49
40
|
} if (rf & 2) {
|
|
50
|
-
const
|
|
51
|
-
i0.ɵɵproperty("
|
|
41
|
+
const ctx_r7 = i0.ɵɵnextContext(3);
|
|
42
|
+
i0.ɵɵproperty("src", ctx_r7.recipeDetailsService.recipe == null ? null : ctx_r7.recipeDetailsService.recipe.attributes["media-url"], i0.ɵɵsanitizeUrl);
|
|
52
43
|
} }
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
i0.ɵɵelement(0, "img", 43);
|
|
44
|
+
function RecipeDetailsComponent_div_0_div_3_youtube_player_16_Template(rf, ctx) { if (rf & 1) {
|
|
45
|
+
i0.ɵɵelement(0, "youtube-player", 46);
|
|
56
46
|
} if (rf & 2) {
|
|
57
|
-
const
|
|
58
|
-
i0.ɵɵproperty("
|
|
47
|
+
const ctx_r8 = i0.ɵɵnextContext(3);
|
|
48
|
+
i0.ɵɵproperty("videoId", ctx_r8.recipeDetailsService.recipe.videoId)("width", ctx_r8.playerWidth)("height", ctx_r8.playerHeight)("playerVars", ctx_r8.playerVars);
|
|
59
49
|
} }
|
|
60
|
-
function
|
|
61
|
-
i0.ɵɵ
|
|
62
|
-
|
|
63
|
-
const ctx_r12 = i0.ɵɵnextContext(3);
|
|
64
|
-
i0.ɵɵproperty("videoId", ctx_r12.recipe.videoId)("width", ctx_r12.playerWidth)("height", ctx_r12.playerHeight);
|
|
65
|
-
} }
|
|
66
|
-
function RecipeDetailsComponent_div_0_div_11_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
67
|
-
i0.ɵɵelementStart(0, "div", 45);
|
|
68
|
-
i0.ɵɵelement(1, "img", 41);
|
|
50
|
+
function RecipeDetailsComponent_div_0_div_3_div_17_Template(rf, ctx) { if (rf & 1) {
|
|
51
|
+
i0.ɵɵelementStart(0, "div", 47);
|
|
52
|
+
i0.ɵɵelement(1, "img", 48);
|
|
69
53
|
i0.ɵɵelementEnd();
|
|
70
54
|
} if (rf & 2) {
|
|
71
|
-
const
|
|
55
|
+
const ctx_r9 = i0.ɵɵnextContext(3);
|
|
72
56
|
i0.ɵɵadvance(1);
|
|
73
|
-
i0.ɵɵproperty("src",
|
|
57
|
+
i0.ɵɵproperty("src", ctx_r9.recipeDetailsService.recipe.filigraneLogoUrl, i0.ɵɵsanitizeUrl);
|
|
74
58
|
} }
|
|
75
|
-
function
|
|
76
|
-
i0.ɵɵelement(0, "ng-miam-like-button",
|
|
59
|
+
function RecipeDetailsComponent_div_0_div_3_ng_miam_like_button_25_Template(rf, ctx) { if (rf & 1) {
|
|
60
|
+
i0.ɵɵelement(0, "ng-miam-like-button", 49);
|
|
77
61
|
} if (rf & 2) {
|
|
78
|
-
const
|
|
79
|
-
i0.ɵɵproperty("recipe",
|
|
62
|
+
const ctx_r10 = i0.ɵɵnextContext(3);
|
|
63
|
+
i0.ɵɵproperty("recipe", ctx_r10.recipeDetailsService.recipe)("originTrace", ctx_r10.eventTrace())("width", 24)("height", 24);
|
|
80
64
|
} }
|
|
81
|
-
function
|
|
82
|
-
|
|
83
|
-
i0.ɵɵelementStart(0, "ng-miam-icon", 47);
|
|
84
|
-
i0.ɵɵlistener("click", function RecipeDetailsComponent_div_0_div_11_ng_miam_icon_16_Template_ng_miam_icon_click_0_listener() { i0.ɵɵrestoreView(_r27); const ctx_r26 = i0.ɵɵnextContext(3); return ctx_r26.toggleHelper(); });
|
|
85
|
-
i0.ɵɵelementEnd();
|
|
86
|
-
} if (rf & 2) {
|
|
87
|
-
const ctx_r15 = i0.ɵɵnextContext(3);
|
|
88
|
-
i0.ɵɵproperty("width", 40)("height", 40)("iconName", ctx_r15.icon.Help);
|
|
65
|
+
function RecipeDetailsComponent_div_0_div_3_ng_miam_products_picker_33_Template(rf, ctx) { if (rf & 1) {
|
|
66
|
+
i0.ɵɵelement(0, "ng-miam-products-picker");
|
|
89
67
|
} }
|
|
90
|
-
function
|
|
91
|
-
i0.ɵɵ
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
i0.ɵɵ
|
|
95
|
-
} }
|
|
96
|
-
function RecipeDetailsComponent_div_0_div_11_ng_miam_recipe_details_steps_18_Template(rf, ctx) { if (rf & 1) {
|
|
97
|
-
i0.ɵɵelement(0, "ng-miam-recipe-details-steps", 49);
|
|
68
|
+
function RecipeDetailsComponent_div_0_div_3_div_34_Template(rf, ctx) { if (rf & 1) {
|
|
69
|
+
i0.ɵɵelementStart(0, "div", 50);
|
|
70
|
+
i0.ɵɵelement(1, "ng-miam-recipe-details-ingredients", 51);
|
|
71
|
+
i0.ɵɵelement(2, "ng-miam-recipe-details-steps", 52);
|
|
72
|
+
i0.ɵɵelementEnd();
|
|
98
73
|
} if (rf & 2) {
|
|
99
|
-
const
|
|
100
|
-
i0.ɵɵ
|
|
74
|
+
const ctx_r12 = i0.ɵɵnextContext(3);
|
|
75
|
+
i0.ɵɵadvance(1);
|
|
76
|
+
i0.ɵɵproperty("ingredients", ctx_r12.recipeDetailsService.recipe == null ? null : ctx_r12.recipeDetailsService.recipe.modifiedIngredients);
|
|
77
|
+
i0.ɵɵadvance(1);
|
|
78
|
+
i0.ɵɵproperty("recipe", ctx_r12.recipeDetailsService.recipe);
|
|
101
79
|
} }
|
|
102
|
-
function
|
|
103
|
-
i0.ɵɵ
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
i0.ɵɵ
|
|
80
|
+
function RecipeDetailsComponent_div_0_div_3_button_36_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
81
|
+
i0.ɵɵelementStart(0, "div", 57);
|
|
82
|
+
i0.ɵɵelementStart(1, "span");
|
|
83
|
+
i0.ɵɵi18n(2, 58);
|
|
84
|
+
i0.ɵɵelementEnd();
|
|
85
|
+
i0.ɵɵelementEnd();
|
|
107
86
|
} }
|
|
108
|
-
function
|
|
87
|
+
function RecipeDetailsComponent_div_0_div_3_button_36_ng_template_3_span_5_Template(rf, ctx) { if (rf & 1) {
|
|
109
88
|
i0.ɵɵelementStart(0, "span");
|
|
110
|
-
i0.ɵɵi18n(1,
|
|
89
|
+
i0.ɵɵi18n(1, 60);
|
|
111
90
|
i0.ɵɵelementEnd();
|
|
112
91
|
} }
|
|
113
|
-
function
|
|
92
|
+
function RecipeDetailsComponent_div_0_div_3_button_36_ng_template_3_span_6_Template(rf, ctx) { if (rf & 1) {
|
|
114
93
|
i0.ɵɵelementStart(0, "span");
|
|
115
|
-
i0.ɵɵi18n(1,
|
|
94
|
+
i0.ɵɵi18n(1, 61);
|
|
116
95
|
i0.ɵɵelementEnd();
|
|
117
96
|
} }
|
|
118
|
-
function
|
|
119
|
-
i0.ɵɵ
|
|
120
|
-
} if (rf & 2) {
|
|
121
|
-
const ctx_r33 = i0.ɵɵnextContext(5);
|
|
122
|
-
i0.ɵɵproperty("width", 24)("height", 24)("iconName", ctx_r33.icon.Cart);
|
|
123
|
-
} }
|
|
124
|
-
function RecipeDetailsComponent_div_0_div_11_div_22_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
125
|
-
i0.ɵɵelementStart(0, "div", 54);
|
|
97
|
+
function RecipeDetailsComponent_div_0_div_3_button_36_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
98
|
+
i0.ɵɵelementStart(0, "div", 57);
|
|
126
99
|
i0.ɵɵelementStart(1, "span");
|
|
127
|
-
i0.ɵɵ
|
|
128
|
-
i0.ɵɵpipe(3, "async");
|
|
129
|
-
i0.ɵɵtemplate(4, RecipeDetailsComponent_div_0_div_11_div_22_div_2_span_4_Template, 2, 0, "span", 9);
|
|
130
|
-
i0.ɵɵpipe(5, "async");
|
|
100
|
+
i0.ɵɵi18n(2, 59);
|
|
131
101
|
i0.ɵɵelementEnd();
|
|
132
|
-
i0.ɵɵ
|
|
133
|
-
i0.ɵɵ
|
|
102
|
+
i0.ɵɵelementStart(3, "span");
|
|
103
|
+
i0.ɵɵtext(4);
|
|
104
|
+
i0.ɵɵelementEnd();
|
|
105
|
+
i0.ɵɵtemplate(5, RecipeDetailsComponent_div_0_div_3_button_36_ng_template_3_span_5_Template, 2, 0, "span", 37);
|
|
106
|
+
i0.ɵɵtemplate(6, RecipeDetailsComponent_div_0_div_3_button_36_ng_template_3_span_6_Template, 2, 0, "span", 37);
|
|
134
107
|
i0.ɵɵelementEnd();
|
|
135
108
|
} if (rf & 2) {
|
|
136
|
-
const
|
|
137
|
-
i0.ɵɵadvance(
|
|
138
|
-
i0.ɵɵ
|
|
139
|
-
i0.ɵɵadvance(
|
|
140
|
-
i0.ɵɵproperty("ngIf",
|
|
141
|
-
i0.ɵɵadvance(
|
|
142
|
-
i0.ɵɵproperty("ngIf",
|
|
143
|
-
} }
|
|
144
|
-
function RecipeDetailsComponent_div_0_div_11_div_22_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
145
|
-
i0.ɵɵelement(0, "ng-miam-loader");
|
|
109
|
+
const ctx_r21 = i0.ɵɵnextContext(4);
|
|
110
|
+
i0.ɵɵadvance(4);
|
|
111
|
+
i0.ɵɵtextInterpolate(ctx_r21.recipeDetailsService.remainingBasketEntries.length);
|
|
112
|
+
i0.ɵɵadvance(1);
|
|
113
|
+
i0.ɵɵproperty("ngIf", ctx_r21.recipeDetailsService.remainingBasketEntries.length <= 1);
|
|
114
|
+
i0.ɵɵadvance(1);
|
|
115
|
+
i0.ɵɵproperty("ngIf", ctx_r21.recipeDetailsService.remainingBasketEntries.length > 1);
|
|
146
116
|
} }
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
i0.ɵɵ
|
|
151
|
-
i0.ɵɵ
|
|
152
|
-
i0.ɵɵ
|
|
153
|
-
i0.ɵɵtemplate(
|
|
154
|
-
i0.ɵɵtemplate(3, RecipeDetailsComponent_div_0_div_11_div_22_ng_template_3_Template, 1, 0, "ng-template", null, 53, i0.ɵɵtemplateRefExtractor);
|
|
117
|
+
function RecipeDetailsComponent_div_0_div_3_button_36_Template(rf, ctx) { if (rf & 1) {
|
|
118
|
+
const _r25 = i0.ɵɵgetCurrentView();
|
|
119
|
+
i0.ɵɵelementStart(0, "button", 53);
|
|
120
|
+
i0.ɵɵlistener("click", function RecipeDetailsComponent_div_0_div_3_button_36_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(3); return ctx_r24.recipeDetailsService.addAllIngredientsToBasket(ctx_r24.eventTrace()); });
|
|
121
|
+
i0.ɵɵelement(1, "img", 54);
|
|
122
|
+
i0.ɵɵtemplate(2, RecipeDetailsComponent_div_0_div_3_button_36_div_2_Template, 3, 0, "div", 55);
|
|
123
|
+
i0.ɵɵtemplate(3, RecipeDetailsComponent_div_0_div_3_button_36_ng_template_3_Template, 7, 3, "ng-template", null, 56, i0.ɵɵtemplateRefExtractor);
|
|
155
124
|
i0.ɵɵelementEnd();
|
|
156
125
|
} if (rf & 2) {
|
|
157
|
-
const
|
|
158
|
-
const
|
|
159
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(5, _c8, i0.ɵɵpipeBind1(1, 3, ctx_r19.groceriesListsService.recipeIsInList(ctx_r19.recipe == null ? null : ctx_r19.recipe.id)), ctx_r19.addButtonLoading));
|
|
126
|
+
const _r20 = i0.ɵɵreference(4);
|
|
127
|
+
const ctx_r13 = i0.ɵɵnextContext(3);
|
|
160
128
|
i0.ɵɵadvance(2);
|
|
161
|
-
i0.ɵɵproperty("ngIf", !
|
|
129
|
+
i0.ɵɵproperty("ngIf", !ctx_r13.recipeDetailsService.hasAddedAProduct)("ngIfElse", _r20);
|
|
162
130
|
} }
|
|
163
|
-
function
|
|
164
|
-
i0.ɵɵelementStart(0, "
|
|
165
|
-
i0.ɵɵ
|
|
131
|
+
function RecipeDetailsComponent_div_0_div_3_button_38_Template(rf, ctx) { if (rf & 1) {
|
|
132
|
+
i0.ɵɵelementStart(0, "button", 62);
|
|
133
|
+
i0.ɵɵelement(1, "div", 63);
|
|
166
134
|
i0.ɵɵelementEnd();
|
|
167
|
-
} if (rf & 2) {
|
|
168
|
-
const ctx_r20 = i0.ɵɵnextContext(3);
|
|
169
|
-
i0.ɵɵadvance(1);
|
|
170
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r20.recipe == null ? null : ctx_r20.recipe.attributes["title"], " ");
|
|
171
135
|
} }
|
|
172
|
-
function
|
|
173
|
-
i0.ɵɵ
|
|
174
|
-
i0.ɵɵ
|
|
136
|
+
function RecipeDetailsComponent_div_0_div_3_button_40_Template(rf, ctx) { if (rf & 1) {
|
|
137
|
+
const _r27 = i0.ɵɵgetCurrentView();
|
|
138
|
+
i0.ɵɵelementStart(0, "button", 64);
|
|
139
|
+
i0.ɵɵlistener("click", function RecipeDetailsComponent_div_0_div_3_button_40_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r27); const ctx_r26 = i0.ɵɵnextContext(3); return ctx_r26.onClose(); });
|
|
140
|
+
i0.ɵɵelementStart(1, "div", 57);
|
|
141
|
+
i0.ɵɵelementStart(2, "span");
|
|
142
|
+
i0.ɵɵi18n(3, 65);
|
|
143
|
+
i0.ɵɵelementEnd();
|
|
144
|
+
i0.ɵɵelementEnd();
|
|
175
145
|
i0.ɵɵelementEnd();
|
|
176
|
-
} if (rf & 2) {
|
|
177
|
-
const ctx_r21 = i0.ɵɵnextContext(3);
|
|
178
|
-
i0.ɵɵadvance(1);
|
|
179
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r21.recipe == null ? null : ctx_r21.recipe.attributes.description, " ");
|
|
180
|
-
} }
|
|
181
|
-
function RecipeDetailsComponent_div_0_div_11_ng_miam_recipe_details_infos_27_Template(rf, ctx) { if (rf & 1) {
|
|
182
|
-
i0.ɵɵelement(0, "ng-miam-recipe-details-infos", 48);
|
|
183
|
-
} if (rf & 2) {
|
|
184
|
-
const ctx_r22 = i0.ɵɵnextContext(3);
|
|
185
|
-
i0.ɵɵproperty("recipe", ctx_r22.recipe)("displayTags", ctx_r22.displayTags)("displayTagsIcons", ctx_r22.displayTagsIcons)("reduced", ctx_r22.cookingTimeAsPrimaryInfo);
|
|
186
146
|
} }
|
|
187
|
-
function
|
|
188
|
-
i0.ɵɵelement(0, "ng-miam-recipe-
|
|
147
|
+
function RecipeDetailsComponent_div_0_div_3_ng_miam_recipe_pricing_41_Template(rf, ctx) { if (rf & 1) {
|
|
148
|
+
i0.ɵɵelement(0, "ng-miam-recipe-pricing", 66);
|
|
189
149
|
} if (rf & 2) {
|
|
190
|
-
const
|
|
191
|
-
i0.ɵɵproperty("recipe",
|
|
150
|
+
const ctx_r16 = i0.ɵɵnextContext(3);
|
|
151
|
+
i0.ɵɵproperty("recipeId", ctx_r16.recipeDetailsService.recipe == null ? null : ctx_r16.recipeDetailsService.recipe.id)("serves", ctx_r16.recipeDetailsService.recipe == null ? null : ctx_r16.recipeDetailsService.recipe.modifiedGuests)("guestsText", ctx_r16.pricingGuestsText);
|
|
192
152
|
} }
|
|
193
|
-
function
|
|
194
|
-
|
|
195
|
-
i0.ɵɵ
|
|
196
|
-
i0.ɵɵelementStart(
|
|
197
|
-
i0.ɵɵelementStart(
|
|
198
|
-
i0.ɵɵ
|
|
199
|
-
i0.ɵɵtemplate(5, RecipeDetailsComponent_div_0_div_11_ng_miam_addon_link_5_Template, 1, 2, "ng-miam-addon-link", 20);
|
|
153
|
+
const _c11 = function () { return ["Je fais mes courses", "Je cuisine"]; };
|
|
154
|
+
function RecipeDetailsComponent_div_0_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
155
|
+
const _r29 = i0.ɵɵgetCurrentView();
|
|
156
|
+
i0.ɵɵelementStart(0, "div", 7);
|
|
157
|
+
i0.ɵɵelementStart(1, "div", 8);
|
|
158
|
+
i0.ɵɵtemplate(2, RecipeDetailsComponent_div_0_div_3_ng_miam_addon_link_2_Template, 1, 2, "ng-miam-addon-link", 9);
|
|
200
159
|
i0.ɵɵelementEnd();
|
|
201
|
-
i0.ɵɵelementStart(
|
|
202
|
-
i0.ɵɵ
|
|
203
|
-
i0.ɵɵ
|
|
204
|
-
i0.ɵɵ
|
|
160
|
+
i0.ɵɵelementStart(3, "div", 10, 11);
|
|
161
|
+
i0.ɵɵelementStart(5, "div", 12);
|
|
162
|
+
i0.ɵɵelementStart(6, "div", 13);
|
|
163
|
+
i0.ɵɵelementStart(7, "button", 14);
|
|
164
|
+
i0.ɵɵlistener("click", function RecipeDetailsComponent_div_0_div_3_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(2); return ctx_r28.onClose(); });
|
|
165
|
+
i0.ɵɵelement(8, "img", 15);
|
|
205
166
|
i0.ɵɵelementEnd();
|
|
206
|
-
i0.ɵɵelementStart(
|
|
207
|
-
i0.ɵɵelementStart(
|
|
208
|
-
i0.ɵɵ
|
|
209
|
-
i0.ɵɵ
|
|
210
|
-
i0.ɵɵelementStart(14, "ng-miam-icon", 28);
|
|
211
|
-
i0.ɵɵlistener("click", function RecipeDetailsComponent_div_0_div_11_Template_ng_miam_icon_click_14_listener() { i0.ɵɵrestoreView(_r37); const ctx_r36 = i0.ɵɵnextContext(2); return ctx_r36.print(); });
|
|
167
|
+
i0.ɵɵelementStart(9, "div", 16);
|
|
168
|
+
i0.ɵɵelementStart(10, "button", 17);
|
|
169
|
+
i0.ɵɵlistener("click", function RecipeDetailsComponent_div_0_div_3_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r29); const ctx_r30 = i0.ɵɵnextContext(2); return ctx_r30.onClose(); });
|
|
170
|
+
i0.ɵɵelement(11, "img", 18);
|
|
212
171
|
i0.ɵɵelementEnd();
|
|
172
|
+
i0.ɵɵelement(12, "ng-miam-like-button", 19);
|
|
213
173
|
i0.ɵɵelementEnd();
|
|
214
|
-
i0.ɵɵelementStart(15, "div", 26);
|
|
215
|
-
i0.ɵɵtemplate(16, RecipeDetailsComponent_div_0_div_11_ng_miam_icon_16_Template, 1, 3, "ng-miam-icon", 29);
|
|
216
174
|
i0.ɵɵelementEnd();
|
|
175
|
+
i0.ɵɵelementStart(13, "ng-miam-counter-input", 20);
|
|
176
|
+
i0.ɵɵlistener("valueChange", function RecipeDetailsComponent_div_0_div_3_Template_ng_miam_counter_input_valueChange_13_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r31 = i0.ɵɵnextContext(2); return ctx_r31.updateGuests($event); });
|
|
177
|
+
i0.ɵɵtext(14, " > ");
|
|
217
178
|
i0.ɵɵelementEnd();
|
|
218
|
-
i0.ɵɵtemplate(17, RecipeDetailsComponent_div_0_div_11_ng_miam_recipe_details_infos_17_Template, 1, 4, "ng-miam-recipe-details-infos", 30);
|
|
219
|
-
i0.ɵɵtemplate(18, RecipeDetailsComponent_div_0_div_11_ng_miam_recipe_details_steps_18_Template, 1, 1, "ng-miam-recipe-details-steps", 31);
|
|
220
|
-
i0.ɵɵelementStart(19, "div", 32);
|
|
221
|
-
i0.ɵɵelementStart(20, "div", 33);
|
|
222
|
-
i0.ɵɵtemplate(21, RecipeDetailsComponent_div_0_div_11_ng_miam_recipe_pricing_21_Template, 1, 3, "ng-miam-recipe-pricing", 34);
|
|
223
179
|
i0.ɵɵelementEnd();
|
|
224
|
-
i0.ɵɵtemplate(
|
|
180
|
+
i0.ɵɵtemplate(15, RecipeDetailsComponent_div_0_div_3_img_15_Template, 1, 1, "img", 21);
|
|
181
|
+
i0.ɵɵtemplate(16, RecipeDetailsComponent_div_0_div_3_youtube_player_16_Template, 1, 4, "youtube-player", 22);
|
|
182
|
+
i0.ɵɵtemplate(17, RecipeDetailsComponent_div_0_div_3_div_17_Template, 2, 1, "div", 23);
|
|
225
183
|
i0.ɵɵelementEnd();
|
|
184
|
+
i0.ɵɵelementStart(18, "div", 24);
|
|
185
|
+
i0.ɵɵelementStart(19, "div", 25);
|
|
186
|
+
i0.ɵɵelementStart(20, "button", 26);
|
|
187
|
+
i0.ɵɵlistener("click", function RecipeDetailsComponent_div_0_div_3_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r29); const ctx_r32 = i0.ɵɵnextContext(2); return ctx_r32.onClose(); });
|
|
188
|
+
i0.ɵɵelement(21, "img", 27);
|
|
226
189
|
i0.ɵɵelementEnd();
|
|
227
190
|
i0.ɵɵelementEnd();
|
|
228
|
-
i0.ɵɵelementStart(
|
|
229
|
-
i0.ɵɵ
|
|
230
|
-
i0.ɵɵtemplate(25, RecipeDetailsComponent_div_0_div_11_div_25_Template, 2, 1, "div", 37);
|
|
191
|
+
i0.ɵɵelementStart(22, "span", 28);
|
|
192
|
+
i0.ɵɵtext(23);
|
|
231
193
|
i0.ɵɵelementEnd();
|
|
232
|
-
i0.ɵɵ
|
|
233
|
-
i0.ɵɵtemplate(
|
|
234
|
-
i0.ɵɵ
|
|
235
|
-
i0.ɵɵ
|
|
194
|
+
i0.ɵɵelementStart(24, "div", 29);
|
|
195
|
+
i0.ɵɵtemplate(25, RecipeDetailsComponent_div_0_div_3_ng_miam_like_button_25_Template, 1, 4, "ng-miam-like-button", 30);
|
|
196
|
+
i0.ɵɵpipe(26, "async");
|
|
197
|
+
i0.ɵɵelementStart(27, "div", 31);
|
|
198
|
+
i0.ɵɵelementStart(28, "button", 32);
|
|
199
|
+
i0.ɵɵlistener("click", function RecipeDetailsComponent_div_0_div_3_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r29); const ctx_r33 = i0.ɵɵnextContext(2); return ctx_r33.onClose(); });
|
|
200
|
+
i0.ɵɵelement(29, "img", 33);
|
|
236
201
|
i0.ɵɵelementEnd();
|
|
237
|
-
i0.ɵɵtemplate(29, RecipeDetailsComponent_div_0_div_11_ng_miam_recipe_details_steps_29_Template, 1, 1, "ng-miam-recipe-details-steps", 31);
|
|
238
|
-
i0.ɵɵelementStart(30, "a", 40);
|
|
239
|
-
i0.ɵɵelement(31, "img", 41);
|
|
240
202
|
i0.ɵɵelementEnd();
|
|
241
203
|
i0.ɵɵelementEnd();
|
|
242
204
|
i0.ɵɵelementEnd();
|
|
205
|
+
i0.ɵɵelement(30, "ng-miam-recipe-details-infos", 34);
|
|
206
|
+
i0.ɵɵelementStart(31, "div", 35);
|
|
207
|
+
i0.ɵɵelementStart(32, "ng-miam-slider-tabs", 36);
|
|
208
|
+
i0.ɵɵlistener("selectedTabIndexChange", function RecipeDetailsComponent_div_0_div_3_Template_ng_miam_slider_tabs_selectedTabIndexChange_32_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r34 = i0.ɵɵnextContext(2); return ctx_r34.activeTabIndex = $event; });
|
|
209
|
+
i0.ɵɵelementEnd();
|
|
210
|
+
i0.ɵɵelementEnd();
|
|
211
|
+
i0.ɵɵtemplate(33, RecipeDetailsComponent_div_0_div_3_ng_miam_products_picker_33_Template, 1, 0, "ng-miam-products-picker", 37);
|
|
212
|
+
i0.ɵɵtemplate(34, RecipeDetailsComponent_div_0_div_3_div_34_Template, 3, 2, "div", 38);
|
|
213
|
+
i0.ɵɵelementStart(35, "div", 39);
|
|
214
|
+
i0.ɵɵtemplate(36, RecipeDetailsComponent_div_0_div_3_button_36_Template, 5, 2, "button", 40);
|
|
215
|
+
i0.ɵɵpipe(37, "async");
|
|
216
|
+
i0.ɵɵtemplate(38, RecipeDetailsComponent_div_0_div_3_button_38_Template, 2, 0, "button", 41);
|
|
217
|
+
i0.ɵɵpipe(39, "async");
|
|
218
|
+
i0.ɵɵtemplate(40, RecipeDetailsComponent_div_0_div_3_button_40_Template, 4, 0, "button", 42);
|
|
219
|
+
i0.ɵɵtemplate(41, RecipeDetailsComponent_div_0_div_3_ng_miam_recipe_pricing_41_Template, 1, 3, "ng-miam-recipe-pricing", 43);
|
|
220
|
+
i0.ɵɵelementEnd();
|
|
221
|
+
i0.ɵɵelementEnd();
|
|
243
222
|
} if (rf & 2) {
|
|
244
|
-
const
|
|
245
|
-
i0.ɵɵadvance(5);
|
|
246
|
-
i0.ɵɵproperty("ngIf", (ctx_r8.recipe == null ? null : ctx_r8.recipe.sponsors == null ? null : ctx_r8.recipe.sponsors.length) > 0 || ctx_r8.recipe.informationalSentence);
|
|
223
|
+
const ctx_r4 = i0.ɵɵnextContext(2);
|
|
247
224
|
i0.ɵɵadvance(2);
|
|
248
|
-
i0.ɵɵproperty("ngIf",
|
|
249
|
-
i0.ɵɵadvance(
|
|
250
|
-
i0.ɵɵproperty("
|
|
225
|
+
i0.ɵɵproperty("ngIf", (ctx_r4.recipeDetailsService.recipe == null ? null : ctx_r4.recipeDetailsService.recipe.sponsors == null ? null : ctx_r4.recipeDetailsService.recipe.sponsors.length) > 0 || ctx_r4.recipeDetailsService.recipe.informationalSentence);
|
|
226
|
+
i0.ɵɵadvance(10);
|
|
227
|
+
i0.ɵɵproperty("recipe", ctx_r4.recipeDetailsService.recipe);
|
|
251
228
|
i0.ɵɵadvance(1);
|
|
252
|
-
i0.ɵɵproperty("
|
|
253
|
-
i0.ɵɵadvance(3);
|
|
254
|
-
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(13, 22, ctx_r8.userService.isLogged$));
|
|
229
|
+
i0.ɵɵproperty("floating", true)("value", ctx_r4.recipeDetailsService.recipe.modifiedGuests)("minRange", 1);
|
|
255
230
|
i0.ɵɵadvance(2);
|
|
256
|
-
i0.ɵɵproperty("
|
|
257
|
-
i0.ɵɵadvance(2);
|
|
258
|
-
i0.ɵɵproperty("ngIf", ctx_r8.helpButtonAllowed);
|
|
259
|
-
i0.ɵɵadvance(1);
|
|
260
|
-
i0.ɵɵproperty("ngIf", !ctx_r8.isMobile);
|
|
231
|
+
i0.ɵɵproperty("ngIf", !ctx_r4.showVideo);
|
|
261
232
|
i0.ɵɵadvance(1);
|
|
262
|
-
i0.ɵɵproperty("ngIf",
|
|
263
|
-
i0.ɵɵadvance(3);
|
|
264
|
-
i0.ɵɵproperty("ngIf", ctx_r8.recipe && ctx_r8.displayPricing);
|
|
233
|
+
i0.ɵɵproperty("ngIf", ctx_r4.showVideo && ctx_r4.playerWidth);
|
|
265
234
|
i0.ɵɵadvance(1);
|
|
266
|
-
i0.ɵɵproperty("ngIf",
|
|
267
|
-
i0.ɵɵadvance(
|
|
268
|
-
i0.ɵɵ
|
|
269
|
-
i0.ɵɵadvance(
|
|
270
|
-
i0.ɵɵproperty("ngIf",
|
|
271
|
-
i0.ɵɵadvance(
|
|
272
|
-
i0.ɵɵproperty("
|
|
273
|
-
i0.ɵɵadvance(
|
|
274
|
-
i0.ɵɵproperty("
|
|
235
|
+
i0.ɵɵproperty("ngIf", ctx_r4.recipeDetailsService.recipe.filigraneLogoUrl);
|
|
236
|
+
i0.ɵɵadvance(6);
|
|
237
|
+
i0.ɵɵtextInterpolate(ctx_r4.recipeDetailsService.recipe == null ? null : ctx_r4.recipeDetailsService.recipe.attributes["title"]);
|
|
238
|
+
i0.ɵɵadvance(2);
|
|
239
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(26, 19, ctx_r4.userService.isLogged$));
|
|
240
|
+
i0.ɵɵadvance(5);
|
|
241
|
+
i0.ɵɵproperty("recipe", ctx_r4.recipeDetailsService.recipe);
|
|
242
|
+
i0.ɵɵadvance(2);
|
|
243
|
+
i0.ɵɵproperty("tabs", i0.ɵɵpureFunction0(25, _c11))("selectedTabIndex", ctx_r4.activeTabIndex);
|
|
275
244
|
i0.ɵɵadvance(1);
|
|
276
|
-
i0.ɵɵproperty("ngIf",
|
|
245
|
+
i0.ɵɵproperty("ngIf", ctx_r4.activeTabIndex === 0);
|
|
277
246
|
i0.ɵɵadvance(1);
|
|
278
|
-
i0.ɵɵproperty("
|
|
247
|
+
i0.ɵɵproperty("ngIf", ctx_r4.activeTabIndex === 1);
|
|
248
|
+
i0.ɵɵadvance(2);
|
|
249
|
+
i0.ɵɵproperty("ngIf", ctx_r4.recipeDetailsService.remainingBasketEntries.length > 0 && !i0.ɵɵpipeBind1(37, 21, ctx_r4.recipeDetailsService.allIngredientsToBasketLoading$));
|
|
250
|
+
i0.ɵɵadvance(2);
|
|
251
|
+
i0.ɵɵproperty("ngIf", ctx_r4.recipeDetailsService.remainingBasketEntries.length > 0 && i0.ɵɵpipeBind1(39, 23, ctx_r4.recipeDetailsService.allIngredientsToBasketLoading$));
|
|
252
|
+
i0.ɵɵadvance(2);
|
|
253
|
+
i0.ɵɵproperty("ngIf", ctx_r4.recipeDetailsService.remainingBasketEntries.length === 0);
|
|
279
254
|
i0.ɵɵadvance(1);
|
|
280
|
-
i0.ɵɵproperty("
|
|
255
|
+
i0.ɵɵproperty("ngIf", ctx_r4.recipeDetailsService.recipe && ctx_r4.displayPricing && ctx_r4.recipeDetailsService.hasAddedAProduct);
|
|
281
256
|
} }
|
|
282
257
|
function RecipeDetailsComponent_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
283
|
-
i0.ɵɵelementStart(0, "div",
|
|
284
|
-
i0.ɵɵ
|
|
285
|
-
i0.ɵɵ
|
|
286
|
-
i0.ɵɵtemplate(
|
|
287
|
-
i0.ɵɵ
|
|
288
|
-
i0.ɵɵelementEnd();
|
|
289
|
-
i0.ɵɵelementStart(7, "div", 8);
|
|
290
|
-
i0.ɵɵtemplate(8, RecipeDetailsComponent_div_0_span_8_Template, 2, 1, "span", 9);
|
|
291
|
-
i0.ɵɵelementEnd();
|
|
292
|
-
i0.ɵɵelementStart(9, "a", 10);
|
|
293
|
-
i0.ɵɵi18n(10, 11);
|
|
294
|
-
i0.ɵɵelementEnd();
|
|
295
|
-
i0.ɵɵelementEnd();
|
|
296
|
-
i0.ɵɵtemplate(11, RecipeDetailsComponent_div_0_div_11_Template, 32, 24, "div", 12);
|
|
258
|
+
i0.ɵɵelementStart(0, "div", 3);
|
|
259
|
+
i0.ɵɵtemplate(1, RecipeDetailsComponent_div_0_div_1_Template, 1, 0, "div", 4);
|
|
260
|
+
i0.ɵɵpipe(2, "async");
|
|
261
|
+
i0.ɵɵtemplate(3, RecipeDetailsComponent_div_0_div_3_Template, 42, 26, "div", 5);
|
|
262
|
+
i0.ɵɵpipe(4, "async");
|
|
297
263
|
i0.ɵɵelementEnd();
|
|
298
264
|
} if (rf & 2) {
|
|
299
|
-
const _r5 = i0.ɵɵreference(6);
|
|
300
265
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
301
|
-
i0.ɵɵadvance(4);
|
|
302
|
-
i0.ɵɵproperty("ngIf", !ctx_r0.isMobile)("ngIfElse", _r5);
|
|
303
|
-
i0.ɵɵadvance(4);
|
|
304
|
-
i0.ɵɵproperty("ngIf", !ctx_r0.isMobile || ctx_r0.titleInHeader);
|
|
305
266
|
i0.ɵɵadvance(1);
|
|
306
|
-
i0.ɵɵproperty("
|
|
267
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(2, 2, ctx_r0.recipeDetailsService.recipeLoading$));
|
|
307
268
|
i0.ɵɵadvance(2);
|
|
308
|
-
i0.ɵɵproperty("ngIf", ctx_r0.
|
|
269
|
+
i0.ɵɵproperty("ngIf", !i0.ɵɵpipeBind1(4, 4, ctx_r0.recipeDetailsService.recipeLoading$));
|
|
270
|
+
} }
|
|
271
|
+
function RecipeDetailsComponent_ng_miam_recipe_addon_2_Template(rf, ctx) { if (rf & 1) {
|
|
272
|
+
const _r36 = i0.ɵɵgetCurrentView();
|
|
273
|
+
i0.ɵɵelementStart(0, "ng-miam-recipe-addon", 67);
|
|
274
|
+
i0.ɵɵlistener("hideAddon", function RecipeDetailsComponent_ng_miam_recipe_addon_2_Template_ng_miam_recipe_addon_hideAddon_0_listener() { i0.ɵɵrestoreView(_r36); const ctx_r35 = i0.ɵɵnextContext(); return ctx_r35.toggleAddon(); });
|
|
275
|
+
i0.ɵɵelementEnd();
|
|
276
|
+
} if (rf & 2) {
|
|
277
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
278
|
+
i0.ɵɵproperty("recipe", ctx_r1.recipeDetailsService.recipe);
|
|
309
279
|
} }
|
|
310
|
-
function
|
|
311
|
-
const
|
|
312
|
-
i0.ɵɵelementStart(0, "ng-miam-
|
|
313
|
-
i0.ɵɵlistener("
|
|
280
|
+
function RecipeDetailsComponent_ng_miam_replace_item_3_Template(rf, ctx) { if (rf & 1) {
|
|
281
|
+
const _r38 = i0.ɵɵgetCurrentView();
|
|
282
|
+
i0.ɵɵelementStart(0, "ng-miam-replace-item", 68);
|
|
283
|
+
i0.ɵɵlistener("selected", function RecipeDetailsComponent_ng_miam_replace_item_3_Template_ng_miam_replace_item_selected_0_listener() { i0.ɵɵrestoreView(_r38); const ctx_r37 = i0.ɵɵnextContext(); return ctx_r37.recipeDetailsService.basketEntryToReplace = null; });
|
|
314
284
|
i0.ɵɵelementEnd();
|
|
315
285
|
} if (rf & 2) {
|
|
316
286
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
317
|
-
i0.ɵɵproperty("recipe", ctx_r2.recipe);
|
|
287
|
+
i0.ɵɵproperty("recipe", ctx_r2.recipeDetailsService.recipe)("basketEntry", ctx_r2.recipeDetailsService.basketEntryToReplace$.value.basketEntry)("ingredient", ctx_r2.recipeDetailsService.basketEntryToReplace$.value.ingredient)("ignoreSelected", ctx_r2.recipeDetailsService.basketEntryToReplace$.value.ignoreSelected);
|
|
318
288
|
} }
|
|
319
289
|
const recipeIncludes = ['ingredients', 'tags', 'recipe-steps', 'sponsors'];
|
|
320
290
|
const recipeSparseFields = {
|
|
@@ -326,24 +296,21 @@ const recipeSparseFields = {
|
|
|
326
296
|
sponsors: ['logo-url']
|
|
327
297
|
};
|
|
328
298
|
export class RecipeDetailsComponent extends EventTracerComponent {
|
|
329
|
-
constructor(cdr, recipeService,
|
|
299
|
+
constructor(cdr, recipeService, basketsService, userService, posService, contextService, recipeDetailsService, sponsorBlocksService, analyticsService) {
|
|
330
300
|
super(analyticsService);
|
|
331
301
|
this.cdr = cdr;
|
|
332
302
|
this.recipeService = recipeService;
|
|
333
|
-
this.
|
|
303
|
+
this.basketsService = basketsService;
|
|
334
304
|
this.userService = userService;
|
|
335
305
|
this.posService = posService;
|
|
336
|
-
this.recipeEventsService = recipeEventsService;
|
|
337
|
-
this.mediaMatcher = mediaMatcher;
|
|
338
306
|
this.contextService = contextService;
|
|
339
|
-
this.
|
|
340
|
-
this.toasterService = toasterService;
|
|
307
|
+
this.recipeDetailsService = recipeDetailsService;
|
|
341
308
|
this.sponsorBlocksService = sponsorBlocksService;
|
|
309
|
+
this.analyticsService = analyticsService;
|
|
342
310
|
this.previewAllowed = true;
|
|
343
311
|
this.ingredientsPictures = false;
|
|
344
312
|
this.displayTagsIcons = false;
|
|
345
313
|
this.displayPricing = true;
|
|
346
|
-
this.displayAddedOnPicture = true;
|
|
347
314
|
this.displayGuests = true;
|
|
348
315
|
this.helpButtonAllowed = true;
|
|
349
316
|
this.stepsOnLeftSide = false; // If true, display the detail in 4 quarters instead of 2 halves
|
|
@@ -351,33 +318,38 @@ export class RecipeDetailsComponent extends EventTracerComponent {
|
|
|
351
318
|
this.pricingGuestsText = 'par-personne';
|
|
352
319
|
this.recipeAdded = new EventEmitter();
|
|
353
320
|
this.recipeError = new EventEmitter();
|
|
354
|
-
this.
|
|
321
|
+
this.removedIngredients = [];
|
|
355
322
|
this.tab = 0;
|
|
356
323
|
this.isMobile = false;
|
|
357
324
|
this.displayTags = false;
|
|
358
325
|
this.showDetail = true;
|
|
359
326
|
this.icon = Icon;
|
|
327
|
+
this.primaryButtonClicked$ = new EventEmitter();
|
|
360
328
|
this.addButtonLoading = false;
|
|
361
329
|
this.titleInHeader = false;
|
|
362
330
|
this.sponsorHasStorytelling = false;
|
|
331
|
+
this.activeTabIndex = 0;
|
|
332
|
+
this.playerVars = {
|
|
333
|
+
controls: 1,
|
|
334
|
+
modestbranding: 1,
|
|
335
|
+
rel: 0,
|
|
336
|
+
showinfo: 0
|
|
337
|
+
};
|
|
363
338
|
this.subscriptions = [];
|
|
364
339
|
}
|
|
365
340
|
ngOnInit() {
|
|
366
341
|
this.subscriptions.push(this.contextService.isSmallScreen$.subscribe(isSmall => {
|
|
367
342
|
this.isMobile = isSmall;
|
|
368
343
|
this.cdr.detectChanges();
|
|
369
|
-
}))
|
|
344
|
+
}), merge(this.recipeDetailsService.recipeLoading$, this.recipeDetailsService.basketEntryToReplace$).subscribe(() => {
|
|
345
|
+
this.cdr.detectChanges();
|
|
346
|
+
}), this.recipeDetailsService.productsByCategory$.subscribe(() => this.cdr.detectChanges()));
|
|
370
347
|
}
|
|
371
|
-
ngOnChanges(
|
|
372
|
-
|
|
373
|
-
|
|
348
|
+
ngOnChanges() {
|
|
349
|
+
var _a;
|
|
350
|
+
if (((_a = this.recipeId) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
351
|
+
this.fetchRecipe(this.recipeId);
|
|
374
352
|
this.cdr.detectChanges();
|
|
375
|
-
this.fetchRecipe();
|
|
376
|
-
}
|
|
377
|
-
else {
|
|
378
|
-
if (changes.forcedRecipe && this.forcedRecipe) {
|
|
379
|
-
this.recipe = this.forcedRecipe;
|
|
380
|
-
}
|
|
381
353
|
}
|
|
382
354
|
if (this.forceDisplayTags !== undefined && this.forceDisplayTags !== this.displayTags) {
|
|
383
355
|
this.displayTags = this.forceDisplayTags;
|
|
@@ -388,21 +360,37 @@ export class RecipeDetailsComponent extends EventTracerComponent {
|
|
|
388
360
|
if (this.stepsOnLeftSide) {
|
|
389
361
|
this.cookingTimeAsPrimaryInfo = true;
|
|
390
362
|
}
|
|
363
|
+
this.recipeDetailsService.allIngredientsToBasketLoading = false;
|
|
364
|
+
}
|
|
365
|
+
ngOnDestroy() {
|
|
366
|
+
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
367
|
+
}
|
|
368
|
+
getProducts() {
|
|
369
|
+
this.recipeDetailsService.productsLoading = true;
|
|
370
|
+
this.subscriptions.push(this.recipeDetailsService.getIngredientsBasketEntries().subscribe(() => {
|
|
371
|
+
this.recipeDetailsService.productsLoading = false;
|
|
372
|
+
this.cdr.detectChanges();
|
|
373
|
+
}));
|
|
391
374
|
}
|
|
392
|
-
fetchRecipe() {
|
|
393
|
-
this.
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
375
|
+
fetchRecipe(id) {
|
|
376
|
+
this.recipeDetailsService.recipeLoading = true;
|
|
377
|
+
this.subscriptions.push(this.recipeService.get(id, {
|
|
378
|
+
include: recipeIncludes,
|
|
379
|
+
fields: recipeSparseFields
|
|
380
|
+
}).pipe(skipWhile(result => result.is_loading), tap(result => {
|
|
381
|
+
this.recipeDetailsService.recipe = result;
|
|
382
|
+
this.recipeDetailsService.recipeLoading = false;
|
|
383
|
+
this.getProducts();
|
|
384
|
+
this.sendDisplayRecipeEvent();
|
|
397
385
|
this.setupYoutubePlayer();
|
|
398
386
|
setTimeout(() => {
|
|
399
387
|
this.initScrollListenerOnTitle();
|
|
400
388
|
});
|
|
401
389
|
}), switchMap(() => {
|
|
402
390
|
var _a;
|
|
403
|
-
if (((_a = this.recipe.sponsors) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
391
|
+
if (((_a = this.recipeDetailsService.recipe.sponsors) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
404
392
|
return this.sponsorBlocksService.all({
|
|
405
|
-
remotefilter: { 'sponsor-id': this.recipe.sponsors[0].id },
|
|
393
|
+
remotefilter: { 'sponsor-id': this.recipeDetailsService.recipe.sponsors[0].id },
|
|
406
394
|
page: { number: 1, size: 1 }
|
|
407
395
|
}).pipe(skipWhile(result => result.is_loading), tap(result => this.sponsorHasStorytelling = !!result.data.length));
|
|
408
396
|
}
|
|
@@ -413,7 +401,7 @@ export class RecipeDetailsComponent extends EventTracerComponent {
|
|
|
413
401
|
var _a;
|
|
414
402
|
this.showVideo = false; // force reload video player
|
|
415
403
|
this.cdr.detectChanges();
|
|
416
|
-
this.showVideo = this.contextService.videoRecipesEnabled && ((_a = this.recipe) === null || _a === void 0 ? void 0 : _a.videoId);
|
|
404
|
+
this.showVideo = this.contextService.videoRecipesEnabled && ((_a = this.recipeDetailsService.recipe) === null || _a === void 0 ? void 0 : _a.videoId);
|
|
417
405
|
if (this.showVideo) {
|
|
418
406
|
setTimeout(() => {
|
|
419
407
|
var _a, _b, _c;
|
|
@@ -428,12 +416,6 @@ export class RecipeDetailsComponent extends EventTracerComponent {
|
|
|
428
416
|
}, 50);
|
|
429
417
|
}
|
|
430
418
|
}
|
|
431
|
-
currentPath() {
|
|
432
|
-
return 'detail';
|
|
433
|
-
}
|
|
434
|
-
currentProps() {
|
|
435
|
-
return { recipe_id: this.recipe.id };
|
|
436
|
-
}
|
|
437
419
|
/**
|
|
438
420
|
* Init the listener on scroll so the modal can hide the close icon
|
|
439
421
|
*/
|
|
@@ -448,7 +430,9 @@ export class RecipeDetailsComponent extends EventTracerComponent {
|
|
|
448
430
|
// For more precision on title scroll detection, we want to trigger an event each time the user scrolls 5% of the content
|
|
449
431
|
const threshold = [...Array(20).keys()].map(x => x / 20);
|
|
450
432
|
// Receive an event each time the title enters/leaves the viewport
|
|
451
|
-
this.intersectionObserver = new IntersectionObserver((
|
|
433
|
+
this.intersectionObserver = new IntersectionObserver(() => {
|
|
434
|
+
this.toggleTitleInHeader();
|
|
435
|
+
}, { threshold });
|
|
452
436
|
this.intersectionObserver.observe(this.content);
|
|
453
437
|
}
|
|
454
438
|
}
|
|
@@ -456,75 +440,11 @@ export class RecipeDetailsComponent extends EventTracerComponent {
|
|
|
456
440
|
this.titleInHeader = this.title.getBoundingClientRect().top <= 40;
|
|
457
441
|
this.cdr.detectChanges();
|
|
458
442
|
}
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
*/
|
|
463
|
-
clickPrimary() {
|
|
464
|
-
if (!this.addButtonLoading) {
|
|
465
|
-
this.subscriptions.push(this.groceriesListsService.recipeIsInList(this.recipe.id).subscribe(recipeIsInList => {
|
|
466
|
-
this.addRecipe();
|
|
467
|
-
this.primaryButtonClicked$.emit(!recipeIsInList); // !recipeIsInList = add action, so we emit true
|
|
468
|
-
}));
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
addRecipe() {
|
|
472
|
-
this.toggleButtonLoader(true);
|
|
473
|
-
forkJoin([
|
|
474
|
-
this.userService.isLogged$.asObservable().pipe(take(1)),
|
|
475
|
-
this.posService.posWasInitialized().pipe(take(1))
|
|
476
|
-
]).subscribe(res => {
|
|
477
|
-
const isHookOk = this.contextService.hookCallback(res[0], res[1]);
|
|
478
|
-
if (isHookOk) {
|
|
479
|
-
this.addRecipeActionOK();
|
|
480
|
-
}
|
|
481
|
-
else {
|
|
482
|
-
this.addRecipeActionKO();
|
|
483
|
-
}
|
|
484
|
-
});
|
|
485
|
-
}
|
|
486
|
-
addRecipeActionOK() {
|
|
487
|
-
this.subscriptions.push(this.groceriesListsService.recipeIsInList(this.recipe.id).subscribe(recipeIsInList => {
|
|
488
|
-
const recipeWasAdded = !recipeIsInList;
|
|
489
|
-
if (recipeWasAdded) {
|
|
490
|
-
this.recipeEventsService.sendEvent(this.recipe, this.recipeEventsService.ACTION_ADDED);
|
|
491
|
-
this.subscriptions.push(this.groceriesListsService.appendRecipeToList(this.recipe.id, this.recipe.modifiedGuests, this.eventTrace())
|
|
492
|
-
.pipe(take(1))
|
|
493
|
-
.subscribe(l => {
|
|
494
|
-
this.toggleButtonLoader(false);
|
|
495
|
-
if (recipeWasAdded && this.recipeService.confirmationToaster) {
|
|
496
|
-
this.showRecipeToaster();
|
|
497
|
-
}
|
|
498
|
-
}));
|
|
499
|
-
}
|
|
500
|
-
}));
|
|
501
|
-
this.recipeAdded.emit();
|
|
502
|
-
}
|
|
503
|
-
showRecipeToaster() {
|
|
504
|
-
this.toasterService.show(MessageType.Success, true);
|
|
505
|
-
}
|
|
506
|
-
addRecipeActionKO() {
|
|
507
|
-
sessionStorage.setItem('_miam/cached-recipe', JSON.stringify(this.recipe));
|
|
508
|
-
this.recipeError.emit();
|
|
509
|
-
}
|
|
510
|
-
// If the recipe is already in basket, update the number of guests (= append recipe to list again)
|
|
511
|
-
updateGuests() {
|
|
512
|
-
this.groceriesListsService.recipeIsInList(this.recipe.id).subscribe(recipeIsInList => {
|
|
513
|
-
if (recipeIsInList) {
|
|
514
|
-
this.groceriesListsService.appendRecipeToList(this.recipe.id, this.recipe.modifiedGuests, this.eventTrace()).subscribe();
|
|
515
|
-
}
|
|
516
|
-
else {
|
|
517
|
-
// Mean we send an event even if receipe is not in basket
|
|
518
|
-
this.sendEvent(this.analyticsService.EVENT_RECIPE_CHANGEGUESTS);
|
|
519
|
-
}
|
|
520
|
-
});
|
|
521
|
-
this.recipeService.displayedRecipeChanged.emit();
|
|
443
|
+
updateGuests(guests) {
|
|
444
|
+
this.recipeDetailsService.recipe.modifiedGuests = guests;
|
|
445
|
+
this.recipeDetailsService.updateGuests(this.eventTrace());
|
|
522
446
|
this.cdr.detectChanges();
|
|
523
447
|
}
|
|
524
|
-
print() {
|
|
525
|
-
this.sendEvent(this.analyticsService.EVENT_RECIPE_PRINT);
|
|
526
|
-
window.print();
|
|
527
|
-
}
|
|
528
448
|
toggleAddon() {
|
|
529
449
|
this.showDetail = !this.showDetail;
|
|
530
450
|
this.cdr.detectChanges();
|
|
@@ -537,38 +457,72 @@ export class RecipeDetailsComponent extends EventTracerComponent {
|
|
|
537
457
|
this.addButtonLoading = value;
|
|
538
458
|
this.cdr.detectChanges();
|
|
539
459
|
}
|
|
460
|
+
onClose() {
|
|
461
|
+
this.recipeService.hide();
|
|
462
|
+
}
|
|
463
|
+
print() {
|
|
464
|
+
this.sendEvent(this.analyticsService.EVENT_RECIPE_PRINT);
|
|
465
|
+
window.print();
|
|
466
|
+
}
|
|
467
|
+
sendDisplayRecipeEvent() {
|
|
468
|
+
this.analyticsService.sendEventWhenReady(this.analyticsService.EVENT_RECIPE_DISPLAY, this.originTrace.originPath, this.props());
|
|
469
|
+
this.pageview();
|
|
470
|
+
}
|
|
471
|
+
currentProps() {
|
|
472
|
+
return { recipe_id: this.recipeDetailsService.recipe.id };
|
|
473
|
+
}
|
|
474
|
+
currentPath() {
|
|
475
|
+
return 'detail';
|
|
476
|
+
}
|
|
540
477
|
}
|
|
541
|
-
RecipeDetailsComponent.ɵfac = function RecipeDetailsComponent_Factory(t) { return new (t || RecipeDetailsComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.RecipesService), i0.ɵɵdirectiveInject(i1.
|
|
478
|
+
RecipeDetailsComponent.ɵfac = function RecipeDetailsComponent_Factory(t) { return new (t || RecipeDetailsComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.RecipesService), i0.ɵɵdirectiveInject(i1.BasketsService), i0.ɵɵdirectiveInject(i1.UserService), i0.ɵɵdirectiveInject(i1.PointOfSalesService), i0.ɵɵdirectiveInject(i1.ContextService), i0.ɵɵdirectiveInject(i2.RecipeDetailsService), i0.ɵɵdirectiveInject(i1.SponsorBlockService), i0.ɵɵdirectiveInject(i1.AnalyticsService)); };
|
|
542
479
|
RecipeDetailsComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeDetailsComponent, selectors: [["ng-miam-recipe-details"]], viewQuery: function RecipeDetailsComponent_Query(rf, ctx) { if (rf & 1) {
|
|
543
480
|
i0.ɵɵviewQuery(_c0, true);
|
|
544
481
|
} if (rf & 2) {
|
|
545
482
|
var _t;
|
|
546
483
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.topContainerImg = _t.first);
|
|
547
|
-
} }, inputs: { recipeId: "recipeId",
|
|
548
|
-
const
|
|
549
|
-
i18n_1 =
|
|
484
|
+
} }, inputs: { recipeId: "recipeId", previewAllowed: "previewAllowed", ingredientsPictures: "ingredientsPictures", forceDisplayTags: "forceDisplayTags", displayTagsIcons: "displayTagsIcons", displayPricing: "displayPricing", displayGuests: "displayGuests", helpButtonAllowed: "helpButtonAllowed", stepsOnLeftSide: "stepsOnLeftSide", cookingTimeAsPrimaryInfo: "cookingTimeAsPrimaryInfo", moreRecipesImageURL: "moreRecipesImageURL", pricingGuestsText: "pricingGuestsText" }, outputs: { recipeAdded: "recipeAdded", recipeError: "recipeError" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 4, vars: 5, consts: function () { var i18n_1; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
|
485
|
+
const MSG_EXTERNAL_1980534847658558954$$LIB__WEB_COMPONENTS_RECIPE_DETAILS_RECIPE_DETAILS_COMPONENT_TS_____2 = goog.getMsg("Ajouter tous les produits");
|
|
486
|
+
i18n_1 = MSG_EXTERNAL_1980534847658558954$$LIB__WEB_COMPONENTS_RECIPE_DETAILS_RECIPE_DETAILS_COMPONENT_TS_____2;
|
|
487
|
+
}
|
|
488
|
+
else {
|
|
489
|
+
i18n_1 = $localize `:␟c7c6add936bdeb9c0b38e45cc453fd3e55528fb4␟1980534847658558954:Ajouter tous les produits`;
|
|
490
|
+
} var i18n_3; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
|
491
|
+
const MSG_EXTERNAL_70397346439942337$$LIB__WEB_COMPONENTS_RECIPE_DETAILS_RECIPE_DETAILS_COMPONENT_TS_____4 = goog.getMsg("Ajouter");
|
|
492
|
+
i18n_3 = MSG_EXTERNAL_70397346439942337$$LIB__WEB_COMPONENTS_RECIPE_DETAILS_RECIPE_DETAILS_COMPONENT_TS_____4;
|
|
550
493
|
}
|
|
551
494
|
else {
|
|
552
|
-
|
|
553
|
-
} var
|
|
554
|
-
const
|
|
555
|
-
|
|
495
|
+
i18n_3 = $localize `:␟8aa969e69241c7c5838b40348f913519d6349371␟70397346439942337:Ajouter`;
|
|
496
|
+
} var i18n_5; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
|
497
|
+
const MSG_EXTERNAL_5144484951400113194$$LIB__WEB_COMPONENTS_RECIPE_DETAILS_RECIPE_DETAILS_COMPONENT_TS______6 = goog.getMsg("produit");
|
|
498
|
+
i18n_5 = MSG_EXTERNAL_5144484951400113194$$LIB__WEB_COMPONENTS_RECIPE_DETAILS_RECIPE_DETAILS_COMPONENT_TS______6;
|
|
556
499
|
}
|
|
557
500
|
else {
|
|
558
|
-
|
|
559
|
-
} var
|
|
560
|
-
const
|
|
561
|
-
|
|
501
|
+
i18n_5 = $localize `:␟84c216d92afc9edd2b3bd2175d38197737ff86c5␟5144484951400113194:produit`;
|
|
502
|
+
} var i18n_7; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
|
503
|
+
const MSG_EXTERNAL_1112144680738962826$$LIB__WEB_COMPONENTS_RECIPE_DETAILS_RECIPE_DETAILS_COMPONENT_TS______8 = goog.getMsg("produits");
|
|
504
|
+
i18n_7 = MSG_EXTERNAL_1112144680738962826$$LIB__WEB_COMPONENTS_RECIPE_DETAILS_RECIPE_DETAILS_COMPONENT_TS______8;
|
|
562
505
|
}
|
|
563
506
|
else {
|
|
564
|
-
|
|
565
|
-
}
|
|
566
|
-
|
|
567
|
-
|
|
507
|
+
i18n_7 = $localize `:␟2571d7fbaeed8646df6ee852fb5d94185b0efd88␟1112144680738962826:produits`;
|
|
508
|
+
} var i18n_9; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
|
509
|
+
const MSG_EXTERNAL_2001694451572573558$$LIB__WEB_COMPONENTS_RECIPE_DETAILS_RECIPE_DETAILS_COMPONENT_TS____10 = goog.getMsg("Continuer mes courses");
|
|
510
|
+
i18n_9 = MSG_EXTERNAL_2001694451572573558$$LIB__WEB_COMPONENTS_RECIPE_DETAILS_RECIPE_DETAILS_COMPONENT_TS____10;
|
|
511
|
+
}
|
|
512
|
+
else {
|
|
513
|
+
i18n_9 = $localize `:␟0e81a4e1efd31ae65483ef21f4fa59c2dce0e6f1␟2001694451572573558:Continuer mes courses`;
|
|
514
|
+
} return [["class", "miam-recipe-details", 4, "ngIf"], [3, "recipe", "hideAddon", 4, "ngIf"], [3, "recipe", "basketEntry", "ingredient", "ignoreSelected", "selected", 4, "ngIf"], [1, "miam-recipe-details"], ["class", "miam-ds-loader miam-recipe-details__loader", 4, "ngIf"], ["class", "miam-recipe-details__container", 4, "ngIf"], [1, "miam-ds-loader", "miam-recipe-details__loader"], [1, "miam-recipe-details__container"], [1, "miam-recipe-details__sponsor"], [3, "hasStorytelling", "recipe", "showAddon", 4, "ngIf"], [1, "miam-recipe-details__picture"], ["topContainerImg", ""], [1, "miam-recipe-details__banner_buttons"], [1, "miam-recipe-details__top-button-wrapper"], [1, "miam-recipe-details__close-button", "miam-ds-button", "square", "primary", "reverse", 3, "click"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/Cross_primary.svg", "alt", "modal close button", 1, "miam-recipe-details__close-icon"], [1, "miam-recipe-details__mobile-header-buttons"], [1, "miam-recipe-details__back-button", "miam-ds-button", "square", "primary", "reverse", 3, "click"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/chevron-down-primary.svg", "alt", "modal back button", 1, "miam-recipe-details__back-icon"], [1, "miam-recipe-details__like-button", 3, "recipe"], [1, "miam-recipe-details__guest-counter", 3, "floating", "value", "minRange", "valueChange"], ["alt", "recipe picture", "class", "miam-recipe-details__picture-img", 3, "src", 4, "ngIf"], [3, "videoId", "width", "height", "playerVars", 4, "ngIf"], ["class", "miam-recipe-details__picture__filigrane", 4, "ngIf"], ["ngMiamReachTop", "", 1, "miam-recipe-details__title-container"], [1, "miam-recipe-details__back-button-mobile-container"], [1, "miam-recipe-details__back-button", "miam-ds-button", "small", "square", "ghost", 3, "click"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/chevron-down-primary.svg", "alt", "modal close button", 1, "miam-recipe-details__back-icon"], [1, "miam-recipe-details__title", "miam-ds-text", "size-xl", "weight-xxl"], [1, "miam-recipe-details__actions__icon"], ["class", "miam-recipe-details__like-button", 3, "recipe", "originTrace", "width", "height", 4, "ngIf"], [1, "miam-recipe-details__hideable-actions"], [1, "miam-recipe-details__close-button", "miam-ds-button", "square", "ghost", 3, "click"], ["alt", "modal close button", "src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/Cross_primary.svg", 1, "miam-recipe-details__close-icon"], [1, "miam-recipe-details__infos", 3, "recipe"], [1, "miam-recipe-details__tabs"], [3, "tabs", "selectedTabIndex", "selectedTabIndexChange"], [4, "ngIf"], ["class", "miam-recipe-details__preparation-tab", 4, "ngIf"], [1, "miam-recipe-details__footer"], ["class", "miam-recipe-details__add-to-basket-cta miam-ds-button primary", 3, "click", 4, "ngIf"], ["class", "miam-recipe-details__add-to-basket-cta miam-ds-button primary", 4, "ngIf"], ["class", "miam-ds-button secondary", 3, "click", 4, "ngIf"], [3, "recipeId", "serves", "guestsText", 4, "ngIf"], [3, "hasStorytelling", "recipe", "showAddon"], ["alt", "recipe picture", 1, "miam-recipe-details__picture-img", 3, "src"], [3, "videoId", "width", "height", "playerVars"], [1, "miam-recipe-details__picture__filigrane"], ["alt", "filigrane logo", 3, "src"], [1, "miam-recipe-details__like-button", 3, "recipe", "originTrace", "width", "height"], [1, "miam-recipe-details__preparation-tab"], [3, "ingredients"], [3, "recipe"], [1, "miam-recipe-details__add-to-basket-cta", "miam-ds-button", "primary", 3, "click"], ["alt", "basket icon", "src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/Basket.svg"], ["class", "miam-recipe-details__add-to-basket-cta__text", 4, "ngIf", "ngIfElse"], ["addRemainingProducts", ""], [1, "miam-recipe-details__add-to-basket-cta__text"], i18n_1, i18n_3, i18n_5, i18n_7, [1, "miam-recipe-details__add-to-basket-cta", "miam-ds-button", "primary"], [1, "miam-ds-loader"], [1, "miam-ds-button", "secondary", 3, "click"], i18n_9, [3, "recipeId", "serves", "guestsText"], [3, "recipe", "hideAddon"], [3, "recipe", "basketEntry", "ingredient", "ignoreSelected", "selected"]]; }, template: function RecipeDetailsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
515
|
+
i0.ɵɵtemplate(0, RecipeDetailsComponent_div_0_Template, 5, 6, "div", 0);
|
|
516
|
+
i0.ɵɵpipe(1, "async");
|
|
517
|
+
i0.ɵɵtemplate(2, RecipeDetailsComponent_ng_miam_recipe_addon_2_Template, 1, 1, "ng-miam-recipe-addon", 1);
|
|
518
|
+
i0.ɵɵtemplate(3, RecipeDetailsComponent_ng_miam_replace_item_3_Template, 1, 4, "ng-miam-replace-item", 2);
|
|
568
519
|
} if (rf & 2) {
|
|
569
|
-
|
|
570
|
-
i0.ɵɵ
|
|
571
|
-
} }, directives: [i5.NgIf, i6.IconComponent, i7.RecipeDetailsIngredientsComponent, i8.AddonLinkComponent, i5.NgClass, i9.YouTubePlayer, i10.LikeButtonComponent, i11.RecipeDetailsInfosComponent, i12.RecipeDetailsStepsComponent, i13.RecipePricingComponent, i14.LoaderComponent, i15.RecipeAddonComponent], pipes: [i5.AsyncPipe], styles: [".miam-recipe-details{display:flex;flex-direction:column;height:100vh;width:100%}.miam-recipe-details .miam-recipe-details__title{font-size:32px;font-weight:700;line-height:40px;margin-left:112px;max-width:calc(100% - 352px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.miam-recipe-details .miam-recipe-details__header{align-items:center;background-color:var(--m-color-white);box-shadow:0 1px 0 #e9e9e9;display:flex;flex-direction:row;height:80px;justify-content:space-between;position:relative;width:100%}.miam-recipe-details .miam-recipe-details__header .miam-recipe-details__bookmark{height:126px;left:20px;position:absolute;top:0;width:72px;z-index:1}@media (min-width:1023px){.miam-recipe-details .miam-recipe-details__header .miam-recipe-details__bookmark img{height:100%}}.miam-recipe-details .miam-recipe-details__header .miam-recipe-details__header__link{cursor:pointer;font-size:14px;line-height:20px;margin-right:64px}.miam-recipe-details .miam-recipe-details__container{display:flex;flex-direction:row;height:calc(100% - 80px);width:100%}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary{border-right:1px solid #e9e9e9;display:flex;margin-bottom:80px;width:60%}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container{display:flex;flex-direction:column;width:100%}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container ng-miam-recipe-details-infos{flex-grow:1}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__picture{height:auto;max-height:48vh;position:relative;width:100%}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__picture img{-o-object-fit:cover;height:100%;object-fit:cover;width:100%}@media (min-width:1023px){.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__picture img{max-height:calc(100vh - 396px)}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__picture img.sponsor{max-height:calc(100vh - 504px)}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__picture img.tags{max-height:calc(100vh - 476px)}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__picture img.sponsor.tags{max-height:calc(100vh - 584px)}}@media (min-width:1023px) and (max-height:816px){.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__picture img.sponsor.tags{max-height:232px}}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__picture .miam-recipe-details__picture__filigrane{align-items:flex-end;bottom:16px;display:flex;height:64px;justify-content:flex-end;order:2;position:absolute;right:16px;width:124px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__picture .miam-recipe-details__picture__filigrane img{-o-object-fit:contain;height:auto;max-height:100%;max-width:100%;object-fit:contain;width:auto}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__actionbar{background-color:var(--m-color-white);display:flex;filter:drop-shadow(0 8px 28px rgba(0,0,0,.07));flex-direction:row;justify-content:space-between}@media print{.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__actionbar{display:none}}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__actionbar .miam-recipe-details__actionbar__group{display:flex;flex-direction:row}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__actionbar .miam-recipe-details__actionbar__group .miam-recipe-details__actions__icon{-webkit-tap-highlight-color:transparent;align-items:center;cursor:pointer;display:flex;height:40px;justify-content:center;margin:8px 16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__action__container{background-color:var(--m-color-white);bottom:0;box-shadow:0 -1px 0 #e9e9e9,0 1px 0 #e9e9e9;display:flex;flex-direction:row;height:80px;justify-content:center;left:0;position:absolute;right:40%;z-index:2}@media print{.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__action__container{display:none}}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__action__container .miam-recipe-details__price{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;position:relative;width:34%}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__action__container .miam-recipe-details__price .miam-recipe-pricing__wrapper{color:var(--m-color-primary);flex-direction:row}@media (max-width:1022px){.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__action__container .miam-recipe-details__price .miam-recipe-pricing__wrapper{display:flex;flex-direction:column}}@media print{.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__action__container .miam-recipe-details__price .miam-recipe-pricing__wrapper{display:none}}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__action__container .miam-recipe-details__price .miam-recipe-pricing__wrapper .miam-recipe-pricing__wrapper__price{font-size:20px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__action__container .miam-recipe-details__price .miam-recipe-pricing__wrapper .miam-recipe-pricing__wrapper__subline{font-size:14px;margin-left:12px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__action__container .miam-recipe-details__addbasket{align-items:center;background-color:var(--m-color-secondary);color:var(--m-color-white);cursor:pointer;display:flex;font-size:19px;font-weight:700;justify-content:center;width:66%}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__action__container .miam-recipe-details__addbasket .miam-recipe-details__addbasket__cta{display:flex;flex-direction:row}@media print{.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__action__container .miam-recipe-details__addbasket{display:none}}@media (min-width:1022px){.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__action__container .miam-recipe-details__addbasket:hover{background-color:var(--m-color-secondary-dark)}}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__action__container .miam-recipe-details__addbasket ng-miam-icon{margin-left:16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__action__container .miam-recipe-details__addbasket .miam-loader{border:var(--m-loader-thickness) solid transparent;border-top:var(--m-loader-thickness) solid var(--m-color-white);height:24px;width:24px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__content{background-color:var(--m-color-white);display:flex;flex-direction:column;height:100%;overflow-y:auto;padding:24px 24px 0;width:40%}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__content .miam-recipe-details__content__description{color:var(--m-color-grey-text-dark);display:flex;flex-direction:column;font-size:16px;line-height:20px;margin-bottom:40px;text-align:left;word-break:break-word}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__content ng-miam-recipe-details-ingredients{margin-bottom:40px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__content .miam-recipe-details__content__image,.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__content .miam-recipe-details__content__image img{width:100%}@media print{.miam-recipe-details{height:unset!important}}@media (max-width:1023px){.miam-recipe-details .miam-recipe-details__header{height:48px}.miam-recipe-details .miam-recipe-details__header .miam-recipe-details__bookmark{left:16px;top:4px}.miam-recipe-details .miam-recipe-details__header .miam-recipe-details__title{font-size:16px;font-weight:900;line-height:20px;margin-left:64px;max-width:calc(100% - 200px)}}@media print and (max-width:1023px){.miam-recipe-details .miam-recipe-details__header .miam-recipe-details__title{margin-left:112px}}@media (max-width:1023px){.miam-recipe-details .miam-recipe-details__header .miam-recipe-details__header__link{display:none}.miam-recipe-details .miam-recipe-details__container{flex-direction:column;overflow-y:auto}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary{height:100%;margin-bottom:8px;width:100%}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__actionbar{filter:unset}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__summary .miam-recipe-details__summary__container .miam-recipe-details__action__container{position:fixed;right:0;width:100%}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__content{height:100%;overflow-y:unset;padding:0 24px;width:100%}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__content .miam-recipe-details__title{-webkit-box-orient:vertical;-webkit-line-clamp:2;display:-webkit-box;font-size:24px;line-height:28px;margin:0;max-width:unset;overflow:hidden;text-overflow:ellipsis;white-space:unset;width:100%}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__content .miam-recipe-details__content__description{margin:16px 0 0}}"], encapsulation: 2, changeDetection: 0 });
|
|
520
|
+
i0.ɵɵproperty("ngIf", ctx.showDetail && !i0.ɵɵpipeBind1(1, 3, ctx.recipeDetailsService.basketEntryToReplace$));
|
|
521
|
+
i0.ɵɵadvance(2);
|
|
522
|
+
i0.ɵɵproperty("ngIf", !ctx.showDetail);
|
|
523
|
+
i0.ɵɵadvance(1);
|
|
524
|
+
i0.ɵɵproperty("ngIf", ctx.recipeDetailsService.basketEntryToReplace$.value);
|
|
525
|
+
} }, directives: [i3.NgIf, i4.LikeButtonComponent, i5.CounterInputComponent, i6.ReachTopDirective, i7.RecipeDetailsInfosComponent, i8.SliderTabsComponent, i9.AddonLinkComponent, i10.YouTubePlayer, i11.ProductsPickerComponent, i12.RecipeDetailsIngredientsComponent, i13.RecipeDetailsStepsComponent, i14.RecipePricingComponent, i15.RecipeAddonComponent, i16.ReplaceItemComponent], pipes: [i3.AsyncPipe], styles: [".miam-recipe-details{margin-bottom:80px;min-height:100vh}.miam-recipe-details .miam-recipe-details__loader{background-position-x:20px;background-size:20px 20px;bottom:0;height:40px;left:0;margin:auto;position:absolute;right:0;top:0;width:40px}.miam-recipe-details .miam-recipe-details__container{position:relative}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture{display:flex;max-height:600px;position:relative}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons{align-items:flex-end;bottom:16px;display:flex;flex-direction:row;gap:24px;justify-content:space-between;left:16px;position:absolute;right:16px;top:16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper{flex:1;height:100%;width:100%}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__close-button{display:none}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__mobile-header-buttons{display:flex;height:100%;justify-content:space-between}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__mobile-header-buttons .miam-recipe-details__back-button{border-radius:100%;height:40px;position:sticky;top:16px;transform:rotate(90deg);width:40px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__mobile-header-buttons .miam-recipe-details__back-button .miam-recipe-details__back-icon{display:block}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__mobile-header-buttons .miam-recipe-details__back-button:hover img.miam-recipe-details__back-icon{content:url(https://storage.googleapis.com/assets.miam.tech/generic/icons/chevron-down-white.svg)}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__mobile-header-buttons .miam-recipe-details__like-button{position:absolute;right:0;top:0}@media (min-width:1023px){.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons{bottom:24px;flex-direction:column;left:24px;right:24px;top:24px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper{width:inherit}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__mobile-header-buttons{display:none}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__close-button{display:flex;position:sticky;position:-webkit-sticky;top:24px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__close-button:hover img.miam-recipe-details__close-icon{content:url(https://storage.googleapis.com/assets.miam.tech/generic/icons/Cross.svg)}}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__picture-img{-o-object-fit:cover;-o-object-position:center;max-height:100%;object-fit:cover;object-position:center;width:100%}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container{align-items:center;background:var(--miam-ds-color-neutral-white,#fff);display:flex;justify-content:space-between;overflow:hidden;padding:16px;position:sticky;top:-1px;transition:padding .3s;z-index:2}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__back-button-mobile-container{display:none}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__title{color:var(--miam-ds-color-neutral-black,#1f3543);transition:font-size .3s;width:100%}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__actions__icon{align-items:center;display:flex;justify-content:center;position:absolute;right:16px;top:16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__actions__icon .miam-recipe-details__hideable-actions{max-width:0;transition:max-width .3s}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__actions__icon .miam-recipe-details__close-button{margin-left:16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned{padding:12px 16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__title{font-size:20px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__actions__icon{position:relative;right:unset;top:unset}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__actions__icon .miam-recipe-details__like-button{margin-left:8px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__actions__icon .miam-recipe-details__hideable-actions{max-width:64px}@media (max-width:1024px){.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container{justify-content:flex-start}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__back-button-mobile-container{align-items:center;display:flex;justify-content:center;max-width:0;overflow:hidden;transition:max-width .3s}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__back-button-mobile-container .miam-recipe-details__back-icon{transform:rotate(90deg)}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__title{font-size:20px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__actions__icon{max-width:0;overflow:hidden;transition:max-width .3s}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__hideable-actions{display:none}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned{padding:4px 16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__back-button-mobile-container{max-width:48px;overflow:visible}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__back-button-mobile-container .miam-recipe-details__back-button{height:40px;margin-right:8px;width:40px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__title{font-size:14px;font-weight:500}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__actions__icon{max-width:70px}}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__infos{display:block;padding:8px 16px 16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__tabs{padding:8px 16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer{align-items:center;background:var(--miam-ds-color-neutral-white,#fff);border-top:1px solid var(--miam-ds-color-neutral-200,#d9dde1);bottom:0;display:flex;flex-direction:row-reverse;justify-content:space-between;padding:16px;position:fixed;width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available;z-index:2}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer .miam-recipe-details__add-to-basket-cta{display:flex;gap:8px}@media (max-width:1024px){.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer .miam-recipe-details__add-to-basket-cta.miam-ds-button.primary:hover{background-color:var(--miam-ds-color-primary)}}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer .miam-recipe-details__add-to-basket-cta .miam-recipe-details__add-to-basket-cta__text{display:flex;gap:4px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer ng-miam-recipe-pricing .miam-recipe-pricing__wrapper{align-items:flex-end}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer ng-miam-recipe-pricing .miam-recipe-pricing__wrapper .miam-recipe-pricing__wrapper__price{color:var(--miam-ds-color-primary-700);margin-right:4px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__preparation-tab{display:flex;flex-direction:column;gap:24px;padding:16px}"], encapsulation: 2, changeDetection: 0 });
|
|
572
526
|
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(RecipeDetailsComponent, [{
|
|
573
527
|
type: Component,
|
|
574
528
|
args: [{
|
|
@@ -578,9 +532,7 @@ RecipeDetailsComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeDetailsCompo
|
|
|
578
532
|
encapsulation: ViewEncapsulation.None,
|
|
579
533
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
580
534
|
}]
|
|
581
|
-
}], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.RecipesService }, { type: i1.
|
|
582
|
-
type: Input
|
|
583
|
-
}], forcedRecipe: [{
|
|
535
|
+
}], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.RecipesService }, { type: i1.BasketsService }, { type: i1.UserService }, { type: i1.PointOfSalesService }, { type: i1.ContextService }, { type: i2.RecipeDetailsService }, { type: i1.SponsorBlockService }, { type: i1.AnalyticsService }]; }, { recipeId: [{
|
|
584
536
|
type: Input
|
|
585
537
|
}], previewAllowed: [{
|
|
586
538
|
type: Input
|
|
@@ -592,8 +544,6 @@ RecipeDetailsComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeDetailsCompo
|
|
|
592
544
|
type: Input
|
|
593
545
|
}], displayPricing: [{
|
|
594
546
|
type: Input
|
|
595
|
-
}], displayAddedOnPicture: [{
|
|
596
|
-
type: Input
|
|
597
547
|
}], displayGuests: [{
|
|
598
548
|
type: Input
|
|
599
549
|
}], helpButtonAllowed: [{
|
|
@@ -614,4 +564,4 @@ RecipeDetailsComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeDetailsCompo
|
|
|
614
564
|
type: ViewChild,
|
|
615
565
|
args: ['topContainerImg']
|
|
616
566
|
}] }); })();
|
|
617
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWRldGFpbHMvcmVjaXBlLWRldGFpbHMuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtZGV0YWlscy9yZWNpcGUtZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsS0FBSyxFQUNMLGlCQUFpQixFQUNqQixNQUFNLEVBQ04sWUFBWSxFQUVaLFNBQVMsRUFDVCxVQUFVLEVBR1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwSyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQW9CLE1BQU0sbUNBQW1DLENBQUM7QUFDdkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDMUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFn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QTZCLGlCQUFBOztrREQwQ3JCLHNCQUFzQjtjQVBsQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtnQkFDbEMsV0FBVyxFQUFFLGlDQUFpQztnQkFDOUMsU0FBUyxFQUFFLENBQUMsaUNBQWlDLENBQUM7Z0JBQzlDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDt5WEFFVSxRQUFRO2tCQUFoQixLQUFLO1lBQ0csWUFBWTtrQkFBcEIsS0FBSztZQUNHLGNBQWM7a0JBQXRCLEtBQUs7WUFDRyxtQkFBbUI7a0JBQTNCLEtBQUs7WUFDRyxnQkFBZ0I7a0JBQXhCLEtBQUs7WUFDRyxnQkFBZ0I7a0JBQXhCLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0cscUJBQXFCO2tCQUE3QixLQUFLO1lBQ0csYUFBYTtrQkFBckIsS0FBSztZQUNHLGlCQUFpQjtrQkFBekIsS0FBSztZQUNHLGVBQWU7a0JBQXZCLEtBQUs7WUFDRyx3QkFBd0I7a0JBQWhDLEtBQUs7WUFDRyxtQkFBbUI7a0JBQTNCLEtBQUs7WUFDRyxpQkFBaUI7a0JBQXpCLEtBQUs7WUFDSSxXQUFXO2tCQUFwQixNQUFNO1lBQ0csV0FBVztrQkFBcEIsTUFBTTtZQUd1QixlQUFlO2tCQUE1QyxTQUFTO21CQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbnB1dCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVjaXBlIH0gZnJvbSAnLi4vLi4vX21vZGVscy9yZWNpcGUnO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gJy4uLy4uL190eXBlcy9pY29uLmVudW0nO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UsIEdyb2Nlcmllc0xpc3RzU2VydmljZSwgUG9pbnRPZlNhbGVzU2VydmljZSwgUmVjaXBlRXZlbnRzU2VydmljZSwgUmVjaXBlc1NlcnZpY2UsIFNwb25zb3JCbG9ja1NlcnZpY2UsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IGZvcmtKb2luLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwV2hpbGUsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWVkaWFNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlLCBDdXN0b21Qcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IEV2ZW50VHJhY2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vX2NvbXBvbmVudHMvYWJzdHJhY3RzL2V2ZW50LXRyYWNlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVzc2FnZVR5cGUgfSBmcm9tICcuLi8uLi9fdHlwZXMvbWVzc2FnZS10eXBlLmVudW0nO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMvdG9hc3Rlci5zZXJ2aWNlJztcblxuY29uc3QgcmVjaXBlSW5jbHVkZXMgPSBbJ2luZ3JlZGllbnRzJywgJ3RhZ3MnLCAncmVjaXBlLXN0ZXBzJywgJ3Nwb25zb3JzJ107XG5jb25zdCByZWNpcGVTcGFyc2VGaWVsZHMgPSB7XG4gIHJlY2lwZXM6IFsndGl0bGUnLCAnaW5mb3JtYXRpb25hbC1zZW50ZW5jZScsICdtZWRpYS11cmwnLCAndmlkZW8taWQnLCAnZmlsaWdyYW5lLWxvZ28tdXJsJywgJ251bWJlci1vZi1ndWVzdHMnLCAnZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgJ2luZm9ybWF0aW9uYWwtcGFnZS1odG1sJywgJ2RpZmZpY3VsdHknLCAncHJlcGFyYXRpb24tdGltZScsICdjb29raW5nLXRpbWUnLCAncmVzdGluZy10aW1lJywgLi4ucmVjaXBlSW5jbHVkZXNdLFxuICBpbmdyZWRpZW50czogWyduYW1lJywgJ3F1YW50aXR5JywgJ3VuaXQnLCAnYWN0aXZlJywgJ2ZvcmNlZC1lYW5zJywgJ3BpY3R1cmUtdXJsJywgJ3Bvc2l0aW9uJ10sXG4gIHRhZ3M6IFsndGFnLXR5cGUtaWQnLCAnaWNvbi11cmwnLCAnbmFtZSddLFxuICAncmVjaXBlLXN0ZXBzJzogWydkZXNjcmlwdGlvbicsICdzdGVwLW51bWJlciddLFxuICBzcG9uc29yczogWydsb2dvLXVybCddXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLXJlY2lwZS1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlY2lwZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVjaXBlLWRldGFpbHMuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUmVjaXBlRGV0YWlsc0NvbXBvbmVudCBleHRlbmRzIEV2ZW50VHJhY2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSByZWNpcGVJZDogc3RyaW5nO1xuICBASW5wdXQoKSBmb3JjZWRSZWNpcGU6IFJlY2lwZTtcbiAgQElucHV0KCkgcHJldmlld0FsbG93ZWQgPSB0cnVlO1xuICBASW5wdXQoKSBpbmdyZWRpZW50c1BpY3R1cmVzID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZvcmNlRGlzcGxheVRhZ3M7IC8vIE92ZXJyaWRlIGdsb2JhbCBzZXR0aW5nIGlmIG5lY2VzYXJ5XG4gIEBJbnB1dCgpIGRpc3BsYXlUYWdzSWNvbnMgPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzcGxheVByaWNpbmcgPSB0cnVlO1xuICBASW5wdXQoKSBkaXNwbGF5QWRkZWRPblBpY3R1cmUgPSB0cnVlO1xuICBASW5wdXQoKSBkaXNwbGF5R3Vlc3RzID0gdHJ1ZTtcbiAgQElucHV0KCkgaGVscEJ1dHRvbkFsbG93ZWQgPSB0cnVlO1xuICBASW5wdXQoKSBzdGVwc09uTGVmdFNpZGUgPSBmYWxzZTsgLy8gSWYgdHJ1ZSwgZGlzcGxheSB0aGUgZGV0YWlsIGluIDQgcXVhcnRlcnMgaW5zdGVhZCBvZiAyIGhhbHZlc1xuICBASW5wdXQoKSBjb29raW5nVGltZUFzUHJpbWFyeUluZm8gPSBmYWxzZTsgLy8gSWYgdHJ1ZSwgZGlzcGxheSB0aGUgY29va2luZyB0aW1lIG5leHQgdG8gdG90YWwgdGltZVxuICBASW5wdXQoKSBtb3JlUmVjaXBlc0ltYWdlVVJMOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByaWNpbmdHdWVzdHNUZXh0ID0gJ3Bhci1wZXJzb25uZSc7XG4gIEBPdXRwdXQoKSByZWNpcGVBZGRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcmVjaXBlRXJyb3I6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHJpbWFyeUJ1dHRvbkNsaWNrZWQkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3RvcENvbnRhaW5lckltZycpIHRvcENvbnRhaW5lckltZzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgcmVjaXBlOiBSZWNpcGU7XG4gIHRhYiA9IDA7XG4gIGlzTW9iaWxlID0gZmFsc2U7XG4gIGRpc3BsYXlUYWdzID0gZmFsc2U7XG4gIHNob3dEZXRhaWwgPSB0cnVlO1xuICBpY29uID0gSWNvbjtcbiAgcGxheWVyV2lkdGg7XG4gIHBsYXllckhlaWdodDtcbiAgc2hvd1ZpZGVvO1xuICBhZGRCdXR0b25Mb2FkaW5nID0gZmFsc2U7XG4gIHRpdGxlSW5IZWFkZXIgPSBmYWxzZTtcbiAgc3BvbnNvckhhc1N0b3J5dGVsbGluZyA9IGZhbHNlO1xuICB0aXRsZTogSFRNTEVsZW1lbnQ7XG4gIGNvbnRlbnQ6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGludGVyc2VjdGlvbk9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcbiAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyByZWNpcGVTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwdWJsaWMgZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlOiBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsXG4gICAgcHVibGljIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcG9zU2VydmljZTogUG9pbnRPZlNhbGVzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZUV2ZW50c1NlcnZpY2U6IFJlY2lwZUV2ZW50c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZWRpYU1hdGNoZXI6IE1lZGlhTWF0Y2hlcixcbiAgICBwdWJsaWMgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RlclNlcnZpY2U6IFRvYXN0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3BvbnNvckJsb2Nrc1NlcnZpY2U6IFNwb25zb3JCbG9ja1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoYW5hbHl0aWNzU2VydmljZSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UuaXNTbWFsbFNjcmVlbiQuc3Vic2NyaWJlKGlzU21hbGwgPT4ge1xuICAgICAgICB0aGlzLmlzTW9iaWxlID0gaXNTbWFsbDtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnJlY2lwZUlkICYmIHRoaXMucmVjaXBlSWQgJiYgdGhpcy5yZWNpcGVJZC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJlY2lwZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMuZmV0Y2hSZWNpcGUoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZiAoY2hhbmdlcy5mb3JjZWRSZWNpcGUgJiYgdGhpcy5mb3JjZWRSZWNpcGUpIHtcbiAgICAgICAgdGhpcy5yZWNpcGUgPSB0aGlzLmZvcmNlZFJlY2lwZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuZm9yY2VEaXNwbGF5VGFncyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuZm9yY2VEaXNwbGF5VGFncyAhPT0gdGhpcy5kaXNwbGF5VGFncykge1xuICAgICAgdGhpcy5kaXNwbGF5VGFncyA9IHRoaXMuZm9yY2VEaXNwbGF5VGFncztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmRpc3BsYXlUYWdzID0gdGhpcy5jb250ZXh0U2VydmljZS50YWdzT25SZWNpcGVzRW5hYmxlZDtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RlcHNPbkxlZnRTaWRlKSB7XG4gICAgICB0aGlzLmNvb2tpbmdUaW1lQXNQcmltYXJ5SW5mbyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgZmV0Y2hSZWNpcGUoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5yZWNpcGVTZXJ2aWNlLmdldCh0aGlzLnJlY2lwZUlkLCB7IGluY2x1ZGU6IHJlY2lwZUluY2x1ZGVzLCBmaWVsZHM6IHJlY2lwZVNwYXJzZUZpZWxkcyB9KS5waXBlKFxuICAgICAgc2tpcFdoaWxlKHJlc3VsdCA9PiByZXN1bHQuaXNfbG9hZGluZyksXG4gICAgICB0YXAocmVzdWx0ID0+IHtcbiAgICAgICAgdGhpcy5yZWNpcGUgPSByZXN1bHQ7XG4gICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnRXaGVuUmVhZHkodGhpcy5hbmFseXRpY3NTZXJ2aWNlLkVWRU5UX1JFQ0lQRV9ESVNQTEFZLCB0aGlzLm9yaWdpblRyYWNlLm9yaWdpblBhdGgsIHRoaXMucHJvcHMoKSk7XG4gICAgICAgIHRoaXMucGFnZXZpZXcoKTtcbiAgICAgICAgdGhpcy5zZXR1cFlvdXR1YmVQbGF5ZXIoKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbml0U2Nyb2xsTGlzdGVuZXJPblRpdGxlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5yZWNpcGUuc3BvbnNvcnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zcG9uc29yQmxvY2tzU2VydmljZS5hbGwoe1xuICAgICAgICAgICAgcmVtb3RlZmlsdGVyOiB7ICdzcG9uc29yLWlkJzogdGhpcy5yZWNpcGUuc3BvbnNvcnNbMF0uaWQgfSxcbiAgICAgICAgICAgIHBhZ2U6IHsgbnVtYmVyOiAxLCBzaXplOiAxIH1cbiAgICAgICAgICB9KS5waXBlKFxuICAgICAgICAgICAgc2tpcFdoaWxlKHJlc3VsdCA9PiByZXN1bHQuaXNfbG9hZGluZyksXG4gICAgICAgICAgICB0YXAocmVzdWx0ID0+IHRoaXMuc3BvbnNvckhhc1N0b3J5dGVsbGluZyA9ICEhcmVzdWx0LmRhdGEubGVuZ3RoKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgfSlcbiAgICApLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCkpKTtcbiAgfVxuXG4gIHNldHVwWW91dHViZVBsYXllcigpIHtcbiAgICB0aGlzLnNob3dWaWRlbyA9IGZhbHNlOyAvLyBmb3JjZSByZWxvYWQgdmlkZW8gcGxheWVyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc2hvd1ZpZGVvID0gdGhpcy5jb250ZXh0U2VydmljZS52aWRlb1JlY2lwZXNFbmFibGVkICYmIHRoaXMucmVjaXBlPy52aWRlb0lkO1xuICAgIGlmICh0aGlzLnNob3dWaWRlbykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh3aW5kb3cuWVQ/LlBsYXllcikge1xuICAgICAgICAgIHRoaXMucGxheWVyV2lkdGggPSB0aGlzLnRvcENvbnRhaW5lckltZz8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgdGhpcy5wbGF5ZXJIZWlnaHQgPSAgTWF0aC5taW4od2luZG93LmlubmVySGVpZ2h0ICogMC40OCwgdGhpcy5wbGF5ZXJXaWR0aCAqIDM5MCAvIDY0MCk7XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2V0dXBZb3V0dWJlUGxheWVyKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDUwKTtcbiAgICB9XG4gIH1cblxuICBjdXJyZW50UGF0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZGV0YWlsJztcbiAgfVxuXG4gIHByb3RlY3RlZCBjdXJyZW50UHJvcHMoKTogQ3VzdG9tUHJvcGVydGllcyB7XG4gICAgcmV0dXJuIHsgcmVjaXBlX2lkOiB0aGlzLnJlY2lwZS5pZCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXQgdGhlIGxpc3RlbmVyIG9uIHNjcm9sbCBzbyB0aGUgbW9kYWwgY2FuIGhpZGUgdGhlIGNsb3NlIGljb25cbiAgICovXG4gIGluaXRTY3JvbGxMaXN0ZW5lck9uVGl0bGUoKSB7XG4gICAgaWYgKCF0aGlzLnRpdGxlKSB7XG4gICAgICB0aGlzLnRpdGxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pYW0tcmVjaXBlLWRldGFpbHNfX3RpdGxlJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5jb250ZW50KSB7XG4gICAgICB0aGlzLmNvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWlhbS1yZWNpcGUtZGV0YWlsc19fY29udGVudCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc01vYmlsZSAmJiAhdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlciAmJiB0aGlzLmNvbnRlbnQgJiYgdGhpcy50aXRsZSkge1xuICAgICAgLy8gRm9yIG1vcmUgcHJlY2lzaW9uIG9uIHRpdGxlIHNjcm9sbCBkZXRlY3Rpb24sIHdlIHdhbnQgdG8gdHJpZ2dlciBhbiBldmVudCBlYWNoIHRpbWUgdGhlIHVzZXIgc2Nyb2xscyA1JSBvZiB0aGUgY29udGVudFxuICAgICAgY29uc3QgdGhyZXNob2xkID0gWy4uLkFycmF5KDIwKS5rZXlzKCldLm1hcCh4ID0+IHggLyAyMCk7XG4gICAgICAvLyBSZWNlaXZlIGFuIGV2ZW50IGVhY2ggdGltZSB0aGUgdGl0bGUgZW50ZXJzL2xlYXZlcyB0aGUgdmlld3BvcnRcbiAgICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKFtlbnRyeV0pID0+IHsgdGhpcy50b2dnbGVUaXRsZUluSGVhZGVyKCk7IH0sXG4gICAgICB7IHRocmVzaG9sZCB9KTtcbiAgICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNvbnRlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVRpdGxlSW5IZWFkZXIoKSB7XG4gICAgdGhpcy50aXRsZUluSGVhZGVyID0gdGhpcy50aXRsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgPD0gNDA7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCByZWNpcGUgdG8gbGlzdCBvbiBwcmltYXJ5IGJ1dHRvbiBjbGljayBhbmQgZW1pdCB0cnVlIGlmIHRoZSByZWNpcGUgaXMgYWRkZWQsIGZhbHNlIGlmIHJlY2lwZSBpcyBub3QgYWRkZWRcbiAgICogc28gbGliIHVzZXJzIGNhbiBkZWNpZGUgdGhhdCBwcmltYXJ5QnV0dG9uQ2xpY2tlZCQuZW1pdChmYWxzZSkgcmVtb3ZlcyB0aGUgcmVjaXBlIGZvciBleGFtcGxlXG4gICAqL1xuICBjbGlja1ByaW1hcnkoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFkZEJ1dHRvbkxvYWRpbmcpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICB0aGlzLmdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdCh0aGlzLnJlY2lwZS5pZCkuc3Vic2NyaWJlKHJlY2lwZUlzSW5MaXN0ID0+IHtcbiAgICAgICAgICB0aGlzLmFkZFJlY2lwZSgpO1xuICAgICAgICAgIHRoaXMucHJpbWFyeUJ1dHRvbkNsaWNrZWQkLmVtaXQoIXJlY2lwZUlzSW5MaXN0KTsgLy8gIXJlY2lwZUlzSW5MaXN0ID0gYWRkIGFjdGlvbiwgc28gd2UgZW1pdCB0cnVlXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGFkZFJlY2lwZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZUJ1dHRvbkxvYWRlcih0cnVlKTtcbiAgICBmb3JrSm9pbihbXG4gICAgICB0aGlzLnVzZXJTZXJ2aWNlLmlzTG9nZ2VkJC5hc09ic2VydmFibGUoKS5waXBlKHRha2UoMSkpLFxuICAgICAgdGhpcy5wb3NTZXJ2aWNlLnBvc1dhc0luaXRpYWxpemVkKCkucGlwZSh0YWtlKDEpKVxuICAgIF0pLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgY29uc3QgaXNIb29rT2sgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmhvb2tDYWxsYmFjayhyZXNbMF0sIHJlc1sxXSk7XG4gICAgICBpZiAoaXNIb29rT2spIHtcbiAgICAgICAgdGhpcy5hZGRSZWNpcGVBY3Rpb25PSygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hZGRSZWNpcGVBY3Rpb25LTygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYWRkUmVjaXBlQWN0aW9uT0soKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdCh0aGlzLnJlY2lwZS5pZCkuc3Vic2NyaWJlKHJlY2lwZUlzSW5MaXN0ID0+IHtcbiAgICAgICAgY29uc3QgcmVjaXBlV2FzQWRkZWQgPSAhcmVjaXBlSXNJbkxpc3Q7XG4gICAgICAgIGlmIChyZWNpcGVXYXNBZGRlZCl7XG4gICAgICAgICAgdGhpcy5yZWNpcGVFdmVudHNTZXJ2aWNlLnNlbmRFdmVudCh0aGlzLnJlY2lwZSwgdGhpcy5yZWNpcGVFdmVudHNTZXJ2aWNlLkFDVElPTl9BRERFRCk7XG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICB0aGlzLmdyb2Nlcmllc0xpc3RzU2VydmljZS5hcHBlbmRSZWNpcGVUb0xpc3QodGhpcy5yZWNpcGUuaWQsIHRoaXMucmVjaXBlLm1vZGlmaWVkR3Vlc3RzLCB0aGlzLmV2ZW50VHJhY2UoKSlcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGwgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUJ1dHRvbkxvYWRlcihmYWxzZSk7XG4gICAgICAgICAgICAgIGlmIChyZWNpcGVXYXNBZGRlZCAmJiB0aGlzLnJlY2lwZVNlcnZpY2UuY29uZmlybWF0aW9uVG9hc3Rlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1JlY2lwZVRvYXN0ZXIoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5yZWNpcGVBZGRlZC5lbWl0KCk7XG4gIH1cbiAgc2hvd1JlY2lwZVRvYXN0ZXIoKSB7XG4gICAgdGhpcy50b2FzdGVyU2VydmljZS5zaG93KE1lc3NhZ2VUeXBlLlN1Y2Nlc3MsIHRydWUpO1xuICB9XG5cbiAgYWRkUmVjaXBlQWN0aW9uS08oKTogdm9pZCB7XG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnX21pYW0vY2FjaGVkLXJlY2lwZScsIEpTT04uc3RyaW5naWZ5KHRoaXMucmVjaXBlKSk7XG4gICAgdGhpcy5yZWNpcGVFcnJvci5lbWl0KCk7XG4gIH1cblxuICAvLyBJZiB0aGUgcmVjaXBlIGlzIGFscmVhZHkgaW4gYmFza2V0LCB1cGRhdGUgdGhlIG51bWJlciBvZiBndWVzdHMgKD0gYXBwZW5kIHJlY2lwZSB0byBsaXN0IGFnYWluKVxuICB1cGRhdGVHdWVzdHMoKSB7XG4gICAgdGhpcy5ncm9jZXJpZXNMaXN0c1NlcnZpY2UucmVjaXBlSXNJbkxpc3QodGhpcy5yZWNpcGUuaWQpLnN1YnNjcmliZShyZWNpcGVJc0luTGlzdCA9PiB7XG4gICAgICBpZiAocmVjaXBlSXNJbkxpc3QpIHtcbiAgICAgICAgdGhpcy5ncm9jZXJpZXNMaXN0c1NlcnZpY2UuYXBwZW5kUmVjaXBlVG9MaXN0KHRoaXMucmVjaXBlLmlkLCB0aGlzLnJlY2lwZS5tb2RpZmllZEd1ZXN0cywgdGhpcy5ldmVudFRyYWNlKCkpLnN1YnNjcmliZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTWVhbiB3ZSBzZW5kIGFuIGV2ZW50IGV2ZW4gaWYgcmVjZWlwZSBpcyBub3QgaW4gYmFza2V0XG4gICAgICAgIHRoaXMuc2VuZEV2ZW50KHRoaXMuYW5hbHl0aWNzU2VydmljZS5FVkVOVF9SRUNJUEVfQ0hBTkdFR1VFU1RTKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnJlY2lwZVNlcnZpY2UuZGlzcGxheWVkUmVjaXBlQ2hhbmdlZC5lbWl0KCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpbnQoKSB7XG4gICAgdGhpcy5zZW5kRXZlbnQodGhpcy5hbmFseXRpY3NTZXJ2aWNlLkVWRU5UX1JFQ0lQRV9QUklOVCk7XG4gICAgd2luZG93LnByaW50KCk7XG4gIH1cblxuICB0b2dnbGVBZGRvbigpe1xuICAgIHRoaXMuc2hvd0RldGFpbCA9ICAhdGhpcy5zaG93RGV0YWlsO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHRvZ2dsZUhlbHBlcigpIHtcbiAgICB0aGlzLnJlY2lwZVNlcnZpY2UudG9nZ2xlSGVscGVyKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdG9nZ2xlQnV0dG9uTG9hZGVyKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5hZGRCdXR0b25Mb2FkaW5nID0gdmFsdWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwic2hvd0RldGFpbCBlbHNlIGFkZG9uXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzXCIgI21haW5Db250YWluZXI+XG4gIDwhLS0gSEVBREVSIC0tPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faGVhZGVyXCI+XG4gICAgPCEtLSBCT09LTUFSSyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fYm9va21hcmtcIj5cbiAgICAgIDxpbWcgKm5nSWY9XCIhaXNNb2JpbGUgZWxzZSBzdGFtcFwiXG4gICAgICAgICAgIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvcmVjaXBlLWRldGFpbHMvcmVjaXBlLWRldGFpbHMtYm9va21hcmsuc3ZnXCI+XG4gICAgICA8bmctdGVtcGxhdGUgI3N0YW1wPlxuICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvcmVjaXBlLWRldGFpbHMvcmVjaXBlLWRldGFpbHMtc3RhbXAuc3ZnXCI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gVElUTEUgLSBERVNLVE9QIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX190aXRsZVwiPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhaXNNb2JpbGUgfHwgdGl0bGVJbkhlYWRlclwiPlxuICAgICAgICB7e3JlY2lwZT8uYXR0cmlidXRlc1sndGl0bGUnXX19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBIRUFERVIgTElOSyAtLT5cbiAgICA8YSBpMThuIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faGVhZGVyX19saW5rXCIgW2hyZWZdPVwiY29udGV4dFNlcnZpY2UuY2F0YWxvZ1VybFwiPlxuICAgICAgVm9pciBwbHVzIGQnaWTDqWVzIHJlcGFzXG4gICAgPC9hPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fY29udGFpbmVyXCIgKm5nSWY9XCJyZWNpcGVcIj5cbiAgICA8IS0tIExFRlQgUEFSVCAoVE9QIFBBUlQgT04gTU9CSUxFKSAtLT5cbiAgICA8ZGl2ICN0b3BDb250YWluZXJJbWcgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19zdW1tYXJ5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fc3VtbWFyeV9fY29udGFpbmVyXCI+XG4gICAgICAgIDwhLS0gU1BPTlNPUiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3Nwb25zb3JcIj5cbiAgICAgICAgICA8bmctbWlhbS1hZGRvbi1saW5rICpuZ0lmPVwicmVjaXBlPy5zcG9uc29ycz8ubGVuZ3RoID4gMCB8fCByZWNpcGUuaW5mb3JtYXRpb25hbFNlbnRlbmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoYXNTdG9yeXRlbGxpbmddPVwic3BvbnNvckhhc1N0b3J5dGVsbGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVjaXBlXT0ncmVjaXBlJyAoc2hvd0FkZG9uKT0ndG9nZ2xlQWRkb24oKSc+PC9uZy1taWFtLWFkZG9uLWxpbms+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIFBJQ1RVUkUgLyBWSURFTyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3BpY3R1cmVcIj5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAqbmdJZj1cIiFzaG93VmlkZW9cIlxuICAgICAgICAgICAgW3NyY109XCJyZWNpcGU/LmF0dHJpYnV0ZXNbJ21lZGlhLXVybCddXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3Nwb25zb3InOiByZWNpcGU/LnNwb25zb3JzPy5sZW5ndGggPiAwLCAndGFncyc6IGRpc3BsYXlUYWdzICYmIHJlY2lwZS5yZWxhdGlvbnNoaXBzLnRhZ3MuZGF0YS5sZW5ndGggPiAwIH1cIj5cbiAgICAgICAgICA8eW91dHViZS1wbGF5ZXJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1ZpZGVvICYmIHBsYXllcldpZHRoXCJcbiAgICAgICAgICAgIFt2aWRlb0lkXT1cInJlY2lwZS52aWRlb0lkXCJcbiAgICAgICAgICAgIFt3aWR0aF09XCJwbGF5ZXJXaWR0aFwiXG4gICAgICAgICAgICBbaGVpZ2h0XT1cInBsYXllckhlaWdodFwiXG4gICAgICAgICAgPjwveW91dHViZS1wbGF5ZXI+XG4gICAgICAgICAgPCEtLSBGaWxpZ3JhbmUgbG9nbyAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlLmZpbGlncmFuZUxvZ29VcmxcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3BpY3R1cmVfX2ZpbGlncmFuZVwiPlxuICAgICAgICAgICAgPGltZyBbc3JjXT1cInJlY2lwZS5maWxpZ3JhbmVMb2dvVXJsXCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIEFDVElPTlMgSUNPTlMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19hY3Rpb25iYXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fYWN0aW9uYmFyX19ncm91cFwiPlxuICAgICAgICAgICAgPG5nLW1pYW0tbGlrZS1idXR0b24gKm5nSWY9XCJ1c2VyU2VydmljZS5pc0xvZ2dlZCQgfCBhc3luY1wiIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fYWN0aW9uc19faWNvbiBsaWtlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWNpcGVdPSdyZWNpcGUnIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlKClcIiBbd2lkdGhdPVwiMjRcIiBbaGVpZ2h0XT1cIjI0XCI+XG4gICAgICAgICAgICA8L25nLW1pYW0tbGlrZS1idXR0b24+XG4gICAgICAgICAgICA8bmctbWlhbS1pY29uIChjbGljayk9XCJwcmludCgpXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19hY3Rpb25zX19pY29uIHByaW50XCIgW3dpZHRoXT1cIjI0XCIgW2hlaWdodF09XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlDb2xvcj0ndmFyKC0tbS1jb2xvci1wcmltYXJ5KScgW2ljb25OYW1lXT1cImljb24uUHJpbnRcIj5cbiAgICAgICAgICAgIDwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19hY3Rpb25iYXJfX2dyb3VwXCI+XG4gICAgICAgICAgICA8bmctbWlhbS1pY29uICpuZ0lmPVwiaGVscEJ1dHRvbkFsbG93ZWRcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2FjdGlvbnNfX2ljb24gaGVscFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVIZWxwZXIoKVwiIFt3aWR0aF09XCI0MFwiIFtoZWlnaHRdPVwiNDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3ItZ3JleTAyKScgc2Vjb25kYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3ItZ3JleTA3KSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25OYW1lXT1cImljb24uSGVscFwiPlxuICAgICAgICAgICAgPC9uZy1taWFtLWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIFRJTUVTLCBESUZGSUNVTFRZICYgVEFHUyAtIERFU0tUT1AgLS0+XG4gICAgICAgIDxuZy1taWFtLXJlY2lwZS1kZXRhaWxzLWluZm9zXG4gICAgICAgICAgKm5nSWY9XCIhaXNNb2JpbGVcIlxuICAgICAgICAgIFtyZWNpcGVdPVwicmVjaXBlXCJcbiAgICAgICAgICBbZGlzcGxheVRhZ3NdPVwiZGlzcGxheVRhZ3NcIlxuICAgICAgICAgIFtkaXNwbGF5VGFnc0ljb25zXT1cImRpc3BsYXlUYWdzSWNvbnNcIlxuICAgICAgICAgIFtyZWR1Y2VkXT1cImNvb2tpbmdUaW1lQXNQcmltYXJ5SW5mb1wiPlxuICAgICAgICA8L25nLW1pYW0tcmVjaXBlLWRldGFpbHMtaW5mb3M+XG4gICAgICAgIDwhLS0gU1RFUFMgV0hFTiBRVUFSVEVSIERJU1BMQVkgLS0+XG4gICAgICAgIDxuZy1taWFtLXJlY2lwZS1kZXRhaWxzLXN0ZXBzICpuZ0lmPVwiIWlzTW9iaWxlICYmIHN0ZXBzT25MZWZ0U2lkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWNpcGVdPVwicmVjaXBlXCI+PC9uZy1taWFtLXJlY2lwZS1kZXRhaWxzLXN0ZXBzPlxuXG4gICAgICAgIDwhLS0gUFJJQ0UgJiBQUklNQVJZIENUQSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2FjdGlvbl9fY29udGFpbmVyXCI+XG4gICAgICAgICAgPCEtLSBQUklDRSAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fcHJpY2VcIj5cbiAgICAgICAgICAgIDxuZy1taWFtLXJlY2lwZS1wcmljaW5nXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVjaXBlICYmIGRpc3BsYXlQcmljaW5nXCIgW3JlY2lwZV09XCJyZWNpcGVcIiBbc2VydmVzXT1cInJlY2lwZT8ubW9kaWZpZWRHdWVzdHNcIlxuICAgICAgICAgICAgICBbZ3Vlc3RzVGV4dF09XCJwcmljaW5nR3Vlc3RzVGV4dFwiPlxuICAgICAgICAgICAgPC9uZy1taWFtLXJlY2lwZS1wcmljaW5nPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gUFJJTUFSWSBDVEEgLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByZXZpZXdBbGxvd2VkXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19hZGRiYXNrZXRcIiAoY2xpY2spPVwiY2xpY2tQcmltYXJ5KClcIlxuICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaW4tYmFza2V0JzogKGdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdChyZWNpcGU/LmlkKSB8IGFzeW5jKSwgJ2xvYWRpbmcnOiBhZGRCdXR0b25Mb2FkaW5nfVwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFhZGRCdXR0b25Mb2FkaW5nIGVsc2UgYWRkTG9hZGVyXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19hZGRiYXNrZXRfX2N0YVwiPlxuICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBpMThuICpuZ0lmPVwiKGdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdChyZWNpcGU/LmlkKSB8IGFzeW5jKVwiPlZvaXIgbGVzIHByb2R1aXRzPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGkxOG5cbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiEoZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLnJlY2lwZUlzSW5MaXN0KHJlY2lwZT8uaWQpIHwgYXN5bmMpXCI+QWpvdXRlciBsZXMgaW5ncsOpZGllbnRzPC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxuZy1taWFtLWljb25cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiEoZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLnJlY2lwZUlzSW5MaXN0KHJlY2lwZT8uaWQpIHwgYXN5bmMpXCIgW3dpZHRoXT1cIjI0XCIgW2hlaWdodF09XCIyNFwiXG4gICAgICAgICAgICAgICAgcHJpbWFyeUNvbG9yPScjZmZmJ1xuICAgICAgICAgICAgICAgIFtpY29uTmFtZV09XCJpY29uLkNhcnRcIj5cbiAgICAgICAgICAgICAgPC9uZy1taWFtLWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYWRkTG9hZGVyPlxuICAgICAgICAgICAgICA8bmctbWlhbS1sb2FkZXI+PC9uZy1taWFtLWxvYWRlcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFJJR0hUIFBBUlQgKEJPVFRPTSBQQVJUIE9OIE1PQklMRSkgLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2NvbnRlbnRcIiBpZD1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2NvbnRlbnRcIj5cbiAgICAgIDwhLS0gVElUTEUgLSBNT0JJTEUgLS0+XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNNb2JpbGVcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3RpdGxlXCIgaWQ9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX190aXRsZVwiPlxuICAgICAgICAgIHt7cmVjaXBlPy5hdHRyaWJ1dGVzWyd0aXRsZSddfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gREVTQ1JJUFRJT04gLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlPy5hdHRyaWJ1dGVzLmRlc2NyaXB0aW9uXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19jb250ZW50X19kZXNjcmlwdGlvblwiPlxuICAgICAgICB7eyByZWNpcGU/LmF0dHJpYnV0ZXMuZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBUSU1FUywgRElGRklDVUxUWSAmIFRBR1MgLSBNT0JJTEUgLS0+XG4gICAgICA8bmctbWlhbS1yZWNpcGUtZGV0YWlscy1pbmZvc1xuICAgICAgICAqbmdJZj1cImlzTW9iaWxlXCIgW3JlY2lwZV09XCJyZWNpcGVcIiBbZGlzcGxheVRhZ3NdPVwiZGlzcGxheVRhZ3NcIiBbZGlzcGxheVRhZ3NJY29uc109XCJkaXNwbGF5VGFnc0ljb25zXCJcbiAgICAgICAgW3JlZHVjZWRdPVwiY29va2luZ1RpbWVBc1ByaW1hcnlJbmZvXCI+XG4gICAgICA8L25nLW1pYW0tcmVjaXBlLWRldGFpbHMtaW5mb3M+XG4gICAgICA8IS0tIElOR1JFRElFTlRTIC0tPlxuICAgICAgPG5nLW1pYW0tcmVjaXBlLWRldGFpbHMtaW5ncmVkaWVudHMgW3JlY2lwZV09XCJyZWNpcGVcIiBbaW5ncmVkaWVudHNQaWN0dXJlc109XCJpbmdyZWRpZW50c1BpY3R1cmVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5R3Vlc3RzXT1cImRpc3BsYXlHdWVzdHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGd1ZXN0c1VwZGF0ZWQpPVwidXBkYXRlR3Vlc3RzKClcIj5cbiAgICAgIDwvbmctbWlhbS1yZWNpcGUtZGV0YWlscy1pbmdyZWRpZW50cz5cbiAgICAgIDwhLS0gU1RFUFMgLS0+XG4gICAgICA8bmctbWlhbS1yZWNpcGUtZGV0YWlscy1zdGVwc1xuICAgICAgICAqbmdJZj1cIiEoIWlzTW9iaWxlICYmIHN0ZXBzT25MZWZ0U2lkZSlcIiBbcmVjaXBlXT1cInJlY2lwZVwiPlxuICAgICAgPC9uZy1taWFtLXJlY2lwZS1kZXRhaWxzLXN0ZXBzPlxuICAgICAgPCEtLSBMSU5LIElNQUdFIC0tPlxuICAgICAgPGEgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19jb250ZW50X19pbWFnZVwiIFtocmVmXT1cImNvbnRleHRTZXJ2aWNlLmNhdGFsb2dVcmxcIj5cbiAgICAgICAgPGltZyBbc3JjXT1cIm1vcmVSZWNpcGVzSW1hZ2VVUkxcIj5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjwhLS0gQURET04gLS0+XG48bmctdGVtcGxhdGUgI2FkZG9uPlxuICA8bmctbWlhbS1yZWNpcGUtYWRkb24gW3JlY2lwZV09J3JlY2lwZScgKGhpZGVBZGRvbik9XCJ0b2dnbGVBZGRvbigpXCI+PC9uZy1taWFtLXJlY2lwZS1hZGRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
567
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWRldGFpbHMvcmVjaXBlLWRldGFpbHMuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtZGV0YWlscy9yZWNpcGUtZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRTFGLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGNBQWMsRUFDZCxtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixXQUFXLEVBQ1osTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUU5RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDNUI1Qyx5QkFBa0g7Ozs7SUFJOUcsOENBRzBGO0lBQWpELDhPQUEyQjtJQUFDLGlCQUFxQjs7O0lBRHhGLCtEQUEwQyw4Q0FBQTs7O0lBc0M1QywwQkFLQTs7O0lBRkUsc0pBQTREOzs7SUFFOUQs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ZUFBZTtrQkFBNUMsU0FBUzttQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWVyZ2UsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXBXaGlsZSwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFdmVudFRyYWNlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL19jb21wb25lbnRzL2Fic3RyYWN0cy9ldmVudC10cmFjZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEluZ3JlZGllbnQgfSBmcm9tICcuLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7XG4gIEFuYWx5dGljc1NlcnZpY2UsXG4gIEJhc2tldHNTZXJ2aWNlLFxuICBDb250ZXh0U2VydmljZSxcbiAgUG9pbnRPZlNhbGVzU2VydmljZSxcbiAgUmVjaXBlc1NlcnZpY2UsXG4gIFNwb25zb3JCbG9ja1NlcnZpY2UsXG4gIFVzZXJTZXJ2aWNlXG59IGZyb20gJy4uLy4uL19zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSZWNpcGVEZXRhaWxzU2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy9yZWNpcGUtZGV0YWlscy5zZXJ2aWNlJztcbmltcG9ydCB7IEN1c3RvbVByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi9fdHlwZXMvZXZlbnQtdHJhY2UnO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gJy4uLy4uL190eXBlcy9pY29uLmVudW0nO1xuXG5jb25zdCByZWNpcGVJbmNsdWRlcyA9IFsnaW5ncmVkaWVudHMnLCAndGFncycsICdyZWNpcGUtc3RlcHMnLCAnc3BvbnNvcnMnXTtcbmNvbnN0IHJlY2lwZVNwYXJzZUZpZWxkcyA9IHtcbiAgcmVjaXBlczogWyd0aXRsZScsICdpbmZvcm1hdGlvbmFsLXNlbnRlbmNlJywgJ21lZGlhLXVybCcsICd2aWRlby1pZCcsICdmaWxpZ3JhbmUtbG9nby11cmwnLCAnbnVtYmVyLW9mLWd1ZXN0cycsICdkZXNjcmlwdGlvbicsXG4gICAgJ2luZm9ybWF0aW9uYWwtcGFnZS1odG1sJywgJ2RpZmZpY3VsdHknLCAncHJlcGFyYXRpb24tdGltZScsICdjb29raW5nLXRpbWUnLCAncmVzdGluZy10aW1lJywgLi4ucmVjaXBlSW5jbHVkZXNdLFxuICBpbmdyZWRpZW50czogWyduYW1lJywgJ3F1YW50aXR5JywgJ3VuaXQnLCAnYWN0aXZlJywgJ2ZvcmNlZC1lYW5zJywgJ3BpY3R1cmUtdXJsJywgJ3Bvc2l0aW9uJ10sXG4gIHRhZ3M6IFsndGFnLXR5cGUtaWQnLCAnaWNvbi11cmwnLCAnbmFtZSddLFxuICAncmVjaXBlLXN0ZXBzJzogWydkZXNjcmlwdGlvbicsICdzdGVwLW51bWJlciddLFxuICBzcG9uc29yczogWydsb2dvLXVybCddXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLXJlY2lwZS1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlY2lwZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVjaXBlLWRldGFpbHMuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUmVjaXBlRGV0YWlsc0NvbXBvbmVudCBleHRlbmRzIEV2ZW50VHJhY2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHJlY2lwZUlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByZXZpZXdBbGxvd2VkID0gdHJ1ZTtcbiAgQElucHV0KCkgaW5ncmVkaWVudHNQaWN0dXJlcyA9IGZhbHNlO1xuICBASW5wdXQoKSBmb3JjZURpc3BsYXlUYWdzOiBib29sZWFuOyAvLyBPdmVycmlkZSBnbG9iYWwgc2V0dGluZyBpZiBuZWNlc2FyeVxuICBASW5wdXQoKSBkaXNwbGF5VGFnc0ljb25zID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc3BsYXlQcmljaW5nID0gdHJ1ZTtcbiAgQElucHV0KCkgZGlzcGxheUd1ZXN0cyA9IHRydWU7XG4gIEBJbnB1dCgpIGhlbHBCdXR0b25BbGxvd2VkID0gdHJ1ZTtcbiAgQElucHV0KCkgc3RlcHNPbkxlZnRTaWRlID0gZmFsc2U7IC8vIElmIHRydWUsIGRpc3BsYXkgdGhlIGRldGFpbCBpbiA0IHF1YXJ0ZXJzIGluc3RlYWQgb2YgMiBoYWx2ZXNcbiAgQElucHV0KCkgY29va2luZ1RpbWVBc1ByaW1hcnlJbmZvID0gZmFsc2U7IC8vIElmIHRydWUsIGRpc3BsYXkgdGhlIGNvb2tpbmcgdGltZSBuZXh0IHRvIHRvdGFsIHRpbWVcbiAgQElucHV0KCkgbW9yZVJlY2lwZXNJbWFnZVVSTDogc3RyaW5nO1xuICBASW5wdXQoKSBwcmljaW5nR3Vlc3RzVGV4dCA9ICdwYXItcGVyc29ubmUnO1xuICBAT3V0cHV0KCkgcmVjaXBlQWRkZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHJlY2lwZUVycm9yOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBWaWV3Q2hpbGQoJ3RvcENvbnRhaW5lckltZycpIHRvcENvbnRhaW5lckltZzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIHJlbW92ZWRJbmdyZWRpZW50czogSW5ncmVkaWVudFtdID0gW107XG4gIHRhYiA9IDA7XG4gIGlzTW9iaWxlID0gZmFsc2U7XG4gIGRpc3BsYXlUYWdzID0gZmFsc2U7XG4gIHNob3dEZXRhaWwgPSB0cnVlO1xuICBpY29uID0gSWNvbjtcbiAgcGxheWVyV2lkdGg7XG4gIHBsYXllckhlaWdodDtcbiAgcHJpbWFyeUJ1dHRvbkNsaWNrZWQkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBzaG93VmlkZW87XG4gIGFkZEJ1dHRvbkxvYWRpbmcgPSBmYWxzZTtcbiAgdGl0bGVJbkhlYWRlciA9IGZhbHNlO1xuICBzcG9uc29ySGFzU3Rvcnl0ZWxsaW5nID0gZmFsc2U7XG4gIHRpdGxlOiBIVE1MRWxlbWVudDtcbiAgY29udGVudDogSFRNTEVsZW1lbnQ7XG4gIGFjdGl2ZVRhYkluZGV4ID0gMDtcbiAgcGxheWVyVmFyczogWVQuUGxheWVyVmFycyA9IHtcbiAgICBjb250cm9sczogMSxcbiAgICBtb2Rlc3RicmFuZGluZzogMSxcbiAgICByZWw6IDAsXG4gICAgc2hvd2luZm86IDBcbiAgfTtcbiAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdO1xuICBwcml2YXRlIGludGVyc2VjdGlvbk9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgcmVjaXBlU2VydmljZTogUmVjaXBlc1NlcnZpY2UsXG4gICAgcHVibGljIGJhc2tldHNTZXJ2aWNlOiBCYXNrZXRzU2VydmljZSxcbiAgICBwdWJsaWMgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBwb3NTZXJ2aWNlOiBQb2ludE9mU2FsZXNTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHVibGljIHJlY2lwZURldGFpbHNTZXJ2aWNlOiBSZWNpcGVEZXRhaWxzU2VydmljZSxcbiAgICBwcml2YXRlIHNwb25zb3JCbG9ja3NTZXJ2aWNlOiBTcG9uc29yQmxvY2tTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGFuYWx5dGljc1NlcnZpY2UpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtdO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLmlzU21hbGxTY3JlZW4kLnN1YnNjcmliZShpc1NtYWxsID0+IHtcbiAgICAgICAgdGhpcy5pc01vYmlsZSA9IGlzU21hbGw7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pLFxuICAgICAgbWVyZ2UodGhpcy5yZWNpcGVEZXRhaWxzU2VydmljZS5yZWNpcGVMb2FkaW5nJCwgdGhpcy5yZWNpcGVEZXRhaWxzU2VydmljZS5iYXNrZXRFbnRyeVRvUmVwbGFjZSQpLnN1YnNjcmliZShcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2UucHJvZHVjdHNCeUNhdGVnb3J5JC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKVxuICAgICk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNpcGVJZD8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5mZXRjaFJlY2lwZSh0aGlzLnJlY2lwZUlkKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZm9yY2VEaXNwbGF5VGFncyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuZm9yY2VEaXNwbGF5VGFncyAhPT0gdGhpcy5kaXNwbGF5VGFncykge1xuICAgICAgdGhpcy5kaXNwbGF5VGFncyA9IHRoaXMuZm9yY2VEaXNwbGF5VGFncztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXNwbGF5VGFncyA9IHRoaXMuY29udGV4dFNlcnZpY2UudGFnc09uUmVjaXBlc0VuYWJsZWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0ZXBzT25MZWZ0U2lkZSkge1xuICAgICAgdGhpcy5jb29raW5nVGltZUFzUHJpbWFyeUluZm8gPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLnJlY2lwZURldGFpbHNTZXJ2aWNlLmFsbEluZ3JlZGllbnRzVG9CYXNrZXRMb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgZ2V0UHJvZHVjdHMoKTogdm9pZCB7XG4gICAgdGhpcy5yZWNpcGVEZXRhaWxzU2VydmljZS5wcm9kdWN0c0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2UuZ2V0SW5ncmVkaWVudHNCYXNrZXRFbnRyaWVzKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2UucHJvZHVjdHNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSkpO1xuICB9XG5cbiAgZmV0Y2hSZWNpcGUoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2UucmVjaXBlTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnJlY2lwZVNlcnZpY2UuZ2V0KGlkLCB7XG4gICAgICAgIGluY2x1ZGU6IHJlY2lwZUluY2x1ZGVzLFxuICAgICAgICBmaWVsZHM6IHJlY2lwZVNwYXJzZUZpZWxkc1xuICAgICAgfSkucGlwZShcbiAgICAgICAgc2tpcFdoaWxlKHJlc3VsdCA9PiByZXN1bHQuaXNfbG9hZGluZyksXG4gICAgICAgIHRhcChyZXN1bHQgPT4ge1xuICAgICAgICAgIHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2UucmVjaXBlID0gcmVzdWx0O1xuICAgICAgICAgIHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2UucmVjaXBlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZ2V0UHJvZHVjdHMoKTtcbiAgICAgICAgICB0aGlzLnNlbmREaXNwbGF5UmVjaXBlRXZlbnQoKTtcbiAgICAgICAgICB0aGlzLnNldHVwWW91dHViZVBsYXllcigpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbml0U2Nyb2xsTGlzdGVuZXJPblRpdGxlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnJlY2lwZURldGFpbHNTZXJ2aWNlLnJlY2lwZS5zcG9uc29ycz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3BvbnNvckJsb2Nrc1NlcnZpY2UuYWxsKHtcbiAgICAgICAgICAgICAgcmVtb3RlZmlsdGVyOiB7ICdzcG9uc29yLWlkJzogdGhpcy5yZWNpcGVEZXRhaWxzU2VydmljZS5yZWNpcGUuc3BvbnNvcnNbMF0uaWQgfSxcbiAgICAgICAgICAgICAgcGFnZTogeyBudW1iZXI6IDEsIHNpemU6IDEgfVxuICAgICAgICAgICAgfSkucGlwZShcbiAgICAgICAgICAgICAgc2tpcFdoaWxlKHJlc3VsdCA9PiByZXN1bHQuaXNfbG9hZGluZyksXG4gICAgICAgICAgICAgIHRhcChyZXN1bHQgPT4gdGhpcy5zcG9uc29ySGFzU3Rvcnl0ZWxsaW5nID0gISFyZXN1bHQuZGF0YS5sZW5ndGgpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCkpXG4gICAgKTtcbiAgfVxuXG4gIHNldHVwWW91dHViZVBsYXllcigpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dWaWRlbyA9IGZhbHNlOyAvLyBmb3JjZSByZWxvYWQgdmlkZW8gcGxheWVyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc2hvd1ZpZGVvID0gdGhpcy5jb250ZXh0U2VydmljZS52aWRlb1JlY2lwZXNFbmFibGVkICYmIHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2UucmVjaXBlPy52aWRlb0lkO1xuICAgIGlmICh0aGlzLnNob3dWaWRlbykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh3aW5kb3cuWVQ/LlBsYXllcikge1xuICAgICAgICAgIHRoaXMucGxheWVyV2lkdGggPSB0aGlzLnRvcENvbnRhaW5lckltZz8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgdGhpcy5wbGF5ZXJIZWlnaHQgPSBNYXRoLm1pbih3aW5kb3cuaW5uZXJIZWlnaHQgKiAwLjQ4LCB0aGlzLnBsYXllcldpZHRoICogMzkwIC8gNjQwKTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZXR1cFlvdXR1YmVQbGF5ZXIoKTtcbiAgICAgICAgfVxuICAgICAgfSwgNTApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0IHRoZSBsaXN0ZW5lciBvbiBzY3JvbGwgc28gdGhlIG1vZGFsIGNhbiBoaWRlIHRoZSBjbG9zZSBpY29uXG4gICAqL1xuICBpbml0U2Nyb2xsTGlzdGVuZXJPblRpdGxlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50aXRsZSkge1xuICAgICAgdGhpcy50aXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWFtLXJlY2lwZS1kZXRhaWxzX190aXRsZScpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuY29udGVudCkge1xuICAgICAgdGhpcy5jb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pYW0tcmVjaXBlLWRldGFpbHNfX2NvbnRlbnQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNNb2JpbGUgJiYgIXRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgJiYgdGhpcy5jb250ZW50ICYmIHRoaXMudGl0bGUpIHtcbiAgICAgIC8vIEZvciBtb3JlIHByZWNpc2lvbiBvbiB0aXRsZSBzY3JvbGwgZGV0ZWN0aW9uLCB3ZSB3YW50IHRvIHRyaWdnZXIgYW4gZXZlbnQgZWFjaCB0aW1lIHRoZSB1c2VyIHNjcm9sbHMgNSUgb2YgdGhlIGNvbnRlbnRcbiAgICAgIGNvbnN0IHRocmVzaG9sZCA9IFsuLi5BcnJheSgyMCkua2V5cygpXS5tYXAoeCA9PiB4IC8gMjApO1xuICAgICAgLy8gUmVjZWl2ZSBhbiBldmVudCBlYWNoIHRpbWUgdGhlIHRpdGxlIGVudGVycy9sZWF2ZXMgdGhlIHZpZXdwb3J0XG4gICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgdGhpcy50b2dnbGVUaXRsZUluSGVhZGVyKCk7XG4gICAgICB9LFxuICAgICAgeyB0aHJlc2hvbGQgfSk7XG4gICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLm9ic2VydmUodGhpcy5jb250ZW50KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVUaXRsZUluSGVhZGVyKCk6IHZvaWQge1xuICAgIHRoaXMudGl0bGVJbkhlYWRlciA9IHRoaXMudGl0bGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIDw9IDQwO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHVwZGF0ZUd1ZXN0cyhndWVzdHM6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2UucmVjaXBlLm1vZGlmaWVkR3Vlc3RzID0gZ3Vlc3RzO1xuICAgIHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2UudXBkYXRlR3Vlc3RzKHRoaXMuZXZlbnRUcmFjZSgpKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB0b2dnbGVBZGRvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dEZXRhaWwgPSAhdGhpcy5zaG93RGV0YWlsO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHRvZ2dsZUhlbHBlcigpOiB2b2lkIHtcbiAgICB0aGlzLnJlY2lwZVNlcnZpY2UudG9nZ2xlSGVscGVyKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdG9nZ2xlQnV0dG9uTG9hZGVyKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5hZGRCdXR0b25Mb2FkaW5nID0gdmFsdWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25DbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlY2lwZVNlcnZpY2UuaGlkZSgpO1xuICB9XG5cbiAgcHJpbnQoKTogdm9pZCB7XG4gICAgdGhpcy5zZW5kRXZlbnQodGhpcy5hbmFseXRpY3NTZXJ2aWNlLkVWRU5UX1JFQ0lQRV9QUklOVCk7XG4gICAgd2luZG93LnByaW50KCk7XG4gIH1cblxuICBzZW5kRGlzcGxheVJlY2lwZUV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnRXaGVuUmVhZHkodGhpcy5hbmFseXRpY3NTZXJ2aWNlLkVWRU5UX1JFQ0lQRV9ESVNQTEFZLCB0aGlzLm9yaWdpblRyYWNlLm9yaWdpblBhdGgsIHRoaXMucHJvcHMoKSk7XG4gICAgdGhpcy5wYWdldmlldygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGN1cnJlbnRQcm9wcygpOiBDdXN0b21Qcm9wZXJ0aWVzIHtcbiAgICByZXR1cm4geyByZWNpcGVfaWQ6IHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2UucmVjaXBlLmlkIH07XG4gIH1cblxuICBjdXJyZW50UGF0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZGV0YWlsJztcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cInNob3dEZXRhaWwgJiYgIShyZWNpcGVEZXRhaWxzU2VydmljZS5iYXNrZXRFbnRyeVRvUmVwbGFjZSQgfCBhc3luYylcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNcIj5cbiAgPGRpdiAqbmdJZj1cInJlY2lwZURldGFpbHNTZXJ2aWNlLnJlY2lwZUxvYWRpbmckIHwgYXN5bmNcIiBjbGFzcz1cIm1pYW0tZHMtbG9hZGVyIG1pYW0tcmVjaXBlLWRldGFpbHNfX2xvYWRlclwiPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fY29udGFpbmVyXCIgKm5nSWY9XCIhKHJlY2lwZURldGFpbHNTZXJ2aWNlLnJlY2lwZUxvYWRpbmckIHwgYXN5bmMpXCI+XG4gICAgPCEtLSBTUE9OU09SIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19zcG9uc29yXCI+XG4gICAgICA8bmctbWlhbS1hZGRvbi1saW5rXG4gICAgICAgICpuZ0lmPVwicmVjaXBlRGV0YWlsc1NlcnZpY2UucmVjaXBlPy5zcG9uc29ycz8ubGVuZ3RoID4gMCB8fCByZWNpcGVEZXRhaWxzU2VydmljZS5yZWNpcGUuaW5mb3JtYXRpb25hbFNlbnRlbmNlXCJcbiAgICAgICAgW2hhc1N0b3J5dGVsbGluZ109XCJzcG9uc29ySGFzU3Rvcnl0ZWxsaW5nXCJcbiAgICAgICAgW3JlY2lwZV09J3JlY2lwZURldGFpbHNTZXJ2aWNlLnJlY2lwZScgKHNob3dBZGRvbik9J3RvZ2dsZUFkZG9uKCknPjwvbmctbWlhbS1hZGRvbi1saW5rPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gQkFOTkVSIENPTlRBSU5FUiAtLT5cbiAgICA8ZGl2ICN0b3BDb250YWluZXJJbWcgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19waWN0dXJlXCI+XG4gICAgICA8IS0tIEhFQURFUiBCVVRUT05TIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2Jhbm5lcl9idXR0b25zXCI+XG4gICAgICAgIDwhLS0gVE9QIEJVVFRPTlMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX190b3AtYnV0dG9uLXdyYXBwZXJcIj5cbiAgICAgICAgICA8IS0tIERFU0tUT1AgQ0xPU0UgQlVUVE9OIC0tPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19jbG9zZS1idXR0b24gbWlhbS1kcy1idXR0b24gc3F1YXJlIHByaW1hcnkgcmV2ZXJzZVwiIChjbGljayk9XCJvbkNsb3NlKClcIj5cbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19jbG9zZS1pY29uXCJcbiAgICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Fzc2V0cy5taWFtLnRlY2gvZ2VuZXJpYy9pY29ucy9Dcm9zc19wcmltYXJ5LnN2Z1wiXG4gICAgICAgICAgICAgICAgIGFsdD1cIm1vZGFsIGNsb3NlIGJ1dHRvblwiLz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8IS0tIE1PQklMRSBIRUFERVIgQlVUVE9OUyAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fbW9iaWxlLWhlYWRlci1idXR0b25zXCI+XG4gICAgICAgICAgICA8IS0tIEJBQ0sgQlVUVE9OIE9OIFRIRSBMRUZUIC0tPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2JhY2stYnV0dG9uIG1pYW0tZHMtYnV0dG9uIHNxdWFyZSBwcmltYXJ5IHJldmVyc2VcIiAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19iYWNrLWljb25cIlxuICAgICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvaWNvbnMvY2hldnJvbi1kb3duLXByaW1hcnkuc3ZnXCJcbiAgICAgICAgICAgICAgICAgICBhbHQ9XCJtb2RhbCBiYWNrIGJ1dHRvblwiPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8IS0tIExJS0UgQlVUVE9OIE9OIFRIRSBSSUdIVCAtLT5cbiAgICAgICAgICAgIDxuZy1taWFtLWxpa2UtYnV0dG9uIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fbGlrZS1idXR0b25cIiBbcmVjaXBlXT1cInJlY2lwZURldGFpbHNTZXJ2aWNlLnJlY2lwZVwiPjwvbmctbWlhbS1saWtlLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gR1VFU1QgQ09VTlRFUiAtLT5cbiAgICAgICAgPG5nLW1pYW0tY291bnRlci1pbnB1dFxuICAgICAgICAgIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fZ3Vlc3QtY291bnRlclwiXG4gICAgICAgICAgW2Zsb2F0aW5nXT1cInRydWVcIlxuICAgICAgICAgIFt2YWx1ZV09XCJyZWNpcGVEZXRhaWxzU2VydmljZS5yZWNpcGUubW9kaWZpZWRHdWVzdHNcIlxuICAgICAgICAgIFttaW5SYW5nZV09XCIxXCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwidXBkYXRlR3Vlc3RzKCRldmVudClcIj5cbiAgICAgICAgPlxuICAgICAgICA8L25nLW1pYW0tY291bnRlci1pbnB1dD5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBQSUNUVVJFIC8gVklERU8gLS0+XG4gICAgICA8aW1nXG4gICAgICAgIGFsdD1cInJlY2lwZSBwaWN0dXJlXCJcbiAgICAgICAgKm5nSWY9XCIhc2hvd1ZpZGVvXCJcbiAgICAgICAgW3NyY109XCJyZWNpcGVEZXRhaWxzU2VydmljZS5yZWNpcGU/LmF0dHJpYnV0ZXNbJ21lZGlhLXVybCddXCJcbiAgICAgICAgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19waWN0dXJlLWltZ1wiPlxuICAgICAgPHlvdXR1YmUtcGxheWVyXG4gICAgICAgICpuZ0lmPVwic2hvd1ZpZGVvICYmIHBsYXllcldpZHRoXCJcbiAgICAgICAgW3ZpZGVvSWRdPVwicmVjaXBlRGV0YWlsc1NlcnZpY2UucmVjaXBlLnZpZGVvSWRcIlxuICAgICAgICBbd2lkdGhdPVwicGxheWVyV2lkdGhcIlxuICAgICAgICBbaGVpZ2h0XT1cInBsYXllckhlaWdodFwiXG4gICAgICAgIFtwbGF5ZXJWYXJzXT1cInBsYXllclZhcnNcIlxuICAgICAgPjwveW91dHViZS1wbGF5ZXI+XG4gICAgICA8IS0tIEZpbGlncmFuZSBsb2dvIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cInJlY2lwZURldGFpbHNTZXJ2aWNlLnJlY2lwZS5maWxpZ3JhbmVMb2dvVXJsXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19waWN0dXJlX19maWxpZ3JhbmVcIj5cbiAgICAgICAgPGltZyBhbHQ9XCJmaWxpZ3JhbmUgbG9nb1wiIFtzcmNdPVwicmVjaXBlRGV0YWlsc1NlcnZpY2UucmVjaXBlLmZpbGlncmFuZUxvZ29VcmxcIj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gUkVDSVBFIFRJVExFIENPTlRBSU5FUiAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3RpdGxlLWNvbnRhaW5lclwiXG4gICAgICBuZ01pYW1SZWFjaFRvcD5cbiAgICAgIDwhLS0gQkFDSyBCVVRUT04gKE1PQklMRSkgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fYmFjay1idXR0b24tbW9iaWxlLWNvbnRhaW5lclwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fYmFjay1idXR0b24gbWlhbS1kcy1idXR0b24gc21hbGwgc3F1YXJlIGdob3N0XCIgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPlxuICAgICAgICAgIDxpbWcgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19iYWNrLWljb25cIlxuICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Fzc2V0cy5taWFtLnRlY2gvZ2VuZXJpYy9pY29ucy9jaGV2cm9uLWRvd24tcHJpbWFyeS5zdmdcIlxuICAgICAgICAgICAgICAgYWx0PVwibW9kYWwgY2xvc2UgYnV0dG9uXCIvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBSRUNJUEUgVElUTEUgLS0+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3RpdGxlIG1pYW0tZHMtdGV4dCBzaXplLXhsIHdlaWdodC14eGxcIj57e3JlY2lwZURldGFpbHNTZXJ2aWNlLnJlY2lwZT8uYXR0cmlidXRlc1sndGl0bGUnXX19PC9zcGFuPlxuICAgICAgPCEtLSBSRUNJUEUgQUNUSU9OUyAoTElLRSAvIENMT1NFIE1PREFMKS0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2FjdGlvbnNfX2ljb25cIj5cbiAgICAgICAgPCEtLSBMSUtFIEJVVFRPTiAtLT5cbiAgICAgICAgPG5nLW1pYW0tbGlrZS1idXR0b25cbiAgICAgICAgICBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2xpa2UtYnV0dG9uXCJcbiAgICAgICAgICAqbmdJZj1cInVzZXJTZXJ2aWNlLmlzTG9nZ2VkJCB8IGFzeW5jXCJcbiAgICAgICAgICBbcmVjaXBlXT0ncmVjaXBlRGV0YWlsc1NlcnZpY2UucmVjaXBlJyBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZSgpXCIgW3dpZHRoXT1cIjI0XCIgW2hlaWdodF09XCIyNFwiPlxuICAgICAgICA8L25nLW1pYW0tbGlrZS1idXR0b24+XG4gICAgICAgIDwhLS0gQ0xPU0UgTU9EQUwgQlVUVE9OIChERVNLVE9QKSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2hpZGVhYmxlLWFjdGlvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvbkNsb3NlKClcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2Nsb3NlLWJ1dHRvbiBtaWFtLWRzLWJ1dHRvbiBzcXVhcmUgZ2hvc3RcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgYWx0PVwibW9kYWwgY2xvc2UgYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19jbG9zZS1pY29uXCJcbiAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Fzc2V0cy5taWFtLnRlY2gvZ2VuZXJpYy9pY29ucy9Dcm9zc19wcmltYXJ5LnN2Z1wiLz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tICBSRUNJUEUgQkFTSUMgSU5GT1JNQVRJT05TIC0tPlxuICAgIDxuZy1taWFtLXJlY2lwZS1kZXRhaWxzLWluZm9zIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5mb3NcIiBbcmVjaXBlXT1cInJlY2lwZURldGFpbHNTZXJ2aWNlLnJlY2lwZVwiPjwvbmctbWlhbS1yZWNpcGUtZGV0YWlscy1pbmZvcz5cbiAgICA8IS0tIFRBQlMgVE8gU1dJVENIIEJFVFdFRU4gQkFTS0VUIEFORCBJTlNUUlVDVElPTlMgLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3RhYnNcIj5cbiAgICAgIDxuZy1taWFtLXNsaWRlci10YWJzIFt0YWJzXT1cIlsnSmUgZmFpcyBtZXMgY291cnNlcycsICdKZSBjdWlzaW5lJ11cIiBbKHNlbGVjdGVkVGFiSW5kZXgpXT1cImFjdGl2ZVRhYkluZGV4XCI+PC9uZy1taWFtLXNsaWRlci10YWJzPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gVEFCIEZPUiBQUk9EVUNUUyBQSUNLRVIgLS0+XG4gICAgPG5nLW1pYW0tcHJvZHVjdHMtcGlja2VyICpuZ0lmPVwiYWN0aXZlVGFiSW5kZXggPT09IDBcIiA+PC9uZy1taWFtLXByb2R1Y3RzLXBpY2tlcj5cbiAgICA8IS0tIFRBQiBGT1IgSU5TVFJVQ1RJT05TIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVUYWJJbmRleCA9PT0gMVwiIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fcHJlcGFyYXRpb24tdGFiXCI+XG4gICAgICA8IS0tIFJFQ0lQRSBJTkdSRURJRU5UUyBUWVBFIEFORCBRVUFOVElUSUVTIC0tPlxuICAgICAgPG5nLW1pYW0tcmVjaXBlLWRldGFpbHMtaW5ncmVkaWVudHMgW2luZ3JlZGllbnRzXT1cInJlY2lwZURldGFpbHNTZXJ2aWNlLnJlY2lwZT8ubW9kaWZpZWRJbmdyZWRpZW50c1wiPjwvbmctbWlhbS1yZWNpcGUtZGV0YWlscy1pbmdyZWRpZW50cz5cbiAgICAgIDwhLS0gUkVDSVBFIElOU1RSVUNUSU9OUyAtLT5cbiAgICAgIDxuZy1taWFtLXJlY2lwZS1kZXRhaWxzLXN0ZXBzIFtyZWNpcGVdPVwicmVjaXBlRGV0YWlsc1NlcnZpY2UucmVjaXBlXCI+PC9uZy1taWFtLXJlY2lwZS1kZXRhaWxzLXN0ZXBzPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gRk9PVEVSIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19mb290ZXJcIj5cbiAgICAgIDwhLS0gQUREIFRPIEJBU0tFVCBDVEEgLS0+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwicmVjaXBlRGV0YWlsc1NlcnZpY2UucmVtYWluaW5nQmFza2V0RW50cmllcy5sZW5ndGggPiAwICYmICEocmVjaXBlRGV0YWlsc1NlcnZpY2UuYWxsSW5ncmVkaWVudHNUb0Jhc2tldExvYWRpbmckIHwgYXN5bmMpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19hZGQtdG8tYmFza2V0LWN0YSBtaWFtLWRzLWJ1dHRvbiBwcmltYXJ5XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlY2lwZURldGFpbHNTZXJ2aWNlLmFkZEFsbEluZ3JlZGllbnRzVG9CYXNrZXQoZXZlbnRUcmFjZSgpKVwiPlxuICAgICAgICA8aW1nIGFsdD1cImJhc2tldCBpY29uXCIgc3JjPVwiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Fzc2V0cy5taWFtLnRlY2gvZ2VuZXJpYy9pY29ucy9CYXNrZXQuc3ZnXCIvPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIXJlY2lwZURldGFpbHNTZXJ2aWNlLmhhc0FkZGVkQVByb2R1Y3QgZWxzZSBhZGRSZW1haW5pbmdQcm9kdWN0c1wiIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fYWRkLXRvLWJhc2tldC1jdGFfX3RleHRcIj5cbiAgICAgICAgICA8c3BhbiBpMThuPkFqb3V0ZXIgdG91cyBsZXMgcHJvZHVpdHM8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgI2FkZFJlbWFpbmluZ1Byb2R1Y3RzPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19hZGQtdG8tYmFza2V0LWN0YV9fdGV4dFwiPlxuICAgICAgICAgICAgPHNwYW4gaTE4bj5Bam91dGVyPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+e3sgcmVjaXBlRGV0YWlsc1NlcnZpY2UucmVtYWluaW5nQmFza2V0RW50cmllcy5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBpMThuICpuZ0lmPVwicmVjaXBlRGV0YWlsc1NlcnZpY2UucmVtYWluaW5nQmFza2V0RW50cmllcy5sZW5ndGggPD0gMVwiPnByb2R1aXQ8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBpMThuICpuZ0lmPVwicmVjaXBlRGV0YWlsc1NlcnZpY2UucmVtYWluaW5nQmFza2V0RW50cmllcy5sZW5ndGggPiAxXCI+cHJvZHVpdHM8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJyZWNpcGVEZXRhaWxzU2VydmljZS5yZW1haW5pbmdCYXNrZXRFbnRyaWVzLmxlbmd0aCA+IDAgJiYgKHJlY2lwZURldGFpbHNTZXJ2aWNlLmFsbEluZ3JlZGllbnRzVG9CYXNrZXRMb2FkaW5nJCB8IGFzeW5jKVwiIFxuICAgICAgICAgICAgICBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2FkZC10by1iYXNrZXQtY3RhIG1pYW0tZHMtYnV0dG9uIHByaW1hcnlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tZHMtbG9hZGVyXCI+PC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDwhLS0gQ09OVElOVUUgQ1RBIC0tPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlY2lwZURldGFpbHNTZXJ2aWNlLnJlbWFpbmluZ0Jhc2tldEVudHJpZXMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJtaWFtLWRzLWJ1dHRvbiBzZWNvbmRhcnlcIiAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19hZGQtdG8tYmFza2V0LWN0YV9fdGV4dFwiPlxuICAgICAgICAgIDxzcGFuIGkxOG4+Q29udGludWVyIG1lcyBjb3Vyc2VzPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPCEtLSBQUklDRSAtLT5cbiAgICAgIDxuZy1taWFtLXJlY2lwZS1wcmljaW5nXG4gICAgICAgICpuZ0lmPVwicmVjaXBlRGV0YWlsc1NlcnZpY2UucmVjaXBlICYmIGRpc3BsYXlQcmljaW5nICYmIHJlY2lwZURldGFpbHNTZXJ2aWNlLmhhc0FkZGVkQVByb2R1Y3RcIiBbcmVjaXBlSWRdPVwicmVjaXBlRGV0YWlsc1NlcnZpY2UucmVjaXBlPy5pZFwiIFtzZXJ2ZXNdPVwicmVjaXBlRGV0YWlsc1NlcnZpY2UucmVjaXBlPy5tb2RpZmllZEd1ZXN0c1wiXG4gICAgICAgIFtndWVzdHNUZXh0XT1cInByaWNpbmdHdWVzdHNUZXh0XCI+XG4gICAgICA8L25nLW1pYW0tcmVjaXBlLXByaWNpbmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIEFERE9OIC0tPlxuPG5nLW1pYW0tcmVjaXBlLWFkZG9uICpuZ0lmPVwiIXNob3dEZXRhaWxcIiBbcmVjaXBlXT0ncmVjaXBlRGV0YWlsc1NlcnZpY2UucmVjaXBlJyAoaGlkZUFkZG9uKT1cInRvZ2dsZUFkZG9uKClcIj48L25nLW1pYW0tcmVjaXBlLWFkZG9uPlxuPCEtLSBSRVBMQUNFIElURU0gUEFHRSAtLT5cbjxuZy1taWFtLXJlcGxhY2UtaXRlbVxuICAqbmdJZj1cInJlY2lwZURldGFpbHNTZXJ2aWNlLmJhc2tldEVudHJ5VG9SZXBsYWNlJC52YWx1ZVwiXG4gIFtyZWNpcGVdPVwicmVjaXBlRGV0YWlsc1NlcnZpY2UucmVjaXBlXCJcbiAgW2Jhc2tldEVudHJ5XT1cInJlY2lwZURldGFpbHNTZXJ2aWNlLmJhc2tldEVudHJ5VG9SZXBsYWNlJC52YWx1ZS5iYXNrZXRFbnRyeVwiXG4gIFtpbmdyZWRpZW50XT1cInJlY2lwZURldGFpbHNTZXJ2aWNlLmJhc2tldEVudHJ5VG9SZXBsYWNlJC52YWx1ZS5pbmdyZWRpZW50XCJcbiAgW2lnbm9yZVNlbGVjdGVkXT1cInJlY2lwZURldGFpbHNTZXJ2aWNlLmJhc2tldEVudHJ5VG9SZXBsYWNlJC52YWx1ZS5pZ25vcmVTZWxlY3RlZFwiXG4gIChzZWxlY3RlZCk9XCJyZWNpcGVEZXRhaWxzU2VydmljZS5iYXNrZXRFbnRyeVRvUmVwbGFjZSA9IG51bGxcIlxuPlxuPC9uZy1taWFtLXJlcGxhY2UtaXRlbT5cbiJdfQ==
|