@commercetools-frontend/application-shell 21.18.1 → 21.20.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/dist/{application-entry-point-afa38a2f.esm.js → application-entry-point-2f10c24d.esm.js} +1 -1
- package/dist/{application-entry-point-88e60ecd.cjs.prod.js → application-entry-point-6dc9ec3c.cjs.prod.js} +1 -1
- package/dist/{application-entry-point-13dfd321.cjs.dev.js → application-entry-point-c8b1c187.cjs.dev.js} +1 -1
- package/dist/commercetools-frontend-application-shell.cjs.dev.js +4 -3
- package/dist/commercetools-frontend-application-shell.cjs.prod.js +4 -3
- package/dist/commercetools-frontend-application-shell.esm.js +4 -3
- package/dist/declarations/src/components/application-shell/global-styles.d.ts +1 -0
- package/dist/declarations/src/components/theme-switcher/index.d.ts +1 -0
- package/dist/declarations/src/components/theme-switcher/theme-switcher.d.ts +2 -0
- package/dist/declarations/src/feature-toggles.d.ts +4 -1
- package/dist/{index-09303181.cjs.dev.js → index-14ac0ad6.cjs.dev.js} +65 -70
- package/dist/{index-fe68c713.cjs.prod.js → index-5693a438.cjs.prod.js} +56 -56
- package/dist/{index-a49b2df7.esm.js → index-9fff944a.esm.js} +66 -71
- package/dist/{project-expired-35706f6f.cjs.prod.js → project-expired-14847008.cjs.prod.js} +5 -4
- package/dist/{project-expired-4628d284.esm.js → project-expired-51e9ea34.esm.js} +5 -4
- package/dist/{project-expired-0826550b.cjs.dev.js → project-expired-733107ee.cjs.dev.js} +5 -4
- package/dist/{project-not-found-ff3bdde2.esm.js → project-not-found-6cf69bec.esm.js} +5 -4
- package/dist/{project-not-found-c84c1be7.cjs.dev.js → project-not-found-81918347.cjs.dev.js} +5 -4
- package/dist/{project-not-found-18ac7cda.cjs.prod.js → project-not-found-946204ee.cjs.prod.js} +5 -4
- package/dist/{project-not-initialized-6b2644dc.cjs.prod.js → project-not-initialized-7f0124c9.cjs.prod.js} +5 -4
- package/dist/{project-not-initialized-9339b71d.esm.js → project-not-initialized-8f39dddd.esm.js} +5 -4
- package/dist/{project-not-initialized-d71db5f0.cjs.dev.js → project-not-initialized-acf9bde8.cjs.dev.js} +5 -4
- package/dist/{project-suspended-3cdf50f0.cjs.dev.js → project-suspended-25f427da.cjs.dev.js} +5 -4
- package/dist/{project-suspended-3a5f6bb2.cjs.prod.js → project-suspended-6f575ef2.cjs.prod.js} +5 -4
- package/dist/{project-suspended-663a8c83.esm.js → project-suspended-9b9451bc.esm.js} +5 -4
- package/dist/{quick-access-6dc0e7dc.cjs.dev.js → quick-access-0aec997d.cjs.dev.js} +3 -2
- package/dist/{quick-access-055999e2.cjs.prod.js → quick-access-3f564da2.cjs.prod.js} +3 -2
- package/dist/{quick-access-762b88b6.esm.js → quick-access-55060347.esm.js} +3 -2
- package/dist/{service-page-project-switcher-ee8dc044.esm.js → service-page-project-switcher-4321db75.esm.js} +1 -1
- package/dist/{service-page-project-switcher-ed869de3.cjs.dev.js → service-page-project-switcher-72272b8a.cjs.dev.js} +1 -1
- package/dist/{service-page-project-switcher-8c11f457.cjs.prod.js → service-page-project-switcher-7ed968b6.cjs.prod.js} +1 -1
- package/package.json +28 -28
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.dev.js +1 -1
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.prod.js +1 -1
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.esm.js +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var applicationEntryPoint = require('./application-entry-point-
|
|
3
|
+
var applicationEntryPoint = require('./application-entry-point-c8b1c187.cjs.dev.js');
|
|
4
4
|
var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
|
|
5
5
|
var _styled = require('@emotion/styled/base');
|
|
6
6
|
var _pt = require('prop-types');
|
|
@@ -24,7 +24,6 @@ var applicationShellConnectors = require('@commercetools-frontend/application-sh
|
|
|
24
24
|
var applicationComponents = require('@commercetools-frontend/application-components');
|
|
25
25
|
var reactNotifications = require('@commercetools-frontend/react-notifications');
|
|
26
26
|
var i18n = require('@commercetools-frontend/i18n');
|
|
27
|
-
var designSystem = require('@commercetools-uikit/design-system');
|
|
28
27
|
var constants = require('./constants-41338dec.cjs.dev.js');
|
|
29
28
|
var uuid = require('uuid');
|
|
30
29
|
var _URL = require('@babel/runtime-corejs3/core-js-stable/url');
|
|
@@ -43,6 +42,7 @@ var oidc = require('./oidc-a2126dac.cjs.dev.js');
|
|
|
43
42
|
var qss = require('qss');
|
|
44
43
|
var jwtDecode = require('jwt-decode');
|
|
45
44
|
var FailedAuthenticationSVG = require('@commercetools-frontend/assets/images/locked-diamond.svg');
|
|
45
|
+
var designSystem = require('@commercetools-uikit/design-system');
|
|
46
46
|
var notifications = require('@commercetools-uikit/notifications');
|
|
47
47
|
var Spacings = require('@commercetools-uikit/spacings');
|
|
48
48
|
var Card = require('@commercetools-uikit/card');
|
|
@@ -95,6 +95,7 @@ var MissingImageSvg = require('@commercetools-frontend/assets/images/diagonal-li
|
|
|
95
95
|
var permissions = require('@commercetools-frontend/permissions');
|
|
96
96
|
var throttle = require('lodash/throttle');
|
|
97
97
|
var urlUtils = require('@commercetools-frontend/url-utils');
|
|
98
|
+
require('@commercetools-uikit/design-system/materials/resets.css');
|
|
98
99
|
var _someInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/some');
|
|
99
100
|
var actionsGlobal = require('@commercetools-frontend/actions-global');
|
|
100
101
|
require('@commercetools-frontend/application-config/ssr');
|
|
@@ -241,6 +242,10 @@ var getDataAttribute = function getDataAttribute(node, key) {
|
|
|
241
242
|
}
|
|
242
243
|
|
|
243
244
|
return undefined;
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
var isGtmEnabled = function isGtmEnabled() {
|
|
248
|
+
return window.dataLayer && window.app.trackingGtm && window.app.trackingGtm !== 'null';
|
|
244
249
|
}; // The way that tracking works is like so:
|
|
245
250
|
//
|
|
246
251
|
// `data-track-component`: used to set up the hierarchy of the tracking ID.
|
|
@@ -305,7 +310,7 @@ var trackTiming = function trackTiming(_ref3) {
|
|
|
305
310
|
value = _ref3.value,
|
|
306
311
|
label = _ref3.label;
|
|
307
312
|
|
|
308
|
-
if (
|
|
313
|
+
if (isGtmEnabled()) {
|
|
309
314
|
logTracking({
|
|
310
315
|
variable: variable,
|
|
311
316
|
value: value,
|
|
@@ -323,17 +328,17 @@ var trackTiming = function trackTiming(_ref3) {
|
|
|
323
328
|
}; // Track custom dimensions
|
|
324
329
|
|
|
325
330
|
var trackApplicationName = function trackApplicationName(applicationName) {
|
|
326
|
-
if (
|
|
331
|
+
if (isGtmEnabled()) window.dataLayer.push({
|
|
327
332
|
applicationName: applicationName
|
|
328
333
|
});
|
|
329
334
|
};
|
|
330
335
|
var trackProjectKey = function trackProjectKey(projectKey) {
|
|
331
|
-
if (
|
|
336
|
+
if (isGtmEnabled() && projectKey) window.dataLayer.push({
|
|
332
337
|
projectKey: projectKey
|
|
333
338
|
});
|
|
334
339
|
};
|
|
335
340
|
var trackUserBusinessRole = function trackUserBusinessRole(userBusinessRole) {
|
|
336
|
-
if (
|
|
341
|
+
if (isGtmEnabled() && userBusinessRole) {
|
|
337
342
|
window.dataLayer.push({
|
|
338
343
|
userBusinessRole: userBusinessRole
|
|
339
344
|
});
|
|
@@ -436,12 +441,12 @@ var boot = function boot(trackingEventList) {
|
|
|
436
441
|
});
|
|
437
442
|
};
|
|
438
443
|
var updateUser = function updateUser(userId) {
|
|
439
|
-
if (
|
|
444
|
+
if (isGtmEnabled()) window.dataLayer.push({
|
|
440
445
|
userId: userId
|
|
441
446
|
});
|
|
442
447
|
};
|
|
443
448
|
var stopTrackingUser = function stopTrackingUser() {
|
|
444
|
-
if (
|
|
449
|
+
if (isGtmEnabled()) window.dataLayer.push({
|
|
445
450
|
userId: undefined
|
|
446
451
|
});
|
|
447
452
|
};
|
|
@@ -2475,19 +2480,19 @@ LocaleSwitcher.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
2475
2480
|
} : {};
|
|
2476
2481
|
|
|
2477
2482
|
var ProjectNotFound = /*#__PURE__*/react.lazy(function () {
|
|
2478
|
-
return Promise.resolve().then(function () { return require('./project-not-found-
|
|
2483
|
+
return Promise.resolve().then(function () { return require('./project-not-found-81918347.cjs.dev.js'
|
|
2479
2484
|
/* webpackChunkName: "project-not-found" */
|
|
2480
2485
|
); });
|
|
2481
2486
|
});
|
|
2482
2487
|
|
|
2483
2488
|
var ProjectExpired = /*#__PURE__*/react.lazy(function () {
|
|
2484
|
-
return Promise.resolve().then(function () { return require('./project-expired-
|
|
2489
|
+
return Promise.resolve().then(function () { return require('./project-expired-733107ee.cjs.dev.js'
|
|
2485
2490
|
/* webpackChunkName: "project-expired" */
|
|
2486
2491
|
); });
|
|
2487
2492
|
});
|
|
2488
2493
|
|
|
2489
2494
|
var ProjectNotInitialized = /*#__PURE__*/react.lazy(function () {
|
|
2490
|
-
return Promise.resolve().then(function () { return require('./project-not-initialized-
|
|
2495
|
+
return Promise.resolve().then(function () { return require('./project-not-initialized-acf9bde8.cjs.dev.js'
|
|
2491
2496
|
/* webpackChunkName: "project-not-initialized" */
|
|
2492
2497
|
); });
|
|
2493
2498
|
});
|
|
@@ -2534,7 +2539,7 @@ var RedirectToProjectCreate = function RedirectToProjectCreate() {
|
|
|
2534
2539
|
RedirectToProjectCreate.displayName = 'RedirectToProjectCreate';
|
|
2535
2540
|
|
|
2536
2541
|
var ProjectSuspended = /*#__PURE__*/react.lazy(function () {
|
|
2537
|
-
return Promise.resolve().then(function () { return require('./project-suspended-
|
|
2542
|
+
return Promise.resolve().then(function () { return require('./project-suspended-25f427da.cjs.dev.js'
|
|
2538
2543
|
/* webpackChunkName: "project-suspended" */
|
|
2539
2544
|
); });
|
|
2540
2545
|
});
|
|
@@ -2738,7 +2743,8 @@ var useAllMenuFeatureToggles = function useAllMenuFeatureToggles() {
|
|
|
2738
2743
|
* fetched from LaunchDarkly (without default values flopflip will default
|
|
2739
2744
|
* them to off until fetched).
|
|
2740
2745
|
*/
|
|
2741
|
-
var
|
|
2746
|
+
var UI_REDESIGN = 'uiRedesign';
|
|
2747
|
+
var FLAGS = _defineProperty({}, UI_REDESIGN, false);
|
|
2742
2748
|
|
|
2743
2749
|
function ownKeys$5(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2744
2750
|
|
|
@@ -2890,6 +2896,13 @@ SetupFlopFlipProvider.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
2890
2896
|
} : {};
|
|
2891
2897
|
SetupFlopFlipProvider.displayName = 'SetupFlopFlipProvider';
|
|
2892
2898
|
|
|
2899
|
+
var ThemeSwitcher = function ThemeSwitcher() {
|
|
2900
|
+
var isNewThemeEnabled = reactBroadcast.useFeatureToggle(UI_REDESIGN);
|
|
2901
|
+
return jsxRuntime.jsx(designSystem.ThemeProvider, {
|
|
2902
|
+
theme: isNewThemeEnabled ? 'test' : 'default'
|
|
2903
|
+
});
|
|
2904
|
+
};
|
|
2905
|
+
|
|
2893
2906
|
/**
|
|
2894
2907
|
* This component will let gtm know if any information about the user has
|
|
2895
2908
|
* changed.
|
|
@@ -3238,7 +3251,7 @@ var compiledStyles = {
|
|
|
3238
3251
|
"fixed-menu": "navbar-mod__fixed-menu___42tD9"
|
|
3239
3252
|
}
|
|
3240
3253
|
};
|
|
3241
|
-
var styles = compiledStyles.jsonMap;
|
|
3254
|
+
var styles$1 = compiledStyles.jsonMap;
|
|
3242
3255
|
|
|
3243
3256
|
// The icon is expected to be the `svg` document as a string.
|
|
3244
3257
|
// For backwards compatibility purposes, we still support the legacy "icon name",
|
|
@@ -3320,7 +3333,7 @@ IconSwitcher.displayName = 'IconSwitcher';
|
|
|
3320
3333
|
var MenuExpander = function MenuExpander(props) {
|
|
3321
3334
|
var gtmTracking = react.useContext(GtmContext);
|
|
3322
3335
|
return jsxRuntime.jsx("li", {
|
|
3323
|
-
className: classnames__default["default"](styles['list-item'], styles.expander, _defineProperty({}, styles.hidden, !props.isVisible)),
|
|
3336
|
+
className: classnames__default["default"](styles$1['list-item'], styles$1.expander, _defineProperty({}, styles$1.hidden, !props.isVisible)),
|
|
3324
3337
|
children: jsxRuntime.jsx("div", {
|
|
3325
3338
|
onClick: function onClick(event) {
|
|
3326
3339
|
var _trackingEvents = trackingEvents$1[props.isMenuOpen ? 'collapseMainNav' : 'expandMainNav'],
|
|
@@ -3330,7 +3343,7 @@ var MenuExpander = function MenuExpander(props) {
|
|
|
3330
3343
|
gtmTracking.track(action, category, label);
|
|
3331
3344
|
props.onClick(event);
|
|
3332
3345
|
},
|
|
3333
|
-
className: styles['expand-icon'],
|
|
3346
|
+
className: styles$1['expand-icon'],
|
|
3334
3347
|
"data-testid": "menu-expander",
|
|
3335
3348
|
children: jsxRuntime.jsx(icons.BackIcon, {
|
|
3336
3349
|
color: "surface",
|
|
@@ -3355,7 +3368,7 @@ var MenuGroup = function MenuGroup(props) {
|
|
|
3355
3368
|
"data-testid": "group-".concat(props.id),
|
|
3356
3369
|
role: "menu",
|
|
3357
3370
|
"aria-expanded": isSublistActiveWhileIsMenuExpanded || isSublistActiveWhileIsMenuCollapsed,
|
|
3358
|
-
className: classnames__default["default"](_defineProperty({}, styles.list, props.level === 1), _defineProperty({}, styles.sublist, props.level === 2), _defineProperty({}, styles['sublist-no-children'], props.level === 2 && !props.children), _defineProperty({}, styles['sublist-expanded__active'], isSublistActiveWhileIsMenuExpanded), _defineProperty({}, styles['sublist-collapsed__active'], isSublistActiveWhileIsMenuCollapsed), _defineProperty({}, styles.sublist__inactive, !isSublistActiveWhileIsMenuCollapsed)),
|
|
3371
|
+
className: classnames__default["default"](_defineProperty({}, styles$1.list, props.level === 1), _defineProperty({}, styles$1.sublist, props.level === 2), _defineProperty({}, styles$1['sublist-no-children'], props.level === 2 && !props.children), _defineProperty({}, styles$1['sublist-expanded__active'], isSublistActiveWhileIsMenuExpanded), _defineProperty({}, styles$1['sublist-collapsed__active'], isSublistActiveWhileIsMenuCollapsed), _defineProperty({}, styles$1.sublist__inactive, !isSublistActiveWhileIsMenuCollapsed)),
|
|
3359
3372
|
children: props.children
|
|
3360
3373
|
});
|
|
3361
3374
|
};
|
|
@@ -3374,12 +3387,12 @@ var MenuItem = function MenuItem(props) {
|
|
|
3374
3387
|
|
|
3375
3388
|
return jsxRuntime.jsx("li", {
|
|
3376
3389
|
role: "menu-item",
|
|
3377
|
-
className: classnames__default["default"](styles['list-item'], (_classnames8 = {}, _defineProperty(_classnames8, styles.item__active, props.isActive), _defineProperty(_classnames8, styles['item_menu-collapsed'], !props.isMenuOpen), _defineProperty(_classnames8, styles['item__no-submenu'], !props.hasSubmenu), _classnames8)),
|
|
3390
|
+
className: classnames__default["default"](styles$1['list-item'], (_classnames8 = {}, _defineProperty(_classnames8, styles$1.item__active, props.isActive), _defineProperty(_classnames8, styles$1['item_menu-collapsed'], !props.isMenuOpen), _defineProperty(_classnames8, styles$1['item__no-submenu'], !props.hasSubmenu), _classnames8)),
|
|
3378
3391
|
onClick: props.onClick,
|
|
3379
3392
|
onMouseEnter: props.onMouseEnter,
|
|
3380
3393
|
onMouseLeave: props.onMouseLeave,
|
|
3381
3394
|
children: jsxRuntime.jsx("div", {
|
|
3382
|
-
className: styles['item-link'],
|
|
3395
|
+
className: styles$1['item-link'],
|
|
3383
3396
|
children: props.children
|
|
3384
3397
|
})
|
|
3385
3398
|
});
|
|
@@ -3410,8 +3423,8 @@ var MenuItemLink = function MenuItemLink(props) {
|
|
|
3410
3423
|
return jsxRuntime.jsx(reactRouterDom.NavLink, {
|
|
3411
3424
|
to: props.linkTo,
|
|
3412
3425
|
exact: props.exactMatch,
|
|
3413
|
-
activeClassName: styles.highlighted,
|
|
3414
|
-
className: styles['text-link'],
|
|
3426
|
+
activeClassName: styles$1.highlighted,
|
|
3427
|
+
className: styles$1['text-link'],
|
|
3415
3428
|
onClick: function onClick(event) {
|
|
3416
3429
|
if (props.linkTo && props.useFullRedirectsForLinks) {
|
|
3417
3430
|
event.preventDefault();
|
|
@@ -3443,9 +3456,9 @@ MenuItemLink.defaultProps = menuItemLinkDefaultProps; // This component just ren
|
|
|
3443
3456
|
|
|
3444
3457
|
var MenuItemDivider = function MenuItemDivider() {
|
|
3445
3458
|
return jsxRuntime.jsx("div", {
|
|
3446
|
-
className: styles['divider-first-item'],
|
|
3459
|
+
className: styles$1['divider-first-item'],
|
|
3447
3460
|
children: jsxRuntime.jsx("div", {
|
|
3448
|
-
className: styles['divider-second-item']
|
|
3461
|
+
className: styles$1['divider-second-item']
|
|
3449
3462
|
})
|
|
3450
3463
|
});
|
|
3451
3464
|
};
|
|
@@ -3608,16 +3621,16 @@ var ApplicationMenu = function ApplicationMenu(props) {
|
|
|
3608
3621
|
useFullRedirectsForLinks: props.useFullRedirectsForLinks,
|
|
3609
3622
|
onClick: props.onMenuItemClick,
|
|
3610
3623
|
children: jsxRuntime.jsxs("div", {
|
|
3611
|
-
className: styles['item-icon-text'],
|
|
3624
|
+
className: styles$1['item-icon-text'],
|
|
3612
3625
|
children: [jsxRuntime.jsx("div", {
|
|
3613
|
-
className: styles.icon,
|
|
3626
|
+
className: styles$1.icon,
|
|
3614
3627
|
children: jsxRuntime.jsx(IconSwitcher, {
|
|
3615
3628
|
icon: props.menu.icon,
|
|
3616
3629
|
size: "scale",
|
|
3617
3630
|
color: getIconColor(props.isActive || isMainMenuRouteActive, Boolean(props.menu.shouldRenderDivider))
|
|
3618
3631
|
})
|
|
3619
3632
|
}), jsxRuntime.jsx("div", {
|
|
3620
|
-
className: styles.title,
|
|
3633
|
+
className: styles$1.title,
|
|
3621
3634
|
"aria-owns": "group-".concat(props.menu.key),
|
|
3622
3635
|
children: jsxRuntime.jsx(MenuLabel, {
|
|
3623
3636
|
labelAllLocales: props.menu.labelAllLocales,
|
|
@@ -3644,9 +3657,9 @@ var ApplicationMenu = function ApplicationMenu(props) {
|
|
|
3644
3657
|
menuVisibilities: props.menuVisibilities,
|
|
3645
3658
|
namesOfMenuVisibilities: submenu.menuVisibility ? [submenu.menuVisibility] : undefined,
|
|
3646
3659
|
children: jsxRuntime.jsx("li", {
|
|
3647
|
-
className: styles['sublist-item'],
|
|
3660
|
+
className: styles$1['sublist-item'],
|
|
3648
3661
|
children: jsxRuntime.jsx("div", {
|
|
3649
|
-
className: styles.text,
|
|
3662
|
+
className: styles$1.text,
|
|
3650
3663
|
children: jsxRuntime.jsx(MenuItemLink, {
|
|
3651
3664
|
linkTo: _concatInstanceProperty__default["default"](_context9 = "/".concat(props.projectKey, "/")).call(_context9, submenu.uriPath),
|
|
3652
3665
|
exactMatch: true,
|
|
@@ -3694,7 +3707,7 @@ var NavBarLayout = /*#__PURE__*/react.forwardRef(function (props, ref) {
|
|
|
3694
3707
|
styles: /*#__PURE__*/react$2.css(compiledStyles.global, ";" + (process.env.NODE_ENV === "production" ? "" : ";label:NavBarLayout;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5hdmJhci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa2xCbUIiLCJmaWxlIjoibmF2YmFyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUm91dGVDb21wb25lbnRQcm9wcyB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHR5cGUge1xuICBUQXBwbGljYXRpb25Db250ZXh0LFxuICBUTm9ybWFsaXplZE1lbnVWaXNpYmlsaXRpZXMsXG4gIFROb3JtYWxpemVkUGVybWlzc2lvbnMsXG4gIFROb3JtYWxpemVkQWN0aW9uUmlnaHRzLFxuICBUTm9ybWFsaXplZERhdGFGZW5jZXMsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHR5cGUgeyBURmV0Y2hQcm9qZWN0UXVlcnkgfSBmcm9tICcuLi8uLi90eXBlcy9nZW5lcmF0ZWQvbWMnO1xuaW1wb3J0IHR5cGUge1xuICBURGF0YUZlbmNlLFxuICBUQWN0aW9uUmlnaHQsXG4gIFRMb2NhbGl6ZWRGaWVsZCxcbiAgVE5hdmJhck1lbnUsXG4gIFRCYXNlTWVudSxcbn0gZnJvbSAnLi4vLi4vdHlwZXMvZ2VuZXJhdGVkL3Byb3h5JztcbmltcG9ydCB0eXBlIHsgVEZsYWdWYXJpYXRpb24gfSBmcm9tICdAZmxvcGZsaXAvdHlwZXMnO1xuXG5pbXBvcnQge1xuICBmb3J3YXJkUmVmLFxuICBNb3VzZUV2ZW50SGFuZGxlcixcbiAgUmVhY3ROb2RlLFxuICBTeW50aGV0aWNFdmVudCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEZvcm1hdHRlZE1lc3NhZ2UgfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCB7IE5hdkxpbmssIG1hdGNoUGF0aCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IHVzZUZsYWdWYXJpYXRpb24gfSBmcm9tICdAZmxvcGZsaXAvcmVhY3QtYnJvYWRjYXN0JztcbmltcG9ydCB7IEdsb2JhbCwgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQge1xuICBCYWNrSWNvbixcbiAgVHJlZVN0cnVjdHVyZUljb24sXG4gIFVzZXJGaWxsZWRJY29uLFxuICBTcGVlZG9tZXRlckljb24sXG4gIFRhZ011bHRpSWNvbixcbiAgQ2FydEljb24sXG4gIEJveEljb24sXG4gIEdlYXJJY29uLFxuICBTdXBwb3J0SWNvbixcbiAgV29ybGRJY29uLFxuICBIZWFydEljb24sXG4gIFBhcGVyY2xpcEljb24sXG4gIFBsdWdpbkljb24sXG4gIFJvY2tldEljb24sXG4gIFN0YXJJY29uLFxuICBDb25uZWN0ZWRTcXVhcmVJY29uLFxuICBMaXN0V2l0aFNlYXJjaEljb24sXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2ljb25zJztcbmltcG9ydCBJbmxpbmVTdmcgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvaWNvbnMvaW5saW5lLXN2Zyc7XG5pbXBvcnQgTWlzc2luZ0ltYWdlU3ZnIGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2Fzc2V0cy9pbWFnZXMvZGlhZ29uYWwtbGluZS5zdmcnO1xuaW1wb3J0IHtcbiAgTk9fVkFMVUVfRkFMTEJBQ0ssXG4gIFNVUFBPUlRfUE9SVEFMX1VSTCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIG5vcm1hbGl6ZUFsbEFwcGxpZWRBY3Rpb25SaWdodHMsXG4gIG5vcm1hbGl6ZUFsbEFwcGxpZWREYXRhRmVuY2VzLFxuICBub3JtYWxpemVBbGxBcHBsaWVkTWVudVZpc2liaWxpdGllcyxcbiAgbm9ybWFsaXplQWxsQXBwbGllZFBlcm1pc3Npb25zLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9hcHBsaWNhdGlvbi1zaGVsbC1jb25uZWN0b3JzJztcbmltcG9ydCB7IFJlc3RyaWN0ZWRCeVBlcm1pc3Npb25zIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgbG9jYXRpb24gfSBmcm9tICcuLi8uLi91dGlscy9sb2NhdGlvbic7XG5pbXBvcnQgeyBHdG1Db250ZXh0IH0gZnJvbSAnLi4vZ3RtLWJvb3Rlcic7XG5pbXBvcnQgTG9hZGluZ1BsYWNlaG9sZGVyIGZyb20gJy4uL2xvYWRpbmctcGxhY2Vob2xkZXInO1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4vbWVzc2FnZXMnO1xuaW1wb3J0IHVzZUxvYWRpbmdNZW51TGF5b3V0RWZmZWN0IGZyb20gJy4vdXNlLWxvYWRpbmctbWVudS1sYXlvdXQtZWZmZWN0JztcbmltcG9ydCB1c2VOYXZiYXJTdGF0ZU1hbmFnZXIgZnJvbSAnLi91c2UtbmF2YmFyLXN0YXRlLW1hbmFnZXInO1xuaW1wb3J0IG5vbk51bGxhYmxlIGZyb20gJy4vbm9uLW51bGxhYmxlJztcbmltcG9ydCB0cmFja2luZ0V2ZW50cyBmcm9tICcuL3RyYWNraW5nLWV2ZW50cyc7XG4vLyBodHRwczovL2JhYmVsanMuaW8vYmxvZy8yMDE3LzA5LzExL3plcm8tY29uZmlnLXdpdGgtYmFiZWwtbWFjcm9zXG5pbXBvcnQgY29tcGlsZWRTdHlsZXMgZnJvbSAvKiBwcmV2YWwgKi8gJy4vbmF2YmFyLnN0eWxlcyc7XG5cbmNvbnN0IHN0eWxlcyA9IGNvbXBpbGVkU3R5bGVzLmpzb25NYXA7XG5cbnR5cGUgVFByb2plY3RQZXJtaXNzaW9ucyA9IHtcbiAgcGVybWlzc2lvbnM6IFROb3JtYWxpemVkUGVybWlzc2lvbnMgfCBudWxsO1xuICBhY3Rpb25SaWdodHM6IFROb3JtYWxpemVkQWN0aW9uUmlnaHRzIHwgbnVsbDtcbiAgZGF0YUZlbmNlczogVE5vcm1hbGl6ZWREYXRhRmVuY2VzIHwgbnVsbDtcbn07XG5cbi8qXG48RGF0YU1lbnUgZGF0YT17W119PlxuICA8TWVudUdyb3VwPlxuICAgIDxNZW51SXRlbT5cbiAgICAgIDxNZW51SXRlbUxpbmsgbGlua1RvPVwiL2Zvb1wiPihpY29uKSBQcm9kdWN0czwvTWVudUl0ZW1MaW5rPlxuICAgICAgPE1lbnVHcm91cD5cbiAgICAgICAgPE1lbnVJdGVtTGluayBsaW5rVG89XCIvZm9vL25ld1wiPkFkZCBwcm9kdWN0PC9NZW51SXRlbUxpbms+XG4gICAgICA8L01lbnVHcm91cD5cbiAgICA8L01lbnVJdGVtPlxuICA8L01lbnVHcm91cD5cbiAgPE1lbnVFeHBhbmRlci8+XG48L0RhdGFNZW51PlxuKi9cblxudHlwZSBJY29uUHJvcHMgPSBQYXJhbWV0ZXJzPHR5cGVvZiBCYWNrSWNvbj5bMF07XG50eXBlIEljb25Td2l0Y2hlclByb3BzID0geyBpY29uOiBzdHJpbmcgfSAmIEljb25Qcm9wcztcbi8vIFRoZSBpY29uIGlzIGV4cGVjdGVkIHRvIGJlIHRoZSBgc3ZnYCBkb2N1bWVudCBhcyBhIHN0cmluZy5cbi8vIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBwdXJwb3Nlcywgd2Ugc3RpbGwgc3VwcG9ydCB0aGUgbGVnYWN5IFwiaWNvbiBuYW1lXCIsXG4vLyB3aGljaCB3ZSB0aGVuIG1hcCB0byBvbmUgb2YgdGhlIHByZS1kZWZpbmVkIGljb25zLlxuLy8gRXZlbnR1YWxseSwgd2Ugd2FudCB0byBnZXQgcmlkIG9mIHRoaXMgXCJzd2l0Y2hcIiBsb2dpYy5cbmNvbnN0IEljb25Td2l0Y2hlciA9ICh7IGljb24sIC4uLmljb25Qcm9wcyB9OiBJY29uU3dpdGNoZXJQcm9wcykgPT4ge1xuICBpZiAoaWNvbi5pbmNsdWRlcygnPHN2ZycpKSB7XG4gICAgcmV0dXJuIDxJbmxpbmVTdmcgZGF0YT17aWNvbn0gey4uLmljb25Qcm9wc30gLz47XG4gIH1cbiAgLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZm9yIGFwcHMgdXNpbmcgdGhlIFwiaWNvbiBuYW1lXCIuXG4gIHN3aXRjaCAoaWNvbikge1xuICAgIC8vIEFwcGxpY2F0aW9uIGljb25zXG4gICAgY2FzZSAnVHJlZVN0cnVjdHVyZUljb24nOlxuICAgICAgcmV0dXJuIDxUcmVlU3RydWN0dXJlSWNvbiB7Li4uaWNvblByb3BzfSAvPjtcbiAgICBjYXNlICdVc2VyRmlsbGVkSWNvbic6XG4gICAgICByZXR1cm4gPFVzZXJGaWxsZWRJY29uIHsuLi5pY29uUHJvcHN9IC8+O1xuICAgIGNhc2UgJ1NwZWVkb21ldGVySWNvbic6XG4gICAgICByZXR1cm4gPFNwZWVkb21ldGVySWNvbiB7Li4uaWNvblByb3BzfSAvPjtcbiAgICBjYXNlICdUYWdNdWx0aUljb24nOlxuICAgICAgcmV0dXJuIDxUYWdNdWx0aUljb24gey4uLmljb25Qcm9wc30gLz47XG4gICAgY2FzZSAnQ2FydEljb24nOlxuICAgICAgcmV0dXJuIDxDYXJ0SWNvbiB7Li4uaWNvblByb3BzfSAvPjtcbiAgICBjYXNlICdCb3hJY29uJzpcbiAgICAgIHJldHVybiA8Qm94SWNvbiB7Li4uaWNvblByb3BzfSAvPjtcbiAgICBjYXNlICdHZWFySWNvbic6XG4gICAgICByZXR1cm4gPEdlYXJJY29uIHsuLi5pY29uUHJvcHN9IC8+O1xuICAgIGNhc2UgJ0xpc3RXaXRoU2VhcmNoSWNvbic6XG4gICAgICByZXR1cm4gPExpc3RXaXRoU2VhcmNoSWNvbiB7Li4uaWNvblByb3BzfSAvPjtcbiAgICAvLyBDdXN0b20gYXBwbGljYXRpb24gaWNvbnMgc2V0XG4gICAgY2FzZSAnSGVhcnRJY29uJzpcbiAgICAgIHJldHVybiA8SGVhcnRJY29uIHsuLi5pY29uUHJvcHN9IC8+O1xuICAgIGNhc2UgJ1BhcGVyY2xpcEljb24nOlxuICAgICAgcmV0dXJuIDxQYXBlcmNsaXBJY29uIHsuLi5pY29uUHJvcHN9IC8+O1xuICAgIGNhc2UgJ1BsdWdpbkljb24nOlxuICAgICAgcmV0dXJuIDxQbHVnaW5JY29uIHsuLi5pY29uUHJvcHN9IC8+O1xuICAgIGNhc2UgJ1JvY2tldEljb24nOlxuICAgICAgcmV0dXJuIDxSb2NrZXRJY29uIHsuLi5pY29uUHJvcHN9IC8+O1xuICAgIGNhc2UgJ1N0YXJJY29uJzpcbiAgICAgIHJldHVybiA8U3Rhckljb24gey4uLmljb25Qcm9wc30gLz47XG4gICAgY2FzZSAnQ29ubmVjdGVkU3F1YXJlSWNvbic6XG4gICAgICByZXR1cm4gPENvbm5lY3RlZFNxdWFyZUljb24gey4uLmljb25Qcm9wc30gLz47XG4gICAgLy8gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgY2FzZSAnV29ybGRJY29uJzpcbiAgICAgIHJldHVybiA8V29ybGRJY29uIHsuLi5pY29uUHJvcHN9IC8+O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gPGltZyBzcmM9e01pc3NpbmdJbWFnZVN2Z30gYWx0PVwibWlzc2luZyBpY29uXCIgLz47XG4gIH1cbn07XG5JY29uU3dpdGNoZXIuZGlzcGxheU5hbWUgPSAnSWNvblN3aXRjaGVyJztcblxudHlwZSBNZW51RXhwYW5kZXJQcm9wcyA9IHtcbiAgaXNWaXNpYmxlOiBib29sZWFuO1xuICBvbkNsaWNrOiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD47XG4gIGlzTWVudU9wZW46IGJvb2xlYW47XG59O1xuY29uc3QgTWVudUV4cGFuZGVyID0gKHByb3BzOiBNZW51RXhwYW5kZXJQcm9wcykgPT4ge1xuICBjb25zdCBndG1UcmFja2luZyA9IHVzZUNvbnRleHQoR3RtQ29udGV4dCk7XG4gIHJldHVybiAoXG4gICAgPGxpXG4gICAgICBrZXk9XCJleHBhbmRlclwiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoc3R5bGVzWydsaXN0LWl0ZW0nXSwgc3R5bGVzLmV4cGFuZGVyLCB7XG4gICAgICAgIFtzdHlsZXMuaGlkZGVuXTogIXByb3BzLmlzVmlzaWJsZSxcbiAgICAgIH0pfVxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBhY3Rpb24sIGNhdGVnb3J5LCBsYWJlbCB9ID1cbiAgICAgICAgICAgIHRyYWNraW5nRXZlbnRzW1xuICAgICAgICAgICAgICBwcm9wcy5pc01lbnVPcGVuID8gJ2NvbGxhcHNlTWFpbk5hdicgOiAnZXhwYW5kTWFpbk5hdidcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgZ3RtVHJhY2tpbmcudHJhY2soYWN0aW9uLCBjYXRlZ29yeSwgbGFiZWwpO1xuICAgICAgICAgIHByb3BzLm9uQ2xpY2soZXZlbnQpO1xuICAgICAgICB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1snZXhwYW5kLWljb24nXX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJtZW51LWV4cGFuZGVyXCJcbiAgICAgID5cbiAgICAgICAgey8qXG4gICAgICAgICAgRklYTUU6IGRlZmluZSBob3ZlciBlZmZlY3QuXG4gICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2NvbW1lcmNldG9vbHMvbWVyY2hhbnQtY2VudGVyLWZyb250ZW5kL2lzc3Vlcy8yMjE2XG4gICAgICAgICovfVxuICAgICAgICA8QmFja0ljb24gY29sb3I9XCJzdXJmYWNlXCIgc2l6ZT1cImJpZ1wiIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxuICApO1xufTtcbk1lbnVFeHBhbmRlci5kaXNwbGF5TmFtZSA9ICdNZW51RXhwYW5kZXInO1xuXG50eXBlIE1lbnVHcm91cFByb3BzID0ge1xuICBpZDogc3RyaW5nO1xuICBsZXZlbDogMSB8IDI7XG4gIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgaXNFeHBhbmRlZD86IGJvb2xlYW47XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xufTtcbmNvbnN0IE1lbnVHcm91cCA9IChwcm9wczogTWVudUdyb3VwUHJvcHMpID0+IHtcbiAgY29uc3QgaXNTdWJsaXN0QWN0aXZlV2hpbGVJc01lbnVFeHBhbmRlZCA9XG4gICAgcHJvcHMubGV2ZWwgPT09IDIgJiYgcHJvcHMuaXNBY3RpdmUgJiYgcHJvcHMuaXNFeHBhbmRlZDtcbiAgY29uc3QgaXNTdWJsaXN0QWN0aXZlV2hpbGVJc01lbnVDb2xsYXBzZWQgPVxuICAgIHByb3BzLmxldmVsID09PSAyICYmIHByb3BzLmlzQWN0aXZlICYmICFwcm9wcy5pc0V4cGFuZGVkO1xuICByZXR1cm4gKFxuICAgIDx1bFxuICAgICAgaWQ9e2Bncm91cC0ke3Byb3BzLmlkfWB9XG4gICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7cHJvcHMuaWR9YH1cbiAgICAgIHJvbGU9XCJtZW51XCJcbiAgICAgIGFyaWEtZXhwYW5kZWQ9e1xuICAgICAgICBpc1N1Ymxpc3RBY3RpdmVXaGlsZUlzTWVudUV4cGFuZGVkIHx8XG4gICAgICAgIGlzU3VibGlzdEFjdGl2ZVdoaWxlSXNNZW51Q29sbGFwc2VkXG4gICAgICB9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgIHsgW3N0eWxlcy5saXN0XTogcHJvcHMubGV2ZWwgPT09IDEgfSxcbiAgICAgICAgeyBbc3R5bGVzLnN1Ymxpc3RdOiBwcm9wcy5sZXZlbCA9PT0gMiB9LFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlc1snc3VibGlzdC1uby1jaGlsZHJlbiddXTogcHJvcHMubGV2ZWwgPT09IDIgJiYgIXByb3BzLmNoaWxkcmVuLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlc1snc3VibGlzdC1leHBhbmRlZF9fYWN0aXZlJ11dOlxuICAgICAgICAgICAgaXNTdWJsaXN0QWN0aXZlV2hpbGVJc01lbnVFeHBhbmRlZCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFtzdHlsZXNbJ3N1Ymxpc3QtY29sbGFwc2VkX19hY3RpdmUnXV06XG4gICAgICAgICAgICBpc1N1Ymxpc3RBY3RpdmVXaGlsZUlzTWVudUNvbGxhcHNlZCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFtzdHlsZXMuc3VibGlzdF9faW5hY3RpdmVdOiAhaXNTdWJsaXN0QWN0aXZlV2hpbGVJc01lbnVDb2xsYXBzZWQsXG4gICAgICAgIH1cbiAgICAgICl9XG4gICAgPlxuICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgIDwvdWw+XG4gICk7XG59O1xuTWVudUdyb3VwLmRpc3BsYXlOYW1lID0gJ01lbnVHcm91cCc7XG5cbnR5cGUgTWVudUl0ZW1Qcm9wcyA9IHtcbiAgaGFzU3VibWVudTogYm9vbGVhbjtcbiAgaXNBY3RpdmU6IGJvb2xlYW47XG4gIGlzTWVudU9wZW46IGJvb2xlYW47XG4gIG9uQ2xpY2s6IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxFbGVtZW50PjtcbiAgb25Nb3VzZUVudGVyPzogTW91c2VFdmVudEhhbmRsZXI8SFRNTEVsZW1lbnQ+O1xuICBvbk1vdXNlTGVhdmU/OiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRWxlbWVudD47XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG59O1xuY29uc3QgTWVudUl0ZW0gPSAocHJvcHM6IE1lbnVJdGVtUHJvcHMpID0+IChcbiAgPGxpXG4gICAgcm9sZT1cIm1lbnUtaXRlbVwiXG4gICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKHN0eWxlc1snbGlzdC1pdGVtJ10sIHtcbiAgICAgIFtzdHlsZXMuaXRlbV9fYWN0aXZlXTogcHJvcHMuaXNBY3RpdmUsXG4gICAgICBbc3R5bGVzWydpdGVtX21lbnUtY29sbGFwc2VkJ11dOiAhcHJvcHMuaXNNZW51T3BlbixcbiAgICAgIFtzdHlsZXNbJ2l0ZW1fX25vLXN1Ym1lbnUnXV06ICFwcm9wcy5oYXNTdWJtZW51LFxuICAgIH0pfVxuICAgIG9uQ2xpY2s9e3Byb3BzLm9uQ2xpY2t9XG4gICAgb25Nb3VzZUVudGVyPXtwcm9wcy5vbk1vdXNlRW50ZXJ9XG4gICAgb25Nb3VzZUxlYXZlPXtwcm9wcy5vbk1vdXNlTGVhdmV9XG4gID5cbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydpdGVtLWxpbmsnXX0+e3Byb3BzLmNoaWxkcmVufTwvZGl2PlxuICA8L2xpPlxuKTtcbk1lbnVJdGVtLmRpc3BsYXlOYW1lID0gJ01lbnVJdGVtJztcblxudHlwZSBNZW51SXRlbUxpbmtQcm9wcyA9IHtcbiAgbGlua1RvPzogc3RyaW5nO1xuICBleGFjdE1hdGNoOiBib29sZWFuO1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBvbkNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICB1c2VGdWxsUmVkaXJlY3RzRm9yTGlua3M/OiBib29sZWFuO1xufTtcbmNvbnN0IG1lbnVJdGVtTGlua0RlZmF1bHRQcm9wczogUGljazxNZW51SXRlbUxpbmtQcm9wcywgJ2V4YWN0TWF0Y2gnPiA9IHtcbiAgZXhhY3RNYXRjaDogZmFsc2UsXG59O1xuY29uc3QgTWVudUl0ZW1MaW5rID0gKHByb3BzOiBNZW51SXRlbUxpbmtQcm9wcykgPT4ge1xuICBjb25zdCBndG1UcmFja2luZyA9IHVzZUNvbnRleHQoR3RtQ29udGV4dCk7XG4gIGNvbnN0IHJlZGlyZWN0VG8gPSAodGFyZ2V0VXJsOiBzdHJpbmcpID0+IGxvY2F0aW9uLnJlcGxhY2UodGFyZ2V0VXJsKTtcbiAgaWYgKHByb3BzLmxpbmtUbykge1xuICAgIHJldHVybiAoXG4gICAgICA8TmF2TGlua1xuICAgICAgICB0bz17cHJvcHMubGlua1RvfVxuICAgICAgICBleGFjdD17cHJvcHMuZXhhY3RNYXRjaH1cbiAgICAgICAgYWN0aXZlQ2xhc3NOYW1lPXtzdHlsZXMuaGlnaGxpZ2h0ZWR9XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWyd0ZXh0LWxpbmsnXX1cbiAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKHByb3BzLmxpbmtUbyAmJiBwcm9wcy51c2VGdWxsUmVkaXJlY3RzRm9yTGlua3MpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICByZWRpcmVjdFRvKHByb3BzLmxpbmtUbyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChwcm9wcy5vbkNsaWNrKSB7XG4gICAgICAgICAgICBldmVudC5wZXJzaXN0KCk7XG4gICAgICAgICAgICBwcm9wcy5vbkNsaWNrPHR5cGVvZiBndG1UcmFja2luZy50cmFjaz4oZXZlbnQsIGd0bVRyYWNraW5nLnRyYWNrKTtcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgIDwvTmF2TGluaz5cbiAgICApO1xuICB9XG4gIHJldHVybiA8Pntwcm9wcy5jaGlsZHJlbn08Lz47XG59O1xuTWVudUl0ZW1MaW5rLmRpc3BsYXlOYW1lID0gJ01lbnVJdGVtTGluayc7XG5NZW51SXRlbUxpbmsuZGVmYXVsdFByb3BzID0gbWVudUl0ZW1MaW5rRGVmYXVsdFByb3BzO1xuXG4vLyBUaGlzIGNvbXBvbmVudCBqdXN0IHJlbmRlciB0d28gZGl2cyB3aXRoIGJvcmRlcnMgaW4gb3JkZXIgdG8gZGlmZmVyZW50aWF0ZVxuLy8gdGhlIHNldHRpbmdzIHBsdWdpbiBmcm9tIHRoZSBvdGhlciBvbmVzXG5jb25zdCBNZW51SXRlbURpdmlkZXIgPSAoKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2RpdmlkZXItZmlyc3QtaXRlbSddfT5cbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydkaXZpZGVyLXNlY29uZC1pdGVtJ119IC8+XG4gIDwvZGl2PlxuKTtcbk1lbnVJdGVtRGl2aWRlci5kaXNwbGF5TmFtZSA9ICdNZW51SXRlbURpdmlkZXInO1xuXG5jb25zdCBpc0V2ZXJ5TWVudVZpc2liaWxpdHlTZXRUb0hpZGRlbiA9IChcbiAgbWVudVZpc2liaWxpdGllcz86IFROb3JtYWxpemVkTWVudVZpc2liaWxpdGllcyB8IG51bGwsXG4gIG5hbWVzT2ZNZW51VmlzaWJpbGl0aWVzPzogc3RyaW5nW11cbikgPT5cbiAgQXJyYXkuaXNBcnJheShuYW1lc09mTWVudVZpc2liaWxpdGllcykgJiZcbiAgbmFtZXNPZk1lbnVWaXNpYmlsaXRpZXMubGVuZ3RoID4gMCAmJlxuICBuYW1lc09mTWVudVZpc2liaWxpdGllcy5ldmVyeShcbiAgICAobmFtZU9mTWVudVZpc2liaWxpdHkpID0+XG4gICAgICBtZW51VmlzaWJpbGl0aWVzICYmIG1lbnVWaXNpYmlsaXRpZXNbbmFtZU9mTWVudVZpc2liaWxpdHldID09PSB0cnVlXG4gICk7XG5cbnR5cGUgUmVzdHJpY3RlZE1lbnVJdGVtUHJvcHMgPSB7XG4gIGZlYXR1cmVUb2dnbGU/OiBzdHJpbmc7XG4gIG5hbWVzT2ZNZW51VmlzaWJpbGl0aWVzPzogc3RyaW5nW107XG4gIHByb2plY3RQZXJtaXNzaW9uczogVFByb2plY3RQZXJtaXNzaW9ucztcbiAgbWVudVZpc2liaWxpdGllczogVE5vcm1hbGl6ZWRNZW51VmlzaWJpbGl0aWVzIHwgbnVsbDtcbiAga2V5T2ZNZW51SXRlbTogc3RyaW5nO1xuICBwZXJtaXNzaW9uczogc3RyaW5nW107XG4gIGFjdGlvblJpZ2h0cz86IFRBY3Rpb25SaWdodFtdO1xuICBkYXRhRmVuY2VzPzogVERhdGFGZW5jZVtdO1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xufTtcbnR5cGUgVExvbmdMaXZlZEZsYWcgPSB7XG4gIHZhbHVlOiBib29sZWFuO1xuICByZWFzb24/OiBzdHJpbmc7XG59O1xuY29uc3QgcmVzdHJpY3RlZE1lbnVJdGVtRGVmYXVsdFByb3BzOiBQaWNrPFxuICBSZXN0cmljdGVkTWVudUl0ZW1Qcm9wcyxcbiAgJ3Blcm1pc3Npb25zJ1xuPiA9IHtcbiAgcGVybWlzc2lvbnM6IFtdLFxufTtcbmZ1bmN0aW9uIGlzTG9uZ0xpdmVkRmxhZyhcbiAgZmxhZzogVEZsYWdWYXJpYXRpb24gfCBUTG9uZ0xpdmVkRmxhZ1xuKTogZmxhZyBpcyBUTG9uZ0xpdmVkRmxhZyB7XG4gIHJldHVybiB0eXBlb2YgKGZsYWcgYXMgVExvbmdMaXZlZEZsYWcpPy52YWx1ZSA9PT0gJ2Jvb2xlYW4nO1xufVxuY29uc3QgUmVzdHJpY3RlZE1lbnVJdGVtID0gKHByb3BzOiBSZXN0cmljdGVkTWVudUl0ZW1Qcm9wcykgPT4ge1xuICAvLyBOT1RFOiBDdXN0b20gYXBwbGljYXRpb24gYXJlIGFjdGl2YXRlZC9kZWFjdGl2YXRlZCB3aGlsZSB0aGVpclxuICAvLyB2aXNpYmlsaXR5IGlzIG5vdCBjb250cm9sbGVkIHZpYSBhIHZpc2liaWlsaXR5IG92ZXJ3cml0ZS5cbiAgY29uc3QgZmxhZ1ZhcmlhdGlvbiA9IHVzZUZsYWdWYXJpYXRpb24ocHJvcHMuZmVhdHVyZVRvZ2dsZSk7XG4gIGlmIChcbiAgICBpc0V2ZXJ5TWVudVZpc2liaWxpdHlTZXRUb0hpZGRlbihcbiAgICAgIHByb3BzLm1lbnVWaXNpYmlsaXRpZXMsXG4gICAgICBwcm9wcy5uYW1lc09mTWVudVZpc2liaWxpdGllc1xuICAgIClcbiAgKVxuICAgIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHBlcm1pc3Npb25zV3JhcHBlciA9XG4gICAgKEFycmF5LmlzQXJyYXkocHJvcHMucGVybWlzc2lvbnMpICYmIHByb3BzLnBlcm1pc3Npb25zLmxlbmd0aCA+IDApIHx8XG4gICAgKEFycmF5LmlzQXJyYXkocHJvcHMuZGF0YUZlbmNlcykgJiYgcHJvcHMuZGF0YUZlbmNlcy5sZW5ndGggPiAwKSA/IChcbiAgICAgIDxSZXN0cmljdGVkQnlQZXJtaXNzaW9uc1xuICAgICAgICBwZXJtaXNzaW9ucz17cHJvcHMucGVybWlzc2lvbnN9XG4gICAgICAgIGFjdGlvblJpZ2h0cz17cHJvcHMuYWN0aW9uUmlnaHRzfVxuICAgICAgICBkYXRhRmVuY2VzPXtwcm9wcy5kYXRhRmVuY2VzfVxuICAgICAgICBzZWxlY3REYXRhRmVuY2VEYXRhPXsoZGVtYW5kZWREYXRhRmVuY2UpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGRlbWFuZGVkRGF0YUZlbmNlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3N0b3JlJzpcbiAgICAgICAgICAgICAgcmV0dXJuIGRlbWFuZGVkRGF0YUZlbmNlLmFjdHVhbERhdGFGZW5jZVZhbHVlcztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgLy8gQWx3YXlzIGNoZWNrIHRoYXQgc29tZSBvZiB0aGUgZ2l2ZW4gcGVybWlzc2lvbnMgbWF0Y2guXG4gICAgICAgIHNob3VsZE1hdGNoU29tZVBlcm1pc3Npb25zPXt0cnVlfVxuICAgICAgICBwcm9qZWN0UGVybWlzc2lvbnM9e3Byb3BzLnByb2plY3RQZXJtaXNzaW9uc31cbiAgICAgID5cbiAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgPC9SZXN0cmljdGVkQnlQZXJtaXNzaW9ucz5cbiAgICApIDogKFxuICAgICAgPD57cHJvcHMuY2hpbGRyZW59PC8+XG4gICAgKTtcblxuICBpZiAocHJvcHMuZmVhdHVyZVRvZ2dsZSkge1xuICAgIC8vIEEgcmVndWxhciBzaG9ydC1saXZlZCBmZWF0dXJlIHRvZ2dsZVxuICAgIGlmIChmbGFnVmFyaWF0aW9uID09PSB0cnVlKSByZXR1cm4gcGVybWlzc2lvbnNXcmFwcGVyO1xuICAgIC8vIEEgbG9uZy1saXZlZCBmZWF0dXJlIHRvZ2dsZSB3aXRoIGB7IHZhbHVlOiBib29sZWFuLCBzdHJpbmc6IHJlYXNvbiB9YFxuICAgIGlmIChpc0xvbmdMaXZlZEZsYWcoZmxhZ1ZhcmlhdGlvbikgJiYgZmxhZ1ZhcmlhdGlvbi52YWx1ZSA9PT0gdHJ1ZSlcbiAgICAgIHJldHVybiBwZXJtaXNzaW9uc1dyYXBwZXI7XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBwZXJtaXNzaW9uc1dyYXBwZXI7XG59O1xuUmVzdHJpY3RlZE1lbnVJdGVtLmRpc3BsYXlOYW1lID0gJ1Jlc3RyaWN0ZWRNZW51SXRlbSc7XG5SZXN0cmljdGVkTWVudUl0ZW0uZGVmYXVsdFByb3BzID0gcmVzdHJpY3RlZE1lbnVJdGVtRGVmYXVsdFByb3BzO1xuXG5leHBvcnQgY29uc3QgZ2V0SWNvbkNvbG9yID0gKFxuICBpc0FjdGl2ZTogYm9vbGVhbixcbiAgaXNBbHRlcm5hdGl2ZVRoZW1lOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKGlzQWN0aXZlKSByZXR1cm4gJ3ByaW1hcnk0MCc7XG4gIHJldHVybiBpc0FsdGVybmF0aXZlVGhlbWUgPyAnbmV1dHJhbDYwJyA6ICdzdXJmYWNlJztcbn07XG5cbmNvbnN0IGdldE1lbnVWaXNpYmlsaXRpZXNPZlN1Ym1lbnVzID0gKG1lbnU6IFROYXZiYXJNZW51KSA9PlxuICBtZW51LnN1Ym1lbnUubWFwKChzdWJtZW51KSA9PiBzdWJtZW51Lm1lbnVWaXNpYmlsaXR5KS5maWx0ZXIobm9uTnVsbGFibGUpO1xuY29uc3QgZ2V0TWVudVZpc2liaWxpdHlPZk1haW5tZW51ID0gKG1lbnU6IFROYXZiYXJNZW51KSA9PlxuICBtZW51Lm1lbnVWaXNpYmlsaXR5ID8gW21lbnUubWVudVZpc2liaWxpdHldIDogW107XG5cbnR5cGUgTWVudUxhYmVsUHJvcHMgPSB7XG4gIGxhYmVsQWxsTG9jYWxlczogVExvY2FsaXplZEZpZWxkW107XG4gIGRlZmF1bHRMYWJlbD86IHN0cmluZztcbiAgYXBwbGljYXRpb25Mb2NhbGU6IHN0cmluZztcbn07XG5jb25zdCBNZW51TGFiZWwgPSAocHJvcHM6IE1lbnVMYWJlbFByb3BzKSA9PiB7XG4gIGNvbnN0IGxvY2FsaXplZExhYmVsID0gcHJvcHMubGFiZWxBbGxMb2NhbGVzLmZpbmQoKGxvYykgPT5cbiAgICBwcm9wcy5hcHBsaWNhdGlvbkxvY2FsZS5zdGFydHNXaXRoKGxvYy5sb2NhbGUpXG4gICk7XG4gIGlmIChsb2NhbGl6ZWRMYWJlbCkgcmV0dXJuIDw+e2xvY2FsaXplZExhYmVsLnZhbHVlfTwvPjtcbiAgaWYgKHByb3BzLmRlZmF1bHRMYWJlbCkgcmV0dXJuIDw+e3Byb3BzLmRlZmF1bHRMYWJlbH08Lz47XG4gIHJldHVybiA8PntOT19WQUxVRV9GQUxMQkFDS308Lz47XG59O1xuXG50eXBlIFRNZW51V2l0aERlZmF1bHRMYWJlbCA9IFROYXZiYXJNZW51ICYge1xuICAvLyBkZXJpdmVzIGZyb20gYHByb2plY3RFeHRlbnNpb25zUXVlcnkuaW5zdGFsbGVkQXBwbGljYXRpb25zLmFwcGxpY2F0aW9uLm1haW5NZW51TGlua2BcbiAgZGVmYXVsdExhYmVsPzogc3RyaW5nO1xufTtcbnR5cGUgVFN1Ym1lbnVXaXRoRGVmYXVsdExhYmVsID0gVEJhc2VNZW51ICYge1xuICAvLyBkZXJpdmVzIGZyb20gYHByb2plY3RFeHRlbnNpb25zUXVlcnkuaW5zdGFsbGVkQXBwbGljYXRpb25zLmFwcGxpY2F0aW9uLm1haW5NZW51TGlua2BcbiAgZGVmYXVsdExhYmVsPzogc3RyaW5nO1xufTtcblxudHlwZSBBcHBsaWNhdGlvbk1lbnVQcm9wcyA9IHtcbiAgbG9jYXRpb246IFJvdXRlQ29tcG9uZW50UHJvcHNbJ2xvY2F0aW9uJ107XG4gIG1lbnU6IFRNZW51V2l0aERlZmF1bHRMYWJlbDtcbiAgaXNBY3RpdmU6IGJvb2xlYW47XG4gIGlzTWVudU9wZW46IGJvb2xlYW47XG4gIHNob3VsZENsb3NlTWVudUZseTogTW91c2VFdmVudEhhbmRsZXI8SFRNTEVsZW1lbnQ+O1xuICBwcm9qZWN0UGVybWlzc2lvbnM6IFRQcm9qZWN0UGVybWlzc2lvbnM7XG4gIG1lbnVWaXNpYmlsaXRpZXM6IFROb3JtYWxpemVkTWVudVZpc2liaWxpdGllcyB8IG51bGw7XG4gIGhhbmRsZVRvZ2dsZUl0ZW06ICgpID0+IHZvaWQ7XG4gIGFwcGxpY2F0aW9uTG9jYWxlOiBzdHJpbmc7XG4gIHByb2plY3RLZXk6IHN0cmluZztcbiAgdXNlRnVsbFJlZGlyZWN0c0ZvckxpbmtzOiBib29sZWFuO1xuICBvbk1lbnVJdGVtQ2xpY2s/OiBNZW51SXRlbUxpbmtQcm9wc1snb25DbGljayddO1xufTtcbmNvbnN0IEFwcGxpY2F0aW9uTWVudSA9IChwcm9wczogQXBwbGljYXRpb25NZW51UHJvcHMpID0+IHtcbiAgY29uc3QgaXNNYWluTWVudVJvdXRlQWN0aXZlID0gQm9vbGVhbihcbiAgICBtYXRjaFBhdGgocHJvcHMubG9jYXRpb24ucGF0aG5hbWUsIHtcbiAgICAgIHBhdGg6IGAvJHtwcm9wcy5wcm9qZWN0S2V5fS8ke3Byb3BzLm1lbnUudXJpUGF0aH1gLFxuICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgc3RyaWN0OiBmYWxzZSxcbiAgICB9KVxuICApO1xuICBjb25zdCBoYXNTdWJtZW51ID1cbiAgICBBcnJheS5pc0FycmF5KHByb3BzLm1lbnUuc3VibWVudSkgJiYgcHJvcHMubWVudS5zdWJtZW51Lmxlbmd0aCA+IDA7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBPbiBmaXJzdCByZW5kZXIsIGNoZWNrIHdoaWNoIG1lbnUgaXMgYWN0aXZlIGZvciB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiBhbmQgZXhwYW5kXG4gICAgLy8gdGhlIHN1Ym1lbnUgYXV0b21hdGljYWxseSB1bmxlc3MgdGhlIGFsbCBuYXZiYXIgaXMgY29sbGFwc2VkIG9yIHRoZXJlIGFyZSBubyBzdWJtZW51IGxpbmtzLlxuICAgIGlmIChwcm9wcy5pc01lbnVPcGVuICYmIGlzTWFpbk1lbnVSb3V0ZUFjdGl2ZSAmJiBoYXNTdWJtZW51KSB7XG4gICAgICBwcm9wcy5oYW5kbGVUb2dnbGVJdGVtKCk7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW3Byb3BzLmlzTWVudU9wZW5dKTsgLy8gPC0tIChyZSlydW4gdGhpcyBvbmx5IHdoZW4gdGhlIGFsbCBtZW51IGV4cGFuZHNcblxuICBjb25zdCBuYW1lc09mTWVudVZpc2liaWxpdGllc09mQWxsU3VibWVudXMgPSBoYXNTdWJtZW51XG4gICAgPyBnZXRNZW51VmlzaWJpbGl0aWVzT2ZTdWJtZW51cyhwcm9wcy5tZW51KVxuICAgIDogZ2V0TWVudVZpc2liaWxpdHlPZk1haW5tZW51KHByb3BzLm1lbnUpO1xuXG4gIGNvbnN0IGlzTWFpbk1lbnVJdGVtQUxpbmsgPVxuICAgIC8vIDEuIFdoZW4gdGhlIG5hdmJhciBpcyBjb2xsYXBzZWRcbiAgICAhcHJvcHMuaXNNZW51T3BlbiB8fFxuICAgIC8vIDIuIFdoZW4gdGhlcmUgaXMgbm8gc3VibWVudVxuICAgICFoYXNTdWJtZW51IHx8XG4gICAgLy8gMy4gV2hlbiB0aGUgc3VibWVudSBncm91cCBpcyBhY3RpdmUvdmlzaWJsZVxuICAgIHByb3BzLmlzQWN0aXZlO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtwcm9wcy5tZW51LnNob3VsZFJlbmRlckRpdmlkZXIgJiYgPE1lbnVJdGVtRGl2aWRlciAvPn1cblxuICAgICAgPFJlc3RyaWN0ZWRNZW51SXRlbVxuICAgICAgICBrZXk9e3Byb3BzLm1lbnUua2V5fVxuICAgICAgICBrZXlPZk1lbnVJdGVtPXtwcm9wcy5tZW51LmtleX1cbiAgICAgICAgZmVhdHVyZVRvZ2dsZT17cHJvcHMubWVudS5mZWF0dXJlVG9nZ2xlID8/IHVuZGVmaW5lZH1cbiAgICAgICAgcGVybWlzc2lvbnM9e3Byb3BzLm1lbnUucGVybWlzc2lvbnN9XG4gICAgICAgIGFjdGlvblJpZ2h0cz17cHJvcHMubWVudS5hY3Rpb25SaWdodHMgPz8gdW5kZWZpbmVkfVxuICAgICAgICBkYXRhRmVuY2VzPXtwcm9wcy5tZW51LmRhdGFGZW5jZXMgPz8gdW5kZWZpbmVkfVxuICAgICAgICBwcm9qZWN0UGVybWlzc2lvbnM9e3Byb3BzLnByb2plY3RQZXJtaXNzaW9uc31cbiAgICAgICAgbWVudVZpc2liaWxpdGllcz17cHJvcHMubWVudVZpc2liaWxpdGllc31cbiAgICAgICAgbmFtZXNPZk1lbnVWaXNpYmlsaXRpZXM9e25hbWVzT2ZNZW51VmlzaWJpbGl0aWVzT2ZBbGxTdWJtZW51c31cbiAgICAgID5cbiAgICAgICAgPE1lbnVJdGVtXG4gICAgICAgICAgaGFzU3VibWVudT17aGFzU3VibWVudX1cbiAgICAgICAgICBpc0FjdGl2ZT17cHJvcHMuaXNBY3RpdmV9XG4gICAgICAgICAgaXNNZW51T3Blbj17cHJvcHMuaXNNZW51T3Blbn1cbiAgICAgICAgICBvbkNsaWNrPXtwcm9wcy5oYW5kbGVUb2dnbGVJdGVtfVxuICAgICAgICAgIG9uTW91c2VFbnRlcj17cHJvcHMuaXNNZW51T3BlbiA/IHVuZGVmaW5lZCA6IHByb3BzLmhhbmRsZVRvZ2dsZUl0ZW19XG4gICAgICAgICAgb25Nb3VzZUxlYXZlPXtwcm9wcy5pc01lbnVPcGVuID8gdW5kZWZpbmVkIDogcHJvcHMuc2hvdWxkQ2xvc2VNZW51Rmx5fVxuICAgICAgICA+XG4gICAgICAgICAgPE1lbnVJdGVtTGlua1xuICAgICAgICAgICAgbGlua1RvPXtcbiAgICAgICAgICAgICAgaXNNYWluTWVudUl0ZW1BTGlua1xuICAgICAgICAgICAgICAgID8gYC8ke3Byb3BzLnByb2plY3RLZXl9LyR7cHJvcHMubWVudS51cmlQYXRofWBcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdXNlRnVsbFJlZGlyZWN0c0ZvckxpbmtzPXtwcm9wcy51c2VGdWxsUmVkaXJlY3RzRm9yTGlua3N9XG4gICAgICAgICAgICBvbkNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snaXRlbS1pY29uLXRleHQnXX0+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuaWNvbn0+XG4gICAgICAgICAgICAgICAgPEljb25Td2l0Y2hlclxuICAgICAgICAgICAgICAgICAgaWNvbj17cHJvcHMubWVudS5pY29ufVxuICAgICAgICAgICAgICAgICAgc2l6ZT1cInNjYWxlXCJcbiAgICAgICAgICAgICAgICAgIGNvbG9yPXtnZXRJY29uQ29sb3IoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmlzQWN0aXZlIHx8IGlzTWFpbk1lbnVSb3V0ZUFjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgQm9vbGVhbihwcm9wcy5tZW51LnNob3VsZFJlbmRlckRpdmlkZXIpXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9XG4gICAgICAgICAgICAgICAgYXJpYS1vd25zPXtgZ3JvdXAtJHtwcm9wcy5tZW51LmtleX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPE1lbnVMYWJlbFxuICAgICAgICAgICAgICAgICAgbGFiZWxBbGxMb2NhbGVzPXtwcm9wcy5tZW51LmxhYmVsQWxsTG9jYWxlc31cbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRMYWJlbD17cHJvcHMubWVudS5kZWZhdWx0TGFiZWx9XG4gICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkxvY2FsZT17cHJvcHMuYXBwbGljYXRpb25Mb2NhbGV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L01lbnVJdGVtTGluaz5cbiAgICAgICAgICA8TWVudUdyb3VwXG4gICAgICAgICAgICBpZD17cHJvcHMubWVudS5rZXl9XG4gICAgICAgICAgICBsZXZlbD17Mn1cbiAgICAgICAgICAgIGlzQWN0aXZlPXtwcm9wcy5pc0FjdGl2ZX1cbiAgICAgICAgICAgIGlzRXhwYW5kZWQ9e3Byb3BzLmlzTWVudU9wZW59XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2hhc1N1Ym1lbnVcbiAgICAgICAgICAgICAgPyBwcm9wcy5tZW51LnN1Ym1lbnUubWFwKChzdWJtZW51OiBUU3VibWVudVdpdGhEZWZhdWx0TGFiZWwpID0+IChcbiAgICAgICAgICAgICAgICAgIDxSZXN0cmljdGVkTWVudUl0ZW1cbiAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtwcm9wcy5tZW51LmtleX0tc3VibWVudS0ke3N1Ym1lbnUua2V5fWB9XG4gICAgICAgICAgICAgICAgICAgIGtleU9mTWVudUl0ZW09e3N1Ym1lbnUua2V5fVxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlVG9nZ2xlPXtzdWJtZW51LmZlYXR1cmVUb2dnbGUgPz8gdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9ucz17c3VibWVudS5wZXJtaXNzaW9uc31cbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uUmlnaHRzPXtzdWJtZW51LmFjdGlvblJpZ2h0cyA/PyB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgICAgIGRhdGFGZW5jZXM9e3N1Ym1lbnUuZGF0YUZlbmNlcyA/PyB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RQZXJtaXNzaW9ucz17cHJvcHMucHJvamVjdFBlcm1pc3Npb25zfVxuICAgICAgICAgICAgICAgICAgICBtZW51VmlzaWJpbGl0aWVzPXtwcm9wcy5tZW51VmlzaWJpbGl0aWVzfVxuICAgICAgICAgICAgICAgICAgICBuYW1lc09mTWVudVZpc2liaWxpdGllcz17XG4gICAgICAgICAgICAgICAgICAgICAgc3VibWVudS5tZW51VmlzaWJpbGl0eVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBbc3VibWVudS5tZW51VmlzaWJpbGl0eV1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzTmFtZT17c3R5bGVzWydzdWJsaXN0LWl0ZW0nXX0+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50ZXh0fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNZW51SXRlbUxpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1RvPXtgLyR7cHJvcHMucHJvamVjdEtleX0vJHtzdWJtZW51LnVyaVBhdGh9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3RNYXRjaD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlRnVsbFJlZGlyZWN0c0ZvckxpbmtzPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy51c2VGdWxsUmVkaXJlY3RzRm9yTGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNZW51TGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbEFsbExvY2FsZXM9e3N1Ym1lbnUubGFiZWxBbGxMb2NhbGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRMYWJlbD17c3VibWVudS5kZWZhdWx0TGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Mb2NhbGU9e3Byb3BzLmFwcGxpY2F0aW9uTG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9NZW51SXRlbUxpbms+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICA6IG51bGx9XG4gICAgICAgICAgPC9NZW51R3JvdXA+XG4gICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICA8L1Jlc3RyaWN0ZWRNZW51SXRlbT5cbiAgICA8Lz5cbiAgKTtcbn07XG5BcHBsaWNhdGlvbk1lbnUuZGlzcGxheU5hbWUgPSAnQXBwbGljYXRpb25NZW51JztcblxudHlwZSBOYXZCYXJMYXlvdXRQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn07XG5jb25zdCBOYXZCYXJMYXlvdXQgPSBmb3J3YXJkUmVmPEhUTUxFbGVtZW50LCBOYXZCYXJMYXlvdXRQcm9wcz4oXG4gIChwcm9wcywgcmVmKSA9PiAoXG4gICAgPD5cbiAgICAgIDxHbG9iYWxcbiAgICAgICAgc3R5bGVzPXtjc3NgXG4gICAgICAgICAgJHtjb21waWxlZFN0eWxlcy5nbG9iYWx9XG4gICAgICAgIGB9XG4gICAgICAvPlxuICAgICAgPG5hdlxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2xlZnQtbmF2aWdhdGlvbiddfVxuICAgICAgICBkYXRhLXRlc3Q9XCJsZWZ0LW5hdmlnYXRpb25cIlxuICAgICAgICBkYXRhLXRlc3RpZD1cImxlZnQtbmF2aWdhdGlvblwiXG4gICAgICAgIGRhdGEtdHJhY2stY29tcG9uZW50PVwiTmF2aWdhdGlvblwiXG4gICAgICA+XG4gICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgIDwvbmF2PlxuICAgIDwvPlxuICApXG4pO1xuTmF2QmFyTGF5b3V0LmRpc3BsYXlOYW1lID0gJ05hdkJhckxheW91dCc7XG5cbnR5cGUgTmF2YmFyUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PiA9IHtcbiAgYXBwbGljYXRpb25Mb2NhbGU6IHN0cmluZztcbiAgcHJvamVjdEtleTogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgcHJvamVjdDogVEZldGNoUHJvamVjdFF1ZXJ5Wydwcm9qZWN0J107XG4gIG9uTWVudUl0ZW1DbGljaz86IE1lbnVJdGVtTGlua1Byb3BzWydvbkNsaWNrJ107XG59O1xuY29uc3QgTmF2QmFyID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBOYXZiYXJQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBuYXZCYXJOb2RlLFxuICAgIGlzTWVudU9wZW4sXG4gICAgaXNFeHBhbmRlclZpc2libGUsXG4gICAgYWN0aXZlSXRlbUluZGV4LFxuICAgIGhhbmRsZVRvZ2dsZUl0ZW0sXG4gICAgaGFuZGxlVG9nZ2xlTWVudSxcbiAgICBzaG91bGRDbG9zZU1lbnVGbHksXG4gICAgYWxsQXBwbGljYXRpb25OYXZiYXJNZW51LFxuICB9ID0gdXNlTmF2YmFyU3RhdGVNYW5hZ2VyKHtcbiAgICBlbnZpcm9ubWVudDogcHJvcHMuZW52aXJvbm1lbnQsXG4gIH0pO1xuICBjb25zdCB1c2VGdWxsUmVkaXJlY3RzRm9yTGlua3MgPSBCb29sZWFuKFxuICAgIHByb3BzLmVudmlyb25tZW50LnVzZUZ1bGxSZWRpcmVjdHNGb3JMaW5rc1xuICApO1xuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG4gIGNvbnN0IGd0bVRyYWNraW5nID0gdXNlQ29udGV4dChHdG1Db250ZXh0KTtcblxuICBjb25zdCBwcm9qZWN0UGVybWlzc2lvbnM6IFRQcm9qZWN0UGVybWlzc2lvbnMgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBwZXJtaXNzaW9uczogbm9ybWFsaXplQWxsQXBwbGllZFBlcm1pc3Npb25zKFxuICAgICAgICBwcm9wcy5wcm9qZWN0Py5hbGxQZXJtaXNzaW9uc0ZvckFsbEFwcGxpY2F0aW9ucy5hbGxBcHBsaWVkUGVybWlzc2lvbnNcbiAgICAgICksXG4gICAgICBhY3Rpb25SaWdodHM6IG5vcm1hbGl6ZUFsbEFwcGxpZWRBY3Rpb25SaWdodHMoXG4gICAgICAgIHByb3BzLnByb2plY3Q/LmFsbFBlcm1pc3Npb25zRm9yQWxsQXBwbGljYXRpb25zLmFsbEFwcGxpZWRBY3Rpb25SaWdodHNcbiAgICAgICksXG4gICAgICBkYXRhRmVuY2VzOiBub3JtYWxpemVBbGxBcHBsaWVkRGF0YUZlbmNlcyhcbiAgICAgICAgcHJvcHMucHJvamVjdD8uYWxsUGVybWlzc2lvbnNGb3JBbGxBcHBsaWNhdGlvbnMuYWxsQXBwbGllZERhdGFGZW5jZXNcbiAgICAgICksXG4gICAgfSksXG4gICAgW3Byb3BzLnByb2plY3RdXG4gICk7XG4gIGNvbnN0IG1lbnVWaXNpYmlsaXRpZXMgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBub3JtYWxpemVBbGxBcHBsaWVkTWVudVZpc2liaWxpdGllcyhcbiAgICAgICAgcHJvcHMucHJvamVjdD8uYWxsUGVybWlzc2lvbnNGb3JBbGxBcHBsaWNhdGlvbnNcbiAgICAgICAgICAuYWxsQXBwbGllZE1lbnVWaXNpYmlsaXRpZXNcbiAgICAgICksXG4gICAgW3Byb3BzLnByb2plY3RdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8TmF2QmFyTGF5b3V0IHJlZj17bmF2QmFyTm9kZX0+XG4gICAgICA8TWVudUdyb3VwIGlkPVwibWFpblwiIGxldmVsPXsxfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snc2Nyb2xsYWJsZS1tZW51J119PlxuICAgICAgICAgIHthbGxBcHBsaWNhdGlvbk5hdmJhck1lbnUubWFwKChtZW51KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZW51VHlwZSA9ICdzY3JvbGxhYmxlJztcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IGAke21lbnVUeXBlfS0ke21lbnUua2V5fWA7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8QXBwbGljYXRpb25NZW51XG4gICAgICAgICAgICAgICAga2V5PXttZW51LmtleX1cbiAgICAgICAgICAgICAgICBsb2NhdGlvbj17bG9jYXRpb259XG4gICAgICAgICAgICAgICAgbWVudT17bWVudX1cbiAgICAgICAgICAgICAgICBpc0FjdGl2ZT17YWN0aXZlSXRlbUluZGV4ID09PSBpdGVtSW5kZXh9XG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlSXRlbT17KCkgPT4gaGFuZGxlVG9nZ2xlSXRlbShpdGVtSW5kZXgpfVxuICAgICAgICAgICAgICAgIGlzTWVudU9wZW49e2lzTWVudU9wZW59XG4gICAgICAgICAgICAgICAgc2hvdWxkQ2xvc2VNZW51Rmx5PXtzaG91bGRDbG9zZU1lbnVGbHl9XG4gICAgICAgICAgICAgICAgcHJvamVjdFBlcm1pc3Npb25zPXtwcm9qZWN0UGVybWlzc2lvbnN9XG4gICAgICAgICAgICAgICAgbWVudVZpc2liaWxpdGllcz17bWVudVZpc2liaWxpdGllc31cbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkxvY2FsZT17cHJvcHMuYXBwbGljYXRpb25Mb2NhbGV9XG4gICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvcHMucHJvamVjdEtleX1cbiAgICAgICAgICAgICAgICB1c2VGdWxsUmVkaXJlY3RzRm9yTGlua3M9e3VzZUZ1bGxSZWRpcmVjdHNGb3JMaW5rc31cbiAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydmaXhlZC1tZW51J119PlxuICAgICAgICAgIDxNZW51SXRlbVxuICAgICAgICAgICAgaGFzU3VibWVudT17ZmFsc2V9XG4gICAgICAgICAgICBpc0FjdGl2ZT17ZmFsc2V9XG4gICAgICAgICAgICBpc01lbnVPcGVuPXtpc01lbnVPcGVufVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBndG1UcmFja2luZy50cmFjayhcbiAgICAgICAgICAgICAgICB0cmFja2luZ0V2ZW50cy5nb1RvU3VwcG9ydC5hY3Rpb24sXG4gICAgICAgICAgICAgICAgdHJhY2tpbmdFdmVudHMuZ29Ub1N1cHBvcnQuY2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgdHJhY2tpbmdFdmVudHMuZ29Ub1N1cHBvcnQubGFiZWxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlSXRlbSgnZml4ZWQtc3VwcG9ydCcpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uTW91c2VFbnRlcj17XG4gICAgICAgICAgICAgIGlzTWVudU9wZW4gPyB1bmRlZmluZWQgOiAoKSA9PiBoYW5kbGVUb2dnbGVJdGVtKCdmaXhlZC1zdXBwb3J0JylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17aXNNZW51T3BlbiA/IHVuZGVmaW5lZCA6IHNob3VsZENsb3NlTWVudUZseX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBocmVmPXtTVVBQT1JUX1BPUlRBTF9VUkx9XG4gICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydpdGVtLWljb24tdGV4dCddfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmljb259PlxuICAgICAgICAgICAgICAgICAgPFN1cHBvcnRJY29uXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzY2FsZVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPXtnZXRJY29uQ29sb3IoXG4gICAgICAgICAgICAgICAgICAgICAgYWN0aXZlSXRlbUluZGV4ID09PSAnZml4ZWQtc3VwcG9ydCcsXG4gICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlc1snTmF2QmFyLk1DU3VwcG9ydC50aXRsZSddfSAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICAgIDxNZW51RXhwYW5kZXJcbiAgICAgICAgICAgIGlzVmlzaWJsZT17aXNFeHBhbmRlclZpc2libGV9XG4gICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVUb2dnbGVNZW51fVxuICAgICAgICAgICAgaXNNZW51T3Blbj17aXNNZW51T3Blbn1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvTWVudUdyb3VwPlxuICAgIDwvTmF2QmFyTGF5b3V0PlxuICApO1xufTtcbk5hdkJhci5kaXNwbGF5TmFtZSA9ICdOYXZCYXInO1xuXG5leHBvcnQgZGVmYXVsdCBOYXZCYXI7XG5cbmV4cG9ydCBjb25zdCBMb2FkaW5nTmF2QmFyID0gKCkgPT4ge1xuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICB1c2VMb2FkaW5nTWVudUxheW91dEVmZmVjdCgpO1xuICByZXR1cm4gKFxuICAgIDxOYXZCYXJMYXlvdXQgcmVmPXtyZWZ9PlxuICAgICAgPE1lbnVHcm91cCBpZD1cIm1haW5cIiBsZXZlbD17MX0+XG4gICAgICAgIDw+XG4gICAgICAgICAge0FycmF5LmZyb20obmV3IEFycmF5KDUpKS5tYXAoKF8sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8TWVudUl0ZW1cbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgaGFzU3VibWVudT17ZmFsc2V9XG4gICAgICAgICAgICAgIGlzTWVudU9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICBpc0FjdGl2ZT17ZmFsc2V9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHVuZGVmaW5lZH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydsb2FkaW5nLWRvdC1jb250YWluZXInXX1cbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGRvdC1jb250YWluZXItJHtpbmRleH1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPExvYWRpbmdQbGFjZWhvbGRlciBzaGFwZT1cImRvdFwiIHNpemU9XCJtXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICAgICkpfVxuICAgICAgICA8Lz5cbiAgICAgIDwvTWVudUdyb3VwPlxuICAgIDwvTmF2QmFyTGF5b3V0PlxuICApO1xufTtcbkxvYWRpbmdOYXZCYXIuZGlzcGxheU5hbWUgPSAnTG9hZGluZ05hdkJhcic7XG4iXX0= */")
|
|
3695
3708
|
}), jsxRuntime.jsx("nav", {
|
|
3696
3709
|
ref: ref,
|
|
3697
|
-
className: styles['left-navigation'],
|
|
3710
|
+
className: styles$1['left-navigation'],
|
|
3698
3711
|
"data-test": "left-navigation",
|
|
3699
3712
|
"data-testid": "left-navigation",
|
|
3700
3713
|
"data-track-component": "Navigation",
|
|
@@ -3740,7 +3753,7 @@ var NavBar = function NavBar(props) {
|
|
|
3740
3753
|
id: "main",
|
|
3741
3754
|
level: 1,
|
|
3742
3755
|
children: [jsxRuntime.jsx("div", {
|
|
3743
|
-
className: styles['scrollable-menu'],
|
|
3756
|
+
className: styles$1['scrollable-menu'],
|
|
3744
3757
|
children: _mapInstanceProperty__default["default"](allApplicationNavbarMenu).call(allApplicationNavbarMenu, function (menu) {
|
|
3745
3758
|
var menuType = 'scrollable';
|
|
3746
3759
|
var itemIndex = "".concat(menuType, "-").concat(menu.key);
|
|
@@ -3762,7 +3775,7 @@ var NavBar = function NavBar(props) {
|
|
|
3762
3775
|
}, menu.key);
|
|
3763
3776
|
})
|
|
3764
3777
|
}), jsxRuntime.jsxs("div", {
|
|
3765
|
-
className: styles['fixed-menu'],
|
|
3778
|
+
className: styles$1['fixed-menu'],
|
|
3766
3779
|
children: [jsxRuntime.jsx(MenuItem, {
|
|
3767
3780
|
hasSubmenu: false,
|
|
3768
3781
|
isActive: false,
|
|
@@ -3781,15 +3794,15 @@ var NavBar = function NavBar(props) {
|
|
|
3781
3794
|
rel: "noopener noreferrer",
|
|
3782
3795
|
target: "_blank",
|
|
3783
3796
|
children: jsxRuntime.jsxs("div", {
|
|
3784
|
-
className: styles['item-icon-text'],
|
|
3797
|
+
className: styles$1['item-icon-text'],
|
|
3785
3798
|
children: [jsxRuntime.jsx("div", {
|
|
3786
|
-
className: styles.icon,
|
|
3799
|
+
className: styles$1.icon,
|
|
3787
3800
|
children: jsxRuntime.jsx(icons.SupportIcon, {
|
|
3788
3801
|
size: "scale",
|
|
3789
3802
|
color: getIconColor(activeItemIndex === 'fixed-support', true)
|
|
3790
3803
|
})
|
|
3791
3804
|
}), jsxRuntime.jsx("div", {
|
|
3792
|
-
className: styles.title,
|
|
3805
|
+
className: styles$1.title,
|
|
3793
3806
|
children: jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread$3({}, messages['NavBar.MCSupport.title']))
|
|
3794
3807
|
})]
|
|
3795
3808
|
})
|
|
@@ -3830,7 +3843,7 @@ var LoadingNavBar = function LoadingNavBar() {
|
|
|
3830
3843
|
return undefined;
|
|
3831
3844
|
},
|
|
3832
3845
|
children: jsxRuntime.jsx("div", {
|
|
3833
|
-
className: styles['loading-dot-container'],
|
|
3846
|
+
className: styles$1['loading-dot-container'],
|
|
3834
3847
|
"data-testid": "dot-container-".concat(index),
|
|
3835
3848
|
children: jsxRuntime.jsx(LoadingPlaceholder, {
|
|
3836
3849
|
shape: "dot",
|
|
@@ -3880,7 +3893,7 @@ var pimIndexerStates = {
|
|
|
3880
3893
|
};
|
|
3881
3894
|
|
|
3882
3895
|
var QuickAccess = /*#__PURE__*/react.lazy(function () {
|
|
3883
|
-
return Promise.resolve().then(function () { return require('./quick-access-
|
|
3896
|
+
return Promise.resolve().then(function () { return require('./quick-access-0aec997d.cjs.dev.js'
|
|
3884
3897
|
/* webpackChunkName: "quick-access" */
|
|
3885
3898
|
); });
|
|
3886
3899
|
});
|
|
@@ -4138,35 +4151,19 @@ var RedirectToLogout = function RedirectToLogout(props) {
|
|
|
4138
4151
|
};
|
|
4139
4152
|
|
|
4140
4153
|
function _EMOTION_STRINGIFIED_CSS_ERROR__$1() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
|
|
4141
|
-
var
|
|
4142
|
-
name: "
|
|
4143
|
-
styles: "#app{height:100%;}"
|
|
4154
|
+
var styles = process.env.NODE_ENV === "production" ? {
|
|
4155
|
+
name: "1prreal",
|
|
4156
|
+
styles: "html,body{font-size:var(--font-size-for-body);height:100vh;}#app{height:100%;}"
|
|
4144
4157
|
} : {
|
|
4145
|
-
name: "
|
|
4146
|
-
styles: "#app{height:100%;};label:
|
|
4147
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
4158
|
+
name: "6fkj0f-styles",
|
|
4159
|
+
styles: "html,body{font-size:var(--font-size-for-body);height:100vh;}#app{height:100%;};label:styles;",
|
|
4160
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsb2JhbC1zdHlsZXMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdrQiIsImZpbGUiOiJnbG9iYWwtc3R5bGVzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbS9tYXRlcmlhbHMvcmVzZXRzLmNzcyc7XG5pbXBvcnQgeyBHbG9iYWwsIGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuY29uc3Qgc3R5bGVzID0gY3NzYFxuICBodG1sLFxuICBib2R5IHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1mb3ItYm9keSk7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgfVxuXG4gICNhcHAge1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuYDtcblxuY29uc3QgR2xvYmFsU3R5bGVzID0gKCkgPT4gPEdsb2JhbCBzdHlsZXM9e3N0eWxlc30gLz47XG5cbmV4cG9ydCBkZWZhdWx0IEdsb2JhbFN0eWxlcztcbiJdfQ== */",
|
|
4148
4161
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
|
|
4149
4162
|
};
|
|
4150
|
-
var gridStyles = process.env.NODE_ENV === "production" ? {
|
|
4151
|
-
name: "r6l3ky",
|
|
4152
|
-
styles: ".row clear:both;float:left;width:100%"
|
|
4153
|
-
} : {
|
|
4154
|
-
name: "10lcr1l-gridStyles",
|
|
4155
|
-
styles: ".row clear:both;float:left;width:100%;label:gridStyles;",
|
|
4156
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsb2JhbC1zdHlsZXMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNzQiIsImZpbGUiOiJnbG9iYWwtc3R5bGVzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdsb2JhbCwgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgY3VzdG9tUHJvcGVydGllcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuXG5jb25zdCBhcHBTdHlsZXMgPSBjc3NgXG4gICNhcHAge1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuYDtcblxuY29uc3QgZ3JpZFN0eWxlcyA9IGNzc2Bcbi5yb3dcbiAgY2xlYXI6IGJvdGg7XG4gIGZsb2F0OiBsZWZ0O1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmNvbC0zIHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIHdpZHRoOiAyNSU7XG59XG5cbi5jb2wtNCB7XG4gIGZsb2F0OiBsZWZ0O1xuICB3aWR0aDogMzMuMzMzJTtcbn1cblxuLmNvbC01IHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIHdpZHRoOiA0MS42NjYlO1xufVxuXG4uY29sLTYge1xuICBmbG9hdDogbGVmdDtcbiAgd2lkdGg6IDUwJTtcbn1cblxuLmNvbC03IHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIHdpZHRoOiA1OC4zMzMlO1xufVxuXG4uY29sLTgge1xuICBmbG9hdDogbGVmdDtcbiAgd2lkdGg6IDY2LjY2NiU7XG59XG5cbi5jb2wtMTIge1xuICBmbG9hdDogbGVmdDtcbiAgd2lkdGg6IDEwMCU7XG59XG5gO1xuXG5jb25zdCByZXNldFN0eWxlcyA9IGNzc2BcbiAgKixcbiAgKjo6YmVmb3JlLFxuICAqOjphZnRlciB7XG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgfVxuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTb2xpZH07XG4gICAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCBzYW5zLXNlcmlmO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICB9XG5cbiAgaHRtbCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuXG4gIGgxLFxuICBoMixcbiAgaDMsXG4gIGg0LFxuICBoNSxcbiAgaDYge1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gIGJ1dHRvbiB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbiAgYSB7XG4gICAgY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvclByaW1hcnl9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycyBlYXNlLWluO1xuICB9XG5cbiAgcCB7XG4gICAgY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvclNvbGlkfTtcbiAgICBtYXJnaW46IDA7XG4gIH1cbmA7XG5cbmNvbnN0IEdsb2JhbFN0eWxlcyA9ICgpID0+IChcbiAgPD5cbiAgICA8R2xvYmFsIHN0eWxlcz17YXBwU3R5bGVzfSAvPlxuICAgIDxHbG9iYWwgc3R5bGVzPXtncmlkU3R5bGVzfSAvPlxuICAgIDxHbG9iYWwgc3R5bGVzPXtyZXNldFN0eWxlc30gLz5cbiAgPC8+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBHbG9iYWxTdHlsZXM7XG4iXX0= */",
|
|
4157
|
-
toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
|
|
4158
|
-
};
|
|
4159
|
-
var resetStyles = /*#__PURE__*/react$2.css("*,*::before,*::after{box-sizing:inherit;}html,body{color:", designSystem.customProperties.colorSolid, ";font-family:'Open Sans',sans-serif;font-size:13px;margin:0;padding:0;height:100vh;}html{box-sizing:border-box;}h1,h2,h3,h4,h5,h6{margin:0;}button{cursor:pointer;}a{color:", designSystem.customProperties.colorPrimary, ";cursor:pointer;text-decoration:none;transition:color 0.2s ease-in;}p{color:", designSystem.customProperties.colorSolid, ";margin:0;}" + (process.env.NODE_ENV === "production" ? "" : ";label:resetStyles;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsb2JhbC1zdHlsZXMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9EdUIiLCJmaWxlIjoiZ2xvYmFsLXN0eWxlcy50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHbG9iYWwsIGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB7IGN1c3RvbVByb3BlcnRpZXMgfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9kZXNpZ24tc3lzdGVtJztcblxuY29uc3QgYXBwU3R5bGVzID0gY3NzYFxuICAjYXBwIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbmA7XG5cbmNvbnN0IGdyaWRTdHlsZXMgPSBjc3NgXG4ucm93XG4gIGNsZWFyOiBib3RoO1xuICBmbG9hdDogbGVmdDtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5jb2wtMyB7XG4gIGZsb2F0OiBsZWZ0O1xuICB3aWR0aDogMjUlO1xufVxuXG4uY29sLTQge1xuICBmbG9hdDogbGVmdDtcbiAgd2lkdGg6IDMzLjMzMyU7XG59XG5cbi5jb2wtNSB7XG4gIGZsb2F0OiBsZWZ0O1xuICB3aWR0aDogNDEuNjY2JTtcbn1cblxuLmNvbC02IHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIHdpZHRoOiA1MCU7XG59XG5cbi5jb2wtNyB7XG4gIGZsb2F0OiBsZWZ0O1xuICB3aWR0aDogNTguMzMzJTtcbn1cblxuLmNvbC04IHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIHdpZHRoOiA2Ni42NjYlO1xufVxuXG4uY29sLTEyIHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIHdpZHRoOiAxMDAlO1xufVxuYDtcblxuY29uc3QgcmVzZXRTdHlsZXMgPSBjc3NgXG4gICosXG4gICo6OmJlZm9yZSxcbiAgKjo6YWZ0ZXIge1xuICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gIH1cblxuICBodG1sLFxuICBib2R5IHtcbiAgICBjb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yU29saWR9O1xuICAgIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgc2Fucy1zZXJpZjtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgfVxuXG4gIGh0bWwge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cblxuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2IHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICBidXR0b24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIGEge1xuICAgIGNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JQcmltYXJ5fTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnMgZWFzZS1pbjtcbiAgfVxuXG4gIHAge1xuICAgIGNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTb2xpZH07XG4gICAgbWFyZ2luOiAwO1xuICB9XG5gO1xuXG5jb25zdCBHbG9iYWxTdHlsZXMgPSAoKSA9PiAoXG4gIDw+XG4gICAgPEdsb2JhbCBzdHlsZXM9e2FwcFN0eWxlc30gLz5cbiAgICA8R2xvYmFsIHN0eWxlcz17Z3JpZFN0eWxlc30gLz5cbiAgICA8R2xvYmFsIHN0eWxlcz17cmVzZXRTdHlsZXN9IC8+XG4gIDwvPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgR2xvYmFsU3R5bGVzO1xuIl19 */");
|
|
4160
4163
|
|
|
4161
4164
|
var GlobalStyles = function GlobalStyles() {
|
|
4162
|
-
return jsxRuntime.
|
|
4163
|
-
|
|
4164
|
-
styles: appStyles
|
|
4165
|
-
}), jsxRuntime.jsx(react$2.Global, {
|
|
4166
|
-
styles: gridStyles
|
|
4167
|
-
}), jsxRuntime.jsx(react$2.Global, {
|
|
4168
|
-
styles: resetStyles
|
|
4169
|
-
})]
|
|
4165
|
+
return jsxRuntime.jsx(react$2.Global, {
|
|
4166
|
+
styles: styles
|
|
4170
4167
|
});
|
|
4171
4168
|
};
|
|
4172
4169
|
|
|
@@ -4206,7 +4203,7 @@ var MainContainer = /*#__PURE__*/_styled__default["default"]("main", process.env
|
|
|
4206
4203
|
} : {
|
|
4207
4204
|
name: "1rdshd",
|
|
4208
4205
|
styles: "grid-column:2;grid-row:3;min-width:0;overflow-x:hidden;overflow-y:scroll;display:flex;flex-direction:column;position:relative",
|
|
4209
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtSHdDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgdHlwZW9mIExPR09VVF9SRUFTT05TW2tleW9mIHR5cGVvZiBMT0dPVVRfUkVBU09OU11cbiAgICAgICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLlVOQVVUSE9SSVpFRDtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuREVMRVRFRDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9nb3V0IHJlYXNvbj17bG9nb3V0UmVhc29ufSAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgdGhlIGxvY2FsZSBvZiB0aGUgdXNlciwgd2UgcGljayBpdCBmcm9tIHRoZVxuICAgICAgICAgIC8vIHVzZXIncyBicm93c2VyIHRvIGF0dGVtcHQgdG8gbWF0Y2ggdGhlIGxhbmd1YWdlIGZvciB0aGUgY29ycmVjdCB0cmFuc2xhdGlvbnMuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyPy5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nTG9jYWxlRGF0YSwgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlclxuICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyB0aGUgbGFuZ3VhZ2UgYXMgbG9uZyBhcyB0aGUgbG9jYWxlIGRhdGFcbiAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2FkZWQuXG4gICAgICAgICAgICAgICAgICB7Li4uKGlzTG9hZGluZ0xvY2FsZURhdGEgPyB7fSA6IHsgbG9jYWxlLCBtZXNzYWdlcyB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICBsZENsaWVudFNpZGVJZD17YXBwbGljYXRpb25FbnZpcm9ubWVudC5sZENsaWVudFNpZGVJZH1cbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxWZXJzaW9uVHJhY2tlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIHsvKiBOT1RFOiB0aGUgcmVxdWVzdHMgaW4gZmxpZ2h0IGxvYWRlciB3aWxsIHJlbmRlciBhIGxvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICBzcGlubmVyIGludG8gdGhlIEFwcEJhci4gKi99XG4gICAgICAgICAgICAgICAgICAgICAgPFJlcXVlc3RzSW5GbGlnaHRMb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VudHJ5VXNlclRyYWNrZXIgdXNlcj17dXNlciA/PyB1bmRlZmluZWR9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEd0bVVzZXJUcmFja2VyIHVzZXI9e3VzZXJ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEd0bUFwcGxpY2F0aW9uVHJhY2tlclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25OYW1lPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmFwcGxpY2F0aW9uTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlckJ1c2luZXNzUm9sZT17dXNlcj8uYnVzaW5lc3NSb2xlID8/IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gJHtESU1FTlNJT05TLmhlYWRlcn0gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bm90aWZpY2F0aW9uc0dsb2JhbFJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInJlZ2lvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuR0xPQkFMfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RLZXlGcm9tVXJsKSByZXR1cm4gPFF1aWNrQWNjZXNzIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNQcm9qZWN0TG9hZGluZywgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUHJvamVjdExvYWRpbmcgfHwgIXByb2plY3QpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiB1c2VkIG91dHNpZGUgb2YgYSBwcm9qZWN0IGNvbnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Igd2hlbiB0aGUgcHJvamVjdCBpcyBleHBpcmVkIG9yIHN1cHNlbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZFVzZVByb2plY3RDb250ZXh0ID0gIShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LnN1c3BlbnNpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdC5zdXNwZW5zaW9uLmlzQWN0aXZlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2plY3QuZXhwaXJ5ICYmIHByb2plY3QuZXhwaXJ5LmlzQWN0aXZlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNob3VsZFVzZVByb2plY3RDb250ZXh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlcz17cHJvamVjdC5sYW5ndWFnZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZTogZGF0YUxvY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcm9qZWN0RGF0YUxvY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e3Byb2plY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0RGF0YUxvY2FsZT17ZGF0YUxvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxRdWlja0FjY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVByb2plY3REYXRhTG9jYWxlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcm9qZWN0RGF0YUxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3REYXRhTG9jYWxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZldGNoUHJvamVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwQmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybD17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGFzaWRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSA8TmF2QmFyPiBzaG91bGQgb25seSBiZSByZW5kZXJlZCB3aXRoaW4gYSBwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGV4dCwgdGhlcmVmb3JlIHdoZW4gdGhlcmUgaXMgYSBgcHJvamVjdEtleWAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gYHByb2plY3RLZXlgIGluIHRoZSBVUkwgKGUuZy4gYC9hY2NvdW50YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJvdXRlcyksIHdlIGRvbid0IHJlbmRlciBpdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiB3ZSBhbHNvIFwiY2FjaGVcIiB0aGUgYHByb2plY3RLZXlgIGluIGxvY2FsU3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gXCJyZS1oeWRyYXRlXCIgdGhlIFVSTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2F0aW9uIChlLmcgd2hlbiB5b3UgZ28gdG8gYC9gLCB0aGVyZSBzaG91bGQgYmUgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZGlyZWN0IHRvIGAvOnByb2plY3RLZXlgKS4gVGhlcmVmb3JlLCB3ZSBzaG91bGQgbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVseSBvbiB0aGUgdmFsdWUgaW4gbG9jYWxTdG9yYWdlIHRvIGRldGVybWluZSB3aGljaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGBwcm9qZWN0S2V5YCBpcyBjdXJyZW50bHkgdXNlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RLZXlGcm9tVXJsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1Byb2plY3QsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbmRlciB0aGUgbG9hZGluZyBuYXZiYXIgYXMgbG9uZyBhcyBhbGwgdGhlIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXNuJ3QgYmVlbiBsb2FkZWQsIG9yIGlmIHRoZSBwcm9qZWN0IGRvZXMgbm90IGV4aXN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1VzZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0xvY2FsZURhdGEgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1Byb2plY3QgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFsb2NhbGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxMb2FkaW5nTmF2QmFyIC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogZG8gbm90IHBhc3MgdGhlIGBwcm9qZWN0YCBpbnRvIHRoZSBhcHBsaWNhdGlvbiBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcGVybWlzc2lvbnMgZm9yIHRoZSBOYXZiYXIgYXJlIHJlc29sdmVkIHNlcGFyYXRlbHksIHdpdGhpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGRpZmZlcmVudCBSZWFjdCBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TmF2QmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Mb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiByZWY9e25vdGlmaWNhdGlvbnNQYWdlUmVmfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuUEFHRX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlNJREV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgb25seSBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBoYXZlIGFuIGludGVybWVkaWFyeSA8ZGl2PiB3cmFwcGluZyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpZXc+IGNvbXBvbmVudCB0aGF0IGlzIHVzZWQgdG8gd3JhcCBldmVyeSBjb250ZW50LXZpZXcuIFRoaXMgaW50ZXJtZWRpYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+IGlzIHNvbGVseSB1c2VkIGZvciBhZGRpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIGNvbnRlbnQtdmlldy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhpcyBjb3VsZCBiZSBkb25lIGJ5IHBhc3NpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIDxWaWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbGV0IGl0IGRvIHRoZSBsYXlvdXQsIHNvIHdlIGNhbiBhdm9pZCBsYXlpbmcgb3VyIGZyb20gdGhlIG91dHNpZGUgYXMgd2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gKjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQb3J0YWxzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtsYXlvdXRSZWZzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3A9e0RJTUVOU0lPTlMuaGVhZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybCA/IERJTUVOU0lPTlMubmF2TWVudSA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdE9uRXhwYW5kZWRNZW51PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBESU1FTlNJT05TLm5hdk1lbnVFeHBhbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbT1cIi9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bz1cIi9hY2NvdW50L3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9hY2NvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgcmVuZGVyYCBmdW5jdGlvbiwgd2UgYXNzdW1lIGl0J3Mgb25lIG9mIHR3byBjYXNlczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDEuIFRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCB1c2UgYGNoaWxkcmVuYCBhbmQgdGhlcmVmb3JlIGltcGxlbWVudHMgdGhlIHJvdXRlcyBpbmNsdWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSA8Um91dGVDYXRjaEFsbD4gKHRoaXMgaXMgdGhlIFwibGVnYWN5XCIgYmVoYXZpb3IpLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMi4gSXQncyB0aGUgYWNjb3VudCBhcHBsaWNhdGlvbiwgd2hpY2ggYWx3YXlzIHVzZXMgYHJlbmRlcmAgYW5kIHRoZXJlZm9yZSBzaG91bGQgcmVuZGVyIGFzIG5vcm1hbC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgY2hpbGRyZW5gIGZ1bmN0aW9uLCB3ZSBjYW4gYWx3YXlzIGFzc3VtZSB0aGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpdCdzIGEgbm9ybWFsIEN1c3RvbSBBcHBsaWNhdGlvbiBhbmQgdGhhdCBpdCBzaG91bGQgdHJpZ2dlciBhIGZvcmNlIHJlbG9hZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMucmVuZGVyID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Pntwcm9wcy5yZW5kZXIoKX08Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZUNhdGNoQWxsIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogUHJvamVjdCByb3V0ZXMgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9XCIvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUHJvamVjdEtleSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFByZXZpb3VzUHJvamVjdEtleShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPy5kZWZhdWx0UHJvamVjdEtleSA/PyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOT1RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciBoYXMgbm90IGJlZW4gbG9hZGVkIGEgbG9hZGluZyBzcGlubmVyIGlzIHNob3duLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgbm90IHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgbm9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBjcmVhdGUgb25lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBvciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlZGlyZWN0IHRvIHRoYXQgcHJvamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VyKSByZXR1cm4gPEFwcGxpY2F0aW9uTG9hZGVyIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1Byb2plY3RLZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3QgdG89e2AvJHtwcmV2aW91c1Byb2plY3RLZXl9YH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9XCIvOnByb2plY3RLZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KHJvdXRlclByb3BzKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdENvbnRhaW5lcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaD17cm91dGVyUHJvcHMubWF0Y2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uPXtyb3V0ZXJQcm9wcy5sb2NhdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVjaz17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBlZmZlY3RpdmVseSByZW5kZXJzIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGlsZHJlbiwgd2hpY2ggaXMgdGhlIGFwcGxpY2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Td2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgPC9TZXR1cEZsb3BGbGlwUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICA8L0ZldGNoVXNlcj5cbiAgKTtcbn07XG5SZXN0cmljdGVkQXBwbGljYXRpb24uZGlzcGxheU5hbWUgPSAnUmVzdHJpY3RlZEFwcGxpY2F0aW9uJztcblxuY29uc3QgQXBwbGljYXRpb25TaGVsbCA9IDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzIGV4dGVuZHMge30+KFxuICBwcm9wczogUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbikgPT4ge1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHByb3BzLm9uUmVnaXN0ZXJFcnJvckxpc3RlbmVycz8uKHtcbiAgICAgIGRpc3BhdGNoOiBpbnRlcm5hbFJlZHV4U3RvcmUuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7IC8vIDwtLSBydW4gb25seSBvbmNlLCB3aGVuIGNvbXBvbmVudCBtb3VudHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT1cImRlZmF1bHRcIiAvPlxuICAgICAgPEdsb2JhbFN0eWxlcyAvPlxuICAgICAgPEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICBhcG9sbG9DbGllbnQ9e3Byb3BzLmFwb2xsb0NsaWVudH1cbiAgICAgICAgZW52aXJvbm1lbnQ9e3Byb3BzLmVudmlyb25tZW50fVxuICAgICAgICB0cmFja2luZ0V2ZW50TGlzdD17cHJvcHMudHJhY2tpbmdFdmVudExpc3R9XG4gICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICA+XG4gICAgICAgIHsoeyBpc0F1dGhlbnRpY2F0ZWQgfSkgPT4ge1xuICAgICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvbG9nb3V0XCI+XG4gICAgICAgICAgICAgICAgICA8UmVkaXJlY3RUb0xvZ291dCAvPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgPFJlc3RyaWN0ZWRBcHBsaWNhdGlvbjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmVhdHVyZUZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlRmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgIDwvUmVzdHJpY3RlZEFwcGxpY2F0aW9uPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9naW4gLz47XG4gICAgICAgIH19XG4gICAgICA8L0FwcGxpY2F0aW9uU2hlbGxQcm92aWRlcj5cbiAgICA8Lz5cbiAgKTtcbn07XG5BcHBsaWNhdGlvblNoZWxsLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGwnO1xuQXBwbGljYXRpb25TaGVsbC52ZXJzaW9uID0gdmVyc2lvbjtcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbDtcbiJdfQ== */",
|
|
4206
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtSHdDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgVGhlbWVTd2l0Y2hlciBmcm9tICcuLi90aGVtZS1zd2l0Y2hlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgdHlwZW9mIExPR09VVF9SRUFTT05TW2tleW9mIHR5cGVvZiBMT0dPVVRfUkVBU09OU11cbiAgICAgICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLlVOQVVUSE9SSVpFRDtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuREVMRVRFRDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9nb3V0IHJlYXNvbj17bG9nb3V0UmVhc29ufSAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgdGhlIGxvY2FsZSBvZiB0aGUgdXNlciwgd2UgcGljayBpdCBmcm9tIHRoZVxuICAgICAgICAgIC8vIHVzZXIncyBicm93c2VyIHRvIGF0dGVtcHQgdG8gbWF0Y2ggdGhlIGxhbmd1YWdlIGZvciB0aGUgY29ycmVjdCB0cmFuc2xhdGlvbnMuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyPy5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nTG9jYWxlRGF0YSwgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlclxuICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyB0aGUgbGFuZ3VhZ2UgYXMgbG9uZyBhcyB0aGUgbG9jYWxlIGRhdGFcbiAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2FkZWQuXG4gICAgICAgICAgICAgICAgICB7Li4uKGlzTG9hZGluZ0xvY2FsZURhdGEgPyB7fSA6IHsgbG9jYWxlLCBtZXNzYWdlcyB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICBsZENsaWVudFNpZGVJZD17YXBwbGljYXRpb25FbnZpcm9ubWVudC5sZENsaWVudFNpZGVJZH1cbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyID8/IHVuZGVmaW5lZH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtVXNlclRyYWNrZXIgdXNlcj17dXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtQXBwbGljYXRpb25UcmFja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk5hbWU9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnQuYXBwbGljYXRpb25OYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyQnVzaW5lc3NSb2xlPXt1c2VyPy5idXNpbmVzc1JvbGUgPz8gdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byAke0RJTUVOU0lPTlMuaGVhZGVyfSAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5HTE9CQUx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc1Byb2plY3RMb2FkaW5nLCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcm9qZWN0TG9hZGluZyB8fCAhcHJvamVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHVzZWQgb3V0c2lkZSBvZiBhIHByb2plY3QgY29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB3aGVuIHRoZSBwcm9qZWN0IGlzIGV4cGlyZWQgb3Igc3Vwc2VuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkVXNlUHJvamVjdENvbnRleHQgPSAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2plY3Quc3VzcGVuc2lvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LnN1c3BlbnNpb24uaXNBY3RpdmUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5leHBpcnkgJiYgcHJvamVjdC5leHBpcnkuaXNBY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkVXNlUHJvamVjdENvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFF1aWNrQWNjZXNzIC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0RGF0YUxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVzPXtwcm9qZWN0Lmxhbmd1YWdlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBkYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3REYXRhTG9jYWxlPXtkYXRhTG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFF1aWNrQWNjZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUHJvamVjdERhdGFMb2NhbGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdERhdGFMb2NhbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDxOYXZCYXI+IHNob3VsZCBvbmx5IGJlIHJlbmRlcmVkIHdpdGhpbiBhIHByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LCB0aGVyZWZvcmUgd2hlbiB0aGVyZSBpcyBhIGBwcm9qZWN0S2V5YC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBgcHJvamVjdEtleWAgaW4gdGhlIFVSTCAoZS5nLiBgL2FjY291bnRgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVzKSwgd2UgZG9uJ3QgcmVuZGVyIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIGFsc28gXCJjYWNoZVwiIHRoZSBgcHJvamVjdEtleWAgaW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBcInJlLWh5ZHJhdGVcIiB0aGUgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gKGUuZyB3aGVuIHlvdSBnbyB0byBgL2AsIHRoZXJlIHNob3VsZCBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gYC86cHJvamVjdEtleWApLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWx5IG9uIHRoZSB2YWx1ZSBpbiBsb2NhbFN0b3JhZ2UgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYHByb2plY3RLZXlgIGlzIGN1cnJlbnRseSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nUHJvamVjdCwgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBsb2FkaW5nIG5hdmJhciBhcyBsb25nIGFzIGFsbCB0aGUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhc24ndCBiZWVuIGxvYWRlZCwgb3IgaWYgdGhlIHByb2plY3QgZG9lcyBub3QgZXhpc3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXNlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nTG9jYWxlRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nUHJvamVjdCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdOYXZCYXIgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBkbyBub3QgcGFzcyB0aGUgYHByb2plY3RgIGludG8gdGhlIGFwcGxpY2F0aW9uIGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwZXJtaXNzaW9ucyBmb3IgdGhlIE5hdmJhciBhcmUgcmVzb2x2ZWQgc2VwYXJhdGVseSwgd2l0aGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgZGlmZmVyZW50IFJlYWN0IGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e3Byb2plY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZldGNoUHJvamVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hc2lkZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAge2lzTG9hZGluZ1VzZXIgfHwgaXNMb2FkaW5nTG9jYWxlRGF0YSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Mb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17bm90aWZpY2F0aW9uc1BhZ2VSZWZ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e2xheW91dFJlZnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcD17RElNRU5TSU9OUy5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsID8gRElNRU5TSU9OUy5uYXZNZW51IDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0T25FeHBhbmRlZE1lbnU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IERJTUVOU0lPTlMubmF2TWVudUV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvPVwiL2FjY291bnQvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2FjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGByZW5kZXJgIGZ1bmN0aW9uLCB3ZSBhc3N1bWUgaXQncyBvbmUgb2YgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHVzZSBgY2hpbGRyZW5gIGFuZCB0aGVyZWZvcmUgaW1wbGVtZW50cyB0aGUgcm91dGVzIGluY2x1ZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIDxSb3V0ZUNhdGNoQWxsPiAodGhpcyBpcyB0aGUgXCJsZWdhY3lcIiBiZWhhdmlvcikuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAyLiBJdCdzIHRoZSBhY2NvdW50IGFwcGxpY2F0aW9uLCB3aGljaCBhbHdheXMgdXNlcyBgcmVuZGVyYCBhbmQgdGhlcmVmb3JlIHNob3VsZCByZW5kZXIgYXMgbm9ybWFsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGBjaGlsZHJlbmAgZnVuY3Rpb24sIHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0J3MgYSBub3JtYWwgQ3VzdG9tIEFwcGxpY2F0aW9uIGFuZCB0aGF0IGl0IHNob3VsZCB0cmlnZ2VyIGEgZm9yY2UgcmVsb2FkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZW5kZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+e3Byb3BzLnJlbmRlcigpfTwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlQ2F0Y2hBbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQcm9qZWN0IHJvdXRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9qZWN0S2V5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJldmlvdXNQcm9qZWN0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI/LmRlZmF1bHRQcm9qZWN0S2V5ID8/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5PVEU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIGhhcyBub3QgYmVlbiBsb2FkZWQgYSBsb2FkaW5nIHNwaW5uZXIgaXMgc2hvd24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyBub3Qgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBub3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIGNyZWF0ZSBvbmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIGFwcGxpY2F0aW9uIHdpbGwgcmVkaXJlY3QgdG8gdGhhdCBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXIpIHJldHVybiA8QXBwbGljYXRpb25Mb2FkZXIgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUHJvamVjdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz17YC8ke3ByZXZpb3VzUHJvamVjdEtleX1gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi86cHJvamVjdEtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsocm91dGVyUHJvcHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0Q29udGFpbmVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoPXtyb3V0ZXJQcm9wcy5tYXRjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb249e3JvdXRlclByb3BzLmxvY2F0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzPy4oe1xuICAgICAgZGlzcGF0Y2g6IGludGVybmFsUmVkdXhTdG9yZS5kaXNwYXRjaCxcbiAgICB9KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtdKTsgLy8gPC0tIHJ1biBvbmx5IG9uY2UsIHdoZW4gY29tcG9uZW50IG1vdW50c1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxHbG9iYWxTdHlsZXMgLz5cbiAgICAgIDxBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgYXBvbGxvQ2xpZW50PXtwcm9wcy5hcG9sbG9DbGllbnR9XG4gICAgICAgIGVudmlyb25tZW50PXtwcm9wcy5lbnZpcm9ubWVudH1cbiAgICAgICAgdHJhY2tpbmdFdmVudExpc3Q9e3Byb3BzLnRyYWNraW5nRXZlbnRMaXN0fVxuICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgPlxuICAgICAgICB7KHsgaXNBdXRoZW50aWNhdGVkIH0pID0+IHtcbiAgICAgICAgICBpZiAoaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2xvZ291dFwiPlxuICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0VG9Mb2dvdXQgLz5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgIDxSb3V0ZT5cbiAgICAgICAgICAgICAgICAgIDxSZXN0cmljdGVkQXBwbGljYXRpb248QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZlYXR1cmVGbGFncz17cHJvcHMuZGVmYXVsdEZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZUZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4210
4207
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
4211
4208
|
});
|
|
4212
4209
|
|
|
@@ -4216,7 +4213,7 @@ var _ref = process.env.NODE_ENV === "production" ? {
|
|
|
4216
4213
|
} : {
|
|
4217
4214
|
name: "199a1u7-RestrictedApplication",
|
|
4218
4215
|
styles: "flex-grow:1;display:flex;flex-direction:column;position:relative;>*:not(:first-of-type){flex-grow:1;display:flex;flex-direction:column;};label:RestrictedApplication;",
|
|
4219
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvWnNDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgdHlwZW9mIExPR09VVF9SRUFTT05TW2tleW9mIHR5cGVvZiBMT0dPVVRfUkVBU09OU11cbiAgICAgICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLlVOQVVUSE9SSVpFRDtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuREVMRVRFRDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9nb3V0IHJlYXNvbj17bG9nb3V0UmVhc29ufSAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgdGhlIGxvY2FsZSBvZiB0aGUgdXNlciwgd2UgcGljayBpdCBmcm9tIHRoZVxuICAgICAgICAgIC8vIHVzZXIncyBicm93c2VyIHRvIGF0dGVtcHQgdG8gbWF0Y2ggdGhlIGxhbmd1YWdlIGZvciB0aGUgY29ycmVjdCB0cmFuc2xhdGlvbnMuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyPy5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nTG9jYWxlRGF0YSwgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlclxuICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyB0aGUgbGFuZ3VhZ2UgYXMgbG9uZyBhcyB0aGUgbG9jYWxlIGRhdGFcbiAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2FkZWQuXG4gICAgICAgICAgICAgICAgICB7Li4uKGlzTG9hZGluZ0xvY2FsZURhdGEgPyB7fSA6IHsgbG9jYWxlLCBtZXNzYWdlcyB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICBsZENsaWVudFNpZGVJZD17YXBwbGljYXRpb25FbnZpcm9ubWVudC5sZENsaWVudFNpZGVJZH1cbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxWZXJzaW9uVHJhY2tlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIHsvKiBOT1RFOiB0aGUgcmVxdWVzdHMgaW4gZmxpZ2h0IGxvYWRlciB3aWxsIHJlbmRlciBhIGxvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICBzcGlubmVyIGludG8gdGhlIEFwcEJhci4gKi99XG4gICAgICAgICAgICAgICAgICAgICAgPFJlcXVlc3RzSW5GbGlnaHRMb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VudHJ5VXNlclRyYWNrZXIgdXNlcj17dXNlciA/PyB1bmRlZmluZWR9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEd0bVVzZXJUcmFja2VyIHVzZXI9e3VzZXJ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEd0bUFwcGxpY2F0aW9uVHJhY2tlclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25OYW1lPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmFwcGxpY2F0aW9uTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlckJ1c2luZXNzUm9sZT17dXNlcj8uYnVzaW5lc3NSb2xlID8/IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gJHtESU1FTlNJT05TLmhlYWRlcn0gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bm90aWZpY2F0aW9uc0dsb2JhbFJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInJlZ2lvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuR0xPQkFMfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RLZXlGcm9tVXJsKSByZXR1cm4gPFF1aWNrQWNjZXNzIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNQcm9qZWN0TG9hZGluZywgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUHJvamVjdExvYWRpbmcgfHwgIXByb2plY3QpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiB1c2VkIG91dHNpZGUgb2YgYSBwcm9qZWN0IGNvbnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Igd2hlbiB0aGUgcHJvamVjdCBpcyBleHBpcmVkIG9yIHN1cHNlbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZFVzZVByb2plY3RDb250ZXh0ID0gIShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LnN1c3BlbnNpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdC5zdXNwZW5zaW9uLmlzQWN0aXZlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2plY3QuZXhwaXJ5ICYmIHByb2plY3QuZXhwaXJ5LmlzQWN0aXZlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNob3VsZFVzZVByb2plY3RDb250ZXh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlcz17cHJvamVjdC5sYW5ndWFnZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZTogZGF0YUxvY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcm9qZWN0RGF0YUxvY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e3Byb2plY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0RGF0YUxvY2FsZT17ZGF0YUxvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxRdWlja0FjY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVByb2plY3REYXRhTG9jYWxlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcm9qZWN0RGF0YUxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3REYXRhTG9jYWxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZldGNoUHJvamVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwQmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybD17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGFzaWRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSA8TmF2QmFyPiBzaG91bGQgb25seSBiZSByZW5kZXJlZCB3aXRoaW4gYSBwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGV4dCwgdGhlcmVmb3JlIHdoZW4gdGhlcmUgaXMgYSBgcHJvamVjdEtleWAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gYHByb2plY3RLZXlgIGluIHRoZSBVUkwgKGUuZy4gYC9hY2NvdW50YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJvdXRlcyksIHdlIGRvbid0IHJlbmRlciBpdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiB3ZSBhbHNvIFwiY2FjaGVcIiB0aGUgYHByb2plY3RLZXlgIGluIGxvY2FsU3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gXCJyZS1oeWRyYXRlXCIgdGhlIFVSTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2F0aW9uIChlLmcgd2hlbiB5b3UgZ28gdG8gYC9gLCB0aGVyZSBzaG91bGQgYmUgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZGlyZWN0IHRvIGAvOnByb2plY3RLZXlgKS4gVGhlcmVmb3JlLCB3ZSBzaG91bGQgbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVseSBvbiB0aGUgdmFsdWUgaW4gbG9jYWxTdG9yYWdlIHRvIGRldGVybWluZSB3aGljaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGBwcm9qZWN0S2V5YCBpcyBjdXJyZW50bHkgdXNlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RLZXlGcm9tVXJsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1Byb2plY3QsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbmRlciB0aGUgbG9hZGluZyBuYXZiYXIgYXMgbG9uZyBhcyBhbGwgdGhlIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXNuJ3QgYmVlbiBsb2FkZWQsIG9yIGlmIHRoZSBwcm9qZWN0IGRvZXMgbm90IGV4aXN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1VzZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0xvY2FsZURhdGEgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1Byb2plY3QgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFsb2NhbGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxMb2FkaW5nTmF2QmFyIC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogZG8gbm90IHBhc3MgdGhlIGBwcm9qZWN0YCBpbnRvIHRoZSBhcHBsaWNhdGlvbiBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcGVybWlzc2lvbnMgZm9yIHRoZSBOYXZiYXIgYXJlIHJlc29sdmVkIHNlcGFyYXRlbHksIHdpdGhpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGRpZmZlcmVudCBSZWFjdCBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TmF2QmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Mb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiByZWY9e25vdGlmaWNhdGlvbnNQYWdlUmVmfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuUEFHRX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlNJREV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgb25seSBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBoYXZlIGFuIGludGVybWVkaWFyeSA8ZGl2PiB3cmFwcGluZyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpZXc+IGNvbXBvbmVudCB0aGF0IGlzIHVzZWQgdG8gd3JhcCBldmVyeSBjb250ZW50LXZpZXcuIFRoaXMgaW50ZXJtZWRpYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+IGlzIHNvbGVseSB1c2VkIGZvciBhZGRpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIGNvbnRlbnQtdmlldy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhpcyBjb3VsZCBiZSBkb25lIGJ5IHBhc3NpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIDxWaWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbGV0IGl0IGRvIHRoZSBsYXlvdXQsIHNvIHdlIGNhbiBhdm9pZCBsYXlpbmcgb3VyIGZyb20gdGhlIG91dHNpZGUgYXMgd2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gKjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQb3J0YWxzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtsYXlvdXRSZWZzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3A9e0RJTUVOU0lPTlMuaGVhZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybCA/IERJTUVOU0lPTlMubmF2TWVudSA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdE9uRXhwYW5kZWRNZW51PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBESU1FTlNJT05TLm5hdk1lbnVFeHBhbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbT1cIi9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bz1cIi9hY2NvdW50L3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9hY2NvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgcmVuZGVyYCBmdW5jdGlvbiwgd2UgYXNzdW1lIGl0J3Mgb25lIG9mIHR3byBjYXNlczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDEuIFRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCB1c2UgYGNoaWxkcmVuYCBhbmQgdGhlcmVmb3JlIGltcGxlbWVudHMgdGhlIHJvdXRlcyBpbmNsdWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSA8Um91dGVDYXRjaEFsbD4gKHRoaXMgaXMgdGhlIFwibGVnYWN5XCIgYmVoYXZpb3IpLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMi4gSXQncyB0aGUgYWNjb3VudCBhcHBsaWNhdGlvbiwgd2hpY2ggYWx3YXlzIHVzZXMgYHJlbmRlcmAgYW5kIHRoZXJlZm9yZSBzaG91bGQgcmVuZGVyIGFzIG5vcm1hbC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgY2hpbGRyZW5gIGZ1bmN0aW9uLCB3ZSBjYW4gYWx3YXlzIGFzc3VtZSB0aGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpdCdzIGEgbm9ybWFsIEN1c3RvbSBBcHBsaWNhdGlvbiBhbmQgdGhhdCBpdCBzaG91bGQgdHJpZ2dlciBhIGZvcmNlIHJlbG9hZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMucmVuZGVyID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Pntwcm9wcy5yZW5kZXIoKX08Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZUNhdGNoQWxsIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogUHJvamVjdCByb3V0ZXMgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9XCIvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUHJvamVjdEtleSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFByZXZpb3VzUHJvamVjdEtleShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPy5kZWZhdWx0UHJvamVjdEtleSA/PyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOT1RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciBoYXMgbm90IGJlZW4gbG9hZGVkIGEgbG9hZGluZyBzcGlubmVyIGlzIHNob3duLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgbm90IHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgbm9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBjcmVhdGUgb25lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBvciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlZGlyZWN0IHRvIHRoYXQgcHJvamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VyKSByZXR1cm4gPEFwcGxpY2F0aW9uTG9hZGVyIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1Byb2plY3RLZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3QgdG89e2AvJHtwcmV2aW91c1Byb2plY3RLZXl9YH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9XCIvOnByb2plY3RLZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KHJvdXRlclByb3BzKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdENvbnRhaW5lcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaD17cm91dGVyUHJvcHMubWF0Y2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uPXtyb3V0ZXJQcm9wcy5sb2NhdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVjaz17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBlZmZlY3RpdmVseSByZW5kZXJzIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGlsZHJlbiwgd2hpY2ggaXMgdGhlIGFwcGxpY2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Td2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgPC9TZXR1cEZsb3BGbGlwUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICA8L0ZldGNoVXNlcj5cbiAgKTtcbn07XG5SZXN0cmljdGVkQXBwbGljYXRpb24uZGlzcGxheU5hbWUgPSAnUmVzdHJpY3RlZEFwcGxpY2F0aW9uJztcblxuY29uc3QgQXBwbGljYXRpb25TaGVsbCA9IDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzIGV4dGVuZHMge30+KFxuICBwcm9wczogUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbikgPT4ge1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHByb3BzLm9uUmVnaXN0ZXJFcnJvckxpc3RlbmVycz8uKHtcbiAgICAgIGRpc3BhdGNoOiBpbnRlcm5hbFJlZHV4U3RvcmUuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7IC8vIDwtLSBydW4gb25seSBvbmNlLCB3aGVuIGNvbXBvbmVudCBtb3VudHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT1cImRlZmF1bHRcIiAvPlxuICAgICAgPEdsb2JhbFN0eWxlcyAvPlxuICAgICAgPEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICBhcG9sbG9DbGllbnQ9e3Byb3BzLmFwb2xsb0NsaWVudH1cbiAgICAgICAgZW52aXJvbm1lbnQ9e3Byb3BzLmVudmlyb25tZW50fVxuICAgICAgICB0cmFja2luZ0V2ZW50TGlzdD17cHJvcHMudHJhY2tpbmdFdmVudExpc3R9XG4gICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICA+XG4gICAgICAgIHsoeyBpc0F1dGhlbnRpY2F0ZWQgfSkgPT4ge1xuICAgICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvbG9nb3V0XCI+XG4gICAgICAgICAgICAgICAgICA8UmVkaXJlY3RUb0xvZ291dCAvPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgPFJlc3RyaWN0ZWRBcHBsaWNhdGlvbjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmVhdHVyZUZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlRmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgIDwvUmVzdHJpY3RlZEFwcGxpY2F0aW9uPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9naW4gLz47XG4gICAgICAgIH19XG4gICAgICA8L0FwcGxpY2F0aW9uU2hlbGxQcm92aWRlcj5cbiAgICA8Lz5cbiAgKTtcbn07XG5BcHBsaWNhdGlvblNoZWxsLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGwnO1xuQXBwbGljYXRpb25TaGVsbC52ZXJzaW9uID0gdmVyc2lvbjtcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbDtcbiJdfQ== */",
|
|
4216
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxWnNDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgVGhlbWVTd2l0Y2hlciBmcm9tICcuLi90aGVtZS1zd2l0Y2hlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgdHlwZW9mIExPR09VVF9SRUFTT05TW2tleW9mIHR5cGVvZiBMT0dPVVRfUkVBU09OU11cbiAgICAgICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLlVOQVVUSE9SSVpFRDtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuREVMRVRFRDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9nb3V0IHJlYXNvbj17bG9nb3V0UmVhc29ufSAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgdGhlIGxvY2FsZSBvZiB0aGUgdXNlciwgd2UgcGljayBpdCBmcm9tIHRoZVxuICAgICAgICAgIC8vIHVzZXIncyBicm93c2VyIHRvIGF0dGVtcHQgdG8gbWF0Y2ggdGhlIGxhbmd1YWdlIGZvciB0aGUgY29ycmVjdCB0cmFuc2xhdGlvbnMuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyPy5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nTG9jYWxlRGF0YSwgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlclxuICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyB0aGUgbGFuZ3VhZ2UgYXMgbG9uZyBhcyB0aGUgbG9jYWxlIGRhdGFcbiAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2FkZWQuXG4gICAgICAgICAgICAgICAgICB7Li4uKGlzTG9hZGluZ0xvY2FsZURhdGEgPyB7fSA6IHsgbG9jYWxlLCBtZXNzYWdlcyB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICBsZENsaWVudFNpZGVJZD17YXBwbGljYXRpb25FbnZpcm9ubWVudC5sZENsaWVudFNpZGVJZH1cbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyID8/IHVuZGVmaW5lZH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtVXNlclRyYWNrZXIgdXNlcj17dXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtQXBwbGljYXRpb25UcmFja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk5hbWU9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnQuYXBwbGljYXRpb25OYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyQnVzaW5lc3NSb2xlPXt1c2VyPy5idXNpbmVzc1JvbGUgPz8gdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byAke0RJTUVOU0lPTlMuaGVhZGVyfSAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5HTE9CQUx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc1Byb2plY3RMb2FkaW5nLCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcm9qZWN0TG9hZGluZyB8fCAhcHJvamVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHVzZWQgb3V0c2lkZSBvZiBhIHByb2plY3QgY29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB3aGVuIHRoZSBwcm9qZWN0IGlzIGV4cGlyZWQgb3Igc3Vwc2VuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkVXNlUHJvamVjdENvbnRleHQgPSAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2plY3Quc3VzcGVuc2lvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LnN1c3BlbnNpb24uaXNBY3RpdmUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5leHBpcnkgJiYgcHJvamVjdC5leHBpcnkuaXNBY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkVXNlUHJvamVjdENvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFF1aWNrQWNjZXNzIC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0RGF0YUxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVzPXtwcm9qZWN0Lmxhbmd1YWdlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBkYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3REYXRhTG9jYWxlPXtkYXRhTG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFF1aWNrQWNjZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUHJvamVjdERhdGFMb2NhbGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdERhdGFMb2NhbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDxOYXZCYXI+IHNob3VsZCBvbmx5IGJlIHJlbmRlcmVkIHdpdGhpbiBhIHByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LCB0aGVyZWZvcmUgd2hlbiB0aGVyZSBpcyBhIGBwcm9qZWN0S2V5YC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBgcHJvamVjdEtleWAgaW4gdGhlIFVSTCAoZS5nLiBgL2FjY291bnRgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVzKSwgd2UgZG9uJ3QgcmVuZGVyIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIGFsc28gXCJjYWNoZVwiIHRoZSBgcHJvamVjdEtleWAgaW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBcInJlLWh5ZHJhdGVcIiB0aGUgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gKGUuZyB3aGVuIHlvdSBnbyB0byBgL2AsIHRoZXJlIHNob3VsZCBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gYC86cHJvamVjdEtleWApLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWx5IG9uIHRoZSB2YWx1ZSBpbiBsb2NhbFN0b3JhZ2UgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYHByb2plY3RLZXlgIGlzIGN1cnJlbnRseSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nUHJvamVjdCwgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBsb2FkaW5nIG5hdmJhciBhcyBsb25nIGFzIGFsbCB0aGUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhc24ndCBiZWVuIGxvYWRlZCwgb3IgaWYgdGhlIHByb2plY3QgZG9lcyBub3QgZXhpc3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXNlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nTG9jYWxlRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nUHJvamVjdCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdOYXZCYXIgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBkbyBub3QgcGFzcyB0aGUgYHByb2plY3RgIGludG8gdGhlIGFwcGxpY2F0aW9uIGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwZXJtaXNzaW9ucyBmb3IgdGhlIE5hdmJhciBhcmUgcmVzb2x2ZWQgc2VwYXJhdGVseSwgd2l0aGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgZGlmZmVyZW50IFJlYWN0IGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e3Byb2plY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZldGNoUHJvamVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hc2lkZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAge2lzTG9hZGluZ1VzZXIgfHwgaXNMb2FkaW5nTG9jYWxlRGF0YSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Mb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17bm90aWZpY2F0aW9uc1BhZ2VSZWZ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e2xheW91dFJlZnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcD17RElNRU5TSU9OUy5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsID8gRElNRU5TSU9OUy5uYXZNZW51IDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0T25FeHBhbmRlZE1lbnU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IERJTUVOU0lPTlMubmF2TWVudUV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvPVwiL2FjY291bnQvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2FjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGByZW5kZXJgIGZ1bmN0aW9uLCB3ZSBhc3N1bWUgaXQncyBvbmUgb2YgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHVzZSBgY2hpbGRyZW5gIGFuZCB0aGVyZWZvcmUgaW1wbGVtZW50cyB0aGUgcm91dGVzIGluY2x1ZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIDxSb3V0ZUNhdGNoQWxsPiAodGhpcyBpcyB0aGUgXCJsZWdhY3lcIiBiZWhhdmlvcikuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAyLiBJdCdzIHRoZSBhY2NvdW50IGFwcGxpY2F0aW9uLCB3aGljaCBhbHdheXMgdXNlcyBgcmVuZGVyYCBhbmQgdGhlcmVmb3JlIHNob3VsZCByZW5kZXIgYXMgbm9ybWFsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGBjaGlsZHJlbmAgZnVuY3Rpb24sIHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0J3MgYSBub3JtYWwgQ3VzdG9tIEFwcGxpY2F0aW9uIGFuZCB0aGF0IGl0IHNob3VsZCB0cmlnZ2VyIGEgZm9yY2UgcmVsb2FkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZW5kZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+e3Byb3BzLnJlbmRlcigpfTwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlQ2F0Y2hBbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQcm9qZWN0IHJvdXRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9qZWN0S2V5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJldmlvdXNQcm9qZWN0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI/LmRlZmF1bHRQcm9qZWN0S2V5ID8/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5PVEU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIGhhcyBub3QgYmVlbiBsb2FkZWQgYSBsb2FkaW5nIHNwaW5uZXIgaXMgc2hvd24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyBub3Qgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBub3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIGNyZWF0ZSBvbmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIGFwcGxpY2F0aW9uIHdpbGwgcmVkaXJlY3QgdG8gdGhhdCBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXIpIHJldHVybiA8QXBwbGljYXRpb25Mb2FkZXIgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUHJvamVjdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz17YC8ke3ByZXZpb3VzUHJvamVjdEtleX1gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi86cHJvamVjdEtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsocm91dGVyUHJvcHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0Q29udGFpbmVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoPXtyb3V0ZXJQcm9wcy5tYXRjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb249e3JvdXRlclByb3BzLmxvY2F0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzPy4oe1xuICAgICAgZGlzcGF0Y2g6IGludGVybmFsUmVkdXhTdG9yZS5kaXNwYXRjaCxcbiAgICB9KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtdKTsgLy8gPC0tIHJ1biBvbmx5IG9uY2UsIHdoZW4gY29tcG9uZW50IG1vdW50c1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxHbG9iYWxTdHlsZXMgLz5cbiAgICAgIDxBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgYXBvbGxvQ2xpZW50PXtwcm9wcy5hcG9sbG9DbGllbnR9XG4gICAgICAgIGVudmlyb25tZW50PXtwcm9wcy5lbnZpcm9ubWVudH1cbiAgICAgICAgdHJhY2tpbmdFdmVudExpc3Q9e3Byb3BzLnRyYWNraW5nRXZlbnRMaXN0fVxuICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgPlxuICAgICAgICB7KHsgaXNBdXRoZW50aWNhdGVkIH0pID0+IHtcbiAgICAgICAgICBpZiAoaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2xvZ291dFwiPlxuICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0VG9Mb2dvdXQgLz5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgIDxSb3V0ZT5cbiAgICAgICAgICAgICAgICAgIDxSZXN0cmljdGVkQXBwbGljYXRpb248QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZlYXR1cmVGbGFncz17cHJvcHMuZGVmYXVsdEZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZUZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4220
4217
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
4221
4218
|
};
|
|
4222
4219
|
|
|
@@ -4226,7 +4223,7 @@ var _ref2 = process.env.NODE_ENV === "production" ? {
|
|
|
4226
4223
|
} : {
|
|
4227
4224
|
name: "lzvzwe-RestrictedApplication",
|
|
4228
4225
|
styles: "position:relative;grid-row:3;display:flex;flex-direction:column;label:RestrictedApplication;",
|
|
4229
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpVmtDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgdHlwZW9mIExPR09VVF9SRUFTT05TW2tleW9mIHR5cGVvZiBMT0dPVVRfUkVBU09OU11cbiAgICAgICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLlVOQVVUSE9SSVpFRDtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuREVMRVRFRDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9nb3V0IHJlYXNvbj17bG9nb3V0UmVhc29ufSAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgdGhlIGxvY2FsZSBvZiB0aGUgdXNlciwgd2UgcGljayBpdCBmcm9tIHRoZVxuICAgICAgICAgIC8vIHVzZXIncyBicm93c2VyIHRvIGF0dGVtcHQgdG8gbWF0Y2ggdGhlIGxhbmd1YWdlIGZvciB0aGUgY29ycmVjdCB0cmFuc2xhdGlvbnMuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyPy5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nTG9jYWxlRGF0YSwgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlclxuICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyB0aGUgbGFuZ3VhZ2UgYXMgbG9uZyBhcyB0aGUgbG9jYWxlIGRhdGFcbiAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2FkZWQuXG4gICAgICAgICAgICAgICAgICB7Li4uKGlzTG9hZGluZ0xvY2FsZURhdGEgPyB7fSA6IHsgbG9jYWxlLCBtZXNzYWdlcyB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICBsZENsaWVudFNpZGVJZD17YXBwbGljYXRpb25FbnZpcm9ubWVudC5sZENsaWVudFNpZGVJZH1cbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxWZXJzaW9uVHJhY2tlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIHsvKiBOT1RFOiB0aGUgcmVxdWVzdHMgaW4gZmxpZ2h0IGxvYWRlciB3aWxsIHJlbmRlciBhIGxvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICBzcGlubmVyIGludG8gdGhlIEFwcEJhci4gKi99XG4gICAgICAgICAgICAgICAgICAgICAgPFJlcXVlc3RzSW5GbGlnaHRMb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VudHJ5VXNlclRyYWNrZXIgdXNlcj17dXNlciA/PyB1bmRlZmluZWR9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEd0bVVzZXJUcmFja2VyIHVzZXI9e3VzZXJ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEd0bUFwcGxpY2F0aW9uVHJhY2tlclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25OYW1lPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmFwcGxpY2F0aW9uTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlckJ1c2luZXNzUm9sZT17dXNlcj8uYnVzaW5lc3NSb2xlID8/IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gJHtESU1FTlNJT05TLmhlYWRlcn0gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bm90aWZpY2F0aW9uc0dsb2JhbFJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInJlZ2lvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuR0xPQkFMfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RLZXlGcm9tVXJsKSByZXR1cm4gPFF1aWNrQWNjZXNzIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNQcm9qZWN0TG9hZGluZywgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUHJvamVjdExvYWRpbmcgfHwgIXByb2plY3QpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiB1c2VkIG91dHNpZGUgb2YgYSBwcm9qZWN0IGNvbnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Igd2hlbiB0aGUgcHJvamVjdCBpcyBleHBpcmVkIG9yIHN1cHNlbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZFVzZVByb2plY3RDb250ZXh0ID0gIShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LnN1c3BlbnNpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdC5zdXNwZW5zaW9uLmlzQWN0aXZlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2plY3QuZXhwaXJ5ICYmIHByb2plY3QuZXhwaXJ5LmlzQWN0aXZlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNob3VsZFVzZVByb2plY3RDb250ZXh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlcz17cHJvamVjdC5sYW5ndWFnZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZTogZGF0YUxvY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcm9qZWN0RGF0YUxvY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e3Byb2plY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0RGF0YUxvY2FsZT17ZGF0YUxvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxRdWlja0FjY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVByb2plY3REYXRhTG9jYWxlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcm9qZWN0RGF0YUxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3REYXRhTG9jYWxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZldGNoUHJvamVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwQmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybD17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGFzaWRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSA8TmF2QmFyPiBzaG91bGQgb25seSBiZSByZW5kZXJlZCB3aXRoaW4gYSBwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGV4dCwgdGhlcmVmb3JlIHdoZW4gdGhlcmUgaXMgYSBgcHJvamVjdEtleWAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gYHByb2plY3RLZXlgIGluIHRoZSBVUkwgKGUuZy4gYC9hY2NvdW50YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJvdXRlcyksIHdlIGRvbid0IHJlbmRlciBpdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiB3ZSBhbHNvIFwiY2FjaGVcIiB0aGUgYHByb2plY3RLZXlgIGluIGxvY2FsU3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gXCJyZS1oeWRyYXRlXCIgdGhlIFVSTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2F0aW9uIChlLmcgd2hlbiB5b3UgZ28gdG8gYC9gLCB0aGVyZSBzaG91bGQgYmUgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZGlyZWN0IHRvIGAvOnByb2plY3RLZXlgKS4gVGhlcmVmb3JlLCB3ZSBzaG91bGQgbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVseSBvbiB0aGUgdmFsdWUgaW4gbG9jYWxTdG9yYWdlIHRvIGRldGVybWluZSB3aGljaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGBwcm9qZWN0S2V5YCBpcyBjdXJyZW50bHkgdXNlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RLZXlGcm9tVXJsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1Byb2plY3QsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbmRlciB0aGUgbG9hZGluZyBuYXZiYXIgYXMgbG9uZyBhcyBhbGwgdGhlIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXNuJ3QgYmVlbiBsb2FkZWQsIG9yIGlmIHRoZSBwcm9qZWN0IGRvZXMgbm90IGV4aXN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1VzZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0xvY2FsZURhdGEgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1Byb2plY3QgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFsb2NhbGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxMb2FkaW5nTmF2QmFyIC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogZG8gbm90IHBhc3MgdGhlIGBwcm9qZWN0YCBpbnRvIHRoZSBhcHBsaWNhdGlvbiBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcGVybWlzc2lvbnMgZm9yIHRoZSBOYXZiYXIgYXJlIHJlc29sdmVkIHNlcGFyYXRlbHksIHdpdGhpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGRpZmZlcmVudCBSZWFjdCBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TmF2QmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Mb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiByZWY9e25vdGlmaWNhdGlvbnNQYWdlUmVmfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuUEFHRX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlNJREV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgb25seSBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBoYXZlIGFuIGludGVybWVkaWFyeSA8ZGl2PiB3cmFwcGluZyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpZXc+IGNvbXBvbmVudCB0aGF0IGlzIHVzZWQgdG8gd3JhcCBldmVyeSBjb250ZW50LXZpZXcuIFRoaXMgaW50ZXJtZWRpYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+IGlzIHNvbGVseSB1c2VkIGZvciBhZGRpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIGNvbnRlbnQtdmlldy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhpcyBjb3VsZCBiZSBkb25lIGJ5IHBhc3NpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIDxWaWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbGV0IGl0IGRvIHRoZSBsYXlvdXQsIHNvIHdlIGNhbiBhdm9pZCBsYXlpbmcgb3VyIGZyb20gdGhlIG91dHNpZGUgYXMgd2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gKjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQb3J0YWxzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtsYXlvdXRSZWZzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3A9e0RJTUVOU0lPTlMuaGVhZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybCA/IERJTUVOU0lPTlMubmF2TWVudSA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdE9uRXhwYW5kZWRNZW51PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBESU1FTlNJT05TLm5hdk1lbnVFeHBhbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbT1cIi9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bz1cIi9hY2NvdW50L3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9hY2NvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgcmVuZGVyYCBmdW5jdGlvbiwgd2UgYXNzdW1lIGl0J3Mgb25lIG9mIHR3byBjYXNlczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDEuIFRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCB1c2UgYGNoaWxkcmVuYCBhbmQgdGhlcmVmb3JlIGltcGxlbWVudHMgdGhlIHJvdXRlcyBpbmNsdWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSA8Um91dGVDYXRjaEFsbD4gKHRoaXMgaXMgdGhlIFwibGVnYWN5XCIgYmVoYXZpb3IpLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMi4gSXQncyB0aGUgYWNjb3VudCBhcHBsaWNhdGlvbiwgd2hpY2ggYWx3YXlzIHVzZXMgYHJlbmRlcmAgYW5kIHRoZXJlZm9yZSBzaG91bGQgcmVuZGVyIGFzIG5vcm1hbC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgY2hpbGRyZW5gIGZ1bmN0aW9uLCB3ZSBjYW4gYWx3YXlzIGFzc3VtZSB0aGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpdCdzIGEgbm9ybWFsIEN1c3RvbSBBcHBsaWNhdGlvbiBhbmQgdGhhdCBpdCBzaG91bGQgdHJpZ2dlciBhIGZvcmNlIHJlbG9hZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMucmVuZGVyID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Pntwcm9wcy5yZW5kZXIoKX08Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZUNhdGNoQWxsIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogUHJvamVjdCByb3V0ZXMgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9XCIvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUHJvamVjdEtleSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFByZXZpb3VzUHJvamVjdEtleShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPy5kZWZhdWx0UHJvamVjdEtleSA/PyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOT1RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciBoYXMgbm90IGJlZW4gbG9hZGVkIGEgbG9hZGluZyBzcGlubmVyIGlzIHNob3duLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgbm90IHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgbm9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBjcmVhdGUgb25lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBvciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlZGlyZWN0IHRvIHRoYXQgcHJvamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VyKSByZXR1cm4gPEFwcGxpY2F0aW9uTG9hZGVyIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1Byb2plY3RLZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3QgdG89e2AvJHtwcmV2aW91c1Byb2plY3RLZXl9YH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9XCIvOnByb2plY3RLZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KHJvdXRlclByb3BzKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdENvbnRhaW5lcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaD17cm91dGVyUHJvcHMubWF0Y2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uPXtyb3V0ZXJQcm9wcy5sb2NhdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVjaz17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBlZmZlY3RpdmVseSByZW5kZXJzIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGlsZHJlbiwgd2hpY2ggaXMgdGhlIGFwcGxpY2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Td2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgPC9TZXR1cEZsb3BGbGlwUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICA8L0ZldGNoVXNlcj5cbiAgKTtcbn07XG5SZXN0cmljdGVkQXBwbGljYXRpb24uZGlzcGxheU5hbWUgPSAnUmVzdHJpY3RlZEFwcGxpY2F0aW9uJztcblxuY29uc3QgQXBwbGljYXRpb25TaGVsbCA9IDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzIGV4dGVuZHMge30+KFxuICBwcm9wczogUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbikgPT4ge1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHByb3BzLm9uUmVnaXN0ZXJFcnJvckxpc3RlbmVycz8uKHtcbiAgICAgIGRpc3BhdGNoOiBpbnRlcm5hbFJlZHV4U3RvcmUuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7IC8vIDwtLSBydW4gb25seSBvbmNlLCB3aGVuIGNvbXBvbmVudCBtb3VudHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT1cImRlZmF1bHRcIiAvPlxuICAgICAgPEdsb2JhbFN0eWxlcyAvPlxuICAgICAgPEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICBhcG9sbG9DbGllbnQ9e3Byb3BzLmFwb2xsb0NsaWVudH1cbiAgICAgICAgZW52aXJvbm1lbnQ9e3Byb3BzLmVudmlyb25tZW50fVxuICAgICAgICB0cmFja2luZ0V2ZW50TGlzdD17cHJvcHMudHJhY2tpbmdFdmVudExpc3R9XG4gICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICA+XG4gICAgICAgIHsoeyBpc0F1dGhlbnRpY2F0ZWQgfSkgPT4ge1xuICAgICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvbG9nb3V0XCI+XG4gICAgICAgICAgICAgICAgICA8UmVkaXJlY3RUb0xvZ291dCAvPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgPFJlc3RyaWN0ZWRBcHBsaWNhdGlvbjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmVhdHVyZUZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlRmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgIDwvUmVzdHJpY3RlZEFwcGxpY2F0aW9uPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9naW4gLz47XG4gICAgICAgIH19XG4gICAgICA8L0FwcGxpY2F0aW9uU2hlbGxQcm92aWRlcj5cbiAgICA8Lz5cbiAgKTtcbn07XG5BcHBsaWNhdGlvblNoZWxsLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGwnO1xuQXBwbGljYXRpb25TaGVsbC52ZXJzaW9uID0gdmVyc2lvbjtcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbDtcbiJdfQ== */",
|
|
4226
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrVmtDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgVGhlbWVTd2l0Y2hlciBmcm9tICcuLi90aGVtZS1zd2l0Y2hlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgdHlwZW9mIExPR09VVF9SRUFTT05TW2tleW9mIHR5cGVvZiBMT0dPVVRfUkVBU09OU11cbiAgICAgICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLlVOQVVUSE9SSVpFRDtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuREVMRVRFRDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9nb3V0IHJlYXNvbj17bG9nb3V0UmVhc29ufSAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgdGhlIGxvY2FsZSBvZiB0aGUgdXNlciwgd2UgcGljayBpdCBmcm9tIHRoZVxuICAgICAgICAgIC8vIHVzZXIncyBicm93c2VyIHRvIGF0dGVtcHQgdG8gbWF0Y2ggdGhlIGxhbmd1YWdlIGZvciB0aGUgY29ycmVjdCB0cmFuc2xhdGlvbnMuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyPy5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nTG9jYWxlRGF0YSwgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlclxuICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyB0aGUgbGFuZ3VhZ2UgYXMgbG9uZyBhcyB0aGUgbG9jYWxlIGRhdGFcbiAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2FkZWQuXG4gICAgICAgICAgICAgICAgICB7Li4uKGlzTG9hZGluZ0xvY2FsZURhdGEgPyB7fSA6IHsgbG9jYWxlLCBtZXNzYWdlcyB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICBsZENsaWVudFNpZGVJZD17YXBwbGljYXRpb25FbnZpcm9ubWVudC5sZENsaWVudFNpZGVJZH1cbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyID8/IHVuZGVmaW5lZH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtVXNlclRyYWNrZXIgdXNlcj17dXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtQXBwbGljYXRpb25UcmFja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk5hbWU9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnQuYXBwbGljYXRpb25OYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyQnVzaW5lc3NSb2xlPXt1c2VyPy5idXNpbmVzc1JvbGUgPz8gdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byAke0RJTUVOU0lPTlMuaGVhZGVyfSAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5HTE9CQUx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc1Byb2plY3RMb2FkaW5nLCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcm9qZWN0TG9hZGluZyB8fCAhcHJvamVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHVzZWQgb3V0c2lkZSBvZiBhIHByb2plY3QgY29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB3aGVuIHRoZSBwcm9qZWN0IGlzIGV4cGlyZWQgb3Igc3Vwc2VuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkVXNlUHJvamVjdENvbnRleHQgPSAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2plY3Quc3VzcGVuc2lvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LnN1c3BlbnNpb24uaXNBY3RpdmUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5leHBpcnkgJiYgcHJvamVjdC5leHBpcnkuaXNBY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkVXNlUHJvamVjdENvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFF1aWNrQWNjZXNzIC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0RGF0YUxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVzPXtwcm9qZWN0Lmxhbmd1YWdlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBkYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3REYXRhTG9jYWxlPXtkYXRhTG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFF1aWNrQWNjZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUHJvamVjdERhdGFMb2NhbGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdERhdGFMb2NhbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDxOYXZCYXI+IHNob3VsZCBvbmx5IGJlIHJlbmRlcmVkIHdpdGhpbiBhIHByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LCB0aGVyZWZvcmUgd2hlbiB0aGVyZSBpcyBhIGBwcm9qZWN0S2V5YC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBgcHJvamVjdEtleWAgaW4gdGhlIFVSTCAoZS5nLiBgL2FjY291bnRgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVzKSwgd2UgZG9uJ3QgcmVuZGVyIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIGFsc28gXCJjYWNoZVwiIHRoZSBgcHJvamVjdEtleWAgaW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBcInJlLWh5ZHJhdGVcIiB0aGUgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gKGUuZyB3aGVuIHlvdSBnbyB0byBgL2AsIHRoZXJlIHNob3VsZCBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gYC86cHJvamVjdEtleWApLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWx5IG9uIHRoZSB2YWx1ZSBpbiBsb2NhbFN0b3JhZ2UgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYHByb2plY3RLZXlgIGlzIGN1cnJlbnRseSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nUHJvamVjdCwgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBsb2FkaW5nIG5hdmJhciBhcyBsb25nIGFzIGFsbCB0aGUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhc24ndCBiZWVuIGxvYWRlZCwgb3IgaWYgdGhlIHByb2plY3QgZG9lcyBub3QgZXhpc3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXNlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nTG9jYWxlRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nUHJvamVjdCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdOYXZCYXIgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBkbyBub3QgcGFzcyB0aGUgYHByb2plY3RgIGludG8gdGhlIGFwcGxpY2F0aW9uIGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwZXJtaXNzaW9ucyBmb3IgdGhlIE5hdmJhciBhcmUgcmVzb2x2ZWQgc2VwYXJhdGVseSwgd2l0aGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgZGlmZmVyZW50IFJlYWN0IGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e3Byb2plY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZldGNoUHJvamVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hc2lkZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAge2lzTG9hZGluZ1VzZXIgfHwgaXNMb2FkaW5nTG9jYWxlRGF0YSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Mb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17bm90aWZpY2F0aW9uc1BhZ2VSZWZ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e2xheW91dFJlZnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcD17RElNRU5TSU9OUy5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsID8gRElNRU5TSU9OUy5uYXZNZW51IDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0T25FeHBhbmRlZE1lbnU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IERJTUVOU0lPTlMubmF2TWVudUV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvPVwiL2FjY291bnQvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2FjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGByZW5kZXJgIGZ1bmN0aW9uLCB3ZSBhc3N1bWUgaXQncyBvbmUgb2YgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHVzZSBgY2hpbGRyZW5gIGFuZCB0aGVyZWZvcmUgaW1wbGVtZW50cyB0aGUgcm91dGVzIGluY2x1ZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIDxSb3V0ZUNhdGNoQWxsPiAodGhpcyBpcyB0aGUgXCJsZWdhY3lcIiBiZWhhdmlvcikuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAyLiBJdCdzIHRoZSBhY2NvdW50IGFwcGxpY2F0aW9uLCB3aGljaCBhbHdheXMgdXNlcyBgcmVuZGVyYCBhbmQgdGhlcmVmb3JlIHNob3VsZCByZW5kZXIgYXMgbm9ybWFsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGBjaGlsZHJlbmAgZnVuY3Rpb24sIHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0J3MgYSBub3JtYWwgQ3VzdG9tIEFwcGxpY2F0aW9uIGFuZCB0aGF0IGl0IHNob3VsZCB0cmlnZ2VyIGEgZm9yY2UgcmVsb2FkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZW5kZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+e3Byb3BzLnJlbmRlcigpfTwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlQ2F0Y2hBbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQcm9qZWN0IHJvdXRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9qZWN0S2V5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJldmlvdXNQcm9qZWN0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI/LmRlZmF1bHRQcm9qZWN0S2V5ID8/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5PVEU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIGhhcyBub3QgYmVlbiBsb2FkZWQgYSBsb2FkaW5nIHNwaW5uZXIgaXMgc2hvd24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyBub3Qgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBub3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIGNyZWF0ZSBvbmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIGFwcGxpY2F0aW9uIHdpbGwgcmVkaXJlY3QgdG8gdGhhdCBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXIpIHJldHVybiA8QXBwbGljYXRpb25Mb2FkZXIgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUHJvamVjdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz17YC8ke3ByZXZpb3VzUHJvamVjdEtleX1gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi86cHJvamVjdEtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsocm91dGVyUHJvcHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0Q29udGFpbmVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoPXtyb3V0ZXJQcm9wcy5tYXRjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb249e3JvdXRlclByb3BzLmxvY2F0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzPy4oe1xuICAgICAgZGlzcGF0Y2g6IGludGVybmFsUmVkdXhTdG9yZS5kaXNwYXRjaCxcbiAgICB9KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtdKTsgLy8gPC0tIHJ1biBvbmx5IG9uY2UsIHdoZW4gY29tcG9uZW50IG1vdW50c1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxHbG9iYWxTdHlsZXMgLz5cbiAgICAgIDxBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgYXBvbGxvQ2xpZW50PXtwcm9wcy5hcG9sbG9DbGllbnR9XG4gICAgICAgIGVudmlyb25tZW50PXtwcm9wcy5lbnZpcm9ubWVudH1cbiAgICAgICAgdHJhY2tpbmdFdmVudExpc3Q9e3Byb3BzLnRyYWNraW5nRXZlbnRMaXN0fVxuICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgPlxuICAgICAgICB7KHsgaXNBdXRoZW50aWNhdGVkIH0pID0+IHtcbiAgICAgICAgICBpZiAoaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2xvZ291dFwiPlxuICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0VG9Mb2dvdXQgLz5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgIDxSb3V0ZT5cbiAgICAgICAgICAgICAgICAgIDxSZXN0cmljdGVkQXBwbGljYXRpb248QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZlYXR1cmVGbGFncz17cHJvcHMuZGVmYXVsdEZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZUZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4230
4227
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
4231
4228
|
};
|
|
4232
4229
|
|
|
@@ -4236,7 +4233,7 @@ var _ref3 = process.env.NODE_ENV === "production" ? {
|
|
|
4236
4233
|
} : {
|
|
4237
4234
|
name: "16holxm-RestrictedApplication",
|
|
4238
4235
|
styles: "grid-row:2;grid-column:1/3;label:RestrictedApplication;",
|
|
4239
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxVWtDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgdHlwZW9mIExPR09VVF9SRUFTT05TW2tleW9mIHR5cGVvZiBMT0dPVVRfUkVBU09OU11cbiAgICAgICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLlVOQVVUSE9SSVpFRDtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuREVMRVRFRDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9nb3V0IHJlYXNvbj17bG9nb3V0UmVhc29ufSAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgdGhlIGxvY2FsZSBvZiB0aGUgdXNlciwgd2UgcGljayBpdCBmcm9tIHRoZVxuICAgICAgICAgIC8vIHVzZXIncyBicm93c2VyIHRvIGF0dGVtcHQgdG8gbWF0Y2ggdGhlIGxhbmd1YWdlIGZvciB0aGUgY29ycmVjdCB0cmFuc2xhdGlvbnMuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyPy5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nTG9jYWxlRGF0YSwgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlclxuICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyB0aGUgbGFuZ3VhZ2UgYXMgbG9uZyBhcyB0aGUgbG9jYWxlIGRhdGFcbiAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2FkZWQuXG4gICAgICAgICAgICAgICAgICB7Li4uKGlzTG9hZGluZ0xvY2FsZURhdGEgPyB7fSA6IHsgbG9jYWxlLCBtZXNzYWdlcyB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICBsZENsaWVudFNpZGVJZD17YXBwbGljYXRpb25FbnZpcm9ubWVudC5sZENsaWVudFNpZGVJZH1cbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxWZXJzaW9uVHJhY2tlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIHsvKiBOT1RFOiB0aGUgcmVxdWVzdHMgaW4gZmxpZ2h0IGxvYWRlciB3aWxsIHJlbmRlciBhIGxvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICBzcGlubmVyIGludG8gdGhlIEFwcEJhci4gKi99XG4gICAgICAgICAgICAgICAgICAgICAgPFJlcXVlc3RzSW5GbGlnaHRMb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VudHJ5VXNlclRyYWNrZXIgdXNlcj17dXNlciA/PyB1bmRlZmluZWR9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEd0bVVzZXJUcmFja2VyIHVzZXI9e3VzZXJ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEd0bUFwcGxpY2F0aW9uVHJhY2tlclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25OYW1lPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmFwcGxpY2F0aW9uTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlckJ1c2luZXNzUm9sZT17dXNlcj8uYnVzaW5lc3NSb2xlID8/IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gJHtESU1FTlNJT05TLmhlYWRlcn0gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bm90aWZpY2F0aW9uc0dsb2JhbFJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInJlZ2lvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuR0xPQkFMfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RLZXlGcm9tVXJsKSByZXR1cm4gPFF1aWNrQWNjZXNzIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNQcm9qZWN0TG9hZGluZywgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUHJvamVjdExvYWRpbmcgfHwgIXByb2plY3QpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiB1c2VkIG91dHNpZGUgb2YgYSBwcm9qZWN0IGNvbnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Igd2hlbiB0aGUgcHJvamVjdCBpcyBleHBpcmVkIG9yIHN1cHNlbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZFVzZVByb2plY3RDb250ZXh0ID0gIShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LnN1c3BlbnNpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdC5zdXNwZW5zaW9uLmlzQWN0aXZlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2plY3QuZXhwaXJ5ICYmIHByb2plY3QuZXhwaXJ5LmlzQWN0aXZlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNob3VsZFVzZVByb2plY3RDb250ZXh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlcz17cHJvamVjdC5sYW5ndWFnZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZTogZGF0YUxvY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcm9qZWN0RGF0YUxvY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e3Byb2plY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0RGF0YUxvY2FsZT17ZGF0YUxvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxRdWlja0FjY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVByb2plY3REYXRhTG9jYWxlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcm9qZWN0RGF0YUxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3REYXRhTG9jYWxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZldGNoUHJvamVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwQmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybD17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGFzaWRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSA8TmF2QmFyPiBzaG91bGQgb25seSBiZSByZW5kZXJlZCB3aXRoaW4gYSBwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGV4dCwgdGhlcmVmb3JlIHdoZW4gdGhlcmUgaXMgYSBgcHJvamVjdEtleWAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gYHByb2plY3RLZXlgIGluIHRoZSBVUkwgKGUuZy4gYC9hY2NvdW50YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJvdXRlcyksIHdlIGRvbid0IHJlbmRlciBpdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiB3ZSBhbHNvIFwiY2FjaGVcIiB0aGUgYHByb2plY3RLZXlgIGluIGxvY2FsU3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gXCJyZS1oeWRyYXRlXCIgdGhlIFVSTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2F0aW9uIChlLmcgd2hlbiB5b3UgZ28gdG8gYC9gLCB0aGVyZSBzaG91bGQgYmUgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZGlyZWN0IHRvIGAvOnByb2plY3RLZXlgKS4gVGhlcmVmb3JlLCB3ZSBzaG91bGQgbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVseSBvbiB0aGUgdmFsdWUgaW4gbG9jYWxTdG9yYWdlIHRvIGRldGVybWluZSB3aGljaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGBwcm9qZWN0S2V5YCBpcyBjdXJyZW50bHkgdXNlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RLZXlGcm9tVXJsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1Byb2plY3QsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbmRlciB0aGUgbG9hZGluZyBuYXZiYXIgYXMgbG9uZyBhcyBhbGwgdGhlIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXNuJ3QgYmVlbiBsb2FkZWQsIG9yIGlmIHRoZSBwcm9qZWN0IGRvZXMgbm90IGV4aXN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1VzZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0xvY2FsZURhdGEgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1Byb2plY3QgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFsb2NhbGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxMb2FkaW5nTmF2QmFyIC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogZG8gbm90IHBhc3MgdGhlIGBwcm9qZWN0YCBpbnRvIHRoZSBhcHBsaWNhdGlvbiBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcGVybWlzc2lvbnMgZm9yIHRoZSBOYXZiYXIgYXJlIHJlc29sdmVkIHNlcGFyYXRlbHksIHdpdGhpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGRpZmZlcmVudCBSZWFjdCBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TmF2QmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Mb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiByZWY9e25vdGlmaWNhdGlvbnNQYWdlUmVmfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuUEFHRX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlNJREV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgb25seSBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBoYXZlIGFuIGludGVybWVkaWFyeSA8ZGl2PiB3cmFwcGluZyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpZXc+IGNvbXBvbmVudCB0aGF0IGlzIHVzZWQgdG8gd3JhcCBldmVyeSBjb250ZW50LXZpZXcuIFRoaXMgaW50ZXJtZWRpYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+IGlzIHNvbGVseSB1c2VkIGZvciBhZGRpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIGNvbnRlbnQtdmlldy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhpcyBjb3VsZCBiZSBkb25lIGJ5IHBhc3NpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIDxWaWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbGV0IGl0IGRvIHRoZSBsYXlvdXQsIHNvIHdlIGNhbiBhdm9pZCBsYXlpbmcgb3VyIGZyb20gdGhlIG91dHNpZGUgYXMgd2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gKjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQb3J0YWxzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtsYXlvdXRSZWZzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3A9e0RJTUVOU0lPTlMuaGVhZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybCA/IERJTUVOU0lPTlMubmF2TWVudSA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdE9uRXhwYW5kZWRNZW51PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBESU1FTlNJT05TLm5hdk1lbnVFeHBhbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbT1cIi9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bz1cIi9hY2NvdW50L3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9hY2NvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgcmVuZGVyYCBmdW5jdGlvbiwgd2UgYXNzdW1lIGl0J3Mgb25lIG9mIHR3byBjYXNlczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDEuIFRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCB1c2UgYGNoaWxkcmVuYCBhbmQgdGhlcmVmb3JlIGltcGxlbWVudHMgdGhlIHJvdXRlcyBpbmNsdWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSA8Um91dGVDYXRjaEFsbD4gKHRoaXMgaXMgdGhlIFwibGVnYWN5XCIgYmVoYXZpb3IpLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMi4gSXQncyB0aGUgYWNjb3VudCBhcHBsaWNhdGlvbiwgd2hpY2ggYWx3YXlzIHVzZXMgYHJlbmRlcmAgYW5kIHRoZXJlZm9yZSBzaG91bGQgcmVuZGVyIGFzIG5vcm1hbC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgY2hpbGRyZW5gIGZ1bmN0aW9uLCB3ZSBjYW4gYWx3YXlzIGFzc3VtZSB0aGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpdCdzIGEgbm9ybWFsIEN1c3RvbSBBcHBsaWNhdGlvbiBhbmQgdGhhdCBpdCBzaG91bGQgdHJpZ2dlciBhIGZvcmNlIHJlbG9hZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMucmVuZGVyID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Pntwcm9wcy5yZW5kZXIoKX08Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZUNhdGNoQWxsIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogUHJvamVjdCByb3V0ZXMgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9XCIvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUHJvamVjdEtleSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFByZXZpb3VzUHJvamVjdEtleShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPy5kZWZhdWx0UHJvamVjdEtleSA/PyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOT1RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciBoYXMgbm90IGJlZW4gbG9hZGVkIGEgbG9hZGluZyBzcGlubmVyIGlzIHNob3duLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgbm90IHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgbm9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBjcmVhdGUgb25lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBvciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlZGlyZWN0IHRvIHRoYXQgcHJvamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VyKSByZXR1cm4gPEFwcGxpY2F0aW9uTG9hZGVyIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1Byb2plY3RLZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3QgdG89e2AvJHtwcmV2aW91c1Byb2plY3RLZXl9YH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9XCIvOnByb2plY3RLZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KHJvdXRlclByb3BzKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdENvbnRhaW5lcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaD17cm91dGVyUHJvcHMubWF0Y2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uPXtyb3V0ZXJQcm9wcy5sb2NhdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVjaz17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBlZmZlY3RpdmVseSByZW5kZXJzIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGlsZHJlbiwgd2hpY2ggaXMgdGhlIGFwcGxpY2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Td2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgPC9TZXR1cEZsb3BGbGlwUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICA8L0ZldGNoVXNlcj5cbiAgKTtcbn07XG5SZXN0cmljdGVkQXBwbGljYXRpb24uZGlzcGxheU5hbWUgPSAnUmVzdHJpY3RlZEFwcGxpY2F0aW9uJztcblxuY29uc3QgQXBwbGljYXRpb25TaGVsbCA9IDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzIGV4dGVuZHMge30+KFxuICBwcm9wczogUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbikgPT4ge1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHByb3BzLm9uUmVnaXN0ZXJFcnJvckxpc3RlbmVycz8uKHtcbiAgICAgIGRpc3BhdGNoOiBpbnRlcm5hbFJlZHV4U3RvcmUuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7IC8vIDwtLSBydW4gb25seSBvbmNlLCB3aGVuIGNvbXBvbmVudCBtb3VudHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT1cImRlZmF1bHRcIiAvPlxuICAgICAgPEdsb2JhbFN0eWxlcyAvPlxuICAgICAgPEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICBhcG9sbG9DbGllbnQ9e3Byb3BzLmFwb2xsb0NsaWVudH1cbiAgICAgICAgZW52aXJvbm1lbnQ9e3Byb3BzLmVudmlyb25tZW50fVxuICAgICAgICB0cmFja2luZ0V2ZW50TGlzdD17cHJvcHMudHJhY2tpbmdFdmVudExpc3R9XG4gICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICA+XG4gICAgICAgIHsoeyBpc0F1dGhlbnRpY2F0ZWQgfSkgPT4ge1xuICAgICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvbG9nb3V0XCI+XG4gICAgICAgICAgICAgICAgICA8UmVkaXJlY3RUb0xvZ291dCAvPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgPFJlc3RyaWN0ZWRBcHBsaWNhdGlvbjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmVhdHVyZUZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlRmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgIDwvUmVzdHJpY3RlZEFwcGxpY2F0aW9uPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9naW4gLz47XG4gICAgICAgIH19XG4gICAgICA8L0FwcGxpY2F0aW9uU2hlbGxQcm92aWRlcj5cbiAgICA8Lz5cbiAgKTtcbn07XG5BcHBsaWNhdGlvblNoZWxsLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGwnO1xuQXBwbGljYXRpb25TaGVsbC52ZXJzaW9uID0gdmVyc2lvbjtcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbDtcbiJdfQ== */",
|
|
4236
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzVWtDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgVGhlbWVTd2l0Y2hlciBmcm9tICcuLi90aGVtZS1zd2l0Y2hlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgdHlwZW9mIExPR09VVF9SRUFTT05TW2tleW9mIHR5cGVvZiBMT0dPVVRfUkVBU09OU11cbiAgICAgICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLlVOQVVUSE9SSVpFRDtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuREVMRVRFRDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9nb3V0IHJlYXNvbj17bG9nb3V0UmVhc29ufSAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgdGhlIGxvY2FsZSBvZiB0aGUgdXNlciwgd2UgcGljayBpdCBmcm9tIHRoZVxuICAgICAgICAgIC8vIHVzZXIncyBicm93c2VyIHRvIGF0dGVtcHQgdG8gbWF0Y2ggdGhlIGxhbmd1YWdlIGZvciB0aGUgY29ycmVjdCB0cmFuc2xhdGlvbnMuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyPy5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nTG9jYWxlRGF0YSwgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlclxuICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyB0aGUgbGFuZ3VhZ2UgYXMgbG9uZyBhcyB0aGUgbG9jYWxlIGRhdGFcbiAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2FkZWQuXG4gICAgICAgICAgICAgICAgICB7Li4uKGlzTG9hZGluZ0xvY2FsZURhdGEgPyB7fSA6IHsgbG9jYWxlLCBtZXNzYWdlcyB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICBsZENsaWVudFNpZGVJZD17YXBwbGljYXRpb25FbnZpcm9ubWVudC5sZENsaWVudFNpZGVJZH1cbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyID8/IHVuZGVmaW5lZH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtVXNlclRyYWNrZXIgdXNlcj17dXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtQXBwbGljYXRpb25UcmFja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk5hbWU9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnQuYXBwbGljYXRpb25OYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyQnVzaW5lc3NSb2xlPXt1c2VyPy5idXNpbmVzc1JvbGUgPz8gdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byAke0RJTUVOU0lPTlMuaGVhZGVyfSAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5HTE9CQUx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc1Byb2plY3RMb2FkaW5nLCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcm9qZWN0TG9hZGluZyB8fCAhcHJvamVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHVzZWQgb3V0c2lkZSBvZiBhIHByb2plY3QgY29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB3aGVuIHRoZSBwcm9qZWN0IGlzIGV4cGlyZWQgb3Igc3Vwc2VuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkVXNlUHJvamVjdENvbnRleHQgPSAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2plY3Quc3VzcGVuc2lvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LnN1c3BlbnNpb24uaXNBY3RpdmUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5leHBpcnkgJiYgcHJvamVjdC5leHBpcnkuaXNBY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkVXNlUHJvamVjdENvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFF1aWNrQWNjZXNzIC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0RGF0YUxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVzPXtwcm9qZWN0Lmxhbmd1YWdlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBkYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3REYXRhTG9jYWxlPXtkYXRhTG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFF1aWNrQWNjZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUHJvamVjdERhdGFMb2NhbGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdERhdGFMb2NhbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDxOYXZCYXI+IHNob3VsZCBvbmx5IGJlIHJlbmRlcmVkIHdpdGhpbiBhIHByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LCB0aGVyZWZvcmUgd2hlbiB0aGVyZSBpcyBhIGBwcm9qZWN0S2V5YC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBgcHJvamVjdEtleWAgaW4gdGhlIFVSTCAoZS5nLiBgL2FjY291bnRgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVzKSwgd2UgZG9uJ3QgcmVuZGVyIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIGFsc28gXCJjYWNoZVwiIHRoZSBgcHJvamVjdEtleWAgaW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBcInJlLWh5ZHJhdGVcIiB0aGUgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gKGUuZyB3aGVuIHlvdSBnbyB0byBgL2AsIHRoZXJlIHNob3VsZCBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gYC86cHJvamVjdEtleWApLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWx5IG9uIHRoZSB2YWx1ZSBpbiBsb2NhbFN0b3JhZ2UgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYHByb2plY3RLZXlgIGlzIGN1cnJlbnRseSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nUHJvamVjdCwgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBsb2FkaW5nIG5hdmJhciBhcyBsb25nIGFzIGFsbCB0aGUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhc24ndCBiZWVuIGxvYWRlZCwgb3IgaWYgdGhlIHByb2plY3QgZG9lcyBub3QgZXhpc3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXNlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nTG9jYWxlRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nUHJvamVjdCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdOYXZCYXIgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBkbyBub3QgcGFzcyB0aGUgYHByb2plY3RgIGludG8gdGhlIGFwcGxpY2F0aW9uIGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwZXJtaXNzaW9ucyBmb3IgdGhlIE5hdmJhciBhcmUgcmVzb2x2ZWQgc2VwYXJhdGVseSwgd2l0aGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgZGlmZmVyZW50IFJlYWN0IGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e3Byb2plY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZldGNoUHJvamVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hc2lkZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAge2lzTG9hZGluZ1VzZXIgfHwgaXNMb2FkaW5nTG9jYWxlRGF0YSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Mb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17bm90aWZpY2F0aW9uc1BhZ2VSZWZ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e2xheW91dFJlZnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcD17RElNRU5TSU9OUy5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsID8gRElNRU5TSU9OUy5uYXZNZW51IDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0T25FeHBhbmRlZE1lbnU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IERJTUVOU0lPTlMubmF2TWVudUV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvPVwiL2FjY291bnQvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2FjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGByZW5kZXJgIGZ1bmN0aW9uLCB3ZSBhc3N1bWUgaXQncyBvbmUgb2YgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHVzZSBgY2hpbGRyZW5gIGFuZCB0aGVyZWZvcmUgaW1wbGVtZW50cyB0aGUgcm91dGVzIGluY2x1ZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIDxSb3V0ZUNhdGNoQWxsPiAodGhpcyBpcyB0aGUgXCJsZWdhY3lcIiBiZWhhdmlvcikuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAyLiBJdCdzIHRoZSBhY2NvdW50IGFwcGxpY2F0aW9uLCB3aGljaCBhbHdheXMgdXNlcyBgcmVuZGVyYCBhbmQgdGhlcmVmb3JlIHNob3VsZCByZW5kZXIgYXMgbm9ybWFsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGBjaGlsZHJlbmAgZnVuY3Rpb24sIHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0J3MgYSBub3JtYWwgQ3VzdG9tIEFwcGxpY2F0aW9uIGFuZCB0aGF0IGl0IHNob3VsZCB0cmlnZ2VyIGEgZm9yY2UgcmVsb2FkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZW5kZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+e3Byb3BzLnJlbmRlcigpfTwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlQ2F0Y2hBbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQcm9qZWN0IHJvdXRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9qZWN0S2V5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJldmlvdXNQcm9qZWN0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI/LmRlZmF1bHRQcm9qZWN0S2V5ID8/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5PVEU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIGhhcyBub3QgYmVlbiBsb2FkZWQgYSBsb2FkaW5nIHNwaW5uZXIgaXMgc2hvd24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyBub3Qgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBub3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIGNyZWF0ZSBvbmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIGFwcGxpY2F0aW9uIHdpbGwgcmVkaXJlY3QgdG8gdGhhdCBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXIpIHJldHVybiA8QXBwbGljYXRpb25Mb2FkZXIgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUHJvamVjdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz17YC8ke3ByZXZpb3VzUHJvamVjdEtleX1gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi86cHJvamVjdEtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsocm91dGVyUHJvcHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0Q29udGFpbmVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoPXtyb3V0ZXJQcm9wcy5tYXRjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb249e3JvdXRlclByb3BzLmxvY2F0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzPy4oe1xuICAgICAgZGlzcGF0Y2g6IGludGVybmFsUmVkdXhTdG9yZS5kaXNwYXRjaCxcbiAgICB9KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtdKTsgLy8gPC0tIHJ1biBvbmx5IG9uY2UsIHdoZW4gY29tcG9uZW50IG1vdW50c1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxHbG9iYWxTdHlsZXMgLz5cbiAgICAgIDxBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgYXBvbGxvQ2xpZW50PXtwcm9wcy5hcG9sbG9DbGllbnR9XG4gICAgICAgIGVudmlyb25tZW50PXtwcm9wcy5lbnZpcm9ubWVudH1cbiAgICAgICAgdHJhY2tpbmdFdmVudExpc3Q9e3Byb3BzLnRyYWNraW5nRXZlbnRMaXN0fVxuICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgPlxuICAgICAgICB7KHsgaXNBdXRoZW50aWNhdGVkIH0pID0+IHtcbiAgICAgICAgICBpZiAoaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2xvZ291dFwiPlxuICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0VG9Mb2dvdXQgLz5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgIDxSb3V0ZT5cbiAgICAgICAgICAgICAgICAgIDxSZXN0cmljdGVkQXBwbGljYXRpb248QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZlYXR1cmVGbGFncz17cHJvcHMuZGVmYXVsdEZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZUZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4240
4237
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
4241
4238
|
};
|
|
4242
4239
|
|
|
@@ -4246,7 +4243,7 @@ var _ref4 = process.env.NODE_ENV === "production" ? {
|
|
|
4246
4243
|
} : {
|
|
4247
4244
|
name: "1u7ux6j-RestrictedApplication",
|
|
4248
4245
|
styles: "grid-row:1;grid-column:1/3;label:RestrictedApplication;",
|
|
4249
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE0UWtDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgdHlwZW9mIExPR09VVF9SRUFTT05TW2tleW9mIHR5cGVvZiBMT0dPVVRfUkVBU09OU11cbiAgICAgICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLlVOQVVUSE9SSVpFRDtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuREVMRVRFRDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9nb3V0IHJlYXNvbj17bG9nb3V0UmVhc29ufSAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgdGhlIGxvY2FsZSBvZiB0aGUgdXNlciwgd2UgcGljayBpdCBmcm9tIHRoZVxuICAgICAgICAgIC8vIHVzZXIncyBicm93c2VyIHRvIGF0dGVtcHQgdG8gbWF0Y2ggdGhlIGxhbmd1YWdlIGZvciB0aGUgY29ycmVjdCB0cmFuc2xhdGlvbnMuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyPy5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nTG9jYWxlRGF0YSwgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlclxuICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyB0aGUgbGFuZ3VhZ2UgYXMgbG9uZyBhcyB0aGUgbG9jYWxlIGRhdGFcbiAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2FkZWQuXG4gICAgICAgICAgICAgICAgICB7Li4uKGlzTG9hZGluZ0xvY2FsZURhdGEgPyB7fSA6IHsgbG9jYWxlLCBtZXNzYWdlcyB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICBsZENsaWVudFNpZGVJZD17YXBwbGljYXRpb25FbnZpcm9ubWVudC5sZENsaWVudFNpZGVJZH1cbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxWZXJzaW9uVHJhY2tlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIHsvKiBOT1RFOiB0aGUgcmVxdWVzdHMgaW4gZmxpZ2h0IGxvYWRlciB3aWxsIHJlbmRlciBhIGxvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICBzcGlubmVyIGludG8gdGhlIEFwcEJhci4gKi99XG4gICAgICAgICAgICAgICAgICAgICAgPFJlcXVlc3RzSW5GbGlnaHRMb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VudHJ5VXNlclRyYWNrZXIgdXNlcj17dXNlciA/PyB1bmRlZmluZWR9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEd0bVVzZXJUcmFja2VyIHVzZXI9e3VzZXJ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEd0bUFwcGxpY2F0aW9uVHJhY2tlclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25OYW1lPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmFwcGxpY2F0aW9uTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlckJ1c2luZXNzUm9sZT17dXNlcj8uYnVzaW5lc3NSb2xlID8/IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gJHtESU1FTlNJT05TLmhlYWRlcn0gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bm90aWZpY2F0aW9uc0dsb2JhbFJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInJlZ2lvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuR0xPQkFMfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RLZXlGcm9tVXJsKSByZXR1cm4gPFF1aWNrQWNjZXNzIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNQcm9qZWN0TG9hZGluZywgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUHJvamVjdExvYWRpbmcgfHwgIXByb2plY3QpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiB1c2VkIG91dHNpZGUgb2YgYSBwcm9qZWN0IGNvbnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Igd2hlbiB0aGUgcHJvamVjdCBpcyBleHBpcmVkIG9yIHN1cHNlbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZFVzZVByb2plY3RDb250ZXh0ID0gIShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LnN1c3BlbnNpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdC5zdXNwZW5zaW9uLmlzQWN0aXZlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2plY3QuZXhwaXJ5ICYmIHByb2plY3QuZXhwaXJ5LmlzQWN0aXZlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNob3VsZFVzZVByb2plY3RDb250ZXh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlcz17cHJvamVjdC5sYW5ndWFnZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZTogZGF0YUxvY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcm9qZWN0RGF0YUxvY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e3Byb2plY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0RGF0YUxvY2FsZT17ZGF0YUxvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxRdWlja0FjY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVByb2plY3REYXRhTG9jYWxlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcm9qZWN0RGF0YUxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3REYXRhTG9jYWxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZldGNoUHJvamVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwQmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybD17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGFzaWRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSA8TmF2QmFyPiBzaG91bGQgb25seSBiZSByZW5kZXJlZCB3aXRoaW4gYSBwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGV4dCwgdGhlcmVmb3JlIHdoZW4gdGhlcmUgaXMgYSBgcHJvamVjdEtleWAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gYHByb2plY3RLZXlgIGluIHRoZSBVUkwgKGUuZy4gYC9hY2NvdW50YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJvdXRlcyksIHdlIGRvbid0IHJlbmRlciBpdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiB3ZSBhbHNvIFwiY2FjaGVcIiB0aGUgYHByb2plY3RLZXlgIGluIGxvY2FsU3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gXCJyZS1oeWRyYXRlXCIgdGhlIFVSTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2F0aW9uIChlLmcgd2hlbiB5b3UgZ28gdG8gYC9gLCB0aGVyZSBzaG91bGQgYmUgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZGlyZWN0IHRvIGAvOnByb2plY3RLZXlgKS4gVGhlcmVmb3JlLCB3ZSBzaG91bGQgbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVseSBvbiB0aGUgdmFsdWUgaW4gbG9jYWxTdG9yYWdlIHRvIGRldGVybWluZSB3aGljaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGBwcm9qZWN0S2V5YCBpcyBjdXJyZW50bHkgdXNlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RLZXlGcm9tVXJsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1Byb2plY3QsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbmRlciB0aGUgbG9hZGluZyBuYXZiYXIgYXMgbG9uZyBhcyBhbGwgdGhlIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXNuJ3QgYmVlbiBsb2FkZWQsIG9yIGlmIHRoZSBwcm9qZWN0IGRvZXMgbm90IGV4aXN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1VzZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0xvY2FsZURhdGEgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1Byb2plY3QgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFsb2NhbGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxMb2FkaW5nTmF2QmFyIC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogZG8gbm90IHBhc3MgdGhlIGBwcm9qZWN0YCBpbnRvIHRoZSBhcHBsaWNhdGlvbiBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcGVybWlzc2lvbnMgZm9yIHRoZSBOYXZiYXIgYXJlIHJlc29sdmVkIHNlcGFyYXRlbHksIHdpdGhpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGRpZmZlcmVudCBSZWFjdCBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TmF2QmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Mb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiByZWY9e25vdGlmaWNhdGlvbnNQYWdlUmVmfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuUEFHRX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlNJREV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgb25seSBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBoYXZlIGFuIGludGVybWVkaWFyeSA8ZGl2PiB3cmFwcGluZyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpZXc+IGNvbXBvbmVudCB0aGF0IGlzIHVzZWQgdG8gd3JhcCBldmVyeSBjb250ZW50LXZpZXcuIFRoaXMgaW50ZXJtZWRpYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+IGlzIHNvbGVseSB1c2VkIGZvciBhZGRpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIGNvbnRlbnQtdmlldy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhpcyBjb3VsZCBiZSBkb25lIGJ5IHBhc3NpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIDxWaWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbGV0IGl0IGRvIHRoZSBsYXlvdXQsIHNvIHdlIGNhbiBhdm9pZCBsYXlpbmcgb3VyIGZyb20gdGhlIG91dHNpZGUgYXMgd2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gKjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQb3J0YWxzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtsYXlvdXRSZWZzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3A9e0RJTUVOU0lPTlMuaGVhZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybCA/IERJTUVOU0lPTlMubmF2TWVudSA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdE9uRXhwYW5kZWRNZW51PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBESU1FTlNJT05TLm5hdk1lbnVFeHBhbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbT1cIi9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bz1cIi9hY2NvdW50L3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9hY2NvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgcmVuZGVyYCBmdW5jdGlvbiwgd2UgYXNzdW1lIGl0J3Mgb25lIG9mIHR3byBjYXNlczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDEuIFRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCB1c2UgYGNoaWxkcmVuYCBhbmQgdGhlcmVmb3JlIGltcGxlbWVudHMgdGhlIHJvdXRlcyBpbmNsdWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSA8Um91dGVDYXRjaEFsbD4gKHRoaXMgaXMgdGhlIFwibGVnYWN5XCIgYmVoYXZpb3IpLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMi4gSXQncyB0aGUgYWNjb3VudCBhcHBsaWNhdGlvbiwgd2hpY2ggYWx3YXlzIHVzZXMgYHJlbmRlcmAgYW5kIHRoZXJlZm9yZSBzaG91bGQgcmVuZGVyIGFzIG5vcm1hbC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgY2hpbGRyZW5gIGZ1bmN0aW9uLCB3ZSBjYW4gYWx3YXlzIGFzc3VtZSB0aGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpdCdzIGEgbm9ybWFsIEN1c3RvbSBBcHBsaWNhdGlvbiBhbmQgdGhhdCBpdCBzaG91bGQgdHJpZ2dlciBhIGZvcmNlIHJlbG9hZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMucmVuZGVyID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Pntwcm9wcy5yZW5kZXIoKX08Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZUNhdGNoQWxsIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogUHJvamVjdCByb3V0ZXMgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9XCIvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUHJvamVjdEtleSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFByZXZpb3VzUHJvamVjdEtleShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPy5kZWZhdWx0UHJvamVjdEtleSA/PyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOT1RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciBoYXMgbm90IGJlZW4gbG9hZGVkIGEgbG9hZGluZyBzcGlubmVyIGlzIHNob3duLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgbm90IHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgbm9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBjcmVhdGUgb25lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBvciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlZGlyZWN0IHRvIHRoYXQgcHJvamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VyKSByZXR1cm4gPEFwcGxpY2F0aW9uTG9hZGVyIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1Byb2plY3RLZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3QgdG89e2AvJHtwcmV2aW91c1Byb2plY3RLZXl9YH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9XCIvOnByb2plY3RLZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KHJvdXRlclByb3BzKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdENvbnRhaW5lcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaD17cm91dGVyUHJvcHMubWF0Y2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uPXtyb3V0ZXJQcm9wcy5sb2NhdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVjaz17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBlZmZlY3RpdmVseSByZW5kZXJzIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGlsZHJlbiwgd2hpY2ggaXMgdGhlIGFwcGxpY2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Td2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgPC9TZXR1cEZsb3BGbGlwUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICA8L0ZldGNoVXNlcj5cbiAgKTtcbn07XG5SZXN0cmljdGVkQXBwbGljYXRpb24uZGlzcGxheU5hbWUgPSAnUmVzdHJpY3RlZEFwcGxpY2F0aW9uJztcblxuY29uc3QgQXBwbGljYXRpb25TaGVsbCA9IDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzIGV4dGVuZHMge30+KFxuICBwcm9wczogUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbikgPT4ge1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHByb3BzLm9uUmVnaXN0ZXJFcnJvckxpc3RlbmVycz8uKHtcbiAgICAgIGRpc3BhdGNoOiBpbnRlcm5hbFJlZHV4U3RvcmUuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7IC8vIDwtLSBydW4gb25seSBvbmNlLCB3aGVuIGNvbXBvbmVudCBtb3VudHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT1cImRlZmF1bHRcIiAvPlxuICAgICAgPEdsb2JhbFN0eWxlcyAvPlxuICAgICAgPEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICBhcG9sbG9DbGllbnQ9e3Byb3BzLmFwb2xsb0NsaWVudH1cbiAgICAgICAgZW52aXJvbm1lbnQ9e3Byb3BzLmVudmlyb25tZW50fVxuICAgICAgICB0cmFja2luZ0V2ZW50TGlzdD17cHJvcHMudHJhY2tpbmdFdmVudExpc3R9XG4gICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICA+XG4gICAgICAgIHsoeyBpc0F1dGhlbnRpY2F0ZWQgfSkgPT4ge1xuICAgICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvbG9nb3V0XCI+XG4gICAgICAgICAgICAgICAgICA8UmVkaXJlY3RUb0xvZ291dCAvPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgPFJlc3RyaWN0ZWRBcHBsaWNhdGlvbjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmVhdHVyZUZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlRmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgIDwvUmVzdHJpY3RlZEFwcGxpY2F0aW9uPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9naW4gLz47XG4gICAgICAgIH19XG4gICAgICA8L0FwcGxpY2F0aW9uU2hlbGxQcm92aWRlcj5cbiAgICA8Lz5cbiAgKTtcbn07XG5BcHBsaWNhdGlvblNoZWxsLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGwnO1xuQXBwbGljYXRpb25TaGVsbC52ZXJzaW9uID0gdmVyc2lvbjtcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbDtcbiJdfQ== */",
|
|
4246
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2UWtDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgVGhlbWVTd2l0Y2hlciBmcm9tICcuLi90aGVtZS1zd2l0Y2hlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgdHlwZW9mIExPR09VVF9SRUFTT05TW2tleW9mIHR5cGVvZiBMT0dPVVRfUkVBU09OU11cbiAgICAgICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLlVOQVVUSE9SSVpFRDtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuREVMRVRFRDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9nb3V0IHJlYXNvbj17bG9nb3V0UmVhc29ufSAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgdGhlIGxvY2FsZSBvZiB0aGUgdXNlciwgd2UgcGljayBpdCBmcm9tIHRoZVxuICAgICAgICAgIC8vIHVzZXIncyBicm93c2VyIHRvIGF0dGVtcHQgdG8gbWF0Y2ggdGhlIGxhbmd1YWdlIGZvciB0aGUgY29ycmVjdCB0cmFuc2xhdGlvbnMuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyPy5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nTG9jYWxlRGF0YSwgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlclxuICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyB0aGUgbGFuZ3VhZ2UgYXMgbG9uZyBhcyB0aGUgbG9jYWxlIGRhdGFcbiAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2FkZWQuXG4gICAgICAgICAgICAgICAgICB7Li4uKGlzTG9hZGluZ0xvY2FsZURhdGEgPyB7fSA6IHsgbG9jYWxlLCBtZXNzYWdlcyB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICBsZENsaWVudFNpZGVJZD17YXBwbGljYXRpb25FbnZpcm9ubWVudC5sZENsaWVudFNpZGVJZH1cbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyID8/IHVuZGVmaW5lZH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtVXNlclRyYWNrZXIgdXNlcj17dXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtQXBwbGljYXRpb25UcmFja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk5hbWU9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnQuYXBwbGljYXRpb25OYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyQnVzaW5lc3NSb2xlPXt1c2VyPy5idXNpbmVzc1JvbGUgPz8gdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byAke0RJTUVOU0lPTlMuaGVhZGVyfSAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5HTE9CQUx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc1Byb2plY3RMb2FkaW5nLCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcm9qZWN0TG9hZGluZyB8fCAhcHJvamVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHVzZWQgb3V0c2lkZSBvZiBhIHByb2plY3QgY29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB3aGVuIHRoZSBwcm9qZWN0IGlzIGV4cGlyZWQgb3Igc3Vwc2VuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkVXNlUHJvamVjdENvbnRleHQgPSAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2plY3Quc3VzcGVuc2lvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LnN1c3BlbnNpb24uaXNBY3RpdmUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5leHBpcnkgJiYgcHJvamVjdC5leHBpcnkuaXNBY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkVXNlUHJvamVjdENvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFF1aWNrQWNjZXNzIC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0RGF0YUxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVzPXtwcm9qZWN0Lmxhbmd1YWdlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBkYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3REYXRhTG9jYWxlPXtkYXRhTG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFF1aWNrQWNjZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUHJvamVjdERhdGFMb2NhbGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdERhdGFMb2NhbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDxOYXZCYXI+IHNob3VsZCBvbmx5IGJlIHJlbmRlcmVkIHdpdGhpbiBhIHByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LCB0aGVyZWZvcmUgd2hlbiB0aGVyZSBpcyBhIGBwcm9qZWN0S2V5YC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBgcHJvamVjdEtleWAgaW4gdGhlIFVSTCAoZS5nLiBgL2FjY291bnRgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVzKSwgd2UgZG9uJ3QgcmVuZGVyIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIGFsc28gXCJjYWNoZVwiIHRoZSBgcHJvamVjdEtleWAgaW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBcInJlLWh5ZHJhdGVcIiB0aGUgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gKGUuZyB3aGVuIHlvdSBnbyB0byBgL2AsIHRoZXJlIHNob3VsZCBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gYC86cHJvamVjdEtleWApLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWx5IG9uIHRoZSB2YWx1ZSBpbiBsb2NhbFN0b3JhZ2UgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYHByb2plY3RLZXlgIGlzIGN1cnJlbnRseSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nUHJvamVjdCwgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBsb2FkaW5nIG5hdmJhciBhcyBsb25nIGFzIGFsbCB0aGUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhc24ndCBiZWVuIGxvYWRlZCwgb3IgaWYgdGhlIHByb2plY3QgZG9lcyBub3QgZXhpc3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXNlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nTG9jYWxlRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nUHJvamVjdCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdOYXZCYXIgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBkbyBub3QgcGFzcyB0aGUgYHByb2plY3RgIGludG8gdGhlIGFwcGxpY2F0aW9uIGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwZXJtaXNzaW9ucyBmb3IgdGhlIE5hdmJhciBhcmUgcmVzb2x2ZWQgc2VwYXJhdGVseSwgd2l0aGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgZGlmZmVyZW50IFJlYWN0IGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e3Byb2plY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZldGNoUHJvamVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hc2lkZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAge2lzTG9hZGluZ1VzZXIgfHwgaXNMb2FkaW5nTG9jYWxlRGF0YSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Mb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17bm90aWZpY2F0aW9uc1BhZ2VSZWZ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e2xheW91dFJlZnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcD17RElNRU5TSU9OUy5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsID8gRElNRU5TSU9OUy5uYXZNZW51IDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0T25FeHBhbmRlZE1lbnU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IERJTUVOU0lPTlMubmF2TWVudUV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvPVwiL2FjY291bnQvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2FjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGByZW5kZXJgIGZ1bmN0aW9uLCB3ZSBhc3N1bWUgaXQncyBvbmUgb2YgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHVzZSBgY2hpbGRyZW5gIGFuZCB0aGVyZWZvcmUgaW1wbGVtZW50cyB0aGUgcm91dGVzIGluY2x1ZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIDxSb3V0ZUNhdGNoQWxsPiAodGhpcyBpcyB0aGUgXCJsZWdhY3lcIiBiZWhhdmlvcikuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAyLiBJdCdzIHRoZSBhY2NvdW50IGFwcGxpY2F0aW9uLCB3aGljaCBhbHdheXMgdXNlcyBgcmVuZGVyYCBhbmQgdGhlcmVmb3JlIHNob3VsZCByZW5kZXIgYXMgbm9ybWFsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGBjaGlsZHJlbmAgZnVuY3Rpb24sIHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0J3MgYSBub3JtYWwgQ3VzdG9tIEFwcGxpY2F0aW9uIGFuZCB0aGF0IGl0IHNob3VsZCB0cmlnZ2VyIGEgZm9yY2UgcmVsb2FkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZW5kZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+e3Byb3BzLnJlbmRlcigpfTwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlQ2F0Y2hBbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQcm9qZWN0IHJvdXRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9qZWN0S2V5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJldmlvdXNQcm9qZWN0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI/LmRlZmF1bHRQcm9qZWN0S2V5ID8/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5PVEU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIGhhcyBub3QgYmVlbiBsb2FkZWQgYSBsb2FkaW5nIHNwaW5uZXIgaXMgc2hvd24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyBub3Qgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBub3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIGNyZWF0ZSBvbmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIGFwcGxpY2F0aW9uIHdpbGwgcmVkaXJlY3QgdG8gdGhhdCBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXIpIHJldHVybiA8QXBwbGljYXRpb25Mb2FkZXIgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUHJvamVjdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz17YC8ke3ByZXZpb3VzUHJvamVjdEtleX1gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi86cHJvamVjdEtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsocm91dGVyUHJvcHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0Q29udGFpbmVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoPXtyb3V0ZXJQcm9wcy5tYXRjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb249e3JvdXRlclByb3BzLmxvY2F0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzPy4oe1xuICAgICAgZGlzcGF0Y2g6IGludGVybmFsUmVkdXhTdG9yZS5kaXNwYXRjaCxcbiAgICB9KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtdKTsgLy8gPC0tIHJ1biBvbmx5IG9uY2UsIHdoZW4gY29tcG9uZW50IG1vdW50c1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxHbG9iYWxTdHlsZXMgLz5cbiAgICAgIDxBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgYXBvbGxvQ2xpZW50PXtwcm9wcy5hcG9sbG9DbGllbnR9XG4gICAgICAgIGVudmlyb25tZW50PXtwcm9wcy5lbnZpcm9ubWVudH1cbiAgICAgICAgdHJhY2tpbmdFdmVudExpc3Q9e3Byb3BzLnRyYWNraW5nRXZlbnRMaXN0fVxuICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgPlxuICAgICAgICB7KHsgaXNBdXRoZW50aWNhdGVkIH0pID0+IHtcbiAgICAgICAgICBpZiAoaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2xvZ291dFwiPlxuICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0VG9Mb2dvdXQgLz5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgIDxSb3V0ZT5cbiAgICAgICAgICAgICAgICAgIDxSZXN0cmljdGVkQXBwbGljYXRpb248QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZlYXR1cmVGbGFncz17cHJvcHMuZGVmYXVsdEZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZUZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4250
4247
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
4251
4248
|
};
|
|
4252
4249
|
|
|
@@ -4332,7 +4329,7 @@ var RestrictedApplication = function RestrictedApplication(props) {
|
|
|
4332
4329
|
flags: props.featureFlags,
|
|
4333
4330
|
defaultFlags: props.defaultFeatureFlags,
|
|
4334
4331
|
children: jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
4335
|
-
children: [jsxRuntime.jsx(VersionTracker, {}), jsxRuntime.jsx(applicationEntryPoint.RequestsInFlightLoader, {}), jsxRuntime.jsx(sentry.SentryUserTracker, {
|
|
4332
|
+
children: [jsxRuntime.jsx(ThemeSwitcher, {}), jsxRuntime.jsx(VersionTracker, {}), jsxRuntime.jsx(applicationEntryPoint.RequestsInFlightLoader, {}), jsxRuntime.jsx(sentry.SentryUserTracker, {
|
|
4336
4333
|
user: user !== null && user !== void 0 ? user : undefined
|
|
4337
4334
|
}), jsxRuntime.jsx(GtmUserTracker, {
|
|
4338
4335
|
user: user
|
|
@@ -4341,7 +4338,7 @@ var RestrictedApplication = function RestrictedApplication(props) {
|
|
|
4341
4338
|
projectKey: projectKeyFromUrl,
|
|
4342
4339
|
userBusinessRole: (_user$businessRole = user === null || user === void 0 ? void 0 : user.businessRole) !== null && _user$businessRole !== void 0 ? _user$businessRole : undefined
|
|
4343
4340
|
}), jsxRuntime.jsxs("div", {
|
|
4344
|
-
css: /*#__PURE__*/react$2.css("height:100vh;display:grid;grid-template-rows:auto ", constants.DIMENSIONS.header, " 1fr;grid-template-columns:auto 1fr;" + (process.env.NODE_ENV === "production" ? "" : ";label:RestrictedApplication;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpUWdDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgdHlwZW9mIExPR09VVF9SRUFTT05TW2tleW9mIHR5cGVvZiBMT0dPVVRfUkVBU09OU11cbiAgICAgICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLlVOQVVUSE9SSVpFRDtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuREVMRVRFRDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9nb3V0IHJlYXNvbj17bG9nb3V0UmVhc29ufSAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgdGhlIGxvY2FsZSBvZiB0aGUgdXNlciwgd2UgcGljayBpdCBmcm9tIHRoZVxuICAgICAgICAgIC8vIHVzZXIncyBicm93c2VyIHRvIGF0dGVtcHQgdG8gbWF0Y2ggdGhlIGxhbmd1YWdlIGZvciB0aGUgY29ycmVjdCB0cmFuc2xhdGlvbnMuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyPy5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nTG9jYWxlRGF0YSwgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlclxuICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyB0aGUgbGFuZ3VhZ2UgYXMgbG9uZyBhcyB0aGUgbG9jYWxlIGRhdGFcbiAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2FkZWQuXG4gICAgICAgICAgICAgICAgICB7Li4uKGlzTG9hZGluZ0xvY2FsZURhdGEgPyB7fSA6IHsgbG9jYWxlLCBtZXNzYWdlcyB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICBsZENsaWVudFNpZGVJZD17YXBwbGljYXRpb25FbnZpcm9ubWVudC5sZENsaWVudFNpZGVJZH1cbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxWZXJzaW9uVHJhY2tlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIHsvKiBOT1RFOiB0aGUgcmVxdWVzdHMgaW4gZmxpZ2h0IGxvYWRlciB3aWxsIHJlbmRlciBhIGxvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICBzcGlubmVyIGludG8gdGhlIEFwcEJhci4gKi99XG4gICAgICAgICAgICAgICAgICAgICAgPFJlcXVlc3RzSW5GbGlnaHRMb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VudHJ5VXNlclRyYWNrZXIgdXNlcj17dXNlciA/PyB1bmRlZmluZWR9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEd0bVVzZXJUcmFja2VyIHVzZXI9e3VzZXJ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEd0bUFwcGxpY2F0aW9uVHJhY2tlclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25OYW1lPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmFwcGxpY2F0aW9uTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlckJ1c2luZXNzUm9sZT17dXNlcj8uYnVzaW5lc3NSb2xlID8/IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gJHtESU1FTlNJT05TLmhlYWRlcn0gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bm90aWZpY2F0aW9uc0dsb2JhbFJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInJlZ2lvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuR0xPQkFMfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RLZXlGcm9tVXJsKSByZXR1cm4gPFF1aWNrQWNjZXNzIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNQcm9qZWN0TG9hZGluZywgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUHJvamVjdExvYWRpbmcgfHwgIXByb2plY3QpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiB1c2VkIG91dHNpZGUgb2YgYSBwcm9qZWN0IGNvbnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Igd2hlbiB0aGUgcHJvamVjdCBpcyBleHBpcmVkIG9yIHN1cHNlbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZFVzZVByb2plY3RDb250ZXh0ID0gIShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LnN1c3BlbnNpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdC5zdXNwZW5zaW9uLmlzQWN0aXZlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2plY3QuZXhwaXJ5ICYmIHByb2plY3QuZXhwaXJ5LmlzQWN0aXZlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNob3VsZFVzZVByb2plY3RDb250ZXh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlcz17cHJvamVjdC5sYW5ndWFnZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZTogZGF0YUxvY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcm9qZWN0RGF0YUxvY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e3Byb2plY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0RGF0YUxvY2FsZT17ZGF0YUxvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxRdWlja0FjY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVByb2plY3REYXRhTG9jYWxlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcm9qZWN0RGF0YUxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3REYXRhTG9jYWxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZldGNoUHJvamVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwQmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybD17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGFzaWRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSA8TmF2QmFyPiBzaG91bGQgb25seSBiZSByZW5kZXJlZCB3aXRoaW4gYSBwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGV4dCwgdGhlcmVmb3JlIHdoZW4gdGhlcmUgaXMgYSBgcHJvamVjdEtleWAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gYHByb2plY3RLZXlgIGluIHRoZSBVUkwgKGUuZy4gYC9hY2NvdW50YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJvdXRlcyksIHdlIGRvbid0IHJlbmRlciBpdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiB3ZSBhbHNvIFwiY2FjaGVcIiB0aGUgYHByb2plY3RLZXlgIGluIGxvY2FsU3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gXCJyZS1oeWRyYXRlXCIgdGhlIFVSTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2F0aW9uIChlLmcgd2hlbiB5b3UgZ28gdG8gYC9gLCB0aGVyZSBzaG91bGQgYmUgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZGlyZWN0IHRvIGAvOnByb2plY3RLZXlgKS4gVGhlcmVmb3JlLCB3ZSBzaG91bGQgbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVseSBvbiB0aGUgdmFsdWUgaW4gbG9jYWxTdG9yYWdlIHRvIGRldGVybWluZSB3aGljaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGBwcm9qZWN0S2V5YCBpcyBjdXJyZW50bHkgdXNlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RLZXlGcm9tVXJsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1Byb2plY3QsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbmRlciB0aGUgbG9hZGluZyBuYXZiYXIgYXMgbG9uZyBhcyBhbGwgdGhlIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXNuJ3QgYmVlbiBsb2FkZWQsIG9yIGlmIHRoZSBwcm9qZWN0IGRvZXMgbm90IGV4aXN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1VzZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0xvY2FsZURhdGEgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1Byb2plY3QgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFsb2NhbGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxMb2FkaW5nTmF2QmFyIC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogZG8gbm90IHBhc3MgdGhlIGBwcm9qZWN0YCBpbnRvIHRoZSBhcHBsaWNhdGlvbiBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcGVybWlzc2lvbnMgZm9yIHRoZSBOYXZiYXIgYXJlIHJlc29sdmVkIHNlcGFyYXRlbHksIHdpdGhpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGRpZmZlcmVudCBSZWFjdCBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TmF2QmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Mb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiByZWY9e25vdGlmaWNhdGlvbnNQYWdlUmVmfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuUEFHRX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlNJREV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgb25seSBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBoYXZlIGFuIGludGVybWVkaWFyeSA8ZGl2PiB3cmFwcGluZyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpZXc+IGNvbXBvbmVudCB0aGF0IGlzIHVzZWQgdG8gd3JhcCBldmVyeSBjb250ZW50LXZpZXcuIFRoaXMgaW50ZXJtZWRpYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+IGlzIHNvbGVseSB1c2VkIGZvciBhZGRpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIGNvbnRlbnQtdmlldy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhpcyBjb3VsZCBiZSBkb25lIGJ5IHBhc3NpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIDxWaWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbGV0IGl0IGRvIHRoZSBsYXlvdXQsIHNvIHdlIGNhbiBhdm9pZCBsYXlpbmcgb3VyIGZyb20gdGhlIG91dHNpZGUgYXMgd2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gKjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQb3J0YWxzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtsYXlvdXRSZWZzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3A9e0RJTUVOU0lPTlMuaGVhZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybCA/IERJTUVOU0lPTlMubmF2TWVudSA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdE9uRXhwYW5kZWRNZW51PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBESU1FTlNJT05TLm5hdk1lbnVFeHBhbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbT1cIi9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bz1cIi9hY2NvdW50L3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9hY2NvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgcmVuZGVyYCBmdW5jdGlvbiwgd2UgYXNzdW1lIGl0J3Mgb25lIG9mIHR3byBjYXNlczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDEuIFRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCB1c2UgYGNoaWxkcmVuYCBhbmQgdGhlcmVmb3JlIGltcGxlbWVudHMgdGhlIHJvdXRlcyBpbmNsdWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSA8Um91dGVDYXRjaEFsbD4gKHRoaXMgaXMgdGhlIFwibGVnYWN5XCIgYmVoYXZpb3IpLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMi4gSXQncyB0aGUgYWNjb3VudCBhcHBsaWNhdGlvbiwgd2hpY2ggYWx3YXlzIHVzZXMgYHJlbmRlcmAgYW5kIHRoZXJlZm9yZSBzaG91bGQgcmVuZGVyIGFzIG5vcm1hbC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgY2hpbGRyZW5gIGZ1bmN0aW9uLCB3ZSBjYW4gYWx3YXlzIGFzc3VtZSB0aGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpdCdzIGEgbm9ybWFsIEN1c3RvbSBBcHBsaWNhdGlvbiBhbmQgdGhhdCBpdCBzaG91bGQgdHJpZ2dlciBhIGZvcmNlIHJlbG9hZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMucmVuZGVyID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Pntwcm9wcy5yZW5kZXIoKX08Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZUNhdGNoQWxsIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogUHJvamVjdCByb3V0ZXMgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9XCIvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUHJvamVjdEtleSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFByZXZpb3VzUHJvamVjdEtleShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPy5kZWZhdWx0UHJvamVjdEtleSA/PyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOT1RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciBoYXMgbm90IGJlZW4gbG9hZGVkIGEgbG9hZGluZyBzcGlubmVyIGlzIHNob3duLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgbm90IHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgbm9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBjcmVhdGUgb25lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBvciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlZGlyZWN0IHRvIHRoYXQgcHJvamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VyKSByZXR1cm4gPEFwcGxpY2F0aW9uTG9hZGVyIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1Byb2plY3RLZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3QgdG89e2AvJHtwcmV2aW91c1Byb2plY3RLZXl9YH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9XCIvOnByb2plY3RLZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KHJvdXRlclByb3BzKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdENvbnRhaW5lcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaD17cm91dGVyUHJvcHMubWF0Y2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uPXtyb3V0ZXJQcm9wcy5sb2NhdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVjaz17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBlZmZlY3RpdmVseSByZW5kZXJzIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGlsZHJlbiwgd2hpY2ggaXMgdGhlIGFwcGxpY2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Td2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgPC9TZXR1cEZsb3BGbGlwUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICA8L0ZldGNoVXNlcj5cbiAgKTtcbn07XG5SZXN0cmljdGVkQXBwbGljYXRpb24uZGlzcGxheU5hbWUgPSAnUmVzdHJpY3RlZEFwcGxpY2F0aW9uJztcblxuY29uc3QgQXBwbGljYXRpb25TaGVsbCA9IDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzIGV4dGVuZHMge30+KFxuICBwcm9wczogUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbikgPT4ge1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHByb3BzLm9uUmVnaXN0ZXJFcnJvckxpc3RlbmVycz8uKHtcbiAgICAgIGRpc3BhdGNoOiBpbnRlcm5hbFJlZHV4U3RvcmUuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7IC8vIDwtLSBydW4gb25seSBvbmNlLCB3aGVuIGNvbXBvbmVudCBtb3VudHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT1cImRlZmF1bHRcIiAvPlxuICAgICAgPEdsb2JhbFN0eWxlcyAvPlxuICAgICAgPEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICBhcG9sbG9DbGllbnQ9e3Byb3BzLmFwb2xsb0NsaWVudH1cbiAgICAgICAgZW52aXJvbm1lbnQ9e3Byb3BzLmVudmlyb25tZW50fVxuICAgICAgICB0cmFja2luZ0V2ZW50TGlzdD17cHJvcHMudHJhY2tpbmdFdmVudExpc3R9XG4gICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICA+XG4gICAgICAgIHsoeyBpc0F1dGhlbnRpY2F0ZWQgfSkgPT4ge1xuICAgICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvbG9nb3V0XCI+XG4gICAgICAgICAgICAgICAgICA8UmVkaXJlY3RUb0xvZ291dCAvPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgPFJlc3RyaWN0ZWRBcHBsaWNhdGlvbjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmVhdHVyZUZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlRmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVja1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgIDwvUmVzdHJpY3RlZEFwcGxpY2F0aW9uPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgIDwvU3dpdGNoPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9naW4gLz47XG4gICAgICAgIH19XG4gICAgICA8L0FwcGxpY2F0aW9uU2hlbGxQcm92aWRlcj5cbiAgICA8Lz5cbiAgKTtcbn07XG5BcHBsaWNhdGlvblNoZWxsLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGwnO1xuQXBwbGljYXRpb25TaGVsbC52ZXJzaW9uID0gdmVyc2lvbjtcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbDtcbiJdfQ== */"),
|
|
4341
|
+
css: /*#__PURE__*/react$2.css("height:100vh;display:grid;grid-template-rows:auto ", constants.DIMENSIONS.header, " 1fr;grid-template-columns:auto 1fr;" + (process.env.NODE_ENV === "production" ? "" : ";label:RestrictedApplication;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrUWdDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQge1xuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG4gIHR5cGUgU3ludGhldGljRXZlbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IERPTUFJTlMsIExPR09VVF9SRUFTT05TIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHVzZUFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBQb3J0YWxzQ29udGFpbmVyIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgdmVyc2lvbiBmcm9tICcuLi8uLi92ZXJzaW9uJztcbmltcG9ydCBpbnRlcm5hbFJlZHV4U3RvcmUgZnJvbSAnLi4vLi4vY29uZmlndXJlLXN0b3JlJztcbmltcG9ydCB7IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLCBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBESU1FTlNJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgVGhlbWVTd2l0Y2hlciBmcm9tICcuLi90aGVtZS1zd2l0Y2hlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuL2dsb2JhbC1zdHlsZXMnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM/OiAoYXJnczogeyBkaXNwYXRjaDogRGlzcGF0Y2ggfSkgPT4gdm9pZDtcbiAgb25NZW51SXRlbUNsaWNrPzogPFRyYWNrRm4+KFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sXG4gICAgdHJhY2s6IFRyYWNrRm5cbiAgKSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlbmRlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIGlzIGNvbnNpZGVyZWQgXCJhdXRoZW50aWNhdGVkXCJcbiAqIGFuZCBjb250YWlucyB0aGUgXCJyZXN0cmljdGVkXCIgYXBwbGljYXRpb24gcGFydC5cbiAqL1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDI7XG4gIGdyaWQtcm93OiAzO1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuZXhwb3J0IGNvbnN0IFJlc3RyaWN0ZWRBcHBsaWNhdGlvbiA9IDxcbiAgQWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9XG4+KFxuICBwcm9wczogT21pdDxcbiAgICBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPixcbiAgICAnZW52aXJvbm1lbnQnIHwgJ29uUmVnaXN0ZXJFcnJvckxpc3RlbmVycydcbiAgPlxuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgdHlwZW9mIExPR09VVF9SRUFTT05TW2tleW9mIHR5cGVvZiBMT0dPVVRfUkVBU09OU11cbiAgICAgICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLlVOQVVUSE9SSVpFRDtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuREVMRVRFRDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvTG9nb3V0IHJlYXNvbj17bG9nb3V0UmVhc29ufSAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgdGhlIGxvY2FsZSBvZiB0aGUgdXNlciwgd2UgcGljayBpdCBmcm9tIHRoZVxuICAgICAgICAgIC8vIHVzZXIncyBicm93c2VyIHRvIGF0dGVtcHQgdG8gbWF0Y2ggdGhlIGxhbmd1YWdlIGZvciB0aGUgY29ycmVjdCB0cmFuc2xhdGlvbnMuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXJMb2NhbGV9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnRFcnJvclRvU2VudHJ5KGVycm9yLCB7fSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXIgbG9jYWxlPXtsb2NhbGV9IG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckFwb2xvZ2l6ZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQ29uZmlndXJlSW50bFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdEtleUZyb21VcmwgPSBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybChsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyPy5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nTG9jYWxlRGF0YSwgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlclxuICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyB0aGUgbGFuZ3VhZ2UgYXMgbG9uZyBhcyB0aGUgbG9jYWxlIGRhdGFcbiAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2FkZWQuXG4gICAgICAgICAgICAgICAgICB7Li4uKGlzTG9hZGluZ0xvY2FsZURhdGEgPyB7fSA6IHsgbG9jYWxlLCBtZXNzYWdlcyB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICBsZENsaWVudFNpZGVJZD17YXBwbGljYXRpb25FbnZpcm9ubWVudC5sZENsaWVudFNpZGVJZH1cbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxUaGVtZVN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyID8/IHVuZGVmaW5lZH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtVXNlclRyYWNrZXIgdXNlcj17dXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtQXBwbGljYXRpb25UcmFja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk5hbWU9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnQuYXBwbGljYXRpb25OYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyQnVzaW5lc3NSb2xlPXt1c2VyPy5idXNpbmVzc1JvbGUgPz8gdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byAke0RJTUVOU0lPTlMuaGVhZGVyfSAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtub3RpZmljYXRpb25zR2xvYmFsUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5HTE9CQUx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc1Byb2plY3RMb2FkaW5nLCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcm9qZWN0TG9hZGluZyB8fCAhcHJvamVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHVzZWQgb3V0c2lkZSBvZiBhIHByb2plY3QgY29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB3aGVuIHRoZSBwcm9qZWN0IGlzIGV4cGlyZWQgb3Igc3Vwc2VuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkVXNlUHJvamVjdENvbnRleHQgPSAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2plY3Quc3VzcGVuc2lvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LnN1c3BlbnNpb24uaXNBY3RpdmUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5leHBpcnkgJiYgcHJvamVjdC5leHBpcnkuaXNBY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkVXNlUHJvamVjdENvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFF1aWNrQWNjZXNzIC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0RGF0YUxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVzPXtwcm9qZWN0Lmxhbmd1YWdlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBkYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3REYXRhTG9jYWxlPXtkYXRhTG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFF1aWNrQWNjZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUHJvamVjdERhdGFMb2NhbGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdERhdGFMb2NhbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDxOYXZCYXI+IHNob3VsZCBvbmx5IGJlIHJlbmRlcmVkIHdpdGhpbiBhIHByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LCB0aGVyZWZvcmUgd2hlbiB0aGVyZSBpcyBhIGBwcm9qZWN0S2V5YC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBgcHJvamVjdEtleWAgaW4gdGhlIFVSTCAoZS5nLiBgL2FjY291bnRgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVzKSwgd2UgZG9uJ3QgcmVuZGVyIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIGFsc28gXCJjYWNoZVwiIHRoZSBgcHJvamVjdEtleWAgaW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBcInJlLWh5ZHJhdGVcIiB0aGUgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gKGUuZyB3aGVuIHlvdSBnbyB0byBgL2AsIHRoZXJlIHNob3VsZCBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gYC86cHJvamVjdEtleWApLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWx5IG9uIHRoZSB2YWx1ZSBpbiBsb2NhbFN0b3JhZ2UgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYHByb2plY3RLZXlgIGlzIGN1cnJlbnRseSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nUHJvamVjdCwgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBsb2FkaW5nIG5hdmJhciBhcyBsb25nIGFzIGFsbCB0aGUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhc24ndCBiZWVuIGxvYWRlZCwgb3IgaWYgdGhlIHByb2plY3QgZG9lcyBub3QgZXhpc3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXNlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nTG9jYWxlRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nUHJvamVjdCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdOYXZCYXIgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBkbyBub3QgcGFzcyB0aGUgYHByb2plY3RgIGludG8gdGhlIGFwcGxpY2F0aW9uIGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwZXJtaXNzaW9ucyBmb3IgdGhlIE5hdmJhciBhcmUgcmVzb2x2ZWQgc2VwYXJhdGVseSwgd2l0aGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgZGlmZmVyZW50IFJlYWN0IGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e3Byb2plY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZldGNoUHJvamVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hc2lkZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAge2lzTG9hZGluZ1VzZXIgfHwgaXNMb2FkaW5nTG9jYWxlRGF0YSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Mb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1haW5Db250YWluZXIgcm9sZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17bm90aWZpY2F0aW9uc1BhZ2VSZWZ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e2xheW91dFJlZnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcD17RElNRU5TSU9OUy5oZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsID8gRElNRU5TSU9OUy5uYXZNZW51IDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0T25FeHBhbmRlZE1lbnU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IERJTUVOU0lPTlMubmF2TWVudUV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvPVwiL2FjY291bnQvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2FjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGByZW5kZXJgIGZ1bmN0aW9uLCB3ZSBhc3N1bWUgaXQncyBvbmUgb2YgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHVzZSBgY2hpbGRyZW5gIGFuZCB0aGVyZWZvcmUgaW1wbGVtZW50cyB0aGUgcm91dGVzIGluY2x1ZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIDxSb3V0ZUNhdGNoQWxsPiAodGhpcyBpcyB0aGUgXCJsZWdhY3lcIiBiZWhhdmlvcikuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAyLiBJdCdzIHRoZSBhY2NvdW50IGFwcGxpY2F0aW9uLCB3aGljaCBhbHdheXMgdXNlcyBgcmVuZGVyYCBhbmQgdGhlcmVmb3JlIHNob3VsZCByZW5kZXIgYXMgbm9ybWFsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGBjaGlsZHJlbmAgZnVuY3Rpb24sIHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0J3MgYSBub3JtYWwgQ3VzdG9tIEFwcGxpY2F0aW9uIGFuZCB0aGF0IGl0IHNob3VsZCB0cmlnZ2VyIGEgZm9yY2UgcmVsb2FkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZW5kZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+e3Byb3BzLnJlbmRlcigpfTwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlQ2F0Y2hBbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQcm9qZWN0IHJvdXRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9qZWN0S2V5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJldmlvdXNQcm9qZWN0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI/LmRlZmF1bHRQcm9qZWN0S2V5ID8/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5PVEU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIGhhcyBub3QgYmVlbiBsb2FkZWQgYSBsb2FkaW5nIHNwaW5uZXIgaXMgc2hvd24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyBub3Qgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBub3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIGNyZWF0ZSBvbmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIGFwcGxpY2F0aW9uIHdpbGwgcmVkaXJlY3QgdG8gdGhhdCBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXIpIHJldHVybiA8QXBwbGljYXRpb25Mb2FkZXIgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUHJvamVjdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz17YC8ke3ByZXZpb3VzUHJvamVjdEtleX1gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi86cHJvamVjdEtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsocm91dGVyUHJvcHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0Q29udGFpbmVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoPXtyb3V0ZXJQcm9wcy5tYXRjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb249e3JvdXRlclByb3BzLmxvY2F0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzPy4oe1xuICAgICAgZGlzcGF0Y2g6IGludGVybmFsUmVkdXhTdG9yZS5kaXNwYXRjaCxcbiAgICB9KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtdKTsgLy8gPC0tIHJ1biBvbmx5IG9uY2UsIHdoZW4gY29tcG9uZW50IG1vdW50c1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxHbG9iYWxTdHlsZXMgLz5cbiAgICAgIDxBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgYXBvbGxvQ2xpZW50PXtwcm9wcy5hcG9sbG9DbGllbnR9XG4gICAgICAgIGVudmlyb25tZW50PXtwcm9wcy5lbnZpcm9ubWVudH1cbiAgICAgICAgdHJhY2tpbmdFdmVudExpc3Q9e3Byb3BzLnRyYWNraW5nRXZlbnRMaXN0fVxuICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgPlxuICAgICAgICB7KHsgaXNBdXRoZW50aWNhdGVkIH0pID0+IHtcbiAgICAgICAgICBpZiAoaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2xvZ291dFwiPlxuICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0VG9Mb2dvdXQgLz5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgIDxSb3V0ZT5cbiAgICAgICAgICAgICAgICAgIDxSZXN0cmljdGVkQXBwbGljYXRpb248QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZlYXR1cmVGbGFncz17cHJvcHMuZGVmYXVsdEZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZUZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJvdXRlUGVybWlzc2lvbkNoZWNrPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */"),
|
|
4345
4342
|
children: [jsxRuntime.jsx("div", {
|
|
4346
4343
|
ref: notificationsGlobalRef,
|
|
4347
4344
|
role: "region",
|
|
@@ -4531,9 +4528,7 @@ var ApplicationShell = function ApplicationShell(props) {
|
|
|
4531
4528
|
}, []); // <-- run only once, when component mounts
|
|
4532
4529
|
|
|
4533
4530
|
return jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
4534
|
-
children: [jsxRuntime.jsx(
|
|
4535
|
-
theme: "default"
|
|
4536
|
-
}), jsxRuntime.jsx(GlobalStyles, {}), jsxRuntime.jsx(ApplicationShellProvider, {
|
|
4531
|
+
children: [jsxRuntime.jsx(GlobalStyles, {}), jsxRuntime.jsx(ApplicationShellProvider, {
|
|
4537
4532
|
apolloClient: props.apolloClient,
|
|
4538
4533
|
environment: props.environment,
|
|
4539
4534
|
trackingEventList: props.trackingEventList,
|