@renaissancerentals/renaissance-component 12.1.53 → 12.2.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.
@@ -12,12 +12,13 @@ var _AssetService = require("../asset/service/AssetService");
12
12
  var _RenaissanceData = require("../data/RenaissanceData");
13
13
  var _GalleryHeroSkeleton = require("../gallery/GalleryHeroSkeleton");
14
14
  var _GalleryModal = require("../gallery/GalleryModal");
15
- var _GalleryHeroMain = require("../gallery/GalleryHeroMain");
16
15
  var _GalleryHeroMobile = require("../gallery/GalleryHeroMobile");
17
16
  var _VideoTours = require("../gallery/VideoTours");
18
17
  var _VirtualTour = require("../gallery/VirtualTour");
19
18
  var _HeroBadgeStats = require("../floorplan/section/HeroBadgeStats");
20
19
  var _AssetModal = require("../asset/AssetModal");
20
+ var _GridGalleryCover = require("../gallery/GridGalleryCover");
21
+ var _GridGallery = require("../gallery/GridGallery");
21
22
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
22
23
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
23
24
  const ShortTermFloorplanHero = _ref => {
@@ -32,14 +33,16 @@ const ShortTermFloorplanHero = _ref => {
32
33
  const [isAssetsLoading, setIsAssetsLoading] = (0, _react.useState)(true);
33
34
  const [videoTours, setVideoTours] = (0, _react.useState)([]);
34
35
  const [virtualTour, setVirtualTour] = (0, _react.useState)(undefined);
36
+ const [videoTourImageBackground, setVideoTourImageBackground] = (0, _react.useState)();
37
+ const [virtualTourImageBackground, setVirtualTourImageBackground] = (0, _react.useState)();
35
38
  const [showFloorplanModal, setShowFloorplanModal] = (0, _react.useState)(false);
36
39
  const [totalPages, setTotalPages] = (0, _react.useState)(1);
37
- const [toursCount, setToursCount] = (0, _react.useState)(0);
40
+ const [toursCount, setToursCount] = (0, _react.useState)(1);
38
41
  const [currentView, setCurrentView] = (0, _react.useState)("photo");
39
42
  const [assetInFocus, setAssetInFocus] = (0, _react.useState)({});
40
43
  const [assetIndex, setAssetIndex] = (0, _react.useState)(0);
41
44
  const [showModal, setShowModal] = (0, _react.useState)(false);
42
- const FIRST_PAGE_ASSET_COUNT = 5;
45
+ const [firstPageImageCount, setFirstPageImageCount] = (0, _react.useState)(4);
43
46
  const GRID_SIZE = 8;
44
47
  const imageClickedHandler = image => {
45
48
  setShowModal(true);
@@ -51,50 +54,63 @@ const ShortTermFloorplanHero = _ref => {
51
54
  setAssetInFocus({});
52
55
  };
53
56
  (0, _react.useEffect)(() => {
54
- if (floorplan.virtualTourLink) setVirtualTour(floorplan.virtualTourLink);
55
- const tourLinks = [];
56
- if (floorplan.videoTourLink) tourLinks.push(floorplan.videoTourLink);
57
- if (floorplan.threeSixtyVideoTourLink) tourLinks.push(floorplan.threeSixtyVideoTourLink);
58
- setVideoTours(tourLinks);
59
- let otherAssetCounts = (tourLinks.length > 0 ? 1 : 0) + (floorplan.virtualTourLink ? 1 : 0);
60
- setToursCount(otherAssetCounts);
61
57
  const images = [];
62
58
  images.push({
63
59
  id: (0, _Utils.extractIdFrom)(floorplan.coverImage),
64
60
  name: "cover image"
65
61
  });
62
+ let firstPageCount = firstPageImageCount;
66
63
  if (floorplan.photosFolderId) {
67
64
  (0, _AssetService.getAssetsFrom)(floorplan.photosFolderId).then(galleryAssets => {
68
65
  images.push(...galleryAssets);
69
- let totalAssets = images.length + otherAssetCounts;
70
- if (totalAssets > FIRST_PAGE_ASSET_COUNT) {
71
- let pages = Math.trunc((totalAssets - FIRST_PAGE_ASSET_COUNT) / GRID_SIZE + 1);
72
- if ((totalAssets - FIRST_PAGE_ASSET_COUNT - 1) % GRID_SIZE === 0) {
73
- setTotalPages(pages);
74
- } else setTotalPages(pages + 1);
66
+ if (images.length > 1) {
67
+ const backgroundImageUrl = (0, _AssetService.assetUrlFrom)(images[1].id, floorplan.property.id);
68
+ if (floorplan.virtualTourLink) {
69
+ setVirtualTour(floorplan.virtualTourLink);
70
+ setVirtualTourImageBackground(backgroundImageUrl);
71
+ firstPageCount -= 1;
72
+ }
73
+ const tourLinks = [];
74
+ if (floorplan.videoTourLink) tourLinks.push(floorplan.videoTourLink);
75
+ if (floorplan.threeSixtyVideoTourLink) tourLinks.push(floorplan.threeSixtyVideoTourLink);
76
+ setVideoTours(tourLinks);
77
+ if (tourLinks.length > 0) {
78
+ setVideoTourImageBackground(backgroundImageUrl);
79
+ firstPageCount -= 1;
80
+ }
81
+ let otherAssetCounts = (tourLinks.length > 0 ? 1 : 0) + (floorplan.virtualTourLink ? 1 : 0);
82
+ setToursCount(otherAssetCounts);
75
83
  }
76
84
  }).finally(() => {
85
+ let pages = 1;
86
+ if (images.length > firstPageCount) {
87
+ const remaining = images.length - firstPageCount;
88
+ pages += remaining / 8;
89
+ if (remaining % 8 > 0) pages += 1;
90
+ }
91
+ setTotalPages(Math.trunc(pages));
92
+ setFirstPageImageCount(firstPageCount);
77
93
  setAssets(images);
78
94
  setIsAssetsLoading(false);
79
95
  });
80
96
  } else {
81
97
  setAssets(images);
82
- console.log(images);
83
98
  setIsAssetsLoading(false);
84
99
  }
85
100
  }, [floorplan]);
86
- const isFirstSliderPage = slideIndex => slideIndex === 0;
87
- const imageCountForFirstPage = () => FIRST_PAGE_ASSET_COUNT - toursCount;
88
- const getImagesForFirstSliderPage = assets.slice(0, assets.length >= imageCountForFirstPage() ? imageCountForFirstPage() : assets.length);
89
- const assetsToShow = slideIndex => {
90
- if (isFirstSliderPage(slideIndex)) return getImagesForFirstSliderPage;
91
- const startIndex = imageCountForFirstPage() + (slideIndex - 1) * 8;
92
- const endIndex = startIndex + GRID_SIZE;
93
- return assets.slice(startIndex, endIndex);
94
- };
95
101
  const printFloorplanAddress = () => {
96
102
  return floorplan.address + ", " + _RenaissanceData.renaissance.city + ", " + _RenaissanceData.renaissance.state + " " + floorplan.zipcode;
97
103
  };
104
+ const isFirstSliderPage = slideIndex => slideIndex === 0;
105
+ const assetsToShow = slideIndex => {
106
+ if (isFirstSliderPage(slideIndex)) {
107
+ console.log("firstPageImageCount", firstPageImageCount);
108
+ return assets.slice(0, firstPageImageCount - 1);
109
+ }
110
+ const startIndex = firstPageImageCount - 1 + GRID_SIZE * (slideIndex - 1);
111
+ const endIndex = firstPageImageCount - 1 + GRID_SIZE * slideIndex;
112
+ return assets.slice(startIndex, endIndex > assets.length ? assets.length : endIndex);
113
+ };
98
114
  return /*#__PURE__*/_react.default.createElement("section", {
99
115
  className: "section-short-term-floorplan--hero"
100
116
  }, isAssetsLoading ? /*#__PURE__*/_react.default.createElement(_GalleryHeroSkeleton.GalleryHeroSkeleton, null) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
@@ -111,16 +127,27 @@ const ShortTermFloorplanHero = _ref => {
111
127
  }), currentView === "photo" ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
112
128
  className: "photo-view main"
113
129
  }, /*#__PURE__*/_react.default.createElement(_muncherUi.ItemSlider, {
114
- sliderItems: [...Array(totalPages)].map((x, i) => /*#__PURE__*/_react.default.createElement(_GalleryHeroMain.GalleryHeroMain, {
115
- isAvailableNow: false,
116
- virtualTour: virtualTour,
117
- isFirst: i === 0,
118
- toursCount: toursCount,
130
+ sliderItems: [...Array(totalPages)].map((x, i) => i == 0 ? /*#__PURE__*/_react.default.createElement(_GridGalleryCover.GridGalleryCover, {
131
+ assets: assetsToShow(i),
132
+ floorplanAddress: {
133
+ address: floorplan.address,
134
+ city: _RenaissanceData.renaissance.city,
135
+ state: _RenaissanceData.renaissance.state,
136
+ zipcode: floorplan.zipcode
137
+ },
138
+ propertyId: floorplan.property.id,
139
+ heroImage: assets[0],
140
+ imageClickedHandler: imageClickedHandler,
119
141
  webSpecials: webSpecials,
142
+ isAvailableNow: false,
120
143
  setCurrentView: setCurrentView,
144
+ videoTourImageBackground: videoTourImageBackground,
145
+ virtualTourImageBackground: virtualTourImageBackground,
146
+ showOnlyHeroImage: assets.length === 1
147
+ }) : /*#__PURE__*/_react.default.createElement(_GridGallery.GridGallery, {
121
148
  imageClickedHandler: imageClickedHandler,
122
- assetsToShow: assetsToShow(i),
123
- propertyId: floorplan.property.id
149
+ propertyId: floorplan.property.id,
150
+ assets: assetsToShow(i)
124
151
  }))
125
152
  })), /*#__PURE__*/_react.default.createElement("div", {
126
153
  className: "photo-view mobile"
@@ -133,9 +160,9 @@ const ShortTermFloorplanHero = _ref => {
133
160
  webSpecials: webSpecials,
134
161
  isAvailableNow: false,
135
162
  propertyId: floorplan.property.id
136
- }))) : "", currentView === "video tour" ? /*#__PURE__*/_react.default.createElement(_VideoTours.VideoTours, {
163
+ }))) : "", currentView === "Video Tour" ? /*#__PURE__*/_react.default.createElement(_VideoTours.VideoTours, {
137
164
  videoTourUrls: videoTours
138
- }) : "", currentView === "virtual tour" ? /*#__PURE__*/_react.default.createElement(_VirtualTour.VirtualTour, {
165
+ }) : "", currentView === "Virtual Tour" ? /*#__PURE__*/_react.default.createElement(_VirtualTour.VirtualTour, {
139
166
  virtualTourUrl: virtualTour
140
167
  }) : "", /*#__PURE__*/_react.default.createElement(_HeroBadgeStats.HeroBadgeStats, {
141
168
  currentView: currentView,
@@ -195,4 +222,4 @@ const ShortTermFloorplanHero = _ref => {
195
222
  }))))));
196
223
  };
197
224
  exports.ShortTermFloorplanHero = ShortTermFloorplanHero;
198
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbXVuY2hlclVpIiwiX1V0aWxzIiwiX0Fzc2V0U2VydmljZSIsIl9SZW5haXNzYW5jZURhdGEiLCJfR2FsbGVyeUhlcm9Ta2VsZXRvbiIsIl9HYWxsZXJ5TW9kYWwiLCJfR2FsbGVyeUhlcm9NYWluIiwiX0dhbGxlcnlIZXJvTW9iaWxlIiwiX1ZpZGVvVG91cnMiLCJfVmlydHVhbFRvdXIiLCJfSGVyb0JhZGdlU3RhdHMiLCJfQXNzZXRNb2RhbCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIlNob3J0VGVybUZsb29ycGxhbkhlcm8iLCJfcmVmIiwiZmxvb3JwbGFuIiwiY29udGFjdENsaWNrSGFuZGxlciIsImFwcGx5Q2xpY2tIYW5kbGVyIiwiaGFuZGxlUmVmVG9NYXAiLCJ3ZWJTcGVjaWFscyIsImFzc2V0cyIsInNldEFzc2V0cyIsInVzZVN0YXRlIiwiaXNBc3NldHNMb2FkaW5nIiwic2V0SXNBc3NldHNMb2FkaW5nIiwidmlkZW9Ub3VycyIsInNldFZpZGVvVG91cnMiLCJ2aXJ0dWFsVG91ciIsInNldFZpcnR1YWxUb3VyIiwidW5kZWZpbmVkIiwic2hvd0Zsb29ycGxhbk1vZGFsIiwic2V0U2hvd0Zsb29ycGxhbk1vZGFsIiwidG90YWxQYWdlcyIsInNldFRvdGFsUGFnZXMiLCJ0b3Vyc0NvdW50Iiwic2V0VG91cnNDb3VudCIsImN1cnJlbnRWaWV3Iiwic2V0Q3VycmVudFZpZXciLCJhc3NldEluRm9jdXMiLCJzZXRBc3NldEluRm9jdXMiLCJhc3NldEluZGV4Iiwic2V0QXNzZXRJbmRleCIsInNob3dNb2RhbCIsInNldFNob3dNb2RhbCIsIkZJUlNUX1BBR0VfQVNTRVRfQ09VTlQiLCJHUklEX1NJWkUiLCJpbWFnZUNsaWNrZWRIYW5kbGVyIiwiaW1hZ2UiLCJmaW5kSW5kZXgiLCJ2YWx1ZSIsImlkIiwibW9kYWxDbG9zZUhhbmRsZXIiLCJ1c2VFZmZlY3QiLCJ2aXJ0dWFsVG91ckxpbmsiLCJ0b3VyTGlua3MiLCJ2aWRlb1RvdXJMaW5rIiwicHVzaCIsInRocmVlU2l4dHlWaWRlb1RvdXJMaW5rIiwib3RoZXJBc3NldENvdW50cyIsImxlbmd0aCIsImltYWdlcyIsImV4dHJhY3RJZEZyb20iLCJjb3ZlckltYWdlIiwibmFtZSIsInBob3Rvc0ZvbGRlcklkIiwiZ2V0QXNzZXRzRnJvbSIsInRoZW4iLCJnYWxsZXJ5QXNzZXRzIiwidG90YWxBc3NldHMiLCJwYWdlcyIsIk1hdGgiLCJ0cnVuYyIsImZpbmFsbHkiLCJjb25zb2xlIiwibG9nIiwiaXNGaXJzdFNsaWRlclBhZ2UiLCJzbGlkZUluZGV4IiwiaW1hZ2VDb3VudEZvckZpcnN0UGFnZSIsImdldEltYWdlc0ZvckZpcnN0U2xpZGVyUGFnZSIsInNsaWNlIiwiYXNzZXRzVG9TaG93Iiwic3RhcnRJbmRleCIsImVuZEluZGV4IiwicHJpbnRGbG9vcnBsYW5BZGRyZXNzIiwiYWRkcmVzcyIsInJlbmFpc3NhbmNlIiwiY2l0eSIsInN0YXRlIiwiemlwY29kZSIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJHYWxsZXJ5SGVyb1NrZWxldG9uIiwiRnJhZ21lbnQiLCJHYWxsZXJ5TW9kYWwiLCJwcm9wZXJ0eUlkIiwicHJvcGVydHkiLCJJdGVtU2xpZGVyIiwic2xpZGVySXRlbXMiLCJBcnJheSIsIm1hcCIsIngiLCJHYWxsZXJ5SGVyb01haW4iLCJpc0F2YWlsYWJsZU5vdyIsImlzRmlyc3QiLCJHYWxsZXJ5SGVyb01vYmlsZSIsIlZpZGVvVG91cnMiLCJ2aWRlb1RvdXJVcmxzIiwiVmlydHVhbFRvdXIiLCJ2aXJ0dWFsVG91clVybCIsIkhlcm9CYWRnZVN0YXRzIiwiQXNzZXRNb2RhbCIsImFzc2V0VXJsIiwicGhvdG8iLCJhc3NldFRpdGxlIiwic2hvcnRUZXJtIiwicHJpY2VGb3I0YW5kTW9yZU1vbnRocyIsInByaWNlRm9yNVRvMTNEYXlzIiwiQnV0dG9uIiwic2l6ZSIsIm9uQ2xpY2siLCJJY29uIiwib3JpZW50YXRpb24iLCJidXNSb3V0ZXMiLCJidXNSb3V0ZSIsImluZGV4Iiwia2V5IiwiaHJlZiIsImJ1c1JvdXRlTGluayIsInRhcmdldCIsInJlbCIsInZhcmlhbnQiLCJTaGFyZUJ1dHRvbiIsInRpdGxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaG9ydC10ZXJtL1Nob3J0VGVybUZsb29ycGxhbkhlcm8udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFwiLi9hc3NldHMvU2hvcnRUZXJtRmxvb3JwbGFuSGVyby5zY3NzXCI7XG5pbXBvcnQge0J1dHRvbiwgSWNvbiwgSXRlbVNsaWRlciwgU2hhcmVCdXR0b259IGZyb20gXCJAY29udGVudG11bmNoL211bmNoZXItdWlcIjtcbmltcG9ydCB7Rmxvb3JwbGFuU2hvcnRUZXJtfSBmcm9tIFwiLi9kYXRhL1Nob3J0VGVybVwiO1xuaW1wb3J0IHtBc3NldH0gZnJvbSBcIi4uL2Fzc2V0L2RhdGEvQXNzZXRcIjtcbmltcG9ydCB7ZXh0cmFjdElkRnJvbX0gZnJvbSBcIi4uL3V0aWxzL1V0aWxzXCI7XG5pbXBvcnQge2dldEFzc2V0c0Zyb219IGZyb20gXCIuLi9hc3NldC9zZXJ2aWNlL0Fzc2V0U2VydmljZVwiO1xuaW1wb3J0IHtXZWJTcGVjaWFsfSBmcm9tIFwiLi4vZmxvb3JwbGFuL2RhdGEvRmxvb3JwbGFuXCI7XG5pbXBvcnQge3JlbmFpc3NhbmNlfSBmcm9tIFwiLi4vZGF0YS9SZW5haXNzYW5jZURhdGFcIjtcbmltcG9ydCB7R2FsbGVyeUhlcm9Ta2VsZXRvbn0gZnJvbSBcIi4uL2dhbGxlcnkvR2FsbGVyeUhlcm9Ta2VsZXRvblwiO1xuaW1wb3J0IHtHYWxsZXJ5TW9kYWx9IGZyb20gXCIuLi9nYWxsZXJ5L0dhbGxlcnlNb2RhbFwiO1xuaW1wb3J0IHtHYWxsZXJ5SGVyb01haW59IGZyb20gXCIuLi9nYWxsZXJ5L0dhbGxlcnlIZXJvTWFpblwiO1xuaW1wb3J0IHtHYWxsZXJ5SGVyb01vYmlsZX0gZnJvbSBcIi4uL2dhbGxlcnkvR2FsbGVyeUhlcm9Nb2JpbGVcIjtcbmltcG9ydCB7VmlkZW9Ub3Vyc30gZnJvbSBcIi4uL2dhbGxlcnkvVmlkZW9Ub3Vyc1wiO1xuaW1wb3J0IHtWaXJ0dWFsVG91cn0gZnJvbSBcIi4uL2dhbGxlcnkvVmlydHVhbFRvdXJcIjtcbmltcG9ydCB7SGVyb0JhZGdlU3RhdHN9IGZyb20gXCIuLi9mbG9vcnBsYW4vc2VjdGlvbi9IZXJvQmFkZ2VTdGF0c1wiO1xuaW1wb3J0IHtBc3NldE1vZGFsfSBmcm9tIFwiLi4vYXNzZXQvQXNzZXRNb2RhbFwiO1xuXG5leHBvcnQgY29uc3QgU2hvcnRUZXJtRmxvb3JwbGFuSGVybzogUmVhY3QuRkM8U2hvcnRUZXJtRmxvb3JwbGFuSGVyb1Byb3BzPiA9IChcbiAgICB7Zmxvb3JwbGFuLCBjb250YWN0Q2xpY2tIYW5kbGVyLCBhcHBseUNsaWNrSGFuZGxlciwgaGFuZGxlUmVmVG9NYXAsIHdlYlNwZWNpYWxzfSkgPT4ge1xuICAgIGNvbnN0IFthc3NldHMsIHNldEFzc2V0c10gPSB1c2VTdGF0ZTxBc3NldFtdPihbXSk7XG4gICAgY29uc3QgW2lzQXNzZXRzTG9hZGluZywgc2V0SXNBc3NldHNMb2FkaW5nXSA9IHVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFt2aWRlb1RvdXJzLCBzZXRWaWRlb1RvdXJzXSA9IHVzZVN0YXRlPHN0cmluZ1tdPihbXSk7XG4gICAgY29uc3QgW3ZpcnR1YWxUb3VyLCBzZXRWaXJ0dWFsVG91cl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gICAgY29uc3QgW3Nob3dGbG9vcnBsYW5Nb2RhbCwgc2V0U2hvd0Zsb29ycGxhbk1vZGFsXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbdG90YWxQYWdlcywgc2V0VG90YWxQYWdlc10gPSB1c2VTdGF0ZSgxKTtcbiAgICBjb25zdCBbdG91cnNDb3VudCwgc2V0VG91cnNDb3VudF0gPSB1c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbY3VycmVudFZpZXcsIHNldEN1cnJlbnRWaWV3XSA9IHVzZVN0YXRlPFwicGhvdG9cIiB8IFwidmlydHVhbCB0b3VyXCIgfCBcInZpZGVvIHRvdXJcIj4oXCJwaG90b1wiKTtcbiAgICBjb25zdCBbYXNzZXRJbkZvY3VzLCBzZXRBc3NldEluRm9jdXNdID0gdXNlU3RhdGU8QXNzZXQ+KHt9IGFzIEFzc2V0KTtcbiAgICBjb25zdCBbYXNzZXRJbmRleCwgc2V0QXNzZXRJbmRleF0gPSB1c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbc2hvd01vZGFsLCBzZXRTaG93TW9kYWxdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gICAgY29uc3QgRklSU1RfUEFHRV9BU1NFVF9DT1VOVCA9IDU7XG4gICAgY29uc3QgR1JJRF9TSVpFID0gODtcbiAgICBjb25zdCBpbWFnZUNsaWNrZWRIYW5kbGVyID0gKGltYWdlOiBBc3NldCkgPT4ge1xuICAgICAgICBzZXRTaG93TW9kYWwodHJ1ZSk7XG4gICAgICAgIHNldEFzc2V0SW5Gb2N1cyhpbWFnZSk7XG4gICAgICAgIHNldEFzc2V0SW5kZXgoYXNzZXRzLmZpbmRJbmRleCh2YWx1ZSA9PiB2YWx1ZS5pZCA9PT0gaW1hZ2UuaWQpKTtcbiAgICB9O1xuICAgIGNvbnN0IG1vZGFsQ2xvc2VIYW5kbGVyID0gKCkgPT4ge1xuICAgICAgICBzZXRTaG93TW9kYWwoZmFsc2UpO1xuICAgICAgICBzZXRBc3NldEluRm9jdXMoe30gYXMgQXNzZXQpO1xuICAgIH07XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGZsb29ycGxhbi52aXJ0dWFsVG91ckxpbmspXG4gICAgICAgICAgICBzZXRWaXJ0dWFsVG91cihmbG9vcnBsYW4udmlydHVhbFRvdXJMaW5rKTtcbiAgICAgICAgY29uc3QgdG91ckxpbmtzID0gW107XG4gICAgICAgIGlmIChmbG9vcnBsYW4udmlkZW9Ub3VyTGluaylcbiAgICAgICAgICAgIHRvdXJMaW5rcy5wdXNoKGZsb29ycGxhbi52aWRlb1RvdXJMaW5rKTtcbiAgICAgICAgaWYgKGZsb29ycGxhbi50aHJlZVNpeHR5VmlkZW9Ub3VyTGluaylcbiAgICAgICAgICAgIHRvdXJMaW5rcy5wdXNoKGZsb29ycGxhbi50aHJlZVNpeHR5VmlkZW9Ub3VyTGluayk7XG4gICAgICAgIHNldFZpZGVvVG91cnModG91ckxpbmtzKTtcblxuICAgICAgICBsZXQgb3RoZXJBc3NldENvdW50cyA9ICh0b3VyTGlua3MubGVuZ3RoID4gMCA/IDEgOiAwKSArIChmbG9vcnBsYW4udmlydHVhbFRvdXJMaW5rID8gMSA6IDApO1xuICAgICAgICBzZXRUb3Vyc0NvdW50KG90aGVyQXNzZXRDb3VudHMpO1xuICAgICAgICBjb25zdCBpbWFnZXM6IEFzc2V0W10gPSBbXTtcbiAgICAgICAgaW1hZ2VzLnB1c2goe2lkOiBleHRyYWN0SWRGcm9tKGZsb29ycGxhbi5jb3ZlckltYWdlKSwgbmFtZTogXCJjb3ZlciBpbWFnZVwifSBhcyBBc3NldCk7XG5cbiAgICAgICAgaWYgKGZsb29ycGxhbi5waG90b3NGb2xkZXJJZCkge1xuICAgICAgICAgICAgZ2V0QXNzZXRzRnJvbShmbG9vcnBsYW4ucGhvdG9zRm9sZGVySWQpLnRoZW4oZ2FsbGVyeUFzc2V0cyA9PiB7XG4gICAgICAgICAgICAgICAgaW1hZ2VzLnB1c2goLi4uZ2FsbGVyeUFzc2V0cyk7XG4gICAgICAgICAgICAgICAgbGV0IHRvdGFsQXNzZXRzID0gaW1hZ2VzLmxlbmd0aCArIG90aGVyQXNzZXRDb3VudHM7XG4gICAgICAgICAgICAgICAgaWYgKHRvdGFsQXNzZXRzID4gRklSU1RfUEFHRV9BU1NFVF9DT1VOVCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCBwYWdlcyA9IE1hdGgudHJ1bmMoKCh0b3RhbEFzc2V0cyAtIEZJUlNUX1BBR0VfQVNTRVRfQ09VTlQpIC8gR1JJRF9TSVpFKSArIDEpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICgodG90YWxBc3NldHMgLSBGSVJTVF9QQUdFX0FTU0VUX0NPVU5UIC0gMSkgJSBHUklEX1NJWkUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvdGFsUGFnZXMocGFnZXMpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvdGFsUGFnZXMocGFnZXMgKyAxKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0QXNzZXRzKGltYWdlcyk7XG4gICAgICAgICAgICAgICAgc2V0SXNBc3NldHNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0QXNzZXRzKGltYWdlcyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhpbWFnZXMpXG4gICAgICAgICAgICBzZXRJc0Fzc2V0c0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICB9LCBbZmxvb3JwbGFuXSlcblxuICAgIGNvbnN0IGlzRmlyc3RTbGlkZXJQYWdlID0gKHNsaWRlSW5kZXg6IG51bWJlcikgPT4gc2xpZGVJbmRleCA9PT0gMDtcbiAgICBjb25zdCBpbWFnZUNvdW50Rm9yRmlyc3RQYWdlID0gKCkgPT4gRklSU1RfUEFHRV9BU1NFVF9DT1VOVCAtIHRvdXJzQ291bnQ7XG5cbiAgICBjb25zdCBnZXRJbWFnZXNGb3JGaXJzdFNsaWRlclBhZ2UgPSBhc3NldHMuc2xpY2UoMCwgYXNzZXRzLmxlbmd0aCA+PSBpbWFnZUNvdW50Rm9yRmlyc3RQYWdlKCkgPyBpbWFnZUNvdW50Rm9yRmlyc3RQYWdlKCkgOiBhc3NldHMubGVuZ3RoKTtcbiAgICBjb25zdCBhc3NldHNUb1Nob3cgPSAoc2xpZGVJbmRleDogbnVtYmVyKSA9PiB7XG5cbiAgICAgICAgaWYgKGlzRmlyc3RTbGlkZXJQYWdlKHNsaWRlSW5kZXgpKVxuICAgICAgICAgICAgcmV0dXJuIGdldEltYWdlc0ZvckZpcnN0U2xpZGVyUGFnZTtcblxuICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gaW1hZ2VDb3VudEZvckZpcnN0UGFnZSgpICsgKHNsaWRlSW5kZXggLSAxKSAqIDg7XG4gICAgICAgIGNvbnN0IGVuZEluZGV4ID0gc3RhcnRJbmRleCArIEdSSURfU0laRTtcblxuICAgICAgICByZXR1cm4gYXNzZXRzLnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcbiAgICB9O1xuXG4gICAgY29uc3QgcHJpbnRGbG9vcnBsYW5BZGRyZXNzID0gKCkgPT4ge1xuXG4gICAgICAgIHJldHVybiBmbG9vcnBsYW4uYWRkcmVzcyArIFwiLCBcIiArIHJlbmFpc3NhbmNlLmNpdHkgKyBcIiwgXCIgKyByZW5haXNzYW5jZS5zdGF0ZSArIFwiIFwiICsgZmxvb3JwbGFuLnppcGNvZGU7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInNlY3Rpb24tc2hvcnQtdGVybS1mbG9vcnBsYW4tLWhlcm9cIj5cbiAgICAgICAgICAgIHtpc0Fzc2V0c0xvYWRpbmcgPyA8R2FsbGVyeUhlcm9Ta2VsZXRvbi8+IDpcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdhbGxlcnktaGVyb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEdhbGxlcnlNb2RhbCBhc3NldHM9e2Fzc2V0c30gYXNzZXRJbkZvY3VzPXthc3NldEluRm9jdXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFzc2V0SW5Gb2N1cz17c2V0QXNzZXRJbkZvY3VzfSBzaG93TW9kYWw9e3Nob3dNb2RhbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRJbmRleD17YXNzZXRJbmRleH0gc2V0QXNzZXRJbmRleD17c2V0QXNzZXRJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxDbG9zZUhhbmRsZXI9e21vZGFsQ2xvc2VIYW5kbGVyfSBwcm9wZXJ0eUlkPXtmbG9vcnBsYW4ucHJvcGVydHkuaWR9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50VmlldyA9PT0gXCJwaG90b1wiID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBob3RvLXZpZXcgbWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW1TbGlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXJJdGVtcz17Wy4uLkFycmF5KHRvdGFsUGFnZXMpXS5tYXAoKHgsIGkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxHYWxsZXJ5SGVyb01haW4gaXNBdmFpbGFibGVOb3c9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxUb3VyPXt2aXJ0dWFsVG91cn0gaXNGaXJzdD17aSA9PT0gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3Vyc0NvdW50PXt0b3Vyc0NvdW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYlNwZWNpYWxzPXt3ZWJTcGVjaWFsc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJyZW50Vmlldz17c2V0Q3VycmVudFZpZXd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VDbGlja2VkSGFuZGxlcj17aW1hZ2VDbGlja2VkSGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NldHNUb1Nob3c9e2Fzc2V0c1RvU2hvdyhpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUlkPXtmbG9vcnBsYW4ucHJvcGVydHkuaWR9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBob3RvLXZpZXcgbW9iaWxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R2FsbGVyeUhlcm9Nb2JpbGUgYXNzZXRzPXthc3NldHN9IHRvdXJzQ291bnQ9e3RvdXJzQ291bnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFRvdXI9e3ZpcnR1YWxUb3VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnJlbnRWaWV3PXtzZXRDdXJyZW50Vmlld31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZUNsaWNrZWRIYW5kbGVyPXtpbWFnZUNsaWNrZWRIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYlNwZWNpYWxzPXt3ZWJTcGVjaWFsc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0F2YWlsYWJsZU5vdz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlJZD17Zmxvb3JwbGFuLnByb3BlcnR5LmlkfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPiA6IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRWaWV3ID09PSBcInZpZGVvIHRvdXJcIiA/IDxWaWRlb1RvdXJzIHZpZGVvVG91clVybHM9e3ZpZGVvVG91cnN9Lz4gOiBcIlwifVxuICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRWaWV3ID09PSBcInZpcnR1YWwgdG91clwiID8gPFZpcnR1YWxUb3VyIHZpcnR1YWxUb3VyVXJsPXt2aXJ0dWFsVG91cn0vPiA6IFwiXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICA8SGVyb0JhZGdlU3RhdHMgY3VycmVudFZpZXc9e2N1cnJlbnRWaWV3fSBzZXRDdXJyZW50Vmlldz17c2V0Q3VycmVudFZpZXd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxBc3NldHM9e2Fzc2V0cz8ubGVuZ3RofSB2aWRlb1RvdXJzPXt2aWRlb1RvdXJzfSB2aXJ0dWFsVG91cj17dmlydHVhbFRvdXJ9Lz5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8Lz5cblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPEFzc2V0TW9kYWwgYXNzZXRVcmw9e2Zsb29ycGxhbi5waG90b30gYXNzZXRUaXRsZT1cIkZsb29ycGxhbiBpbWFnZVwiIHNob3dNb2RhbD17c2hvd0Zsb29ycGxhbk1vZGFsfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd01vZGFsPXtzZXRTaG93Rmxvb3JwbGFuTW9kYWx9IHByb3BlcnR5SWQ9e2Zsb29ycGxhbi5wcm9wZXJ0eS5pZH0vPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsb29ycGxhbi0tdHdvLWNvbHVtbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbG9vcnBsYW4tY29sdW1uLWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz57Zmxvb3JwbGFuLm5hbWV9PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoND4ke2Zsb29ycGxhbi5zaG9ydFRlcm0ucHJpY2VGb3I0YW5kTW9yZU1vbnRoc30gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7Zmxvb3JwbGFuLnNob3J0VGVybS5wcmljZUZvcjVUbzEzRGF5c30vRGF5PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImZsb29ycGxhbi0tZGVzY3JpcHRpb25cIj57cHJpbnRGbG9vcnBsYW5BZGRyZXNzKCl9PC9wPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsb29ycGxhbi0tZmVhdHVyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIHNpemU9XCJzbWFsbFwiIG9uQ2xpY2s9eygpID0+IHNldFNob3dGbG9vcnBsYW5Nb2RhbCh0cnVlKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIG5hbWU9XCJtYXhcIiBvcmllbnRhdGlvbj1cInJpZ2h0XCI+Vmlld0Zsb29ycGxhbjwvSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Jm5ic3A7Jm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBzaXplPVwic21hbGxcIiBvbkNsaWNrPXsoKSA9PiBoYW5kbGVSZWZUb01hcCgpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gb3JpZW50YXRpb249XCJyaWdodFwiIG5hbWU9XCJtYXBcIj5WaWV3IG9uIE1hcDwvSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Zmxvb3JwbGFuLnByb3BlcnR5LmJ1c1JvdXRlcy5sZW5ndGggPiAwID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+QnVzIFJvdXRlczombmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmbG9vcnBsYW4ucHJvcGVydHkuYnVzUm91dGVzLm1hcCgoYnVzUm91dGUsIGluZGV4KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGtleT17XCJidXMtcm91dGUtXCIgKyBpbmRleH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9e2J1c1JvdXRlLmJ1c1JvdXRlTGlua30gdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9yZWZlcnJlclwiPntidXNSb3V0ZS5idXNSb3V0ZX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpbmRleCA8IGZsb29ycGxhbi5wcm9wZXJ0eS5idXNSb3V0ZXMubGVuZ3RoIC0gMSA/IFwiLCBcIiA6IFwiXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCIgZmxvb3JwbGFuLWNvbHVtbi1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInByaW1hcnlcIiBzaXplPVwibWVkaXVtXCIgb25DbGljaz17Y29udGFjdENsaWNrSGFuZGxlcn0+Y29udGFjdCB1czwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInRlcnRpYXJ5XCIgc2l6ZT1cIm1lZGl1bVwiIG9uQ2xpY2s9e2FwcGx5Q2xpY2tIYW5kbGVyfT5hcHBseTwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGFyZUJ1dHRvbiB0aXRsZT1cIkNoZWNrIG91dCB0aGlzIGFwYXJ0bWVudFwiIHNpemU9XCJsYXJnZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hvcnRUZXJtRmxvb3JwbGFuSGVyb1Byb3BzIHtcbiAgICBmbG9vcnBsYW46IEZsb29ycGxhblNob3J0VGVybTtcbiAgICB3ZWJTcGVjaWFsczogV2ViU3BlY2lhbFtdO1xuICAgIGNvbnRhY3RDbGlja0hhbmRsZXI6ICgpID0+IHZvaWQ7XG4gICAgYXBwbHlDbGlja0hhbmRsZXI6ICgpID0+IHZvaWQ7XG4gICAgaGFuZGxlUmVmVG9NYXA6ICgpID0+IHZvaWQ7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBR0EsSUFBQUUsTUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsYUFBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksZ0JBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLG9CQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxhQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxnQkFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsa0JBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLFdBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLFlBQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLGVBQUEsR0FBQVgsT0FBQTtBQUNBLElBQUFZLFdBQUEsR0FBQVosT0FBQTtBQUErQyxTQUFBYSx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBZix3QkFBQWUsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFB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
225
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbXVuY2hlclVpIiwiX1V0aWxzIiwiX0Fzc2V0U2VydmljZSIsIl9SZW5haXNzYW5jZURhdGEiLCJfR2FsbGVyeUhlcm9Ta2VsZXRvbiIsIl9HYWxsZXJ5TW9kYWwiLCJfR2FsbGVyeUhlcm9Nb2JpbGUiLCJfVmlkZW9Ub3VycyIsIl9WaXJ0dWFsVG91ciIsIl9IZXJvQmFkZ2VTdGF0cyIsIl9Bc3NldE1vZGFsIiwiX0dyaWRHYWxsZXJ5Q292ZXIiLCJfR3JpZEdhbGxlcnkiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJTaG9ydFRlcm1GbG9vcnBsYW5IZXJvIiwiX3JlZiIsImZsb29ycGxhbiIsImNvbnRhY3RDbGlja0hhbmRsZXIiLCJhcHBseUNsaWNrSGFuZGxlciIsImhhbmRsZVJlZlRvTWFwIiwid2ViU3BlY2lhbHMiLCJhc3NldHMiLCJzZXRBc3NldHMiLCJ1c2VTdGF0ZSIsImlzQXNzZXRzTG9hZGluZyIsInNldElzQXNzZXRzTG9hZGluZyIsInZpZGVvVG91cnMiLCJzZXRWaWRlb1RvdXJzIiwidmlydHVhbFRvdXIiLCJzZXRWaXJ0dWFsVG91ciIsInVuZGVmaW5lZCIsInZpZGVvVG91ckltYWdlQmFja2dyb3VuZCIsInNldFZpZGVvVG91ckltYWdlQmFja2dyb3VuZCIsInZpcnR1YWxUb3VySW1hZ2VCYWNrZ3JvdW5kIiwic2V0VmlydHVhbFRvdXJJbWFnZUJhY2tncm91bmQiLCJzaG93Rmxvb3JwbGFuTW9kYWwiLCJzZXRTaG93Rmxvb3JwbGFuTW9kYWwiLCJ0b3RhbFBhZ2VzIiwic2V0VG90YWxQYWdlcyIsInRvdXJzQ291bnQiLCJzZXRUb3Vyc0NvdW50IiwiY3VycmVudFZpZXciLCJzZXRDdXJyZW50VmlldyIsImFzc2V0SW5Gb2N1cyIsInNldEFzc2V0SW5Gb2N1cyIsImFzc2V0SW5kZXgiLCJzZXRBc3NldEluZGV4Iiwic2hvd01vZGFsIiwic2V0U2hvd01vZGFsIiwiZmlyc3RQYWdlSW1hZ2VDb3VudCIsInNldEZpcnN0UGFnZUltYWdlQ291bnQiLCJHUklEX1NJWkUiLCJpbWFnZUNsaWNrZWRIYW5kbGVyIiwiaW1hZ2UiLCJmaW5kSW5kZXgiLCJ2YWx1ZSIsImlkIiwibW9kYWxDbG9zZUhhbmRsZXIiLCJ1c2VFZmZlY3QiLCJpbWFnZXMiLCJwdXNoIiwiZXh0cmFjdElkRnJvbSIsImNvdmVySW1hZ2UiLCJuYW1lIiwiZmlyc3RQYWdlQ291bnQiLCJwaG90b3NGb2xkZXJJZCIsImdldEFzc2V0c0Zyb20iLCJ0aGVuIiwiZ2FsbGVyeUFzc2V0cyIsImxlbmd0aCIsImJhY2tncm91bmRJbWFnZVVybCIsImFzc2V0VXJsRnJvbSIsInByb3BlcnR5IiwidmlydHVhbFRvdXJMaW5rIiwidG91ckxpbmtzIiwidmlkZW9Ub3VyTGluayIsInRocmVlU2l4dHlWaWRlb1RvdXJMaW5rIiwib3RoZXJBc3NldENvdW50cyIsImZpbmFsbHkiLCJwYWdlcyIsInJlbWFpbmluZyIsIk1hdGgiLCJ0cnVuYyIsInByaW50Rmxvb3JwbGFuQWRkcmVzcyIsImFkZHJlc3MiLCJyZW5haXNzYW5jZSIsImNpdHkiLCJzdGF0ZSIsInppcGNvZGUiLCJpc0ZpcnN0U2xpZGVyUGFnZSIsInNsaWRlSW5kZXgiLCJhc3NldHNUb1Nob3ciLCJjb25zb2xlIiwibG9nIiwic2xpY2UiLCJzdGFydEluZGV4IiwiZW5kSW5kZXgiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiR2FsbGVyeUhlcm9Ta2VsZXRvbiIsIkZyYWdtZW50IiwiR2FsbGVyeU1vZGFsIiwicHJvcGVydHlJZCIsIkl0ZW1TbGlkZXIiLCJzbGlkZXJJdGVtcyIsIkFycmF5IiwibWFwIiwieCIsIkdyaWRHYWxsZXJ5Q292ZXIiLCJmbG9vcnBsYW5BZGRyZXNzIiwiaGVyb0ltYWdlIiwiaXNBdmFpbGFibGVOb3ciLCJzaG93T25seUhlcm9JbWFnZSIsIkdyaWRHYWxsZXJ5IiwiR2FsbGVyeUhlcm9Nb2JpbGUiLCJWaWRlb1RvdXJzIiwidmlkZW9Ub3VyVXJscyIsIlZpcnR1YWxUb3VyIiwidmlydHVhbFRvdXJVcmwiLCJIZXJvQmFkZ2VTdGF0cyIsInRvdGFsQXNzZXRzIiwiQXNzZXRNb2RhbCIsImFzc2V0VXJsIiwicGhvdG8iLCJhc3NldFRpdGxlIiwic2hvcnRUZXJtIiwicHJpY2VGb3I0YW5kTW9yZU1vbnRocyIsInByaWNlRm9yNVRvMTNEYXlzIiwiQnV0dG9uIiwic2l6ZSIsIm9uQ2xpY2siLCJJY29uIiwib3JpZW50YXRpb24iLCJidXNSb3V0ZXMiLCJidXNSb3V0ZSIsImluZGV4Iiwia2V5IiwiaHJlZiIsImJ1c1JvdXRlTGluayIsInRhcmdldCIsInJlbCIsInZhcmlhbnQiLCJTaGFyZUJ1dHRvbiIsInRpdGxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaG9ydC10ZXJtL1Nob3J0VGVybUZsb29ycGxhbkhlcm8udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFwiLi9hc3NldHMvU2hvcnRUZXJtRmxvb3JwbGFuSGVyby5zY3NzXCI7XG5pbXBvcnQge0J1dHRvbiwgSWNvbiwgSXRlbVNsaWRlciwgU2hhcmVCdXR0b259IGZyb20gXCJAY29udGVudG11bmNoL211bmNoZXItdWlcIjtcbmltcG9ydCB7Rmxvb3JwbGFuU2hvcnRUZXJtfSBmcm9tIFwiLi9kYXRhL1Nob3J0VGVybVwiO1xuaW1wb3J0IHtBc3NldH0gZnJvbSBcIi4uL2Fzc2V0L2RhdGEvQXNzZXRcIjtcbmltcG9ydCB7ZXh0cmFjdElkRnJvbX0gZnJvbSBcIi4uL3V0aWxzL1V0aWxzXCI7XG5pbXBvcnQge2Fzc2V0VXJsRnJvbSwgZ2V0QXNzZXRzRnJvbX0gZnJvbSBcIi4uL2Fzc2V0L3NlcnZpY2UvQXNzZXRTZXJ2aWNlXCI7XG5pbXBvcnQge1dlYlNwZWNpYWx9IGZyb20gXCIuLi9mbG9vcnBsYW4vZGF0YS9GbG9vcnBsYW5cIjtcbmltcG9ydCB7cmVuYWlzc2FuY2V9IGZyb20gXCIuLi9kYXRhL1JlbmFpc3NhbmNlRGF0YVwiO1xuaW1wb3J0IHtHYWxsZXJ5SGVyb1NrZWxldG9ufSBmcm9tIFwiLi4vZ2FsbGVyeS9HYWxsZXJ5SGVyb1NrZWxldG9uXCI7XG5pbXBvcnQge0dhbGxlcnlNb2RhbH0gZnJvbSBcIi4uL2dhbGxlcnkvR2FsbGVyeU1vZGFsXCI7XG5pbXBvcnQge0dhbGxlcnlIZXJvTW9iaWxlfSBmcm9tIFwiLi4vZ2FsbGVyeS9HYWxsZXJ5SGVyb01vYmlsZVwiO1xuaW1wb3J0IHtWaWRlb1RvdXJzfSBmcm9tIFwiLi4vZ2FsbGVyeS9WaWRlb1RvdXJzXCI7XG5pbXBvcnQge1ZpcnR1YWxUb3VyfSBmcm9tIFwiLi4vZ2FsbGVyeS9WaXJ0dWFsVG91clwiO1xuaW1wb3J0IHtIZXJvQmFkZ2VTdGF0c30gZnJvbSBcIi4uL2Zsb29ycGxhbi9zZWN0aW9uL0hlcm9CYWRnZVN0YXRzXCI7XG5pbXBvcnQge0Fzc2V0TW9kYWx9IGZyb20gXCIuLi9hc3NldC9Bc3NldE1vZGFsXCI7XG5pbXBvcnQge0dyaWRHYWxsZXJ5Q292ZXIsIFRvdXJUeXBlfSBmcm9tIFwiLi4vZ2FsbGVyeS9HcmlkR2FsbGVyeUNvdmVyXCI7XG5pbXBvcnQge0dyaWRHYWxsZXJ5fSBmcm9tIFwiLi4vZ2FsbGVyeS9HcmlkR2FsbGVyeVwiO1xuXG5leHBvcnQgY29uc3QgU2hvcnRUZXJtRmxvb3JwbGFuSGVybzogUmVhY3QuRkM8U2hvcnRUZXJtRmxvb3JwbGFuSGVyb1Byb3BzPiA9IChcbiAgICB7Zmxvb3JwbGFuLCBjb250YWN0Q2xpY2tIYW5kbGVyLCBhcHBseUNsaWNrSGFuZGxlciwgaGFuZGxlUmVmVG9NYXAsIHdlYlNwZWNpYWxzfSkgPT4ge1xuICAgIGNvbnN0IFthc3NldHMsIHNldEFzc2V0c10gPSB1c2VTdGF0ZTxBc3NldFtdPihbXSk7XG4gICAgY29uc3QgW2lzQXNzZXRzTG9hZGluZywgc2V0SXNBc3NldHNMb2FkaW5nXSA9IHVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFt2aWRlb1RvdXJzLCBzZXRWaWRlb1RvdXJzXSA9IHVzZVN0YXRlPHN0cmluZ1tdPihbXSk7XG4gICAgY29uc3QgW3ZpcnR1YWxUb3VyLCBzZXRWaXJ0dWFsVG91cl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICBjb25zdCBbdmlkZW9Ub3VySW1hZ2VCYWNrZ3JvdW5kLCBzZXRWaWRlb1RvdXJJbWFnZUJhY2tncm91bmRdID0gdXNlU3RhdGU8c3RyaW5nPigpO1xuICAgIGNvbnN0IFt2aXJ0dWFsVG91ckltYWdlQmFja2dyb3VuZCwgc2V0VmlydHVhbFRvdXJJbWFnZUJhY2tncm91bmRdID0gdXNlU3RhdGU8c3RyaW5nPigpO1xuXG4gICAgY29uc3QgW3Nob3dGbG9vcnBsYW5Nb2RhbCwgc2V0U2hvd0Zsb29ycGxhbk1vZGFsXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbdG90YWxQYWdlcywgc2V0VG90YWxQYWdlc10gPSB1c2VTdGF0ZSgxKTtcbiAgICBjb25zdCBbdG91cnNDb3VudCwgc2V0VG91cnNDb3VudF0gPSB1c2VTdGF0ZSgxKTtcbiAgICBjb25zdCBbY3VycmVudFZpZXcsIHNldEN1cnJlbnRWaWV3XSA9IHVzZVN0YXRlPFwicGhvdG9cIiB8IFRvdXJUeXBlPihcInBob3RvXCIpO1xuICAgIGNvbnN0IFthc3NldEluRm9jdXMsIHNldEFzc2V0SW5Gb2N1c10gPSB1c2VTdGF0ZTxBc3NldD4oe30gYXMgQXNzZXQpO1xuICAgIGNvbnN0IFthc3NldEluZGV4LCBzZXRBc3NldEluZGV4XSA9IHVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtzaG93TW9kYWwsIHNldFNob3dNb2RhbF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2ZpcnN0UGFnZUltYWdlQ291bnQsIHNldEZpcnN0UGFnZUltYWdlQ291bnRdID0gdXNlU3RhdGUoNCk7XG5cbiAgICBjb25zdCBHUklEX1NJWkUgPSA4O1xuICAgIGNvbnN0IGltYWdlQ2xpY2tlZEhhbmRsZXIgPSAoaW1hZ2U6IEFzc2V0KSA9PiB7XG4gICAgICAgIHNldFNob3dNb2RhbCh0cnVlKTtcbiAgICAgICAgc2V0QXNzZXRJbkZvY3VzKGltYWdlKTtcbiAgICAgICAgc2V0QXNzZXRJbmRleChhc3NldHMuZmluZEluZGV4KHZhbHVlID0+IHZhbHVlLmlkID09PSBpbWFnZS5pZCkpO1xuICAgIH07XG4gICAgY29uc3QgbW9kYWxDbG9zZUhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIHNldFNob3dNb2RhbChmYWxzZSk7XG4gICAgICAgIHNldEFzc2V0SW5Gb2N1cyh7fSBhcyBBc3NldCk7XG4gICAgfTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBpbWFnZXM6IEFzc2V0W10gPSBbXTtcbiAgICAgICAgaW1hZ2VzLnB1c2goe2lkOiBleHRyYWN0SWRGcm9tKGZsb29ycGxhbi5jb3ZlckltYWdlKSwgbmFtZTogXCJjb3ZlciBpbWFnZVwifSBhcyBBc3NldCk7XG5cbiAgICAgICAgbGV0IGZpcnN0UGFnZUNvdW50ID0gZmlyc3RQYWdlSW1hZ2VDb3VudDtcblxuICAgICAgICBpZiAoZmxvb3JwbGFuLnBob3Rvc0ZvbGRlcklkKSB7XG4gICAgICAgICAgICBnZXRBc3NldHNGcm9tKGZsb29ycGxhbi5waG90b3NGb2xkZXJJZCkudGhlbihnYWxsZXJ5QXNzZXRzID0+IHtcblxuICAgICAgICAgICAgICAgIGltYWdlcy5wdXNoKC4uLmdhbGxlcnlBc3NldHMpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGltYWdlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhY2tncm91bmRJbWFnZVVybCA9IGFzc2V0VXJsRnJvbShpbWFnZXNbMV0uaWQsIGZsb29ycGxhbi5wcm9wZXJ0eS5pZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmbG9vcnBsYW4udmlydHVhbFRvdXJMaW5rKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRWaXJ0dWFsVG91cihmbG9vcnBsYW4udmlydHVhbFRvdXJMaW5rKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFZpcnR1YWxUb3VySW1hZ2VCYWNrZ3JvdW5kKGJhY2tncm91bmRJbWFnZVVybCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdFBhZ2VDb3VudCAtPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG91ckxpbmtzID0gW107XG4gICAgICAgICAgICAgICAgICAgIGlmIChmbG9vcnBsYW4udmlkZW9Ub3VyTGluaylcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdXJMaW5rcy5wdXNoKGZsb29ycGxhbi52aWRlb1RvdXJMaW5rKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZsb29ycGxhbi50aHJlZVNpeHR5VmlkZW9Ub3VyTGluaylcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdXJMaW5rcy5wdXNoKGZsb29ycGxhbi50aHJlZVNpeHR5VmlkZW9Ub3VyTGluayk7XG4gICAgICAgICAgICAgICAgICAgIHNldFZpZGVvVG91cnModG91ckxpbmtzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvdXJMaW5rcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRWaWRlb1RvdXJJbWFnZUJhY2tncm91bmQoYmFja2dyb3VuZEltYWdlVXJsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0UGFnZUNvdW50IC09IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBsZXQgb3RoZXJBc3NldENvdW50cyA9ICh0b3VyTGlua3MubGVuZ3RoID4gMCA/IDEgOiAwKSArIChmbG9vcnBsYW4udmlydHVhbFRvdXJMaW5rID8gMSA6IDApO1xuICAgICAgICAgICAgICAgICAgICBzZXRUb3Vyc0NvdW50KG90aGVyQXNzZXRDb3VudHMpO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KS5maW5hbGx5KCgpID0+IHtcblxuICAgICAgICAgICAgICAgIGxldCBwYWdlcyA9IDE7XG5cbiAgICAgICAgICAgICAgICBpZiAoaW1hZ2VzLmxlbmd0aCA+IGZpcnN0UGFnZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbWFpbmluZyA9IGltYWdlcy5sZW5ndGggLSBmaXJzdFBhZ2VDb3VudDtcbiAgICAgICAgICAgICAgICAgICAgcGFnZXMgKz0gcmVtYWluaW5nIC8gODtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlbWFpbmluZyAlIDggPiAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZXMgKz0gMTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzZXRUb3RhbFBhZ2VzKE1hdGgudHJ1bmMocGFnZXMpKTtcbiAgICAgICAgICAgICAgICBzZXRGaXJzdFBhZ2VJbWFnZUNvdW50KGZpcnN0UGFnZUNvdW50KTtcbiAgICAgICAgICAgICAgICBzZXRBc3NldHMoaW1hZ2VzKTtcbiAgICAgICAgICAgICAgICBzZXRJc0Fzc2V0c0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRBc3NldHMoaW1hZ2VzKTtcbiAgICAgICAgICAgIHNldElzQXNzZXRzTG9hZGluZyhmYWxzZSk7XG4gICAgICAgIH1cblxuICAgIH0sIFtmbG9vcnBsYW5dKVxuXG5cbiAgICBjb25zdCBwcmludEZsb29ycGxhbkFkZHJlc3MgPSAoKSA9PiB7XG5cbiAgICAgICAgcmV0dXJuIGZsb29ycGxhbi5hZGRyZXNzICsgXCIsIFwiICsgcmVuYWlzc2FuY2UuY2l0eSArIFwiLCBcIiArIHJlbmFpc3NhbmNlLnN0YXRlICsgXCIgXCIgKyBmbG9vcnBsYW4uemlwY29kZTtcbiAgICB9XG4gICAgY29uc3QgaXNGaXJzdFNsaWRlclBhZ2UgPSAoc2xpZGVJbmRleDogbnVtYmVyKSA9PiBzbGlkZUluZGV4ID09PSAwO1xuXG4gICAgY29uc3QgYXNzZXRzVG9TaG93ID0gKHNsaWRlSW5kZXg6IG51bWJlcikgPT4ge1xuXG4gICAgICAgIGlmIChpc0ZpcnN0U2xpZGVyUGFnZShzbGlkZUluZGV4KSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJmaXJzdFBhZ2VJbWFnZUNvdW50XCIsIGZpcnN0UGFnZUltYWdlQ291bnQpO1xuICAgICAgICAgICAgcmV0dXJuIGFzc2V0cy5zbGljZSgwLCBmaXJzdFBhZ2VJbWFnZUNvdW50IC0gMSk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBmaXJzdFBhZ2VJbWFnZUNvdW50IC0gMSArIChHUklEX1NJWkUgKiAoc2xpZGVJbmRleCAtIDEpKVxuICAgICAgICBjb25zdCBlbmRJbmRleCA9IGZpcnN0UGFnZUltYWdlQ291bnQgLSAxICsgKEdSSURfU0laRSAqIHNsaWRlSW5kZXgpXG5cbiAgICAgICAgcmV0dXJuIGFzc2V0cy5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleCA+IGFzc2V0cy5sZW5ndGggPyBhc3NldHMubGVuZ3RoIDogZW5kSW5kZXgpO1xuICAgIH07XG4gICAgcmV0dXJuIChcbiAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwic2VjdGlvbi1zaG9ydC10ZXJtLWZsb29ycGxhbi0taGVyb1wiPlxuICAgICAgICAgICAge2lzQXNzZXRzTG9hZGluZyA/IDxHYWxsZXJ5SGVyb1NrZWxldG9uLz4gOlxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ2FsbGVyeS1oZXJvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8R2FsbGVyeU1vZGFsIGFzc2V0cz17YXNzZXRzfSBhc3NldEluRm9jdXM9e2Fzc2V0SW5Gb2N1c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXNzZXRJbkZvY3VzPXtzZXRBc3NldEluRm9jdXN9IHNob3dNb2RhbD17c2hvd01vZGFsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NldEluZGV4PXthc3NldEluZGV4fSBzZXRBc3NldEluZGV4PXtzZXRBc3NldEluZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbENsb3NlSGFuZGxlcj17bW9kYWxDbG9zZUhhbmRsZXJ9IHByb3BlcnR5SWQ9e2Zsb29ycGxhbi5wcm9wZXJ0eS5pZH0vPlxuICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRWaWV3ID09PSBcInBob3RvXCIgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGhvdG8tdmlldyBtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbVNsaWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlckl0ZW1zPXtbLi4uQXJyYXkodG90YWxQYWdlcyldLm1hcCgoeCwgaSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPT0gMCkgPyA8R3JpZEdhbGxlcnlDb3ZlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0cz17YXNzZXRzVG9TaG93KGkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb29ycGxhbkFkZHJlc3M9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogZmxvb3JwbGFuLmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IHJlbmFpc3NhbmNlLmNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiByZW5haXNzYW5jZS5zdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwY29kZTogZmxvb3JwbGFuLnppcGNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5SWQ9e2Zsb29ycGxhbi5wcm9wZXJ0eS5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXJvSW1hZ2U9e2Fzc2V0c1swXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZUNsaWNrZWRIYW5kbGVyPXtpbWFnZUNsaWNrZWRIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYlNwZWNpYWxzPXt3ZWJTcGVjaWFsc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0F2YWlsYWJsZU5vdz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3VycmVudFZpZXc9e3NldEN1cnJlbnRWaWV3fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvVG91ckltYWdlQmFja2dyb3VuZD17dmlkZW9Ub3VySW1hZ2VCYWNrZ3JvdW5kfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxUb3VySW1hZ2VCYWNrZ3JvdW5kPXt2aXJ0dWFsVG91ckltYWdlQmFja2dyb3VuZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93T25seUhlcm9JbWFnZT17YXNzZXRzLmxlbmd0aCA9PT0gMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxHcmlkR2FsbGVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlQ2xpY2tlZEhhbmRsZXI9e2ltYWdlQ2xpY2tlZEhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlJZD17Zmxvb3JwbGFuLnByb3BlcnR5LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0cz17YXNzZXRzVG9TaG93KGkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBob3RvLXZpZXcgbW9iaWxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R2FsbGVyeUhlcm9Nb2JpbGUgYXNzZXRzPXthc3NldHN9IHRvdXJzQ291bnQ9e3RvdXJzQ291bnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFRvdXI9e3ZpcnR1YWxUb3VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnJlbnRWaWV3PXtzZXRDdXJyZW50Vmlld31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZUNsaWNrZWRIYW5kbGVyPXtpbWFnZUNsaWNrZWRIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYlNwZWNpYWxzPXt3ZWJTcGVjaWFsc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0F2YWlsYWJsZU5vdz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlJZD17Zmxvb3JwbGFuLnByb3BlcnR5LmlkfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPiA6IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRWaWV3ID09PSBcIlZpZGVvIFRvdXJcIiA/IDxWaWRlb1RvdXJzIHZpZGVvVG91clVybHM9e3ZpZGVvVG91cnN9Lz4gOiBcIlwifVxuICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRWaWV3ID09PSBcIlZpcnR1YWwgVG91clwiID8gPFZpcnR1YWxUb3VyIHZpcnR1YWxUb3VyVXJsPXt2aXJ0dWFsVG91cn0vPiA6IFwiXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICA8SGVyb0JhZGdlU3RhdHMgY3VycmVudFZpZXc9e2N1cnJlbnRWaWV3fSBzZXRDdXJyZW50Vmlldz17c2V0Q3VycmVudFZpZXd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxBc3NldHM9e2Fzc2V0cz8ubGVuZ3RofSB2aWRlb1RvdXJzPXt2aWRlb1RvdXJzfSB2aXJ0dWFsVG91cj17dmlydHVhbFRvdXJ9Lz5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8Lz5cblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPEFzc2V0TW9kYWwgYXNzZXRVcmw9e2Zsb29ycGxhbi5waG90b30gYXNzZXRUaXRsZT1cIkZsb29ycGxhbiBpbWFnZVwiIHNob3dNb2RhbD17c2hvd0Zsb29ycGxhbk1vZGFsfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd01vZGFsPXtzZXRTaG93Rmxvb3JwbGFuTW9kYWx9IHByb3BlcnR5SWQ9e2Zsb29ycGxhbi5wcm9wZXJ0eS5pZH0vPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsb29ycGxhbi0tdHdvLWNvbHVtbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbG9vcnBsYW4tY29sdW1uLWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz57Zmxvb3JwbGFuLm5hbWV9PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoND4ke2Zsb29ycGxhbi5zaG9ydFRlcm0ucHJpY2VGb3I0YW5kTW9yZU1vbnRoc30gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7Zmxvb3JwbGFuLnNob3J0VGVybS5wcmljZUZvcjVUbzEzRGF5c30vRGF5PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImZsb29ycGxhbi0tZGVzY3JpcHRpb25cIj57cHJpbnRGbG9vcnBsYW5BZGRyZXNzKCl9PC9wPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsb29ycGxhbi0tZmVhdHVyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIHNpemU9XCJzbWFsbFwiIG9uQ2xpY2s9eygpID0+IHNldFNob3dGbG9vcnBsYW5Nb2RhbCh0cnVlKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIG5hbWU9XCJtYXhcIiBvcmllbnRhdGlvbj1cInJpZ2h0XCI+Vmlld0Zsb29ycGxhbjwvSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Jm5ic3A7Jm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBzaXplPVwic21hbGxcIiBvbkNsaWNrPXsoKSA9PiBoYW5kbGVSZWZUb01hcCgpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gb3JpZW50YXRpb249XCJyaWdodFwiIG5hbWU9XCJtYXBcIj5WaWV3IG9uIE1hcDwvSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Zmxvb3JwbGFuLnByb3BlcnR5LmJ1c1JvdXRlcy5sZW5ndGggPiAwID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+QnVzIFJvdXRlczombmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmbG9vcnBsYW4ucHJvcGVydHkuYnVzUm91dGVzLm1hcCgoYnVzUm91dGUsIGluZGV4KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGtleT17XCJidXMtcm91dGUtXCIgKyBpbmRleH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9e2J1c1JvdXRlLmJ1c1JvdXRlTGlua30gdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9yZWZlcnJlclwiPntidXNSb3V0ZS5idXNSb3V0ZX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpbmRleCA8IGZsb29ycGxhbi5wcm9wZXJ0eS5idXNSb3V0ZXMubGVuZ3RoIC0gMSA/IFwiLCBcIiA6IFwiXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCIgZmxvb3JwbGFuLWNvbHVtbi1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInByaW1hcnlcIiBzaXplPVwibWVkaXVtXCIgb25DbGljaz17Y29udGFjdENsaWNrSGFuZGxlcn0+Y29udGFjdCB1czwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInRlcnRpYXJ5XCIgc2l6ZT1cIm1lZGl1bVwiIG9uQ2xpY2s9e2FwcGx5Q2xpY2tIYW5kbGVyfT5hcHBseTwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGFyZUJ1dHRvbiB0aXRsZT1cIkNoZWNrIG91dCB0aGlzIGFwYXJ0bWVudFwiIHNpemU9XCJsYXJnZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hvcnRUZXJtRmxvb3JwbGFuSGVyb1Byb3BzIHtcbiAgICBmbG9vcnBsYW46IEZsb29ycGxhblNob3J0VGVybTtcbiAgICB3ZWJTcGVjaWFsczogV2ViU3BlY2lhbFtdO1xuICAgIGNvbnRhY3RDbGlja0hhbmRsZXI6ICgpID0+IHZvaWQ7XG4gICAgYXBwbHlDbGlja0hhbmRsZXI6ICgpID0+IHZvaWQ7XG4gICAgaGFuZGxlUmVmVG9NYXA6ICgpID0+IHZvaWQ7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBR0EsSUFBQUUsTUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsYUFBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksZ0JBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLG9CQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxhQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxrQkFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsV0FBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsWUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsZUFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsV0FBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksaUJBQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLFlBQUEsR0FBQWIsT0FBQTtBQUFtRCxTQUFBYyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBaEIsd0JBQUFnQixDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsdUJBQUFBLENBQUEseUJBQUFBLENBQUEsV0FBQUssT0FBQSxFQUFBTCxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLENBQUEsSUFBQWQsQ0FBQSxvQkFBQWMsQ0FBQSxJQUFBSCxNQUFBLENBQUFJLFNBQUEsQ0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFqQixDQUFBLEVBQUFjLENBQUEsU0FBQUksQ0FBQSxHQUFBUixDQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWIsQ0FBQSxFQUFBYyxDQUFBLFVBQUFJLENBQUEsS0FBQUEsQ0FBQSxDQUFBWCxHQUFBLElBQUFXLENBQUEsQ0FBQUMsR0FBQSxJQUFBUixNQUFBLENBQUFDLGNBQUEsQ0FBQUosQ0FBQSxFQUFBTSxDQUFBLEVBQUFJLENBQUEsSUFBQVYsQ0FBQSxDQUFBTSxDQUFBLElBQUFkLENBQUEsQ0FBQWMsQ0FBQSxZQUFBTixDQUFBLENBQUFILE9BQUEsR0FBQUwsQ0FBQSxFQUFBRyxDQUFBLElBQUFBLENBQUEsQ0FBQWdCLEdBQUEsQ0FBQW5CLENBQUEsRUFBQVEsQ0FBQSxHQUFBQSxDQUFBO0FBRTVDLE1BQU1ZLHNCQUE2RCxHQUFHQyxJQUFBLElBQ1k7RUFBQSxJQUFyRjtJQUFDQyxTQUFTO0lBQUVDLG1CQUFtQjtJQUFFQyxpQkFBaUI7SUFBRUMsY0FBYztJQUFFQztFQUFXLENBQUMsR0FBQUwsSUFBQTtFQUNoRixNQUFNLENBQUNNLE1BQU0sRUFBRUMsU0FBUyxDQUFDLEdBQUcsSUFBQUMsZUFBUSxFQUFVLEVBQUUsQ0FBQztFQUNqRCxNQUFNLENBQUNDLGVBQWUsRUFBRUMsa0JBQWtCLENBQUMsR0FBRyxJQUFBRixlQUFRLEVBQUMsSUFBSSxDQUFDO0VBQzVELE1BQU0sQ0FBQ0csVUFBVSxFQUFFQyxhQUFhLENBQUMsR0FBRyxJQUFBSixlQUFRLEVBQVcsRUFBRSxDQUFDO0VBQzFELE1BQU0sQ0FBQ0ssV0FBVyxFQUFFQyxjQUFjLENBQUMsR0FBRyxJQUFBTixlQUFRLEVBQXFCTyxTQUFTLENBQUM7RUFFN0UsTUFBTSxDQUFDQyx3QkFBd0IsRUFBRUMsMkJBQTJCLENBQUMsR0FBRyxJQUFBVCxlQUFRLEVBQVMsQ0FBQztFQUNsRixNQUFNLENBQUNVLDBCQUEwQixFQUFFQyw2QkFBNkIsQ0FBQyxHQUFHLElBQUFYLGVBQVEsRUFBUyxDQUFDO0VBRXRGLE1BQU0sQ0FBQ1ksa0JBQWtCLEVBQUVDLHFCQUFxQixDQUFDLEdBQUcsSUFBQWIsZUFBUSxFQUFDLEtBQUssQ0FBQztFQUNuRSxNQUFNLENBQUNjLFVBQVUsRUFBRUMsYUFBYSxDQUFDLEdBQUcsSUFBQWYsZUFBUSxFQUFDLENBQUMsQ0FBQztFQUMvQyxNQUFNLENBQUNnQixVQUFVLEVBQUVDLGFBQWEsQ0FBQyxHQUFHLElBQUFqQixlQUFRLEVBQUMsQ0FBQyxDQUFDO0VBQy9DLE1BQU0sQ0FBQ2tCLFdBQVcsRUFBRUMsY0FBYyxDQUFDLEdBQUcsSUFBQW5CLGVBQVEsRUFBcUIsT0FBTyxDQUFDO0VBQzNFLE1BQU0sQ0FBQ29CLFlBQVksRUFBRUMsZUFBZSxDQUFDLEdBQUcsSUFBQXJCLGVBQVEsRUFBUSxDQUFDLENBQVUsQ0FBQztFQUNwRSxNQUFNLENBQUNzQixVQUFVLEVBQUVDLGFBQWEsQ0FBQyxHQUFHLElBQUF2QixlQUFRLEVBQUMsQ0FBQyxDQUFDO0VBQy9DLE1BQU0sQ0FBQ3dCLFNBQVMsRUFBRUMsWUFBWSxDQUFDLEdBQUcsSUFBQXpCLGVBQVEsRUFBQyxLQUFLLENBQUM7RUFDakQsTUFBTSxDQUFDMEIsbUJBQW1CLEVBQUVDLHNCQUFzQixDQUFDLEdBQUcsSUFBQTNCLGVBQVEsRUFBQyxDQUFDLENBQUM7RUFFakUsTUFBTTRCLFNBQVMsR0FBRyxDQUFDO0VBQ25CLE1BQU1DLG1CQUFtQixHQUFJQyxLQUFZLElBQUs7SUFDMUNMLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDbEJKLGVBQWUsQ0FBQ1MsS0FBSyxDQUFDO0lBQ3RCUCxhQUFhLENBQUN6QixNQUFNLENBQUNpQyxTQUFTLENBQUNDLEtBQUssSUFBSUEsS0FBSyxDQUFDQyxFQUFFLEtBQUtILEtBQUssQ0FBQ0csRUFBRSxDQUFDLENBQUM7RUFDbkUsQ0FBQztFQUNELE1BQU1DLGlCQUFpQixHQUFHQSxDQUFBLEtBQU07SUFDNUJULFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDbkJKLGVBQWUsQ0FBQyxDQUFDLENBQVUsQ0FBQztFQUNoQyxDQUFDO0VBQ0QsSUFBQWMsZ0JBQVMsRUFBQyxNQUFNO0lBQ1osTUFBTUMsTUFBZSxHQUFHLEVBQUU7SUFDMUJBLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO01BQUNKLEVBQUUsRUFBRSxJQUFBSyxvQkFBYSxFQUFDN0MsU0FBUyxDQUFDOEMsVUFBVSxDQUFDO01BQUVDLElBQUksRUFBRTtJQUFhLENBQVUsQ0FBQztJQUVwRixJQUFJQyxjQUFjLEdBQUdmLG1CQUFtQjtJQUV4QyxJQUFJakMsU0FBUyxDQUFDaUQsY0FBYyxFQUFFO01BQzFCLElBQUFDLDJCQUFhLEVBQUNsRCxTQUFTLENBQUNpRCxjQUFjLENBQUMsQ0FBQ0UsSUFBSSxDQUFDQyxhQUFhLElBQUk7UUFFMURULE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLEdBQUdRLGFBQWEsQ0FBQztRQUU3QixJQUFJVCxNQUFNLENBQUNVLE1BQU0sR0FBRyxDQUFDLEVBQUU7VUFDbkIsTUFBTUMsa0JBQWtCLEdBQUcsSUFBQUMsMEJBQVksRUFBQ1osTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDSCxFQUFFLEVBQUV4QyxTQUFTLENBQUN3RCxRQUFRLENBQUNoQixFQUFFLENBQUM7VUFDNUUsSUFBSXhDLFNBQVMsQ0FBQ3lELGVBQWUsRUFBRTtZQUMzQjVDLGNBQWMsQ0FBQ2IsU0FBUyxDQUFDeUQsZUFBZSxDQUFDO1lBQ3pDdkMsNkJBQTZCLENBQUNvQyxrQkFBa0IsQ0FBQztZQUNqRE4sY0FBYyxJQUFJLENBQUM7VUFDdkI7VUFFQSxNQUFNVSxTQUFTLEdBQUcsRUFBRTtVQUNwQixJQUFJMUQsU0FBUyxDQUFDMkQsYUFBYSxFQUN2QkQsU0FBUyxDQUFDZCxJQUFJLENBQUM1QyxTQUFTLENBQUMyRCxhQUFhLENBQUM7VUFDM0MsSUFBSTNELFNBQVMsQ0FBQzRELHVCQUF1QixFQUNqQ0YsU0FBUyxDQUFDZCxJQUFJLENBQUM1QyxTQUFTLENBQUM0RCx1QkFBdUIsQ0FBQztVQUNyRGpELGFBQWEsQ0FBQytDLFNBQVMsQ0FBQztVQUN4QixJQUFJQSxTQUFTLENBQUNMLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdEJyQywyQkFBMkIsQ0FBQ3NDLGtCQUFrQixDQUFDO1lBQy9DTixjQUFjLElBQUksQ0FBQztVQUN2QjtVQUVBLElBQUlhLGdCQUFnQixHQUFHLENBQUNILFNBQVMsQ0FBQ0wsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLckQsU0FBUyxDQUFDeUQsZUFBZSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7VUFDM0ZqQyxhQUFhLENBQUNxQyxnQkFBZ0IsQ0FBQztRQUVuQztNQUVKLENBQUMsQ0FBQyxDQUFDQyxPQUFPLENBQUMsTUFBTTtRQUViLElBQUlDLEtBQUssR0FBRyxDQUFDO1FBRWIsSUFBSXBCLE1BQU0sQ0FBQ1UsTUFBTSxHQUFHTCxjQUFjLEVBQUU7VUFDaEMsTUFBTWdCLFNBQVMsR0FBR3JCLE1BQU0sQ0FBQ1UsTUFBTSxHQUFHTCxjQUFjO1VBQ2hEZSxLQUFLLElBQUlDLFNBQVMsR0FBRyxDQUFDO1VBQ3RCLElBQUlBLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUNqQkQsS0FBSyxJQUFJLENBQUM7UUFDbEI7UUFFQXpDLGFBQWEsQ0FBQzJDLElBQUksQ0FBQ0MsS0FBSyxDQUFDSCxLQUFLLENBQUMsQ0FBQztRQUNoQzdCLHNCQUFzQixDQUFDYyxjQUFjLENBQUM7UUFDdEMxQyxTQUFTLENBQUNxQyxNQUFNLENBQUM7UUFDakJsQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7TUFDN0IsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxNQUFNO01BQ0hILFNBQVMsQ0FBQ3FDLE1BQU0sQ0FBQztNQUNqQmxDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztJQUM3QjtFQUVKLENBQUMsRUFBRSxDQUFDVCxTQUFTLENBQUMsQ0FBQztFQUdmLE1BQU1tRSxxQkFBcUIsR0FBR0EsQ0FBQSxLQUFNO0lBRWhDLE9BQU9uRSxTQUFTLENBQUNvRSxPQUFPLEdBQUcsSUFBSSxHQUFHQyw0QkFBVyxDQUFDQyxJQUFJLEdBQUcsSUFBSSxHQUFHRCw0QkFBVyxDQUFDRSxLQUFLLEdBQUcsR0FBRyxHQUFHdkUsU0FBUyxDQUFDd0UsT0FBTztFQUMzRyxDQUFDO0VBQ0QsTUFBTUMsaUJBQWlCLEdBQUlDLFVBQWtCLElBQUtBLFVBQVUsS0FBSyxDQUFDO0VBRWxFLE1BQU1DLFlBQVksR0FBSUQsVUFBa0IsSUFBSztJQUV6QyxJQUFJRCxpQkFBaUIsQ0FBQ0MsVUFBVSxDQUFDLEVBQUU7TUFDL0JFLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLHFCQUFxQixFQUFFNUMsbUJBQW1CLENBQUM7TUFDdkQsT0FBTzVCLE1BQU0sQ0FBQ3lFLEtBQUssQ0FBQyxDQUFDLEVBQUU3QyxtQkFBbUIsR0FBRyxDQUFDLENBQUM7SUFDbkQ7SUFHQSxNQUFNOEMsVUFBVSxHQUFHOUMsbUJBQW1CLEdBQUcsQ0FBQyxHQUFJRSxTQUFTLElBQUl1QyxVQUFVLEdBQUcsQ0FBQyxDQUFFO0lBQzNFLE1BQU1NLFFBQVEsR0FBRy9DLG1CQUFtQixHQUFHLENBQUMsR0FBSUUsU0FBUyxHQUFHdUMsVUFBVztJQUVuRSxPQUFPckUsTUFBTSxDQUFDeUUsS0FBSyxDQUFDQyxVQUFVLEVBQUVDLFFBQVEsR0FBRzNFLE1BQU0sQ0FBQ2dELE1BQU0sR0FBR2hELE1BQU0sQ0FBQ2dELE1BQU0sR0FBRzJCLFFBQVEsQ0FBQztFQUN4RixDQUFDO0VBQ0Qsb0JBQ0l2SCxNQUFBLENBQUFzQixPQUFBLENBQUFrRyxhQUFBO0lBQVNDLFNBQVMsRUFBQztFQUFvQyxHQUNsRDFFLGVBQWUsZ0JBQUcvQyxNQUFBLENBQUFzQixPQUFBLENBQUFrRyxhQUFBLENBQUNqSCxvQkFBQSxDQUFBbUgsbUJBQW1CLE1BQUMsQ0FBQyxnQkFDckMxSCxNQUFBLENBQUFzQixPQUFBLENBQUFrRyxhQUFBLENBQUF4SCxNQUFBLENBQUFzQixPQUFBLENBQUFxRyxRQUFBLHFCQUNJM0gsTUFBQSxDQUFBc0IsT0FBQSxDQUFBa0csYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBYyxnQkFDekJ6SCxNQUFBLENBQUFzQixPQUFBLENBQUFrRyxhQUFBLENBQUNoSCxhQUFBLENBQUFvSCxZQUFZO0lBQUNoRixNQUFNLEVBQUVBLE1BQU87SUFBQ3NCLFlBQVksRUFBRUEsWUFBYTtJQUMzQ0MsZUFBZSxFQUFFQSxlQUFnQjtJQUFDRyxTQUFTLEVBQUVBLFNBQVU7SUFDdkRGLFVBQVUsRUFBRUEsVUFBVztJQUFDQyxhQUFhLEVBQUVBLGFBQWM7SUFDckRXLGlCQUFpQixFQUFFQSxpQkFBa0I7SUFBQzZDLFVBQVUsRUFBRXRGLFNBQVMsQ0FBQ3dELFFBQVEsQ0FBQ2hCO0VBQUcsQ0FBQyxDQUFDLEVBQ3ZGZixXQUFXLEtBQUssT0FBTyxnQkFDcEJoRSxNQUFBLENBQUFzQixPQUFBLENBQUFrRyxhQUFBLENBQUF4SCxNQUFBLENBQUFzQixPQUFBLENBQUFxRyxRQUFBLHFCQUNJM0gsTUFBQSxDQUFBc0IsT0FBQSxDQUFBa0csYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBaUIsZ0JBQzVCekgsTUFBQSxDQUFBc0IsT0FBQSxDQUFBa0csYUFBQSxDQUFDckgsVUFBQSxDQUFBMkgsVUFBVTtJQUNQQyxXQUFXLEVBQUUsQ0FBQyxHQUFHQyxLQUFLLENBQUNwRSxVQUFVLENBQUMsQ0FBQyxDQUFDcUUsR0FBRyxDQUFDLENBQUNDLENBQUMsRUFBRS9GLENBQUMsS0FDeENBLENBQUMsSUFBSSxDQUFDLGdCQUFJbkMsTUFBQSxDQUFBc0IsT0FBQSxDQUFBa0csYUFBQSxDQUFDMUcsaUJBQUEsQ0FBQXFILGdCQUFnQjtNQUNwQnZGLE1BQU0sRUFBRXNFLFlBQVksQ0FBQy9FLENBQUMsQ0FBRTtNQUN4QmlHLGdCQUFnQixFQUFFO1FBQ2R6QixPQUFPLEVBQUVwRSxTQUFTLENBQUNvRSxPQUFPO1FBQzFCRSxJQUFJLEVBQUVELDRCQUFXLENBQUNDLElBQUk7UUFDdEJDLEtBQUssRUFBRUYsNEJBQVcsQ0FBQ0UsS0FBSztRQUN4QkMsT0FBTyxFQUFFeEUsU0FBUyxDQUFDd0U7TUFDdkIsQ0FBRTtNQUNGYyxVQUFVLEVBQUV0RixTQUFTLENBQUN3RCxRQUFRLENBQUNoQixFQUFHO01BQ2xDc0QsU0FBUyxFQUFFekYsTUFBTSxDQUFDLENBQUMsQ0FBRTtNQUNyQitCLG1CQUFtQixFQUFFQSxtQkFBb0I7TUFDekNoQyxXQUFXLEVBQUVBLFdBQVk7TUFDekIyRixjQUFjLEVBQUUsS0FBTTtNQUN0QnJFLGNBQWMsRUFBRUEsY0FBZTtNQUMvQlgsd0JBQXdCLEVBQUVBLHdCQUF5QjtNQUNuREUsMEJBQTBCLEVBQUVBLDBCQUEyQjtNQUN2RCtFLGlCQUFpQixFQUFFM0YsTUFBTSxDQUFDZ0QsTUFBTSxLQUFLO0lBQUUsQ0FDMUMsQ0FBQyxnQkFDRjVGLE1BQUEsQ0FBQXNCLE9BQUEsQ0FBQWtHLGFBQUEsQ0FBQ3pHLFlBQUEsQ0FBQXlILFdBQVc7TUFDUjdELG1CQUFtQixFQUFFQSxtQkFBb0I7TUFDekNrRCxVQUFVLEVBQUV0RixTQUFTLENBQUN3RCxRQUFRLENBQUNoQixFQUFHO01BQ2xDbkMsTUFBTSxFQUFFc0UsWUFBWSxDQUFDL0UsQ0FBQztJQUFFLENBQzNCLENBQ1Q7RUFBRSxDQUFDLENBQ04sQ0FBQyxlQUNObkMsTUFBQSxDQUFBc0IsT0FBQSxDQUFBa0csYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBbUIsZ0JBQzlCekgsTUFBQSxDQUFBc0IsT0FBQSxDQUFBa0csYUFBQSxDQUFDL0csa0JBQUEsQ0FBQWdJLGlCQUFpQjtJQUFDN0YsTUFBTSxFQUFFQSxNQUFPO0lBQUNrQixVQUFVLEVBQUVBLFVBQVc7SUFDdkNYLFdBQVcsRUFBRUEsV0FBWTtJQUN6QmMsY0FBYyxFQUFFQSxjQUFlO0lBQy9CVSxtQkFBbUIsRUFBRUEsbUJBQW9CO0lBQ3pDaEMsV0FBVyxFQUFFQSxXQUFZO0lBQ3pCMkYsY0FBYyxFQUFFLEtBQU07SUFDdEJULFVBQVUsRUFBRXRGLFNBQVMsQ0FBQ3dELFFBQVEsQ0FBQ2hCO0VBQUcsQ0FBQyxDQUNyRCxDQUNQLENBQUMsR0FBRyxFQUFFLEVBR1hmLFdBQVcsS0FBSyxZQUFZLGdCQUFHaEUsTUFBQSxDQUFBc0IsT0FBQSxDQUFBa0csYUFBQSxDQUFDOUcsV0FBQSxDQUFBZ0ksVUFBVTtJQUFDQyxhQUFhLEVBQUUxRjtFQUFXLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFDNUVlLFdBQVcsS0FBSyxjQUFjLGdCQUFHaEUsTUFBQSxDQUFBc0IsT0FBQSxDQUFBa0csYUFBQSxDQUFDN0csWUFBQSxDQUFBaUksV0FBVztJQUFDQyxjQUFjLEVBQUUxRjtFQUFZLENBQUMsQ0FBQyxHQUFHLEVBQUUsZUFDbEZuRCxNQUFBLENBQUFzQixPQUFBLENBQUFrRyxhQUFBLENBQUM1RyxlQUFBLENBQUFrSSxjQUFjO0lBQUM5RSxXQUFXLEVBQUVBLFdBQVk7SUFBQ0MsY0FBYyxFQUFFQSxjQUFlO0lBQ3pEOEUsV0FBVyxFQUFFbkcsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVnRCxNQUFPO0lBQUMzQyxVQUFVLEVBQUVBLFVBQVc7SUFBQ0UsV0FBVyxFQUFFQTtFQUFZLENBQUMsQ0FFOUYsQ0FDUCxDQUFDLGVBR1BuRCxNQUFBLENBQUFzQixPQUFBLENBQUFrRyxhQUFBLENBQUMzRyxXQUFBLENBQUFtSSxVQUFVO0lBQUNDLFFBQVEsRUFBRTFHLFNBQVMsQ0FBQzJHLEtBQU07SUFBQ0MsVUFBVSxFQUFDLGlCQUFpQjtJQUFDN0UsU0FBUyxFQUFFWixrQkFBbUI7SUFDdEZhLFlBQVksRUFBRVoscUJBQXNCO0lBQUNrRSxVQUFVLEVBQUV0RixTQUFTLENBQUN3RCxRQUFRLENBQUNoQjtFQUFHLENBQUMsQ0FBQyxlQUNyRi9FLE1BQUEsQ0FBQXNCLE9BQUEsQ0FBQWtHLGFBQUE7SUFBS0MsU0FBUyxFQUFDO0VBQVcsZ0JBQ3RCekgsTUFBQSxDQUFBc0IsT0FBQSxDQUFBa0csYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBd0IsZ0JBQ25DekgsTUFBQSxDQUFBc0IsT0FBQSxDQUFBa0csYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBdUIsZ0JBQ2xDekgsTUFBQSxDQUFBc0IsT0FBQSxDQUFBa0csYUFBQSxhQUFLakYsU0FBUyxDQUFDK0MsSUFBUyxDQUFDLGVBQ3pCdEYsTUFBQSxDQUFBc0IsT0FBQSxDQUFBa0csYUFBQSxhQUFJLEdBQUMsRUFBQ2pGLFNBQVMsQ0FBQzZHLFNBQVMsQ0FBQ0Msc0JBQXNCLEVBQUMsTUFDNUMsRUFBQzlHLFNBQVMsQ0FBQzZHLFNBQVMsQ0FBQ0UsaUJBQWlCLEVBQUMsTUFBUSxDQUFDLGVBQ3JEdEosTUFBQSxDQUFBc0IsT0FBQSxDQUFBa0csYUFBQTtJQUFHQyxTQUFTLEVBQUM7RUFBd0IsR0FBRWYscUJBQXFCLENBQUMsQ0FBSyxDQUFDLGVBRW5FMUcsTUFBQSxDQUFBc0IsT0FBQSxDQUFBa0csYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBcUIsZ0JBQ2hDekgsTUFBQSxDQUFBc0IsT0FBQSxDQUFBa0csYUFBQSxDQUFDckgsVUFBQSxDQUFBb0osTUFBTTtJQUFDQyxJQUFJLEVBQUMsT0FBTztJQUFDQyxPQUFPLEVBQUVBLENBQUEsS0FBTTlGLHFCQUFxQixDQUFDLElBQUk7RUFBRSxnQkFDNUQzRCxNQUFBLENBQUFzQixPQUFBLENBQUFrRyxhQUFBLENBQUNySCxVQUFBLENBQUF1SixJQUFJO0lBQUNwRSxJQUFJLEVBQUMsS0FBSztJQUFDcUUsV0FBVyxFQUFDO0VBQU8sR0FBQyxlQUFtQixDQUNwRCxDQUFDLGFBRVQsZUFBQTNKLE1BQUEsQ0FBQXNCLE9BQUEsQ0FBQWtHLGFBQUEsQ0FBQ3JILFVBQUEsQ0FBQW9KLE1BQU07SUFBQ0MsSUFBSSxFQUFDLE9BQU87SUFBQ0MsT0FBTyxFQUFFQSxDQUFBLEtBQU0vRyxjQUFjLENBQUM7RUFBRSxnQkFDakQxQyxNQUFBLENBQUFzQixPQUFBLENBQUFrRyxhQUFBLENBQUNySCxVQUFBLENBQUF1SixJQUFJO0lBQUNDLFdBQVcsRUFBQyxPQUFPO0lBQUNyRSxJQUFJLEVBQUM7RUFBSyxHQUFDLGFBQWlCLENBQ2xELENBQUMsRUFDUi9DLFNBQVMsQ0FBQ3dELFFBQVEsQ0FBQzZELFNBQVMsQ0FBQ2hFLE1BQU0sR0FBRyxDQUFDLGdCQUNwQzVGLE1BQUEsQ0FBQXNCLE9BQUEsQ0FBQWtHLGFBQUEsWUFBRyxpQkFDQyxFQUFDakYsU0FBUyxDQUFDd0QsUUFBUSxDQUFDNkQsU0FBUyxDQUFDM0IsR0FBRyxDQUFDLENBQUM0QixRQUFRLEVBQUVDLEtBQUssa0JBQzlDOUosTUFBQSxDQUFBc0IsT0FBQSxDQUFBa0csYUFBQTtJQUFNdUMsR0FBRyxFQUFFLFlBQVksR0FBR0Q7RUFBTSxnQkFDNUI5SixNQUFBLENBQUFzQixPQUFBLENBQUFrRyxhQUFBO0lBQUd3QyxJQUFJLEVBQUVILFFBQVEsQ0FBQ0ksWUFBYTtJQUFDQyxNQUFNLEVBQUMsUUFBUTtJQUM1Q0MsR0FBRyxFQUFDO0VBQVksR0FBRU4sUUFBUSxDQUFDQSxRQUFZLENBQUMsRUFDMUNDLEtBQUssR0FBR3ZILFNBQVMsQ0FBQ3dELFFBQVEsQ0FBQzZELFNBQVMsQ0FBQ2hFLE1BQU0sR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQ3hELENBQ1YsQ0FDRCxDQUFDLEdBQ0YsRUFDTCxDQUNKLENBQUMsZUFDTjVGLE1BQUEsQ0FBQXNCLE9BQUEsQ0FBQWtHLGFBQUE7SUFBS0MsU0FBUyxFQUFDO0VBQU0sZ0JBQ2pCekgsTUFBQSxDQUFBc0IsT0FBQSxDQUFBa0csYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBeUIsZ0JBQ3BDekgsTUFBQSxDQUFBc0IsT0FBQSxDQUFBa0csYUFBQSxDQUFDckgsVUFBQSxDQUFBb0osTUFBTTtJQUFDYSxPQUFPLEVBQUMsU0FBUztJQUFDWixJQUFJLEVBQUMsUUFBUTtJQUFDQyxPQUFPLEVBQUVqSDtFQUFvQixHQUFDLFlBQWtCLENBQUMsZUFDekZ4QyxNQUFBLENBQUFzQixPQUFBLENBQUFrRyxhQUFBLENBQUNySCxVQUFBLENBQUFvSixNQUFNO0lBQUNhLE9BQU8sRUFBQyxVQUFVO0lBQUNaLElBQUksRUFBQyxRQUFRO0lBQUNDLE9BQU8sRUFBRWhIO0VBQWtCLEdBQUMsT0FBYSxDQUFDLGVBQ25GekMsTUFBQSxDQUFBc0IsT0FBQSxDQUFBa0csYUFBQSxDQUFDckgsVUFBQSxDQUFBa0ssV0FBVztJQUFDQyxLQUFLLEVBQUMsMEJBQTBCO0lBQUNkLElBQUksRUFBQztFQUFPLENBQUMsQ0FDMUQsQ0FDSixDQUNKLENBQ0osQ0FDQSxDQUFDO0FBRWxCLENBQUM7QUFBQ2UsT0FBQSxDQUFBbEksc0JBQUEsR0FBQUEsc0JBQUEifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@renaissancerentals/renaissance-component",
3
- "version": "12.1.53",
3
+ "version": "12.2.0",
4
4
  "description": "Renaissance rentals UI component library",
5
5
  "author": "asikpradhan",
6
6
  "license": "MIT",
@@ -1,16 +0,0 @@
1
- import React from "react";
2
- import './assets/GalleryHero.scss';
3
- import { Asset } from "../asset/data/Asset";
4
- import { WebSpecial } from "../floorplan/data/Floorplan";
5
- export declare const GalleryHeroMain: React.FC<GalleryHeroProps>;
6
- export interface GalleryHeroProps {
7
- assetsToShow: Asset[];
8
- virtualTour?: string;
9
- isAvailableNow?: boolean;
10
- isFirst: boolean;
11
- toursCount: number;
12
- webSpecials: WebSpecial[];
13
- setCurrentView: (view: "photo" | "virtual tour" | "video tour") => void;
14
- imageClickedHandler: (image: Asset) => void;
15
- propertyId: string;
16
- }
@@ -1,72 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.GalleryHeroMain = void 0;
7
- var _react = _interopRequireDefault(require("react"));
8
- require("./assets/GalleryHero.scss");
9
- var _AssetService = require("../asset/service/AssetService");
10
- var _muncherUi = require("@contentmunch/muncher-ui");
11
- var _HeroImageCard = require("./HeroImageCard");
12
- var _icon = _interopRequireDefault(require("../floorplan/card/assets/360-icon.png"));
13
- var _videoIcon = _interopRequireDefault(require("../floorplan/card/assets/video-icon.png"));
14
- var _SpecialOfferBadge = require("../specialOffer/SpecialOfferBadge");
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
- const GalleryHeroMain = _ref => {
17
- let {
18
- virtualTour,
19
- setCurrentView,
20
- isAvailableNow,
21
- webSpecials,
22
- assetsToShow,
23
- isFirst,
24
- toursCount,
25
- imageClickedHandler,
26
- propertyId
27
- } = _ref;
28
- const cardImageIcon = i => virtualTour && i === 0 ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("img", {
29
- src: _icon.default,
30
- alt: "tour icon",
31
- height: 50
32
- }), /*#__PURE__*/_react.default.createElement("p", null, "Virtual Tour")) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("img", {
33
- src: _videoIcon.default,
34
- alt: "video icon",
35
- height: 40
36
- }), /*#__PURE__*/_react.default.createElement("p", null, "Video Tour"));
37
- return /*#__PURE__*/_react.default.createElement("div", {
38
- className: "div-gallery"
39
- }, /*#__PURE__*/_react.default.createElement("div", {
40
- className: "badge--info"
41
- }, isFirst && isAvailableNow ? /*#__PURE__*/_react.default.createElement(_muncherUi.Badge, {
42
- variant: "secondary"
43
- }, "Available Now") : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), isFirst && webSpecials.length > 0 ? /*#__PURE__*/_react.default.createElement(_SpecialOfferBadge.SpecialOfferBadge, null) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null)), isFirst && webSpecials.length > 0 ? /*#__PURE__*/_react.default.createElement("div", {
44
- className: "gallery--information"
45
- }, /*#__PURE__*/_react.default.createElement("p", null, webSpecials[0].description)) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), /*#__PURE__*/_react.default.createElement("div", {
46
- className: "gallery-hero-two-columns"
47
- }, isFirst ? /*#__PURE__*/_react.default.createElement("div", {
48
- className: assetsToShow.length < 2 ? "gallery-hero-one" : "gallery-hero-column-one"
49
- }, assetsToShow.slice(0, 1).map(asset => /*#__PURE__*/_react.default.createElement("img", {
50
- src: (0, _AssetService.assetUrlFrom)(asset.id, propertyId),
51
- alt: asset.name,
52
- key: asset.id,
53
- className: "gallery-hero--image",
54
- onClick: () => imageClickedHandler(asset)
55
- }))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), assetsToShow.length > 1 ? /*#__PURE__*/_react.default.createElement("div", {
56
- className: isFirst ? "gallery-hero-column-two" : "gallery-hero-column"
57
- }, isFirst ? [...Array(toursCount)].map((x, i) => /*#__PURE__*/_react.default.createElement(_HeroImageCard.HeroImageCard, {
58
- backgroundImage: (0, _AssetService.assetUrlFrom)(assetsToShow[i].id, propertyId),
59
- key: "tour" + i,
60
- onClick: () => {
61
- virtualTour && i === 0 ? setCurrentView("virtual tour") : setCurrentView("video tour");
62
- }
63
- }, cardImageIcon(i))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), assetsToShow.slice(isFirst ? 1 : 0, assetsToShow.length).map(asset => /*#__PURE__*/_react.default.createElement("img", {
64
- src: (0, _AssetService.assetUrlFrom)(asset.id, propertyId),
65
- alt: asset.name,
66
- key: asset.id,
67
- className: "gallery-hero--image",
68
- onClick: () => imageClickedHandler(asset)
69
- }))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null)));
70
- };
71
- exports.GalleryHeroMain = GalleryHeroMain;
72
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9Bc3NldFNlcnZpY2UiLCJfbXVuY2hlclVpIiwiX0hlcm9JbWFnZUNhcmQiLCJfaWNvbiIsIl92aWRlb0ljb24iLCJfU3BlY2lhbE9mZmVyQmFkZ2UiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkdhbGxlcnlIZXJvTWFpbiIsIl9yZWYiLCJ2aXJ0dWFsVG91ciIsInNldEN1cnJlbnRWaWV3IiwiaXNBdmFpbGFibGVOb3ciLCJ3ZWJTcGVjaWFscyIsImFzc2V0c1RvU2hvdyIsImlzRmlyc3QiLCJ0b3Vyc0NvdW50IiwiaW1hZ2VDbGlja2VkSGFuZGxlciIsInByb3BlcnR5SWQiLCJjYXJkSW1hZ2VJY29uIiwiaSIsImNyZWF0ZUVsZW1lbnQiLCJGcmFnbWVudCIsInNyYyIsInRvdXJJY29uIiwiYWx0IiwiaGVpZ2h0IiwidmlkZW9JY29uIiwiY2xhc3NOYW1lIiwiQmFkZ2UiLCJ2YXJpYW50IiwibGVuZ3RoIiwiU3BlY2lhbE9mZmVyQmFkZ2UiLCJkZXNjcmlwdGlvbiIsInNsaWNlIiwibWFwIiwiYXNzZXQiLCJhc3NldFVybEZyb20iLCJpZCIsIm5hbWUiLCJrZXkiLCJvbkNsaWNrIiwiQXJyYXkiLCJ4IiwiSGVyb0ltYWdlQ2FyZCIsImJhY2tncm91bmRJbWFnZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2FsbGVyeS9HYWxsZXJ5SGVyb01haW4udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCAnLi9hc3NldHMvR2FsbGVyeUhlcm8uc2Nzcyc7XG5pbXBvcnQge0Fzc2V0fSBmcm9tIFwiLi4vYXNzZXQvZGF0YS9Bc3NldFwiO1xuaW1wb3J0IHthc3NldFVybEZyb219IGZyb20gXCIuLi9hc3NldC9zZXJ2aWNlL0Fzc2V0U2VydmljZVwiO1xuaW1wb3J0IHtCYWRnZX0gZnJvbSBcIkBjb250ZW50bXVuY2gvbXVuY2hlci11aVwiO1xuaW1wb3J0IHtIZXJvSW1hZ2VDYXJkfSBmcm9tIFwiLi9IZXJvSW1hZ2VDYXJkXCI7XG5pbXBvcnQgdG91ckljb24gZnJvbSBcIi4uL2Zsb29ycGxhbi9jYXJkL2Fzc2V0cy8zNjAtaWNvbi5wbmdcIjtcbmltcG9ydCB2aWRlb0ljb24gZnJvbSBcIi4uL2Zsb29ycGxhbi9jYXJkL2Fzc2V0cy92aWRlby1pY29uLnBuZ1wiO1xuaW1wb3J0IHtXZWJTcGVjaWFsfSBmcm9tIFwiLi4vZmxvb3JwbGFuL2RhdGEvRmxvb3JwbGFuXCI7XG5pbXBvcnQge1NwZWNpYWxPZmZlckJhZGdlfSBmcm9tIFwiLi4vc3BlY2lhbE9mZmVyL1NwZWNpYWxPZmZlckJhZGdlXCI7XG5cbmV4cG9ydCBjb25zdCBHYWxsZXJ5SGVyb01haW46IFJlYWN0LkZDPEdhbGxlcnlIZXJvUHJvcHM+ID0gKFxuICAgIHtcbiAgICAgICAgdmlydHVhbFRvdXIsIHNldEN1cnJlbnRWaWV3LCBpc0F2YWlsYWJsZU5vdywgd2ViU3BlY2lhbHMsXG4gICAgICAgIGFzc2V0c1RvU2hvdywgaXNGaXJzdCwgdG91cnNDb3VudCwgaW1hZ2VDbGlja2VkSGFuZGxlciwgcHJvcGVydHlJZFxuICAgIH0pID0+IHtcblxuICAgIGNvbnN0IGNhcmRJbWFnZUljb24gPSAoaTogbnVtYmVyKSA9PiB2aXJ0dWFsVG91ciAmJiBpID09PSAwID9cbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxpbWcgc3JjPXt0b3VySWNvbn0gYWx0PVwidG91ciBpY29uXCIgaGVpZ2h0PXs1MH0vPlxuICAgICAgICAgICAgPHA+VmlydHVhbCBUb3VyPC9wPlxuICAgICAgICA8Lz4gOlxuICAgICAgICA8PlxuICAgICAgICAgICAgPGltZyBzcmM9e3ZpZGVvSWNvbn0gYWx0PVwidmlkZW8gaWNvblwiIGhlaWdodD17NDB9Lz5cbiAgICAgICAgICAgIDxwPlZpZGVvIFRvdXI8L3A+XG4gICAgICAgIDwvPlxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkaXYtZ2FsbGVyeVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiYWRnZS0taW5mb1wiPlxuICAgICAgICAgICAgICAgIHtpc0ZpcnN0ICYmIGlzQXZhaWxhYmxlTm93ID9cbiAgICAgICAgICAgICAgICAgICAgPEJhZGdlIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIj5BdmFpbGFibGUgTm93PC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgOiA8PjwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7aXNGaXJzdCAmJiB3ZWJTcGVjaWFscy5sZW5ndGggPiAwID9cbiAgICAgICAgICAgICAgICAgICAgPFNwZWNpYWxPZmZlckJhZGdlLz4gOiA8PjwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAge2lzRmlyc3QgJiYgd2ViU3BlY2lhbHMubGVuZ3RoID4gMCA/XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJnYWxsZXJ5LS1pbmZvcm1hdGlvblwiPjxwPnt3ZWJTcGVjaWFsc1swXS5kZXNjcmlwdGlvbn08L3A+PC9kaXY+IDogPD48Lz5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJnYWxsZXJ5LWhlcm8tdHdvLWNvbHVtbnNcIj5cbiAgICAgICAgICAgICAgICB7aXNGaXJzdCA/XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YXNzZXRzVG9TaG93Lmxlbmd0aCA8IDIgPyBcImdhbGxlcnktaGVyby1vbmVcIiA6IFwiZ2FsbGVyeS1oZXJvLWNvbHVtbi1vbmVcIn0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRzVG9TaG93LnNsaWNlKDAsIDEpLm1hcCgoYXNzZXQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPXthc3NldFVybEZyb20oYXNzZXQuaWQsIHByb3BlcnR5SWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD17YXNzZXQubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Fzc2V0LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImdhbGxlcnktaGVyby0taW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGltYWdlQ2xpY2tlZEhhbmRsZXIoYXNzZXQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IDogPD48Lz59XG4gICAgICAgICAgICAgICAge2Fzc2V0c1RvU2hvdy5sZW5ndGggPiAxID9cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2lzRmlyc3QgPyBcImdhbGxlcnktaGVyby1jb2x1bW4tdHdvXCIgOiBcImdhbGxlcnktaGVyby1jb2x1bW5cIn0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNGaXJzdCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWy4uLkFycmF5KHRvdXJzQ291bnQpXS5tYXAoKHgsIGkpID0+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhlcm9JbWFnZUNhcmQgYmFja2dyb3VuZEltYWdlPXthc3NldFVybEZyb20oYXNzZXRzVG9TaG93W2ldLmlkLCBwcm9wZXJ0eUlkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtcInRvdXJcIiArIGl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxUb3VyICYmIGkgPT09IDAgPyBzZXRDdXJyZW50VmlldyhcInZpcnR1YWwgdG91clwiKSA6IHNldEN1cnJlbnRWaWV3KFwidmlkZW8gdG91clwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FyZEltYWdlSWNvbihpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9IZXJvSW1hZ2VDYXJkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiA8PjwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRzVG9TaG93LnNsaWNlKGlzRmlyc3QgPyAxIDogMCwgYXNzZXRzVG9TaG93Lmxlbmd0aCkubWFwKChhc3NldCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9e2Fzc2V0VXJsRnJvbShhc3NldC5pZCwgcHJvcGVydHlJZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PXthc3NldC5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YXNzZXQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZ2FsbGVyeS1oZXJvLS1pbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaW1hZ2VDbGlja2VkSGFuZGxlcihhc3NldCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gOiA8PjwvPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59O1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgR2FsbGVyeUhlcm9Qcm9wcyB7XG5cbiAgICBhc3NldHNUb1Nob3c6IEFzc2V0W107XG4gICAgdmlydHVhbFRvdXI/OiBzdHJpbmc7XG4gICAgaXNBdmFpbGFibGVOb3c/OiBib29sZWFuO1xuICAgIGlzRmlyc3Q6IGJvb2xlYW47XG4gICAgdG91cnNDb3VudDogbnVtYmVyO1xuICAgIHdlYlNwZWNpYWxzOiBXZWJTcGVjaWFsW107XG4gICAgc2V0Q3VycmVudFZpZXc6ICh2aWV3OiBcInBob3RvXCIgfCBcInZpcnR1YWwgdG91clwiIHwgXCJ2aWRlbyB0b3VyXCIpID0+IHZvaWQ7XG4gICAgaW1hZ2VDbGlja2VkSGFuZGxlcjogKGltYWdlOiBBc3NldCkgPT4gdm9pZDtcbiAgICBwcm9wZXJ0eUlkOiBzdHJpbmc7XG5cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0FBLE9BQUE7QUFFQSxJQUFBQyxhQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxjQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBTSxrQkFBQSxHQUFBTixPQUFBO0FBQW9FLFNBQUFELHVCQUFBUSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUs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