@commercetools-frontend/application-shell 21.23.10 → 21.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/application-entry-point-47d5c548.cjs.dev.js +116 -0
- package/dist/application-entry-point-5619d5aa.cjs.prod.js +99 -0
- package/dist/application-entry-point-dc726674.esm.js +101 -0
- package/dist/{box-dd9e7e68.esm.js → box-4395623b.esm.js} +1 -3
- package/dist/{box-fdb2ccb6.cjs.dev.js → box-6b5be9a9.cjs.dev.js} +1 -3
- package/dist/{box-d849ea03.cjs.prod.js → box-8850277f.cjs.prod.js} +1 -3
- package/dist/{cart-ad0aba9b.cjs.prod.js → cart-0698b97d.cjs.prod.js} +1 -3
- package/dist/{cart-b92f3a8e.cjs.dev.js → cart-41f0b7bc.cjs.dev.js} +1 -3
- package/dist/{cart-167fea3b.esm.js → cart-a49faf67.esm.js} +1 -3
- package/dist/commercetools-frontend-application-shell.cjs.dev.js +49 -68
- package/dist/commercetools-frontend-application-shell.cjs.prod.js +49 -68
- package/dist/commercetools-frontend-application-shell.esm.js +39 -58
- package/dist/configure-apollo-942ef373.cjs.prod.js +922 -0
- package/dist/configure-apollo-a6f03ff8.cjs.dev.js +930 -0
- package/dist/configure-apollo-cc0b1668.esm.js +873 -0
- package/dist/{connected-square-4743b7de.esm.js → connected-square-3cac6bd7.esm.js} +1 -3
- package/dist/connected-square-47233754.cjs.dev.js +32 -0
- package/dist/connected-square-b2e25621.cjs.prod.js +32 -0
- package/dist/{constants-69249abd.esm.js → constants-7f04db3f.esm.js} +9 -9
- package/dist/{constants-88fb9ef8.cjs.prod.js → constants-e6409334.cjs.prod.js} +8 -8
- package/dist/{constants-c2d56f3d.cjs.dev.js → constants-e6f058e5.cjs.dev.js} +8 -8
- package/dist/declarations/src/apollo-links/utils.d.ts +2 -2
- package/dist/declarations/src/components/application-entry-point/application-entry-point.d.ts +4 -4
- package/dist/declarations/src/components/application-shell/application-shell.d.ts +7 -15
- package/dist/declarations/src/components/application-shell-authenticated/application-shell-authenticated.d.ts +21 -0
- package/dist/declarations/src/components/application-shell-provider/application-shell-provider.d.ts +6 -7
- package/dist/declarations/src/components/application-shell-provider/use-coerced-environment-values.d.ts +1 -23
- package/dist/declarations/src/components/authenticated/authenticated.d.ts +2 -2
- package/dist/declarations/src/components/authenticated/oidc-callback.async.d.ts +6 -0
- package/dist/declarations/src/components/authenticated/oidc-callback.d.ts +2 -2
- package/dist/declarations/src/components/configure-intl-provider/configure-intl-provider.d.ts +1 -1
- package/dist/declarations/src/components/error-apologizer/index.d.ts +6 -1
- package/dist/declarations/src/components/fetch-project/fetch-project.d.ts +4 -4
- package/dist/declarations/src/components/fetch-user/fetch-user.d.ts +3 -3
- package/dist/declarations/src/components/inject-reducers/inject-reducers.d.ts +1 -1
- package/dist/declarations/src/components/navbar/index.d.ts +100 -1
- package/dist/declarations/src/components/navbar/loading-navbar.d.ts +5 -0
- package/dist/declarations/src/components/navbar/menu-items.d.ts +99 -0
- package/dist/declarations/src/components/navbar/navbar.d.ts +6 -15
- package/dist/declarations/src/components/project-container/index.d.ts +78 -1
- package/dist/declarations/src/components/project-container/project-container.d.ts +6 -8
- package/dist/declarations/src/components/quick-access/butler-command/butler-command.d.ts +1 -1
- package/dist/declarations/src/components/quick-access/index.d.ts +2 -2
- package/dist/declarations/src/components/quick-access/types.d.ts +1 -1
- package/dist/declarations/src/components/redirect-to-login/index.d.ts +6 -0
- package/dist/declarations/src/components/redirect-to-logout/index.d.ts +5 -0
- package/dist/declarations/src/components/redirect-to-project-create/index.d.ts +6 -1
- package/dist/declarations/src/components/requests-in-flight-loader/index.d.ts +6 -1
- package/dist/declarations/src/components/route-catch-all/index.d.ts +3 -1
- package/dist/declarations/src/components/setup-flop-flip-provider/setup-flop-flip-provider.d.ts +3 -3
- package/dist/declarations/src/components/suspended-route/suspended-route.d.ts +1 -1
- package/dist/declarations/src/components/user-settings-menu/index.d.ts +12 -1
- package/dist/declarations/src/components/version-tracker/index.d.ts +6 -1
- package/dist/declarations/src/hooks/apollo-hooks/apollo-hooks.d.ts +1 -1
- package/dist/declarations/src/test-utils/test-utils.d.ts +2 -2
- package/dist/declarations/src/types/generated/mc.d.ts +3 -3
- package/dist/declarations/src/utils/get-mc-origin/get-mc-origin.d.ts +2 -0
- package/dist/declarations/src/utils/get-mc-origin/index.d.ts +1 -0
- package/dist/error-apologizer-c336db61.cjs.dev.js +56 -0
- package/dist/error-apologizer-c55ec6f7.cjs.prod.js +56 -0
- package/dist/error-apologizer-f8772b68.esm.js +42 -0
- package/dist/gear-2890f7fb.cjs.prod.js +32 -0
- package/dist/{gear-8418cd46.esm.js → gear-300dd24c.esm.js} +1 -3
- package/dist/gear-e8014c5a.cjs.dev.js +32 -0
- package/dist/get-mc-origin-314b77a2.cjs.dev.js +57 -0
- package/dist/get-mc-origin-5df60933.esm.js +50 -0
- package/dist/get-mc-origin-7968e04f.cjs.prod.js +57 -0
- package/dist/heart-000a023d.cjs.prod.js +32 -0
- package/dist/{heart-48c28091.esm.js → heart-dded66b4.esm.js} +1 -3
- package/dist/heart-f21b7d39.cjs.dev.js +32 -0
- package/dist/index-3765c4c9.cjs.prod.js +2870 -0
- package/dist/index-3fdf5681.esm.js +2970 -0
- package/dist/index-b9b8b690.cjs.dev.js +3054 -0
- package/dist/{list-with-search-c154a56e.esm.js → list-with-search-a3302710.esm.js} +1 -3
- package/dist/list-with-search-a5b72b33.cjs.prod.js +32 -0
- package/dist/list-with-search-ee796e9e.cjs.dev.js +32 -0
- package/dist/navbar-08a76df9.cjs.dev.js +670 -0
- package/dist/navbar-5384b0c3.esm.js +650 -0
- package/dist/navbar-c02843fb.cjs.prod.js +649 -0
- package/dist/oidc-0638d0c8.cjs.dev.js +67 -0
- package/dist/oidc-10fa96f0.esm.js +59 -0
- package/dist/oidc-540a091a.cjs.prod.js +67 -0
- package/dist/oidc-callback-152dc622.esm.js +240 -0
- package/dist/oidc-callback-784c3a39.cjs.prod.js +251 -0
- package/dist/oidc-callback-dc8682c0.cjs.dev.js +254 -0
- package/dist/paperclip-23d1e69c.cjs.prod.js +32 -0
- package/dist/{paperclip-18785dda.esm.js → paperclip-a61112e8.esm.js} +1 -3
- package/dist/paperclip-d653c134.cjs.dev.js +32 -0
- package/dist/plugin-0ee6aee4.cjs.dev.js +32 -0
- package/dist/{plugin-53c047bb.esm.js → plugin-3d353a5b.esm.js} +1 -3
- package/dist/plugin-7e57f237.cjs.prod.js +32 -0
- package/dist/project-container-6f0ea904.cjs.dev.js +387 -0
- package/dist/project-container-b6b2f6b2.esm.js +368 -0
- package/dist/project-container-bf8678e2.cjs.prod.js +369 -0
- package/dist/{project-expired-d8eaa253.esm.js → project-expired-6b9b6feb.esm.js} +47 -68
- package/dist/{project-expired-adce523b.cjs.dev.js → project-expired-9d71c314.cjs.dev.js} +47 -68
- package/dist/{project-expired-576a8329.cjs.prod.js → project-expired-d75d9e84.cjs.prod.js} +47 -68
- package/dist/{project-not-found-9a9753f2.cjs.dev.js → project-not-found-4b5b9479.cjs.prod.js} +42 -61
- package/dist/{project-not-found-8208c8f1.esm.js → project-not-found-c4634d60.esm.js} +42 -61
- package/dist/{project-not-found-daa5200b.cjs.prod.js → project-not-found-c977dbb0.cjs.dev.js} +42 -61
- package/dist/{project-not-initialized-4aeafe19.cjs.dev.js → project-not-initialized-4d0badf3.cjs.prod.js} +47 -68
- package/dist/{project-not-initialized-3408e87f.esm.js → project-not-initialized-a2f7b46e.esm.js} +47 -68
- package/dist/{project-not-initialized-5b416bcf.cjs.prod.js → project-not-initialized-e1533577.cjs.dev.js} +47 -68
- package/dist/{project-suspended-d3a6001d.cjs.dev.js → project-suspended-9027fc60.cjs.prod.js} +44 -63
- package/dist/{project-suspended-dc9ace34.cjs.prod.js → project-suspended-9e084c21.cjs.dev.js} +44 -63
- package/dist/{project-suspended-a7edc962.esm.js → project-suspended-f3d78447.esm.js} +44 -63
- package/dist/{quick-access-f42a8e0a.cjs.prod.js → quick-access-517ad7e1.cjs.prod.js} +573 -957
- package/dist/quick-access-82e1c9aa.esm.js +1907 -0
- package/dist/quick-access-8b2b678f.cjs.dev.js +1937 -0
- package/dist/redirect-to-login-1b892ab5.esm.js +147 -0
- package/dist/redirect-to-login-2be0e5db.cjs.prod.js +149 -0
- package/dist/redirect-to-login-64230f67.cjs.dev.js +149 -0
- package/dist/redirect-to-logout-15810ffb.cjs.dev.js +151 -0
- package/dist/redirect-to-logout-17e4ba2c.cjs.prod.js +151 -0
- package/dist/redirect-to-logout-80e772d1.esm.js +138 -0
- package/dist/redirect-to-project-create-048efa71.cjs.prod.js +61 -0
- package/dist/redirect-to-project-create-052f293e.esm.js +52 -0
- package/dist/redirect-to-project-create-f0e7b35e.cjs.dev.js +61 -0
- package/dist/{gear-28ff4f04.cjs.dev.js → redirector-0d98f9df.cjs.dev.js} +44 -5
- package/dist/redirector-47a6be71.esm.js +58 -0
- package/dist/{gear-6f8c30e3.cjs.prod.js → redirector-77ce2f5c.cjs.prod.js} +44 -5
- package/dist/requests-in-flight-loader-5329586b.esm.js +129 -0
- package/dist/requests-in-flight-loader-88f14402.cjs.dev.js +144 -0
- package/dist/requests-in-flight-loader-a7bc4e12.cjs.prod.js +144 -0
- package/dist/rocket-3e3f0a98.cjs.prod.js +32 -0
- package/dist/{rocket-ba116b5e.esm.js → rocket-4b088727.esm.js} +1 -3
- package/dist/rocket-95b6858d.cjs.dev.js +32 -0
- package/dist/route-catch-all-01cf0095.esm.js +41 -0
- package/dist/route-catch-all-3b490df1.cjs.prod.js +43 -0
- package/dist/route-catch-all-9ac99936.cjs.dev.js +43 -0
- package/dist/{service-page-project-switcher-49afafeb.cjs.prod.js → service-page-project-switcher-39dcfee8.cjs.prod.js} +5 -7
- package/dist/{service-page-project-switcher-866b2139.cjs.dev.js → service-page-project-switcher-7698339b.cjs.dev.js} +6 -8
- package/dist/{service-page-project-switcher-365c4c10.esm.js → service-page-project-switcher-fd30959b.esm.js} +6 -8
- package/dist/{speedometer-c1b94505.esm.js → speedometer-08a11d5a.esm.js} +1 -3
- package/dist/speedometer-2881cef6.cjs.prod.js +32 -0
- package/dist/speedometer-54f872f2.cjs.dev.js +32 -0
- package/dist/{star-da9123e0.esm.js → star-15244db1.esm.js} +1 -3
- package/dist/star-52bf7a64.cjs.dev.js +32 -0
- package/dist/star-f8502efb.cjs.prod.js +32 -0
- package/dist/tag-multi-1d1553b6.cjs.dev.js +32 -0
- package/dist/{tag-multi-c650b738.esm.js → tag-multi-3be995ac.esm.js} +1 -3
- package/dist/tag-multi-f9acb1c2.cjs.prod.js +32 -0
- package/dist/tree-structure-4650688d.cjs.dev.js +32 -0
- package/dist/{tree-structure-6af6fc3a.esm.js → tree-structure-c8753526.esm.js} +1 -3
- package/dist/tree-structure-f24ee3f6.cjs.prod.js +32 -0
- package/dist/use-applications-menu-4abb5796.esm.js +172 -0
- package/dist/use-applications-menu-68d83733.cjs.dev.js +188 -0
- package/dist/use-applications-menu-6b872b83.cjs.prod.js +188 -0
- package/dist/use-is-served-by-proxy-2b4916e5.cjs.dev.js +42 -0
- package/dist/use-is-served-by-proxy-499bfa16.esm.js +39 -0
- package/dist/use-is-served-by-proxy-51e76976.cjs.prod.js +42 -0
- package/dist/{user-filled-41729d77.esm.js → user-filled-2dc4e79e.esm.js} +1 -3
- package/dist/user-filled-2e6cb25e.cjs.dev.js +32 -0
- package/dist/user-filled-815b49a0.cjs.prod.js +32 -0
- package/dist/user-settings-menu-79d4cb1e.cjs.dev.js +523 -0
- package/dist/user-settings-menu-7bf6f146.cjs.prod.js +496 -0
- package/dist/user-settings-menu-ad7c27f0.esm.js +497 -0
- package/dist/version-tracker-20bb239d.esm.js +101 -0
- package/dist/version-tracker-69607d15.cjs.dev.js +107 -0
- package/dist/version-tracker-80e0f8f6.cjs.prod.js +107 -0
- package/dist/world-973090a5.cjs.dev.js +32 -0
- package/dist/{world-d91df1ee.esm.js → world-c5ea311a.esm.js} +1 -3
- package/dist/world-e1f9dbf8.cjs.prod.js +32 -0
- package/package.json +27 -27
- package/ssr/dist/commercetools-frontend-application-shell-ssr.cjs.dev.js +2 -3
- package/ssr/dist/commercetools-frontend-application-shell-ssr.cjs.prod.js +2 -3
- package/ssr/dist/commercetools-frontend-application-shell-ssr.esm.js +2 -3
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.dev.js +182 -215
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.prod.js +182 -215
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.esm.js +173 -206
- package/dist/application-entry-point-307baa50.cjs.prod.js +0 -1225
- package/dist/application-entry-point-3e14d46d.cjs.dev.js +0 -1250
- package/dist/application-entry-point-8d923438.esm.js +0 -1180
- package/dist/connected-square-abf36852.cjs.prod.js +0 -34
- package/dist/connected-square-ac52014f.cjs.dev.js +0 -34
- package/dist/declarations/src/components/application-shell/helpers.d.ts +0 -1
- package/dist/heart-33cd94c6.cjs.prod.js +0 -34
- package/dist/heart-fb31cf30.cjs.dev.js +0 -34
- package/dist/index-284fb405.esm.js +0 -4809
- package/dist/index-37414a3f.cjs.prod.js +0 -4643
- package/dist/index-ea32a85e.cjs.dev.js +0 -4888
- package/dist/list-with-search-34cd926c.cjs.dev.js +0 -34
- package/dist/list-with-search-a0b22169.cjs.prod.js +0 -34
- package/dist/oidc-1c91f5ee.cjs.prod.js +0 -67
- package/dist/oidc-5b2e4f8f.cjs.dev.js +0 -67
- package/dist/oidc-77749f1b.esm.js +0 -59
- package/dist/paperclip-2cd45b86.cjs.dev.js +0 -34
- package/dist/paperclip-b1b806ab.cjs.prod.js +0 -34
- package/dist/plugin-7cb7827e.cjs.dev.js +0 -34
- package/dist/plugin-e97ae3e6.cjs.prod.js +0 -34
- package/dist/quick-access-457a9f41.esm.js +0 -2290
- package/dist/quick-access-d553524e.cjs.dev.js +0 -2321
- package/dist/rocket-37c1aa11.cjs.dev.js +0 -34
- package/dist/rocket-b2dbda7f.cjs.prod.js +0 -34
- package/dist/speedometer-13b393fb.cjs.dev.js +0 -34
- package/dist/speedometer-1e69fd13.cjs.prod.js +0 -34
- package/dist/star-ab4be629.cjs.prod.js +0 -34
- package/dist/star-e165111e.cjs.dev.js +0 -34
- package/dist/tag-multi-5f498a7d.cjs.dev.js +0 -34
- package/dist/tag-multi-fb817131.cjs.prod.js +0 -34
- package/dist/tree-structure-779fcc36.cjs.prod.js +0 -34
- package/dist/tree-structure-ed6cdff8.cjs.dev.js +0 -34
- package/dist/user-filled-384a2eaf.cjs.prod.js +0 -34
- package/dist/user-filled-53d2eae0.cjs.dev.js +0 -34
- package/dist/world-12528632.cjs.prod.js +0 -34
- package/dist/world-6471d9f6.cjs.dev.js +0 -34
- /package/dist/declarations/src/components/{application-shell → redirect-to-login}/redirect-to-login.d.ts +0 -0
- /package/dist/declarations/src/components/{application-shell → redirect-to-logout}/redirect-to-logout.d.ts +0 -0
|
@@ -1,2321 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var _toConsumableArray = require('@babel/runtime-corejs3/helpers/toConsumableArray');
|
|
4
|
-
var _taggedTemplateLiteral = require('@babel/runtime-corejs3/helpers/taggedTemplateLiteral');
|
|
5
|
-
var _asyncToGenerator = require('@babel/runtime-corejs3/helpers/asyncToGenerator');
|
|
6
|
-
var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
|
|
7
|
-
var _pt = require('prop-types');
|
|
8
|
-
var _regeneratorRuntime = require('@babel/runtime-corejs3/regenerator');
|
|
9
|
-
var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
|
|
10
|
-
var _Array$isArray = require('@babel/runtime-corejs3/core-js-stable/array/is-array');
|
|
11
|
-
var _JSON$stringify = require('@babel/runtime-corejs3/core-js-stable/json/stringify');
|
|
12
|
-
var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
|
|
13
|
-
var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
|
|
14
|
-
var _trimInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/trim');
|
|
15
|
-
var _startsWithInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/starts-with');
|
|
16
|
-
var react$1 = require('react');
|
|
17
|
-
var reactIntl = require('react-intl');
|
|
18
|
-
var reactBroadcast = require('@flopflip/react-broadcast');
|
|
19
|
-
var react$2 = require('@apollo/client/react');
|
|
20
|
-
var reactRouterDom = require('react-router-dom');
|
|
21
|
-
var sdk = require('@commercetools-frontend/sdk');
|
|
22
|
-
var commonTags = require('common-tags');
|
|
23
|
-
var debounce = require('debounce-async');
|
|
24
|
-
var constants = require('@commercetools-frontend/constants');
|
|
25
|
-
var permissions$1 = require('@commercetools-frontend/permissions');
|
|
26
|
-
var applicationShellConnectors = require('@commercetools-frontend/application-shell-connectors');
|
|
27
|
-
var applicationEntryPoint = require('./application-entry-point-3e14d46d.cjs.dev.js');
|
|
28
|
-
var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
|
|
29
|
-
var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
|
|
30
|
-
var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
|
|
31
|
-
var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors');
|
|
32
|
-
var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
|
|
33
|
-
var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
|
|
34
|
-
var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
|
|
35
|
-
var _includesInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/includes');
|
|
36
|
-
var _sliceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/slice');
|
|
37
|
-
var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
|
|
38
|
-
var _findIndexInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/find-index');
|
|
39
|
-
var Fuse = require('fuse.js');
|
|
40
|
-
var last = require('lodash/last');
|
|
41
|
-
var react = require('@emotion/react');
|
|
42
|
-
var LoadingSpinner = require('@commercetools-uikit/loading-spinner');
|
|
43
|
-
var icons = require('@commercetools-uikit/icons');
|
|
44
|
-
var designSystem = require('@commercetools-uikit/design-system');
|
|
45
|
-
var jsxRuntime = require('@emotion/react/jsx-runtime');
|
|
46
|
-
var dist_commercetoolsFrontendApplicationShell = require('./index-ea32a85e.cjs.dev.js');
|
|
47
|
-
var _Promise = require('@babel/runtime-corejs3/core-js-stable/promise');
|
|
48
|
-
var _reduceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
|
|
49
|
-
var _findInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/find');
|
|
50
|
-
require('@babel/runtime-corejs3/core-js-stable/object/entries');
|
|
51
|
-
require('@babel/runtime-corejs3/core-js-stable/reflect/has');
|
|
52
|
-
require('lodash/mapValues');
|
|
53
|
-
require('@reduxjs/toolkit');
|
|
54
|
-
require('redux-thunk');
|
|
55
|
-
require('omit-empty-es');
|
|
56
|
-
require('@commercetools-frontend/notifications');
|
|
57
|
-
require('./constants-c2d56f3d.cjs.dev.js');
|
|
58
|
-
require('@commercetools-frontend/react-notifications');
|
|
59
|
-
require('redux-logger');
|
|
60
|
-
require('react-dom');
|
|
61
|
-
require('react-redux');
|
|
62
|
-
require('@babel/runtime-corejs3/core-js-stable/instance/index-of');
|
|
63
|
-
require('@commercetools-frontend/sentry');
|
|
64
|
-
require('@babel/runtime-corejs3/core-js-stable/url');
|
|
65
|
-
require('@apollo/client');
|
|
66
|
-
require('apollo-link-logger');
|
|
67
|
-
require('@babel/runtime-corejs3/core-js-stable/array/from');
|
|
68
|
-
require('@babel/runtime-corejs3/core-js-stable/symbol');
|
|
69
|
-
require('@babel/runtime-corejs3/core-js/get-iterator-method');
|
|
70
|
-
require('@apollo/client/link/error');
|
|
71
|
-
require('@commercetools-frontend/browser-history');
|
|
72
|
-
require('@babel/runtime-corejs3/core-js-stable/instance/some');
|
|
73
|
-
require('@babel/runtime-corejs3/core-js-stable/object/values');
|
|
74
|
-
require('@commercetools/http-user-agent');
|
|
75
|
-
require('uuid');
|
|
76
|
-
require('@babel/runtime-corejs3/core-js-stable/reflect/construct');
|
|
77
|
-
require('@babel/runtime-corejs3/helpers/createClass');
|
|
78
|
-
require('@babel/runtime-corejs3/helpers/classCallCheck');
|
|
79
|
-
require('@babel/runtime-corejs3/helpers/assertThisInitialized');
|
|
80
|
-
require('@babel/runtime-corejs3/helpers/inherits');
|
|
81
|
-
require('@babel/runtime-corejs3/helpers/possibleConstructorReturn');
|
|
82
|
-
require('@babel/runtime-corejs3/helpers/getPrototypeOf');
|
|
83
|
-
require('@babel/runtime-corejs3/helpers/wrapNativeSuper');
|
|
84
|
-
require('@apollo/client/link/retry');
|
|
85
|
-
require('tiny-invariant');
|
|
86
|
-
require('@commercetools-frontend/application-components');
|
|
87
|
-
require('@commercetools-frontend/application-config/ssr');
|
|
88
|
-
require('@emotion/styled/base');
|
|
89
|
-
require('@commercetools-frontend/i18n');
|
|
90
|
-
require('perfume.js');
|
|
91
|
-
require('@babel/runtime-corejs3/core-js-stable/instance/reverse');
|
|
92
|
-
require('lodash/camelCase');
|
|
93
|
-
require('./oidc-5b2e4f8f.cjs.dev.js');
|
|
94
|
-
require('qss');
|
|
95
|
-
require('jwt-decode');
|
|
96
|
-
require('@commercetools-frontend/assets/images/locked-diamond.svg');
|
|
97
|
-
require('@commercetools-uikit/notifications');
|
|
98
|
-
require('@commercetools-uikit/spacings');
|
|
99
|
-
require('@commercetools-uikit/constraints');
|
|
100
|
-
require('@commercetools-uikit/card');
|
|
101
|
-
require('@commercetools-uikit/text');
|
|
102
|
-
require('@commercetools-uikit/flat-button');
|
|
103
|
-
require('lodash/upperFirst');
|
|
104
|
-
require('@commercetools-frontend/assets/images/ct-logo.svg');
|
|
105
|
-
require('@commercetools-frontend/assets/images/icecream.svg');
|
|
106
|
-
require('@commercetools-frontend/l10n');
|
|
107
|
-
require('@commercetools-frontend/assets/images/logo.svg');
|
|
108
|
-
require('downshift');
|
|
109
|
-
require('@commercetools-uikit/avatar');
|
|
110
|
-
require('@commercetools-uikit/accessible-hidden');
|
|
111
|
-
require('@babel/runtime-corejs3/helpers/objectWithoutProperties');
|
|
112
|
-
require('memoize-one');
|
|
113
|
-
require('@commercetools-uikit/select-input');
|
|
114
|
-
require('lodash/isNil');
|
|
115
|
-
require('@babel/runtime-corejs3/core-js-stable/object/from-entries');
|
|
116
|
-
require('@babel/runtime-corejs3/core-js-stable/instance/flags');
|
|
117
|
-
require('@flopflip/launchdarkly-adapter');
|
|
118
|
-
require('@flopflip/http-adapter');
|
|
119
|
-
require('@flopflip/combine-adapters');
|
|
120
|
-
require('@babel/runtime-corejs3/core-js-stable/instance/every');
|
|
121
|
-
require('classnames');
|
|
122
|
-
require('@commercetools-uikit/icons/inline-svg');
|
|
123
|
-
require('@commercetools-frontend/assets/images/diagonal-line.svg');
|
|
124
|
-
require('lodash/throttle');
|
|
125
|
-
require('@commercetools-frontend/url-utils');
|
|
126
|
-
require('@commercetools-uikit/design-system/materials/resets.css');
|
|
127
|
-
require('@commercetools-frontend/actions-global');
|
|
128
|
-
|
|
129
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
130
|
-
|
|
131
|
-
var _pt__default = /*#__PURE__*/_interopDefault(_pt);
|
|
132
|
-
var _regeneratorRuntime__default = /*#__PURE__*/_interopDefault(_regeneratorRuntime);
|
|
133
|
-
var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
|
|
134
|
-
var _Array$isArray__default = /*#__PURE__*/_interopDefault(_Array$isArray);
|
|
135
|
-
var _JSON$stringify__default = /*#__PURE__*/_interopDefault(_JSON$stringify);
|
|
136
|
-
var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
|
|
137
|
-
var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachInstanceProperty);
|
|
138
|
-
var _trimInstanceProperty__default = /*#__PURE__*/_interopDefault(_trimInstanceProperty);
|
|
139
|
-
var _startsWithInstanceProperty__default = /*#__PURE__*/_interopDefault(_startsWithInstanceProperty);
|
|
140
|
-
var debounce__default = /*#__PURE__*/_interopDefault(debounce);
|
|
141
|
-
var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
|
|
142
|
-
var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
|
|
143
|
-
var _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptor);
|
|
144
|
-
var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptors);
|
|
145
|
-
var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
|
|
146
|
-
var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
|
|
147
|
-
var _includesInstanceProperty__default = /*#__PURE__*/_interopDefault(_includesInstanceProperty);
|
|
148
|
-
var _sliceInstanceProperty__default = /*#__PURE__*/_interopDefault(_sliceInstanceProperty);
|
|
149
|
-
var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
|
|
150
|
-
var _findIndexInstanceProperty__default = /*#__PURE__*/_interopDefault(_findIndexInstanceProperty);
|
|
151
|
-
var Fuse__default = /*#__PURE__*/_interopDefault(Fuse);
|
|
152
|
-
var last__default = /*#__PURE__*/_interopDefault(last);
|
|
153
|
-
var LoadingSpinner__default = /*#__PURE__*/_interopDefault(LoadingSpinner);
|
|
154
|
-
var _Promise__default = /*#__PURE__*/_interopDefault(_Promise);
|
|
155
|
-
var _reduceInstanceProperty__default = /*#__PURE__*/_interopDefault(_reduceInstanceProperty);
|
|
156
|
-
var _findInstanceProperty__default = /*#__PURE__*/_interopDefault(_findInstanceProperty);
|
|
157
|
-
|
|
158
|
-
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)."; }
|
|
159
|
-
|
|
160
|
-
var _ref$1 = process.env.NODE_ENV === "production" ? {
|
|
161
|
-
name: "13n9jnb",
|
|
162
|
-
styles: "align-self:center;>*{display:block;}"
|
|
163
|
-
} : {
|
|
164
|
-
name: "1qkkrpz-ButlerCommand",
|
|
165
|
-
styles: "align-self:center;>*{display:block;};label:ButlerCommand;",
|
|
166
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci1jb21tYW5kLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtRGdCIiwiZmlsZSI6ImJ1dGxlci1jb21tYW5kLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tbWFuZCB9IGZyb20gJy4uL3R5cGVzJztcblxuaW1wb3J0IHsgTW91c2VFdmVudEhhbmRsZXIgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBBbmdsZVRoaW5SaWdodEljb24gfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9pY29ucyc7XG5pbXBvcnQgeyBjdXN0b21Qcm9wZXJ0aWVzIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIGNvbW1hbmQ6IENvbW1hbmQ7XG4gIGlzU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBvbkNsaWNrOiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD47XG4gIG9uTW91c2VFbnRlcjogTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xufTtcblxuY29uc3QgQnV0bGVyQ29tbWFuZCA9IChwcm9wczogUHJvcHMpID0+IChcbiAgPGRpdlxuICAgIGtleT17cHJvcHMuY29tbWFuZC5pZH1cbiAgICBkYXRhLXRlc3RpZD17YHF1aWNrLWFjY2Vzcy1yZXN1bHQoJHtwcm9wcy5jb21tYW5kLmlkfSlgfVxuICAgIGFyaWEtY3VycmVudD17cHJvcHMuaXNTZWxlY3RlZCA9PT0gdHJ1ZSA/ICd0cnVlJyA6ICdmYWxzZSd9XG4gICAgY3NzPXtjc3NgXG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgcGFkZGluZzogMCAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ019O1xuICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgZm9udC13ZWlnaHQ6IDIwMDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgJHtwcm9wcy5pc1NlbGVjdGVkID09PSB0cnVlXG4gICAgICAgID8gYFxuICAgICAgICAgICAgYmFja2dyb3VuZDogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yQWNjZW50fTtcbiAgICAgICAgICAgIGNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTdXJmYWNlfTtcbiAgICAgICAgICBgXG4gICAgICAgIDogJyd9XG4gICAgYH1cbiAgICBvbk1vdXNlRW50ZXI9e3Byb3BzLm9uTW91c2VFbnRlcn1cbiAgICBvbkNsaWNrPXtwcm9wcy5vbkNsaWNrfVxuICA+XG4gICAgPGRpdlxuICAgICAgY3NzPXtjc3NgXG4gICAgICAgIGZsZXg6IDEgYXV0bztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICBgfVxuICAgID5cbiAgICAgIHtwcm9wcy5jb21tYW5kLnRleHR9XG4gICAgPC9kaXY+XG4gICAgeygoQXJyYXkuaXNBcnJheShwcm9wcy5jb21tYW5kLnN1YkNvbW1hbmRzKSAmJlxuICAgICAgcHJvcHMuY29tbWFuZC5zdWJDb21tYW5kcy5sZW5ndGggPiAwKSB8fFxuICAgICAgdHlwZW9mIHByb3BzLmNvbW1hbmQuc3ViQ29tbWFuZHMgPT09ICdmdW5jdGlvbicpICYmIChcbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgID4gKiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICA+XG4gICAgICAgIDxBbmdsZVRoaW5SaWdodEljb25cbiAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICBjb2xvcj17cHJvcHMuaXNTZWxlY3RlZCA/ICdzdXJmYWNlJyA6ICduZXV0cmFsNjAnfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgKX1cbiAgPC9kaXY+XG4pO1xuXG5CdXRsZXJDb21tYW5kLmRpc3BsYXlOYW1lID0gJ0J1dGxlckNvbW1hbmQnO1xuXG5leHBvcnQgZGVmYXVsdCBCdXRsZXJDb21tYW5kO1xuIl19 */",
|
|
167
|
-
toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
|
|
168
|
-
};
|
|
169
|
-
|
|
170
|
-
var _ref2 = process.env.NODE_ENV === "production" ? {
|
|
171
|
-
name: "lhzw0z",
|
|
172
|
-
styles: "flex:1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis"
|
|
173
|
-
} : {
|
|
174
|
-
name: "zq3ooq-ButlerCommand",
|
|
175
|
-
styles: "flex:1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;label:ButlerCommand;",
|
|
176
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci1jb21tYW5kLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzQ2MiLCJmaWxlIjoiYnV0bGVyLWNvbW1hbmQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb21tYW5kIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBNb3VzZUV2ZW50SGFuZGxlciB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB7IEFuZ2xlVGhpblJpZ2h0SWNvbiB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2ljb25zJztcbmltcG9ydCB7IGN1c3RvbVByb3BlcnRpZXMgfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9kZXNpZ24tc3lzdGVtJztcblxudHlwZSBQcm9wcyA9IHtcbiAgY29tbWFuZDogQ29tbWFuZDtcbiAgaXNTZWxlY3RlZD86IGJvb2xlYW47XG4gIG9uQ2xpY2s6IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PjtcbiAgb25Nb3VzZUVudGVyOiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD47XG59O1xuXG5jb25zdCBCdXRsZXJDb21tYW5kID0gKHByb3BzOiBQcm9wcykgPT4gKFxuICA8ZGl2XG4gICAga2V5PXtwcm9wcy5jb21tYW5kLmlkfVxuICAgIGRhdGEtdGVzdGlkPXtgcXVpY2stYWNjZXNzLXJlc3VsdCgke3Byb3BzLmNvbW1hbmQuaWR9KWB9XG4gICAgYXJpYS1jdXJyZW50PXtwcm9wcy5pc1NlbGVjdGVkID09PSB0cnVlID8gJ3RydWUnIDogJ2ZhbHNlJ31cbiAgICBjc3M9e2Nzc2BcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBwYWRkaW5nOiAwICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nTX07XG4gICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICBmb250LXdlaWdodDogMjAwO1xuICAgICAgbGluZS1oZWlnaHQ6IDM2cHg7XG4gICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAke3Byb3BzLmlzU2VsZWN0ZWQgPT09IHRydWVcbiAgICAgICAgPyBgXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JBY2NlbnR9O1xuICAgICAgICAgICAgY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvclN1cmZhY2V9O1xuICAgICAgICAgIGBcbiAgICAgICAgOiAnJ31cbiAgICBgfVxuICAgIG9uTW91c2VFbnRlcj17cHJvcHMub25Nb3VzZUVudGVyfVxuICAgIG9uQ2xpY2s9e3Byb3BzLm9uQ2xpY2t9XG4gID5cbiAgICA8ZGl2XG4gICAgICBjc3M9e2Nzc2BcbiAgICAgICAgZmxleDogMSBhdXRvO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIGB9XG4gICAgPlxuICAgICAge3Byb3BzLmNvbW1hbmQudGV4dH1cbiAgICA8L2Rpdj5cbiAgICB7KChBcnJheS5pc0FycmF5KHByb3BzLmNvbW1hbmQuc3ViQ29tbWFuZHMpICYmXG4gICAgICBwcm9wcy5jb21tYW5kLnN1YkNvbW1hbmRzLmxlbmd0aCA+IDApIHx8XG4gICAgICB0eXBlb2YgcHJvcHMuY29tbWFuZC5zdWJDb21tYW5kcyA9PT0gJ2Z1bmN0aW9uJykgJiYgKFxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgICAgPiAqIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgID5cbiAgICAgICAgPEFuZ2xlVGhpblJpZ2h0SWNvblxuICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgIGNvbG9yPXtwcm9wcy5pc1NlbGVjdGVkID8gJ3N1cmZhY2UnIDogJ25ldXRyYWw2MCd9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICApfVxuICA8L2Rpdj5cbik7XG5cbkJ1dGxlckNvbW1hbmQuZGlzcGxheU5hbWUgPSAnQnV0bGVyQ29tbWFuZCc7XG5cbmV4cG9ydCBkZWZhdWx0IEJ1dGxlckNvbW1hbmQ7XG4iXX0= */",
|
|
177
|
-
toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
|
|
178
|
-
};
|
|
179
|
-
|
|
180
|
-
var ButlerCommand = function ButlerCommand(props) {
|
|
181
|
-
var _context;
|
|
182
|
-
|
|
183
|
-
return jsxRuntime.jsxs("div", {
|
|
184
|
-
"data-testid": "quick-access-result(".concat(props.command.id, ")"),
|
|
185
|
-
"aria-current": props.isSelected === true ? 'true' : 'false',
|
|
186
|
-
css: /*#__PURE__*/react.css("display:flex;padding:0 ", designSystem.customProperties.spacingM, ";height:36px;font-size:16px;font-weight:200;line-height:36px;cursor:default;", props.isSelected === true ? _concatInstanceProperty__default["default"](_context = "\n background: ".concat(designSystem.customProperties.colorAccent, ";\n color: ")).call(_context, designSystem.customProperties.colorSurface, ";\n ") : '', ";" + (process.env.NODE_ENV === "production" ? "" : ";label:ButlerCommand;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci1jb21tYW5kLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQlkiLCJmaWxlIjoiYnV0bGVyLWNvbW1hbmQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb21tYW5kIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBNb3VzZUV2ZW50SGFuZGxlciB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB7IEFuZ2xlVGhpblJpZ2h0SWNvbiB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2ljb25zJztcbmltcG9ydCB7IGN1c3RvbVByb3BlcnRpZXMgfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9kZXNpZ24tc3lzdGVtJztcblxudHlwZSBQcm9wcyA9IHtcbiAgY29tbWFuZDogQ29tbWFuZDtcbiAgaXNTZWxlY3RlZD86IGJvb2xlYW47XG4gIG9uQ2xpY2s6IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PjtcbiAgb25Nb3VzZUVudGVyOiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD47XG59O1xuXG5jb25zdCBCdXRsZXJDb21tYW5kID0gKHByb3BzOiBQcm9wcykgPT4gKFxuICA8ZGl2XG4gICAga2V5PXtwcm9wcy5jb21tYW5kLmlkfVxuICAgIGRhdGEtdGVzdGlkPXtgcXVpY2stYWNjZXNzLXJlc3VsdCgke3Byb3BzLmNvbW1hbmQuaWR9KWB9XG4gICAgYXJpYS1jdXJyZW50PXtwcm9wcy5pc1NlbGVjdGVkID09PSB0cnVlID8gJ3RydWUnIDogJ2ZhbHNlJ31cbiAgICBjc3M9e2Nzc2BcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBwYWRkaW5nOiAwICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nTX07XG4gICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICBmb250LXdlaWdodDogMjAwO1xuICAgICAgbGluZS1oZWlnaHQ6IDM2cHg7XG4gICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAke3Byb3BzLmlzU2VsZWN0ZWQgPT09IHRydWVcbiAgICAgICAgPyBgXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JBY2NlbnR9O1xuICAgICAgICAgICAgY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvclN1cmZhY2V9O1xuICAgICAgICAgIGBcbiAgICAgICAgOiAnJ31cbiAgICBgfVxuICAgIG9uTW91c2VFbnRlcj17cHJvcHMub25Nb3VzZUVudGVyfVxuICAgIG9uQ2xpY2s9e3Byb3BzLm9uQ2xpY2t9XG4gID5cbiAgICA8ZGl2XG4gICAgICBjc3M9e2Nzc2BcbiAgICAgICAgZmxleDogMSBhdXRvO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIGB9XG4gICAgPlxuICAgICAge3Byb3BzLmNvbW1hbmQudGV4dH1cbiAgICA8L2Rpdj5cbiAgICB7KChBcnJheS5pc0FycmF5KHByb3BzLmNvbW1hbmQuc3ViQ29tbWFuZHMpICYmXG4gICAgICBwcm9wcy5jb21tYW5kLnN1YkNvbW1hbmRzLmxlbmd0aCA+IDApIHx8XG4gICAgICB0eXBlb2YgcHJvcHMuY29tbWFuZC5zdWJDb21tYW5kcyA9PT0gJ2Z1bmN0aW9uJykgJiYgKFxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgICAgPiAqIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgID5cbiAgICAgICAgPEFuZ2xlVGhpblJpZ2h0SWNvblxuICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgIGNvbG9yPXtwcm9wcy5pc1NlbGVjdGVkID8gJ3N1cmZhY2UnIDogJ25ldXRyYWw2MCd9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICApfVxuICA8L2Rpdj5cbik7XG5cbkJ1dGxlckNvbW1hbmQuZGlzcGxheU5hbWUgPSAnQnV0bGVyQ29tbWFuZCc7XG5cbmV4cG9ydCBkZWZhdWx0IEJ1dGxlckNvbW1hbmQ7XG4iXX0= */"),
|
|
187
|
-
onMouseEnter: props.onMouseEnter,
|
|
188
|
-
onClick: props.onClick,
|
|
189
|
-
children: [jsxRuntime.jsx("div", {
|
|
190
|
-
css: _ref2,
|
|
191
|
-
children: props.command.text
|
|
192
|
-
}), (_Array$isArray__default["default"](props.command.subCommands) && props.command.subCommands.length > 0 || typeof props.command.subCommands === 'function') && jsxRuntime.jsx("div", {
|
|
193
|
-
css: _ref$1,
|
|
194
|
-
children: jsxRuntime.jsx(icons.AngleThinRightIcon, {
|
|
195
|
-
size: "medium",
|
|
196
|
-
color: props.isSelected ? 'surface' : 'neutral60'
|
|
197
|
-
})
|
|
198
|
-
})]
|
|
199
|
-
}, props.command.id);
|
|
200
|
-
};
|
|
201
|
-
|
|
202
|
-
ButlerCommand.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
203
|
-
command: _pt__default["default"].any.isRequired,
|
|
204
|
-
isSelected: _pt__default["default"].bool,
|
|
205
|
-
onClick: _pt__default["default"].func.isRequired,
|
|
206
|
-
onMouseEnter: _pt__default["default"].func.isRequired
|
|
207
|
-
} : {};
|
|
208
|
-
ButlerCommand.displayName = 'ButlerCommand';
|
|
209
|
-
|
|
210
|
-
var messages = reactIntl.defineMessages({
|
|
211
|
-
inputPlacehoder: {
|
|
212
|
-
id: 'QuickAccess.inputPlaceholder',
|
|
213
|
-
defaultMessage: 'Go to...'
|
|
214
|
-
},
|
|
215
|
-
offline: {
|
|
216
|
-
id: 'QuickAccess.offline',
|
|
217
|
-
defaultMessage: 'Offline'
|
|
218
|
-
},
|
|
219
|
-
noResults: {
|
|
220
|
-
id: 'QuickAccess.noResults',
|
|
221
|
-
defaultMessage: 'No results found'
|
|
222
|
-
},
|
|
223
|
-
// create-commands
|
|
224
|
-
setResourceLanguage: {
|
|
225
|
-
id: 'QuickAccess.setResourceLanguage',
|
|
226
|
-
defaultMessage: 'Set Resource Language'
|
|
227
|
-
},
|
|
228
|
-
openDashboard: {
|
|
229
|
-
id: 'QuickAccess.openDashboard',
|
|
230
|
-
defaultMessage: 'Open Dashboard'
|
|
231
|
-
},
|
|
232
|
-
openProducts: {
|
|
233
|
-
id: 'QuickAccess.openProducts',
|
|
234
|
-
defaultMessage: 'Open Products'
|
|
235
|
-
},
|
|
236
|
-
openProductList: {
|
|
237
|
-
id: 'QuickAccess.openProductList',
|
|
238
|
-
defaultMessage: 'Open Product List'
|
|
239
|
-
},
|
|
240
|
-
openProductVariantGeneral: {
|
|
241
|
-
id: 'QuickAccess.openProductVariantGeneral',
|
|
242
|
-
defaultMessage: 'General'
|
|
243
|
-
},
|
|
244
|
-
openProductVariantList: {
|
|
245
|
-
id: 'QuickAccess.openProductVariantList',
|
|
246
|
-
defaultMessage: 'Variants'
|
|
247
|
-
},
|
|
248
|
-
openProductVariantSearch: {
|
|
249
|
-
id: 'QuickAccess.openProductVariantSearch',
|
|
250
|
-
defaultMessage: 'Int. / Ext. Search'
|
|
251
|
-
},
|
|
252
|
-
openModifiedProducts: {
|
|
253
|
-
id: 'QuickAccess.openModifiedProducts',
|
|
254
|
-
defaultMessage: 'Open Review Modified Products'
|
|
255
|
-
},
|
|
256
|
-
openPimSearch: {
|
|
257
|
-
id: 'QuickAccess.openPimSearch',
|
|
258
|
-
defaultMessage: 'Open PIM Search'
|
|
259
|
-
},
|
|
260
|
-
openAddProducts: {
|
|
261
|
-
id: 'QuickAccess.openAddProducts',
|
|
262
|
-
defaultMessage: 'Open Add Products'
|
|
263
|
-
},
|
|
264
|
-
openCategories: {
|
|
265
|
-
id: 'QuickAccess.openCategories',
|
|
266
|
-
defaultMessage: 'Open Categories'
|
|
267
|
-
},
|
|
268
|
-
openCategoriesList: {
|
|
269
|
-
id: 'QuickAccess.openCategoriesList',
|
|
270
|
-
defaultMessage: 'Open Categories List'
|
|
271
|
-
},
|
|
272
|
-
openCategoriesSearch: {
|
|
273
|
-
id: 'QuickAccess.openCategoriesSearch',
|
|
274
|
-
defaultMessage: 'Open Categories Search'
|
|
275
|
-
},
|
|
276
|
-
openAddCategory: {
|
|
277
|
-
id: 'QuickAccess.openAddCategory',
|
|
278
|
-
defaultMessage: 'Open Add Category'
|
|
279
|
-
},
|
|
280
|
-
openCustomers: {
|
|
281
|
-
id: 'QuickAccess.openCustomers',
|
|
282
|
-
defaultMessage: 'Open Customers'
|
|
283
|
-
},
|
|
284
|
-
openCustomersList: {
|
|
285
|
-
id: 'QuickAccess.openCustomersList',
|
|
286
|
-
defaultMessage: 'Open Customers List'
|
|
287
|
-
},
|
|
288
|
-
openAddCustomer: {
|
|
289
|
-
id: 'QuickAccess.openAddCustomer',
|
|
290
|
-
defaultMessage: 'Open Add Customer'
|
|
291
|
-
},
|
|
292
|
-
openCustomerGroupsList: {
|
|
293
|
-
id: 'QuickAccess.openCustomerGroupsList',
|
|
294
|
-
defaultMessage: 'Open Customer Groups List'
|
|
295
|
-
},
|
|
296
|
-
openAddCustomerGroup: {
|
|
297
|
-
id: 'QuickAccess.openAddCustomerGroup',
|
|
298
|
-
defaultMessage: 'Open Add Customer Group'
|
|
299
|
-
},
|
|
300
|
-
openOrders: {
|
|
301
|
-
id: 'QuickAccess.openOrders',
|
|
302
|
-
defaultMessage: 'Open Orders'
|
|
303
|
-
},
|
|
304
|
-
openOrdersList: {
|
|
305
|
-
id: 'QuickAccess.openOrdersList',
|
|
306
|
-
defaultMessage: 'Open Orders List'
|
|
307
|
-
},
|
|
308
|
-
openAddOrder: {
|
|
309
|
-
id: 'QuickAccess.openAddOrder',
|
|
310
|
-
defaultMessage: 'Open Add Order'
|
|
311
|
-
},
|
|
312
|
-
openDiscounts: {
|
|
313
|
-
id: 'QuickAccess.openDiscounts',
|
|
314
|
-
defaultMessage: 'Open Discounts'
|
|
315
|
-
},
|
|
316
|
-
openProductDiscountsList: {
|
|
317
|
-
id: 'QuickAccess.openProductDiscountsList',
|
|
318
|
-
defaultMessage: 'Open Product Discounts List'
|
|
319
|
-
},
|
|
320
|
-
openCartDiscountsList: {
|
|
321
|
-
id: 'QuickAccess.openCartDiscountsList',
|
|
322
|
-
defaultMessage: 'Open Cart Discounts List'
|
|
323
|
-
},
|
|
324
|
-
openDiscountCodesList: {
|
|
325
|
-
id: 'QuickAccess.openDiscountCodesList',
|
|
326
|
-
defaultMessage: 'Open Discount Codes List'
|
|
327
|
-
},
|
|
328
|
-
openAddDiscount: {
|
|
329
|
-
id: 'QuickAccess.openAddDiscount',
|
|
330
|
-
defaultMessage: 'Open Add Discount'
|
|
331
|
-
},
|
|
332
|
-
openAddProductDiscount: {
|
|
333
|
-
id: 'QuickAccess.openAddProductDiscount',
|
|
334
|
-
defaultMessage: 'Open Add Product Discount'
|
|
335
|
-
},
|
|
336
|
-
openAddCartDiscount: {
|
|
337
|
-
id: 'QuickAccess.openAddCartDiscount',
|
|
338
|
-
defaultMessage: 'Open Add Cart Discount'
|
|
339
|
-
},
|
|
340
|
-
openAddDiscountCode: {
|
|
341
|
-
id: 'QuickAccess.openAddDiscountCode',
|
|
342
|
-
defaultMessage: 'Open Add Discount Code'
|
|
343
|
-
},
|
|
344
|
-
openSettings: {
|
|
345
|
-
id: 'QuickAccess.openSettings',
|
|
346
|
-
defaultMessage: 'Open Settings'
|
|
347
|
-
},
|
|
348
|
-
openProjectSettings: {
|
|
349
|
-
id: 'QuickAccess.openProjectSettings',
|
|
350
|
-
defaultMessage: 'Open Project Settings'
|
|
351
|
-
},
|
|
352
|
-
openProjectSettingsInternationalTab: {
|
|
353
|
-
id: 'QuickAccess.openProjectSettingsInternationalTab',
|
|
354
|
-
defaultMessage: 'Open Project Settings • International'
|
|
355
|
-
},
|
|
356
|
-
openProjectSettingsTaxesTab: {
|
|
357
|
-
id: 'QuickAccess.openProjectSettingsTaxesTab',
|
|
358
|
-
defaultMessage: 'Open Project Settings • Taxes'
|
|
359
|
-
},
|
|
360
|
-
openProjectSettingsShippingMethodsTab: {
|
|
361
|
-
id: 'QuickAccess.openProjectSettingsShippingMethodsTab',
|
|
362
|
-
defaultMessage: 'Open Project Settings • Shipping Methods'
|
|
363
|
-
},
|
|
364
|
-
openProjectSettingsChannelsTab: {
|
|
365
|
-
id: 'QuickAccess.openProjectSettingsChannelsTab',
|
|
366
|
-
defaultMessage: 'Open Project Settings • Channels'
|
|
367
|
-
},
|
|
368
|
-
openProjectSettingsStoresTab: {
|
|
369
|
-
id: 'QuickAccess.openProjectSettingsStoresTab',
|
|
370
|
-
defaultMessage: 'Open Project Settings • Stores'
|
|
371
|
-
},
|
|
372
|
-
openProductTypesSettings: {
|
|
373
|
-
id: 'QuickAccess.openProductTypesSettings',
|
|
374
|
-
defaultMessage: 'Open Product Types Settings'
|
|
375
|
-
},
|
|
376
|
-
openDeveloperSettings: {
|
|
377
|
-
id: 'QuickAccess.openDeveloperSettings',
|
|
378
|
-
defaultMessage: 'Open Developer Settings'
|
|
379
|
-
},
|
|
380
|
-
openCustomApplicationsSettings: {
|
|
381
|
-
id: 'QuickAccess.openCustomApplicationsSettings',
|
|
382
|
-
defaultMessage: 'Open Custom Applications Settings'
|
|
383
|
-
},
|
|
384
|
-
openApiClientsList: {
|
|
385
|
-
id: 'QuickAccess.openApiClientsList',
|
|
386
|
-
defaultMessage: 'Open API Clients'
|
|
387
|
-
},
|
|
388
|
-
openAddApiClient: {
|
|
389
|
-
id: 'QuickAccess.openAddApiClient',
|
|
390
|
-
defaultMessage: 'Open Add API Client'
|
|
391
|
-
},
|
|
392
|
-
openSupport: {
|
|
393
|
-
id: 'QuickAccess.openSupport',
|
|
394
|
-
defaultMessage: 'Open Support'
|
|
395
|
-
},
|
|
396
|
-
openMyProfile: {
|
|
397
|
-
id: 'QuickAccess.openMyProfile',
|
|
398
|
-
defaultMessage: 'Open My Profile'
|
|
399
|
-
},
|
|
400
|
-
showPrivacyPolicy: {
|
|
401
|
-
id: 'QuickAccess.showPrivacyPolicy',
|
|
402
|
-
defaultMessage: 'Show Privacy Policy'
|
|
403
|
-
},
|
|
404
|
-
logout: {
|
|
405
|
-
id: 'QuickAccess.logout',
|
|
406
|
-
defaultMessage: 'Logout'
|
|
407
|
-
},
|
|
408
|
-
useProject: {
|
|
409
|
-
id: 'QuickAccess.useProject',
|
|
410
|
-
defaultMessage: 'Switch to project "{projectName}"'
|
|
411
|
-
},
|
|
412
|
-
openManageProjects: {
|
|
413
|
-
id: 'QuickAccess.openManageProject',
|
|
414
|
-
defaultMessage: 'Open Manage Projects'
|
|
415
|
-
},
|
|
416
|
-
openManageOrganizations: {
|
|
417
|
-
id: 'QuickAccess.openManageOrganizations',
|
|
418
|
-
defaultMessage: 'Open Manage Organizations'
|
|
419
|
-
},
|
|
420
|
-
// subcommands
|
|
421
|
-
openVariantById: {
|
|
422
|
-
id: 'QuickAccess.openVariantById',
|
|
423
|
-
defaultMessage: 'Open Variant "{id}" (id)'
|
|
424
|
-
},
|
|
425
|
-
openVariantByKey: {
|
|
426
|
-
id: 'QuickAccess.openVariantByKey',
|
|
427
|
-
defaultMessage: 'Open Variant "{key}" (key)'
|
|
428
|
-
},
|
|
429
|
-
openVariantBySku: {
|
|
430
|
-
id: 'QuickAccess.openVariantBySku',
|
|
431
|
-
defaultMessage: 'Open Variant "{sku}" (sku)'
|
|
432
|
-
},
|
|
433
|
-
showProduct: {
|
|
434
|
-
id: 'QuickAccess.showProduct',
|
|
435
|
-
defaultMessage: 'Show Product "{productName}"'
|
|
436
|
-
},
|
|
437
|
-
showProductVariant: {
|
|
438
|
-
id: 'QuickAccess.showProductVariant',
|
|
439
|
-
defaultMessage: 'Show Product Variant "{variantName}"'
|
|
440
|
-
},
|
|
441
|
-
showProductVariantAttributes: {
|
|
442
|
-
id: 'QuickAccess.showProductVariantAttributes',
|
|
443
|
-
defaultMessage: 'Show Attributes'
|
|
444
|
-
},
|
|
445
|
-
showProductVariantImages: {
|
|
446
|
-
id: 'QuickAccess.showProductVariantImages',
|
|
447
|
-
defaultMessage: 'Show Images'
|
|
448
|
-
},
|
|
449
|
-
showProductVariantPrices: {
|
|
450
|
-
id: 'QuickAccess.showProductVariantPrices',
|
|
451
|
-
defaultMessage: 'Show Prices'
|
|
452
|
-
},
|
|
453
|
-
showProductVariantInventory: {
|
|
454
|
-
id: 'QuickAccess.showProductVariantInventory',
|
|
455
|
-
defaultMessage: 'Show Inventory'
|
|
456
|
-
}
|
|
457
|
-
});
|
|
458
|
-
|
|
459
|
-
var _templateObject$3, _templateObject2$2;
|
|
460
|
-
|
|
461
|
-
function ownKeys(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; }
|
|
462
|
-
|
|
463
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context15, _context16; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context15 = ownKeys(Object(source), !0)).call(_context15, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context16 = ownKeys(Object(source))).call(_context16, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
|
|
464
|
-
|
|
465
|
-
function _EMOTION_STRINGIFIED_CSS_ERROR__() { 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)."; }
|
|
466
|
-
|
|
467
|
-
var isSelectAllCombo = function isSelectAllCombo(event) {
|
|
468
|
-
return event.key === 'a' && event.metaKey && !event.ctrlKey && !event.altKey && !event.shiftKey;
|
|
469
|
-
};
|
|
470
|
-
|
|
471
|
-
var isCloseCombo = function isCloseCombo(event) {
|
|
472
|
-
return event.key === 'Escape' && !event.metaKey && !event.ctrlKey && !event.altKey && !event.shiftKey;
|
|
473
|
-
};
|
|
474
|
-
|
|
475
|
-
var getPlatform = function getPlatform() {
|
|
476
|
-
var _context, _context2, _context3, _context4;
|
|
477
|
-
|
|
478
|
-
if (_includesInstanceProperty__default["default"](_context = navigator.appVersion).call(_context, 'Win')) return 'windows';
|
|
479
|
-
if (_includesInstanceProperty__default["default"](_context2 = navigator.appVersion).call(_context2, 'Mac')) return 'macos';
|
|
480
|
-
if (_includesInstanceProperty__default["default"](_context3 = navigator.appVersion).call(_context3, 'X11')) return 'unix';
|
|
481
|
-
if (_includesInstanceProperty__default["default"](_context4 = navigator.appVersion).call(_context4, 'Linux')) return 'linux';
|
|
482
|
-
return null;
|
|
483
|
-
};
|
|
484
|
-
|
|
485
|
-
var hasNewWindowModifier = function hasNewWindowModifier(event) {
|
|
486
|
-
var platform = getPlatform();
|
|
487
|
-
|
|
488
|
-
switch (platform) {
|
|
489
|
-
case 'macos':
|
|
490
|
-
return event.metaKey;
|
|
491
|
-
|
|
492
|
-
default:
|
|
493
|
-
return event.ctrlKey;
|
|
494
|
-
}
|
|
495
|
-
};
|
|
496
|
-
|
|
497
|
-
var shakeAnimation = react.keyframes(_templateObject$3 || (_templateObject$3 = _taggedTemplateLiteral(["\n from,\n to {\n transform: translate3d(0, 0, 0);\n }\n\n 14%,\n 42%,\n 70% {\n transform: translate3d(-3px, 0, 0);\n }\n\n 28%,\n 56%,\n 84% {\n transform: translate3d(3px, 0, 0);\n }\n"])));
|
|
498
|
-
var initialState = {
|
|
499
|
-
hasNetworkError: false,
|
|
500
|
-
isLoading: false,
|
|
501
|
-
searchText: '',
|
|
502
|
-
selectedResult: -1,
|
|
503
|
-
// Used for UX when browsing through history
|
|
504
|
-
enableHistory: true,
|
|
505
|
-
results: [],
|
|
506
|
-
stack: []
|
|
507
|
-
};
|
|
508
|
-
|
|
509
|
-
var reducer = function reducer() {
|
|
510
|
-
var _context5, _context6;
|
|
511
|
-
|
|
512
|
-
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
|
|
513
|
-
var action = arguments.length > 1 ? arguments[1] : undefined;
|
|
514
|
-
|
|
515
|
-
switch (action.type) {
|
|
516
|
-
case 'networkError':
|
|
517
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
518
|
-
hasNetworkError: action.payload
|
|
519
|
-
});
|
|
520
|
-
|
|
521
|
-
case 'loading':
|
|
522
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
523
|
-
isLoading: action.payload
|
|
524
|
-
});
|
|
525
|
-
|
|
526
|
-
case 'selectedResult':
|
|
527
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
528
|
-
selectedResult: action.payload
|
|
529
|
-
});
|
|
530
|
-
|
|
531
|
-
case 'incrementSelectedResult':
|
|
532
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
533
|
-
selectedResult: state.selectedResult === state.results.length - 1 ? 0 : state.selectedResult + 1,
|
|
534
|
-
enableHistory: false
|
|
535
|
-
});
|
|
536
|
-
|
|
537
|
-
case 'decrementSelectedResult':
|
|
538
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
539
|
-
selectedResult: state.selectedResult < 1 ? state.results.length - 1 : state.selectedResult - 1,
|
|
540
|
-
enableHistory: false
|
|
541
|
-
});
|
|
542
|
-
|
|
543
|
-
case 'pickCommandFromHistory':
|
|
544
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
545
|
-
selectedResult: 0,
|
|
546
|
-
searchText: action.payload.searchText,
|
|
547
|
-
results: action.payload.results,
|
|
548
|
-
stack: [] // The history does not get changed here, it will be changed along
|
|
549
|
-
// with the regular flow.
|
|
550
|
-
|
|
551
|
-
});
|
|
552
|
-
|
|
553
|
-
case 'setNextCommands':
|
|
554
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
555
|
-
stack: _concatInstanceProperty__default["default"](_context5 = []).call(_context5, _toConsumableArray(state.stack), [{
|
|
556
|
-
searchText: state.searchText,
|
|
557
|
-
results: state.results,
|
|
558
|
-
selectedResult: state.selectedResult
|
|
559
|
-
}]),
|
|
560
|
-
selectedResult: 0,
|
|
561
|
-
enableHistory: false,
|
|
562
|
-
results: action.payload.results
|
|
563
|
-
});
|
|
564
|
-
|
|
565
|
-
case 'setPrevCommands':
|
|
566
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
567
|
-
searchText: action.payload.searchText,
|
|
568
|
-
results: action.payload.results,
|
|
569
|
-
selectedResult: 0,
|
|
570
|
-
enableHistory: false,
|
|
571
|
-
// omit last item
|
|
572
|
-
stack: _sliceInstanceProperty__default["default"](_context6 = state.stack).call(_context6, 0, -1)
|
|
573
|
-
});
|
|
574
|
-
|
|
575
|
-
case 'searchText':
|
|
576
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
577
|
-
searchText: action.payload,
|
|
578
|
-
// clear network error when search text is cleared, so that users
|
|
579
|
-
// are tempted to retry
|
|
580
|
-
hasNetworkError: action.payload.length > 0 && state.hasNetworkError
|
|
581
|
-
});
|
|
582
|
-
|
|
583
|
-
case 'setSearchTextResults':
|
|
584
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
585
|
-
results: action.payload,
|
|
586
|
-
selectedResult: action.payload.length > 0 ? 0 : -1,
|
|
587
|
-
enableHistory: true,
|
|
588
|
-
stack: []
|
|
589
|
-
});
|
|
590
|
-
|
|
591
|
-
case 'resetSearchText':
|
|
592
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
593
|
-
searchText: '',
|
|
594
|
-
results: [],
|
|
595
|
-
selectedResult: -1
|
|
596
|
-
});
|
|
597
|
-
|
|
598
|
-
case 'resetResultsWhenClosing':
|
|
599
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
600
|
-
selectedResult: -1,
|
|
601
|
-
enableHistory: true
|
|
602
|
-
});
|
|
603
|
-
|
|
604
|
-
case 'reset':
|
|
605
|
-
return initialState;
|
|
606
|
-
|
|
607
|
-
default:
|
|
608
|
-
return state;
|
|
609
|
-
}
|
|
610
|
-
};
|
|
611
|
-
|
|
612
|
-
var _ref = process.env.NODE_ENV === "production" ? {
|
|
613
|
-
name: "zjik7",
|
|
614
|
-
styles: "display:flex"
|
|
615
|
-
} : {
|
|
616
|
-
name: "vnvgom-Butler",
|
|
617
|
-
styles: "display:flex;label:Butler;",
|
|
618
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaW5Ca0IiLCJmaWxlIjoiYnV0bGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQ29tbWFuZCxcbiAgU2VhcmNoVGV4dCxcbiAgU2VsZWN0ZWRSZXN1bHQsXG4gIFN0YWNrLFxuICBIaXN0b3J5RW50cnksXG59IGZyb20gJy4uL3R5cGVzJztcblxuaW1wb3J0IHtcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudCxcbiAgTW91c2VFdmVudEhhbmRsZXIsXG4gIE1vdXNlRXZlbnQsXG4gIHVzZVJlZHVjZXIsXG4gIHVzZVJlZixcbiAgdXNlQ2FsbGJhY2ssXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCBGdXNlIGZyb20gJ2Z1c2UuanMnO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdXNlSW50bCB9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IGxhc3QgZnJvbSAnbG9kYXNoL2xhc3QnO1xuaW1wb3J0IHsgY3NzLCBrZXlmcmFtZXMsIENsYXNzTmFtZXMgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvbG9hZGluZy1zcGlubmVyJztcbmltcG9ydCB7IFNlYXJjaEljb24gfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9pY29ucyc7XG5pbXBvcnQgeyBjdXN0b21Qcm9wZXJ0aWVzIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgQnV0bGVyQ29tbWFuZCBmcm9tICcuLi9idXRsZXItY29tbWFuZCc7XG5pbXBvcnQgQnV0bGVyQ29udGFpbmVyIGZyb20gJy4uL2J1dGxlci1jb250YWluZXInO1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4uL21lc3NhZ2VzJztcblxuY29uc3QgaXNTZWxlY3RBbGxDb21ibyA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT5cbiAgZXZlbnQua2V5ID09PSAnYScgJiZcbiAgZXZlbnQubWV0YUtleSAmJlxuICAhZXZlbnQuY3RybEtleSAmJlxuICAhZXZlbnQuYWx0S2V5ICYmXG4gICFldmVudC5zaGlmdEtleTtcblxuY29uc3QgaXNDbG9zZUNvbWJvID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PlxuICBldmVudC5rZXkgPT09ICdFc2NhcGUnICYmXG4gICFldmVudC5tZXRhS2V5ICYmXG4gICFldmVudC5jdHJsS2V5ICYmXG4gICFldmVudC5hbHRLZXkgJiZcbiAgIWV2ZW50LnNoaWZ0S2V5O1xuXG5jb25zdCBnZXRQbGF0Zm9ybSA9ICgpID0+IHtcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdXaW4nKSkgcmV0dXJuICd3aW5kb3dzJztcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdNYWMnKSkgcmV0dXJuICdtYWNvcyc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnWDExJykpIHJldHVybiAndW5peCc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnTGludXgnKSkgcmV0dXJuICdsaW51eCc7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBoYXNOZXdXaW5kb3dNb2RpZmllciA9IChcbiAgZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTEVsZW1lbnQ+IHwgTW91c2VFdmVudDxIVE1MRWxlbWVudD5cbikgPT4ge1xuICBjb25zdCBwbGF0Zm9ybSA9IGdldFBsYXRmb3JtKCk7XG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdtYWNvcyc6XG4gICAgICByZXR1cm4gZXZlbnQubWV0YUtleTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGV2ZW50LmN0cmxLZXk7XG4gIH1cbn07XG5cbmNvbnN0IHNoYWtlQW5pbWF0aW9uID0ga2V5ZnJhbWVzYFxuICBmcm9tLFxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIDE0JSxcbiAgNDIlLFxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTNweCwgMCwgMCk7XG4gIH1cblxuICAyOCUsXG4gIDU2JSxcbiAgODQlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDNweCwgMCwgMCk7XG4gIH1cbmA7XG5cbnR5cGUgU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogYm9vbGVhbjtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0O1xuICBzZWxlY3RlZFJlc3VsdDogU2VsZWN0ZWRSZXN1bHQ7XG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IGJvb2xlYW47XG4gIHJlc3VsdHM6IENvbW1hbmRbXTtcbiAgc3RhY2s6IFN0YWNrW107XG59O1xudHlwZSBBY3Rpb24gPVxuICB8IHsgdHlwZTogJ25ldHdvcmtFcnJvcic7IHBheWxvYWQ6IGJvb2xlYW4gfVxuICB8IHsgdHlwZTogJ2xvYWRpbmcnOyBwYXlsb2FkOiBib29sZWFuIH1cbiAgfCB7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCc7IHBheWxvYWQ6IG51bWJlciB9XG4gIHwgeyB0eXBlOiAnaW5jcmVtZW50U2VsZWN0ZWRSZXN1bHQnIH1cbiAgfCB7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfVxuICB8IHtcbiAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JztcbiAgICAgIHBheWxvYWQ6IHsgc2VhcmNoVGV4dDogU2VhcmNoVGV4dDsgcmVzdWx0czogQ29tbWFuZFtdIH07XG4gICAgfVxuICB8IHsgdHlwZTogJ3NldE5leHRDb21tYW5kcyc7IHBheWxvYWQ6IHsgcmVzdWx0czogQ29tbWFuZFtdIH0gfVxuICB8IHtcbiAgICAgIHR5cGU6ICdzZXRQcmV2Q29tbWFuZHMnO1xuICAgICAgcGF5bG9hZDogeyBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0OyByZXN1bHRzOiBDb21tYW5kW10gfTtcbiAgICB9XG4gIHwgeyB0eXBlOiAnc2VhcmNoVGV4dCc7IHBheWxvYWQ6IHN0cmluZyB9XG4gIHwgeyB0eXBlOiAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOyBwYXlsb2FkOiBDb21tYW5kW10gfVxuICB8IHsgdHlwZTogJ3Jlc2V0U2VhcmNoVGV4dCcgfVxuICB8IHsgdHlwZTogJ3Jlc2V0UmVzdWx0c1doZW5DbG9zaW5nJyB9XG4gIHwgeyB0eXBlOiAncmVzZXQnIH07XG5jb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogZmFsc2UsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIHNlYXJjaFRleHQ6ICcnLFxuICBzZWxlY3RlZFJlc3VsdDogLTEsXG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IHRydWUsXG4gIHJlc3VsdHM6IFtdLFxuICBzdGFjazogW10sXG59O1xuY29uc3QgcmVkdWNlciA9IChzdGF0ZTogU3RhdGUgPSBpbml0aWFsU3RhdGUsIGFjdGlvbjogQWN0aW9uKTogU3RhdGUgPT4ge1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSAnbmV0d29ya0Vycm9yJzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBoYXNOZXR3b3JrRXJyb3I6IGFjdGlvbi5wYXlsb2FkIH07XG4gICAgY2FzZSAnbG9hZGluZyc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaXNMb2FkaW5nOiBhY3Rpb24ucGF5bG9hZCB9O1xuICAgIGNhc2UgJ3NlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQgfTtcbiAgICBjYXNlICdpbmNyZW1lbnRTZWxlY3RlZFJlc3VsdCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6XG4gICAgICAgICAgc3RhdGUuc2VsZWN0ZWRSZXN1bHQgPT09IHN0YXRlLnJlc3VsdHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0ICsgMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ2RlY3JlbWVudFNlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDpcbiAgICAgICAgICBzdGF0ZS5zZWxlY3RlZFJlc3VsdCA8IDFcbiAgICAgICAgICAgID8gc3RhdGUucmVzdWx0cy5sZW5ndGggLSAxXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0IC0gMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ3BpY2tDb21tYW5kRnJvbUhpc3RvcnknOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNlbGVjdGVkUmVzdWx0OiAwLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZC5zZWFyY2hUZXh0LFxuICAgICAgICByZXN1bHRzOiBhY3Rpb24ucGF5bG9hZC5yZXN1bHRzLFxuICAgICAgICBzdGFjazogW10sXG4gICAgICAgIC8vIFRoZSBoaXN0b3J5IGRvZXMgbm90IGdldCBjaGFuZ2VkIGhlcmUsIGl0IHdpbGwgYmUgY2hhbmdlZCBhbG9uZ1xuICAgICAgICAvLyB3aXRoIHRoZSByZWd1bGFyIGZsb3cuXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldE5leHRDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc3RhY2s6IFtcbiAgICAgICAgICAuLi5zdGF0ZS5zdGFjayxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWFyY2hUZXh0OiBzdGF0ZS5zZWFyY2hUZXh0LFxuICAgICAgICAgICAgcmVzdWx0czogc3RhdGUucmVzdWx0cyxcbiAgICAgICAgICAgIHNlbGVjdGVkUmVzdWx0OiBzdGF0ZS5zZWxlY3RlZFJlc3VsdCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogMCxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLnJlc3VsdHMsXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldFByZXZDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VhcmNoVGV4dDogYWN0aW9uLnBheWxvYWQuc2VhcmNoVGV4dCxcbiAgICAgICAgcmVzdWx0czogYWN0aW9uLnBheWxvYWQucmVzdWx0cyxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6IDAsXG4gICAgICAgIGVuYWJsZUhpc3Rvcnk6IGZhbHNlLFxuICAgICAgICAvLyBvbWl0IGxhc3QgaXRlbVxuICAgICAgICBzdGFjazogc3RhdGUuc3RhY2suc2xpY2UoMCwgLTEpLFxuICAgICAgfTtcbiAgICBjYXNlICdzZWFyY2hUZXh0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgLy8gY2xlYXIgbmV0d29yayBlcnJvciB3aGVuIHNlYXJjaCB0ZXh0IGlzIGNsZWFyZWQsIHNvIHRoYXQgdXNlcnNcbiAgICAgICAgLy8gYXJlIHRlbXB0ZWQgdG8gcmV0cnlcbiAgICAgICAgaGFzTmV0d29ya0Vycm9yOiBhY3Rpb24ucGF5bG9hZC5sZW5ndGggPiAwICYmIHN0YXRlLmhhc05ldHdvcmtFcnJvcixcbiAgICAgIH07XG4gICAgY2FzZSAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQubGVuZ3RoID4gMCA/IDAgOiAtMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogdHJ1ZSxcbiAgICAgICAgc3RhY2s6IFtdLFxuICAgICAgfTtcbiAgICBjYXNlICdyZXNldFNlYXJjaFRleHQnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlYXJjaFRleHQ6ICcnLCByZXN1bHRzOiBbXSwgc2VsZWN0ZWRSZXN1bHQ6IC0xIH07XG4gICAgY2FzZSAncmVzZXRSZXN1bHRzV2hlbkNsb3NpbmcnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlbGVjdGVkUmVzdWx0OiAtMSwgZW5hYmxlSGlzdG9yeTogdHJ1ZSB9O1xuICAgIGNhc2UgJ3Jlc2V0JzpcbiAgICAgIHJldHVybiBpbml0aWFsU3RhdGU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxudHlwZSBQcm9wcyA9IHtcbiAgaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdO1xuICBvbkhpc3RvcnlFbnRyaWVzQ2hhbmdlOiAoaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdKSA9PiB2b2lkO1xuICBzZWFyY2g6IChzZWFyY2hUZXh0OiBTZWFyY2hUZXh0KSA9PiBQcm9taXNlPENvbW1hbmRbXT47XG4gIGdldE5leHRDb21tYW5kczogKGNvbW1hbmQ6IENvbW1hbmQpID0+IFByb21pc2U8Q29tbWFuZFtdPjtcbiAgZXhlY3V0ZUNvbW1hbmQ6IChjb21tYW5kOiBDb21tYW5kLCBtZXRhOiB7IG9wZW5Jbk5ld1RhYjogYm9vbGVhbiB9KSA9PiB2b2lkO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xuICBjbGFzc05hbWVTaGFrZUFuaW1hdGlvbjogc3RyaW5nO1xufTtcbmNvbnN0IEJ1dGxlciA9IChwcm9wczogUHJvcHMpID0+IHtcbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSB1c2VSZWR1Y2VyPFxuICAgIChwcmV2U3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvbikgPT4gU3RhdGVcbiAgPihyZWR1Y2VyLCBpbml0aWFsU3RhdGUpO1xuXG4gIGNvbnN0IHNob3VsZFNlbGVjdEZpZWxkVGV4dCA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IGlzTmV3V2luZG93Q29tYm8gPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBza2lwTmV4dFNlbGVjdGlvbiA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHNlYXJjaENvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IHNlYXJjaElucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IHNldEhhc05ldHdvcmtFcnJvciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICduZXR3b3JrRXJyb3InLCBwYXlsb2FkOiB0cnVlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHVuc2V0SGFzTmV0d29ya0Vycm9yID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogJ25ldHdvcmtFcnJvcicsIHBheWxvYWQ6IGZhbHNlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogdHJ1ZSB9KTtcbiAgfSwgW10pO1xuICBjb25zdCB1bnNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogZmFsc2UgfSk7XG4gIH0sIFtdKTtcblxuICAvLyBEZXN0cnVjdHVyZSBmdW5jdGlvbnMgZnJvbSBwcm9wcyB0byByZWZlcmVuY2UgdGhlbSBpbiB0aGUgaG9vayBkZXBlbmRlbmN5IGxpc3RcbiAgY29uc3Qge1xuICAgIHNlYXJjaDogc2VhcmNoRnJvbVBhcmVudCxcbiAgICBvbkNsb3NlOiBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICBleGVjdXRlQ29tbWFuZDogZXhlY3V0ZUNvbW1hbmRGcm9tUGFyZW50LFxuICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2U6IG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgIGdldE5leHRDb21tYW5kczogZ2V0TmV4dENvbW1hbmRzRnJvbVBhcmVudCxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHNoYWtlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzZWFyY2hDb250YWluZXJSZWYuY3VycmVudCkge1xuICAgICAgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgcHJvcHMuY2xhc3NOYW1lU2hha2VBbmltYXRpb25cbiAgICAgICk7XG4gICAgICAvLyAtPiB0cmlnZ2VyaW5nIHJlZmxvd1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZvaWRcbiAgICAgIHZvaWQgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQub2Zmc2V0V2lkdGg7XG4gICAgICBzZWFyY2hDb250YWluZXJSZWYuY3VycmVudC5jbGFzc0xpc3QuYWRkKHByb3BzLmNsYXNzTmFtZVNoYWtlQW5pbWF0aW9uKTtcbiAgICB9XG4gIH0sIFtwcm9wcy5jbGFzc05hbWVTaGFrZUFuaW1hdGlvbl0pO1xuXG4gIGNvbnN0IGV4ZWN1dGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY29tbWFuZCwgbWV0YSkgPT4ge1xuICAgICAgLy8gT25seSBtYWluIGVudHJpZXMgZ2V0IGFkZGVkIHRvIGhpc3RvcnksIHNvIHdoZW4gYSBzdWJjb21tYW5kIGlzIGV4ZWN1dGVkLFxuICAgICAgLy8gd2UgYWRkIHRoZSBtYWluIGNvbW1hbmQgb2YgaXQgdG8gdGhlIGhpc3RvcnkgKHRoZSB0b3AtbGV2ZWwgY29tbWFuZCkuXG4gICAgICAvL1xuICAgICAgLy8gVGhlIGtleSB0byBpZGVudGlmeSBoaXN0b3J5IGVudHJpZXMgYnkgaXMgYWx3YXlzIHRoZSBzZWFyY2hUZXh0XG4gICAgICAvLyBUaGVyZSB3aWxsIG5ldmVyIGJlIHR3byBoaXN0b3J5IGVudHJpZXMgd2l0aCB0aGUgc2FtZSBzZWFyY2hUZXh0XG4gICAgICBjb25zdCBlbnRyeSA9XG4gICAgICAgIHN0YXRlLnN0YWNrLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gLy8gVGhlIHN0YWNrIGlzIGVtcHR5LCBzbyB3ZSBhcmUgZXhlY3V0aW5nIGEgdG9wLWxldmVsIGNvbW1hbmRcbiAgICAgICAgICAgIHsgc2VhcmNoVGV4dDogc3RhdGUuc2VhcmNoVGV4dCwgcmVzdWx0czogc3RhdGUucmVzdWx0cyB9XG4gICAgICAgICAgOiAvLyBXZSBhcmUgZXhlY3V0aW5nIGEgc3ViY29tbWFuZCwgc28gd2UgZ2V0IHRoZSB0b3AtbGV2ZWwgY29tbWFuZCBmb3IgaXQsXG4gICAgICAgICAgICAvLyB3aGljaCBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSBzdGFjay5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogc3RhdGUuc3RhY2tbMF0uc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogc3RhdGUuc3RhY2tbMF0ucmVzdWx0cyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgIC8vIEFkZCB0aGUgZW50cnkgdG8gdGhlIGhpc3RvcnksIHdoaWxlIGV4Y2x1ZGluZyBhbnkgZWFybGllciBoaXN0b3J5IGVudHJ5XG4gICAgICAvLyB3aXRoIHRoZSBzYW1lIHNlYXJjaCB0ZXh0LiBUaGlzIGVmZmVjdGl2ZWx5IFwibW92ZXNcIiB0aGF0IGVudHJ5IHRvIHRoZVxuICAgICAgLy8gdG9wIG9mIHRoZSBoaXN0b3J5ICh3aXRoIHRoZSBtb3N0IHJlY2VudCByZXN1bHRzKSwgb3IgYXBwZW5kcyBhIG5ldyBlbnRyeVxuICAgICAgLy8gd2hlbiBpdCBkaWRuJ3QgZXhpc3QgYmVmb3JlLlxuICAgICAgb25IaXN0b3J5RW50cmllc0NoYW5nZUZyb21QYXJlbnQoW1xuICAgICAgICAuLi5wcm9wcy5oaXN0b3J5RW50cmllcy5maWx0ZXIoXG4gICAgICAgICAgKGNvbW1hbmQpID0+IGNvbW1hbmQuc2VhcmNoVGV4dCAhPT0gZW50cnkuc2VhcmNoVGV4dFxuICAgICAgICApLFxuICAgICAgICBlbnRyeSxcbiAgICAgIF0pO1xuXG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFNlYXJjaFRleHQnIH0pO1xuXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCgpO1xuXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQoY29tbWFuZCwgbWV0YSk7XG4gICAgfSxcbiAgICBbXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQsXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzdGF0ZS5yZXN1bHRzLFxuICAgICAgc3RhdGUuc2VhcmNoVGV4dCxcbiAgICAgIHN0YXRlLnN0YWNrLFxuICAgIF1cbiAgKTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIFByZXZlbnRpbmcgY3Vyc29yIGp1bXBzIGNhbiBvbmx5IGhhcHBlbiBpbiBvbktleURvd24sIGJ1dCBub3QgaW4gb25LZXlVcFxuICAgICAgZXZlbnQucGVyc2lzdCgpO1xuXG4gICAgICAvLyBXZSB3YW50IHRvIGtub3cgd2hlbiB0aGUgdXNlciBwcmVzc2VzIGNtZCtlbnRlciAoY21kIGJlaW5nIGEgbWV0YSBrZXkpLlxuICAgICAgLy8gV2UgYXJlIG9ubHkgdG9sZCBhYm91dCB0aGlzIGluIGtleURvd24sIGJ1dCBub3QgaW4ga2V5VXAsIHNvIHdlIG5lZWRcbiAgICAgIC8vIHRvIGhhbmRsZSBpdCBoZXJlXG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmIGhhc05ld1dpbmRvd01vZGlmaWVyKGV2ZW50KSkge1xuICAgICAgICBpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEF2b2lkIHNlbGVjdGluZyB0aGUgd2hvbGUgcGFnZSB3aGVuIHVzZXIgc2VsZWN0ZXMgZXZlcnl0aGluZyB3aXRoXG4gICAgICAvLyBhIGtleWJvYXJkIHNob3J0Y3V0LiBUaGVyZSBpcyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyB0aG91Z2guXG4gICAgICAvLyBUaGlzIHByZXZlbnRzIHRoZSB3aG9sZSBwYWdlIGZyb20gYmVpbmcgc2VsZWN0ZWQgaW4gY2FzZSB0aGUgdXNlclxuICAgICAgLy8gMSkgb3BlbnMgdGhlIHNlYXJjaCBib3hcbiAgICAgIC8vIDIpIHR5cGVzIGludG8gaXRcbiAgICAgIC8vIDMpIHNlbGVjdHMgYWxsIHRleHQgdXNpbmcgY21kK2FcbiAgICAgIC8vIDQpIGNsb3NlcyB0aGUgc2VhcmNoIGJveCB3aXRoIGVzY1xuICAgICAgLy8gV2l0aG91dCB0aGlzIGhhbmRsaW5nLCB0aGUgd2hvbGUgcGFnZSB3b3VsZCBub3cgYmUgc2VsZWN0ZWRcbiAgICAgIGlmIChpc1NlbGVjdEFsbENvbWJvKGV2ZW50KSkge1xuICAgICAgICAvLyBUaGlzIHN0b3BzIHRoZSBicm93c2VyIGZyb20gc2VsZWN0aW5nIGFueXRoaW5nXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChzZWFyY2hJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgLy8gVGhpcyBzZWxlY3RzIHRoZSB0ZXh0IGluIHRoZSBzZWFyY2ggaW5wdXRcbiAgICAgICAgICBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGF2b2lkIGludGVyZmVyaW5nIHdpdGggb3RoZXIga2V5IGNvbWJpbmF0aW9ucyB1c2luZyBtb2RpZmllciBrZXlzXG4gICAgICBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQubWV0YUtleSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGlzQ2xvc2VDb21ibyhldmVudCkpIHJldHVybjtcblxuICAgICAgLy8gc2tpcCBuZXh0IG1vdXNlRW50ZXIgdG8gYXZvaWQgc2V0dGluZyBzZWxlY3RlZFJlc3VsdCB3aGVuIGN1cnNvciBqdXN0XG4gICAgICAvLyBoYXBwZW5zIHRvIGJlIHdoZXJlIHRoZSByZXN1bHRzIHdpbGwgcG9wIHVwXG4gICAgICBza2lwTmV4dFNlbGVjdGlvbi5jdXJyZW50ID0gdHJ1ZTtcblxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgLy8gcHJldmVudCBjdXJzb3IgZnJvbSBqdW1waW5nIHRvIGVuZCBvZiB0ZXh0IGlucHV0XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogJ2luY3JlbWVudFNlbGVjdGVkUmVzdWx0JyB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgIC8vIGJyb3dzZSB0aHJvdWdoIGhpc3RvcnlcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgKHN0YXRlLnNlbGVjdGVkUmVzdWx0IDwgMSAmJiBzdGF0ZS5lbmFibGVIaXN0b3J5KVxuICAgICAgICApIHtcbiAgICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9XG4gICAgICAgICAgICBzdGF0ZS5zZWFyY2hUZXh0Lmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICA/IC8vIFdoZW4gZ29pbmcgYmFjayB0aGUgZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIDogLy8gV2hlbiBnb2luZyBiYWNrIG1vcmUgdGhhbiBvbmUgc3RlcFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgIChjb21tYW5kKSA9PiBjb21tYW5kLnNlYXJjaFRleHQgPT09IHN0YXRlLnNlYXJjaFRleHRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgIC8vIFBpY2sgdGhlIHByZXZpb3VzIGNvbW1hbmQgZnJvbSB0aGUgaGlzdG9yeVxuICAgICAgICAgIGNvbnN0IHByZXZDb21tYW5kID1cbiAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPT09IC0xXG4gICAgICAgICAgICAgID8gLy8gcHJldmlvdXMgY29tbWFuZCBvbiB0b3Agb2YgdGhlIGhpc3Rvcnkgd2hlbiBnb2luZyBiYWNrIG9uXG4gICAgICAgICAgICAgICAgLy8gZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIGxhc3QocHJvcHMuaGlzdG9yeUVudHJpZXMpXG4gICAgICAgICAgICAgIDogLy8gcHJldmlvdXMgY29tbWFuZCBpcyBkZWVwZXIgZG93blxuICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGhpc3RvcnkgZG9lcyBub3QgZXhpc3QgKG5lZ2F0aXZlIGluZGV4KSwgdGhlblxuICAgICAgICAgICAgICAgIC8vIHRoaXMgaW1wbGljaXRseSByZXR1cm5zIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzW3NlbGVjdGVkSW5kZXggLSAxXTtcbiAgICAgICAgICAvLyBTa2lwIHdoZW4gbm8gcHJldmlvdXMgZW50cnkgZXhpc3RzIGluIHRoZSBoaXN0b3J5XG4gICAgICAgICAgaWYgKCFwcmV2Q29tbWFuZCkgcmV0dXJuO1xuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyB0byBiZWdpbm5pbmcgb2YgdGV4dCBpbnB1dFxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA+IC0xKSB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSBzdGF0ZS5yZXN1bHRzW3N0YXRlLnNlbGVjdGVkUmVzdWx0XTtcbiAgICAgICAgICBjb25zdCBzZWFyY2hUZXh0ID0gc3RhdGUuc2VhcmNoVGV4dDtcbiAgICAgICAgICBjb25zdCBpc0N1cnNvckF0RW5kID1cbiAgICAgICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvblN0YXJ0O1xuXG4gICAgICAgICAgY29uc3QgaXNFdmVyeXRoaW5nU2VsZWN0ZWQgPVxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudCAmJlxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCAmJlxuICAgICAgICAgICAgc3RhdGUuc2VhcmNoVGV4dC5sZW5ndGggPT09IHNlYXJjaElucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uRW5kO1xuXG4gICAgICAgICAgLy8gb25seSBhbGxvdyBkaXZpbmcgaW4gd2hlbiBjdXJzb3IgaXMgYXQgZW5kIG9mIGlucHV0IG9yIHdoZW5cbiAgICAgICAgICAvLyB0aGUgY29tcGxldGUgdGV4dCBpcyBzZWxlY3RlZCAod2hlbiBicm93c2luZyB0aHJvdWdoIGhpc3RvcnkpXG4gICAgICAgICAgaWYgKCFpc0N1cnNvckF0RW5kICYmICFpc0V2ZXJ5dGhpbmdTZWxlY3RlZCkgcmV0dXJuO1xuXG4gICAgICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IoKTtcblxuICAgICAgICAgIC8vIE5PVEU6IHNpbmNlIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIFwibmV4dCBjb21tYW5kXCIsIHdoaWNoIGlzIGFuIGFzeW5jIG9wZXJhdGlvbixcbiAgICAgICAgICAvLyB3ZSB1c2UgYSBJSUZFIHRvIHByb2Nlc3MgdGhhdCBhbmQgZXZlbnR1YWxseSB1cGRhdGUgdGhlIHN0YXRlLlxuICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29tbWFuZCkge1xuICAgICAgICAgICAgICBjb25zdCBuZXh0Q29tbWFuZHMgPSBhd2FpdCBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50KGNvbW1hbmQpO1xuICAgICAgICAgICAgICAvLyBhdm9pZCBtb3ZpbmcgY3Vyc29yIHdoZW4gdGhlcmUgYXJlIHN1Yi1vcHRpb25zXG4gICAgICAgICAgICAgIGlmIChuZXh0Q29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgc2VhcmNoIHRleHQgaGFzIG5vdCBjaGFuZ2VkIHdoaWxlIHdlIHdlcmUgbG9hZGluZ1xuICAgICAgICAgICAgICAgIC8vIHRoZSBuZXh0IHJlc3VsdHMsIG90aGVyd2lzZSB3ZSdkIGludGVycnVwdCB0aGUgdXNlci5cbiAgICAgICAgICAgICAgICAvLyBUaHJvdyBhd2F5IHRoZSByZXN1bHRzIGluIGNhc2UgdGhlIHNlYXJjaCB0ZXh0IGhhcyBjaGFuZ2VkLlxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zZWFyY2hUZXh0ID09PSBzZWFyY2hUZXh0KSB7XG4gICAgICAgICAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZXROZXh0Q29tbWFuZHMnLFxuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiB7IHJlc3VsdHM6IG5leHRDb21tYW5kcyB9LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hha2UoKTtcbiAgICAgICAgICB9KSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgICAgIC8vIGdvIGxlZnQgaW4gc3RhY2tcbiAgICAgICAgICBjb25zdCBwcmV2Q29tbWFuZCA9IGxhc3Qoc3RhdGUuc3RhY2spO1xuXG4gICAgICAgICAgLy8gZG8gbm90aGluZyB3aGVuIHdlIGNhbid0IGdvIGxlZnQgYW55bW9yZVxuICAgICAgICAgIGlmICghcHJldkNvbW1hbmQpIHJldHVybjtcblxuICAgICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyBhIGNoYXIgdG8gdGhlIGxlZnQgaW4gdGV4dCBpbnB1dFxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlOiAnc2V0UHJldkNvbW1hbmRzJyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzaGFrZSxcbiAgICAgIHN0YXRlLFxuICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVLZXlVcCA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIHNldHRpbmcgdGhlIHNlbGVjdGlvbiBjYW4gb25seSBoYXBwZW4gaW4gb25LZXlVcFxuICAgICAgaWYgKHNob3VsZFNlbGVjdEZpZWxkVGV4dC5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInICYmICFpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGp1c3QgdHJpZ2dlcmVkIHRoZSBzZWFyY2hcbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA9PT0gLTEpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGhhZCBzb21ldGhpbmcgc2VsZWN0ZWQgYW5kIHdhbnRzIHRvIGdvIHRoZXJlXG4gICAgICBleGVjdXRlKHN0YXRlLnJlc3VsdHNbc3RhdGUuc2VsZWN0ZWRSZXN1bHRdLCB7XG4gICAgICAgIG9wZW5Jbk5ld1RhYjogaXNOZXdXaW5kb3dDb21iby5jdXJyZW50LFxuICAgICAgfSk7XG5cbiAgICAgIGlzTmV3V2luZG93Q29tYm8uY3VycmVudCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBbZXhlY3V0ZSwgc3RhdGUucmVzdWx0cywgc3RhdGUuc2VsZWN0ZWRSZXN1bHRdXG4gICk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrPENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50Pj4oXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBzZWFyY2hUZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgaWYgKHNlYXJjaFRleHQudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZGlzcGF0Y2goeyB0eXBlOiAnc2VhcmNoVGV4dCcsIHBheWxvYWQ6IHNlYXJjaFRleHQgfSk7XG5cbiAgICAgIC8vIEEgc2VhcmNoIHZpYSBuZXR3b3JrIGlzIG9ubHkgdHJpZ2dlcmVkIHdoZW4gdGhlcmVcbiAgICAgIC8vIGFyZSBtb3JlIHRoYW4gdGhyZWUgY2hhcmFjdGVycy4gU28gbm8gZmFsc2UgbG9hZGluZ1xuICAgICAgLy8gaW5kaWNhdGlvbiBpcyBnaXZlbi5cbiAgICAgIGlmIChzZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAzKSB7XG4gICAgICAgIHNldElzTG9hZGluZygpO1xuICAgICAgfVxuXG4gICAgICBzZWFyY2hGcm9tUGFyZW50KHNlYXJjaFRleHQpLnRoZW4oXG4gICAgICAgIChhc3luY1Jlc3VsdHM6IENvbW1hbmRbXSkgPT4ge1xuICAgICAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yKCk7XG4gICAgICAgICAgdW5zZXRJc0xvYWRpbmcoKTtcblxuICAgICAgICAgIGNvbnN0IGZ1c2UgPSBuZXcgRnVzZShhc3luY1Jlc3VsdHMsIHtcbiAgICAgICAgICAgIGtleXM6IFtcbiAgICAgICAgICAgICAgeyBuYW1lOiAndGV4dCcsIHdlaWdodDogMC42IH0sXG4gICAgICAgICAgICAgIHsgbmFtZTogJ2tleXdvcmRzJywgd2VpZ2h0OiAwLjQgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBtaW5NYXRjaENoYXJMZW5ndGg6IDIsXG4gICAgICAgICAgICBpbmNsdWRlU2NvcmU6IHRydWUsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBzZWFyY2hSZXN1bHRzID0gZnVzZVxuICAgICAgICAgICAgLnNlYXJjaChzZWFyY2hUZXh0KVxuICAgICAgICAgICAgLy8gRmlsdGVyIG91dCByZXN1bHRzIHdpdGggYSBtYXRjaGluZyBzY29yZSBvdmVyIDAuNzVcbiAgICAgICAgICAgIC5maWx0ZXIoKHJlc3VsdCkgPT4gKHJlc3VsdC5zY29yZSA/IHJlc3VsdC5zY29yZSA8IDAuNzUgOiBmYWxzZSkpXG4gICAgICAgICAgICAvLyBLZWVwIGEgbWF4aW1hbCBvZiA5IHJlc3VsdHNcbiAgICAgICAgICAgIC5zbGljZSgwLCA5KTtcblxuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdzZXRTZWFyY2hUZXh0UmVzdWx0cycsXG4gICAgICAgICAgICBwYXlsb2FkOiBzZWFyY2hSZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQuaXRlbSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB1bnNldElzTG9hZGluZygpO1xuICAgICAgICAgIHNldEhhc05ldHdvcmtFcnJvcigpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0sXG4gICAgW1xuICAgICAgc2VhcmNoRnJvbVBhcmVudCxcbiAgICAgIHNldEhhc05ldHdvcmtFcnJvcixcbiAgICAgIHNldElzTG9hZGluZyxcbiAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yLFxuICAgICAgdW5zZXRJc0xvYWRpbmcsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVDb250YWluZXJDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFJlc3VsdHNXaGVuQ2xvc2luZycgfSk7XG4gICAgb25DbG9zZUZyb21QYXJlbnQoKTtcbiAgfSwgW29uQ2xvc2VGcm9tUGFyZW50XSk7XG5cbiAgY29uc3QgY3JlYXRlQ29tbWFuZE1vdXNlRW50ZXJIYW5kbGVyID0gdXNlQ2FsbGJhY2s8XG4gICAgKGluZGV4OiBudW1iZXIpID0+IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PlxuICA+KFxuICAgIChpbmRleCkgPT4gKCkgPT4ge1xuICAgICAgLy8gSW4gY2FzZSB0aGUgY3Vyc29yIGhhcHBlbmVkIHRvIGJlIGluIGEgbG9jYXRpb24gd2hlcmUgYVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGFwcGVhciwgaXQgd291bGQgdHJpZ2dlciBvbk1vdXNlRW50ZXIgYW5kIHRoZVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGJlIHNlbGVjdGVkIGltbWVkaWF0ZWx5LiBUaGlzIGlzIG5vdCBzb21ldGhpbmdcbiAgICAgIC8vIGEgdXNlciB3b3VsZCBleHBlY3QsIGhlbmNlIHdlIHByZXZlbnQgaXQgZnJvbSBoYXBwZW5pbmcuXG4gICAgICAvLyBUaGUgdXNlciBoYXMgdG8gbW92ZSB0aGUgY3Vyc29yIHRvIGFuIG9wdGlvbiBleHBsaWNpdGx5IGZvclxuICAgICAgLy8gaXQgdG8gYmVjb21lIGFjdGl2ZS4gSG93ZXZlciwgdGhlIHVzZXIgY2FuIGFsd2F5cyBjbGljayBhbmRcbiAgICAgIC8vIHRoYXQgYWN0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkLlxuICAgICAgaWYgKHNraXBOZXh0U2VsZWN0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgc2tpcE5leHRTZWxlY3Rpb24uY3VycmVudCA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIHNldHMgdGhlIHNlbGVjdGVkIHJlc3VsdCwgbWFpbmx5IGZvciB0aGUgaG92ZXIgZWZmZWN0XG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCcsIHBheWxvYWQ6IGluZGV4IH0pO1xuICAgIH0sXG4gICAgW11cbiAgKTtcbiAgY29uc3QgY3JlYXRlQ29tbWFuZENsaWNrSGFuZGxlciA9IHVzZUNhbGxiYWNrPFxuICAgIChjb21tYW5kOiBDb21tYW5kKSA9PiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD5cbiAgPihcbiAgICAoY29tbWFuZCkgPT4gKGV2ZW50KSA9PiB7XG4gICAgICBleGVjdXRlKGNvbW1hbmQsIHtcbiAgICAgICAgb3BlbkluTmV3VGFiOiBoYXNOZXdXaW5kb3dNb2RpZmllcihldmVudCksXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtleGVjdXRlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEJ1dGxlckNvbnRhaW5lclxuICAgICAgb25DbGljaz17aGFuZGxlQ29udGFpbmVyQ2xpY2t9XG4gICAgICBkYXRhLXRlc3RpZD1cInF1aWNrLWFjY2Vzc1wiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3NlYXJjaENvbnRhaW5lclJlZn1cbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yU3VyZmFjZX07XG4gICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICR7Y3VzdG9tUHJvcGVydGllcy5ib3JkZXJSYWRpdXM0fTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA0MHB4O1xuXG4gICAgICAgICAgLyogb25lIG1vcmUgdGhhbiBhcHAtYmFyICgyMDAwMCkgYW5kIG9uZSBtb3JlIHRoYW4gdGhlIG92ZXJsYXkgKDIwMDAxKSAqL1xuICAgICAgICAgIHotaW5kZXg6IDIwMDAyO1xuICAgICAgICAgIHdpZHRoOiA0MDBweDtcbiAgICAgICAgICBtYXJnaW46IDQwcHggYXV0bztcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAxMHB4IDMwcHggLThweCByZ2JhKDAsIDAsIDAsIDAuNzUpO1xuICAgICAgICAgIC1tb3otYm94LXNoYWRvdzogMCAxMHB4IDMwcHggLThweCByZ2JhKDAsIDAsIDAsIDAuNzUpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IC04cHggcmdiYSgwLCAwLCAwLCAwLjc1KTtcbiAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHtzdGF0ZS5oYXNOZXR3b3JrRXJyb3JcbiAgICAgICAgICAgID8gJzAnXG4gICAgICAgICAgICA6IGN1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICBgfVxuICAgICAgICBvbkNsaWNrPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBBdm9pZCBjbG9zaW5nIHdoZW4gdGhlIHNlYXJjaENvbnRhaW5lciBpdHNlbGYgaXMgY2xpY2tlZFxuICAgICAgICAgIC8vIElmIHdlIGRvbid0IGRvIHRoaXMsIHRoZW4gdGhlIG92ZXJsYXkgd2lsbCBjbG9zZSB3aGVuIGUuZy5cbiAgICAgICAgICAvLyB0aGUgc2VhcmNoIGlucHV0IGlzIGNsaWNrZWQuXG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBgfVxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBodG1sRm9yPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nTX07XG4gICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICBgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTZWFyY2hJY29uIGNvbG9yPVwibmV1dHJhbDYwXCIgLz5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJxdWljay1hY2Nlc3Mtc2VhcmNoLWlucHV0XCJcbiAgICAgICAgICAgIHJlZj17c2VhcmNoSW5wdXRSZWZ9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17aW50bC5mb3JtYXRNZXNzYWdlKG1lc3NhZ2VzLmlucHV0UGxhY2Vob2Rlcil9XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ019ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nTX1cbiAgICAgICAgICAgICAgICAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yTmV1dHJhbDYwfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYH1cbiAgICAgICAgICAgIHZhbHVlPXtzdGF0ZS5zZWFyY2hUZXh0fVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgIG9uS2V5VXA9e2hhbmRsZUtleVVwfVxuICAgICAgICAgICAgYXV0b0ZvY3VzPXt0cnVlfVxuICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICB7c3RhdGUuaXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICBpZiAoc3RhdGUuaGFzTmV0d29ya0Vycm9yKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JFcnJvcn07XG4gICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvclN1cmZhY2V9O1xuICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAke2N1c3RvbVByb3BlcnRpZXMuZm9udFNpemVTbWFsbH07XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1hzfTtcbiAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm9mZmxpbmV9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChzdGF0ZS5yZXN1bHRzLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5zZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JOZXV0cmFsfTtcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTb2xpZH07XG4gICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAke2N1c3RvbVByb3BlcnRpZXMuZm9udFNpemVTbWFsbH07XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1hzfTtcbiAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm5vUmVzdWx0c30gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuIHN0YXRlLnJlc3VsdHMubWFwKChjb21tYW5kLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPEJ1dGxlckNvbW1hbmRcbiAgICAgICAgICAgICAga2V5PXtjb21tYW5kLmlkfVxuICAgICAgICAgICAgICBjb21tYW5kPXtjb21tYW5kfVxuICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzdGF0ZS5zZWxlY3RlZFJlc3VsdCA9PT0gaW5kZXh9XG4gICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17Y3JlYXRlQ29tbWFuZE1vdXNlRW50ZXJIYW5kbGVyKGluZGV4KX1cbiAgICAgICAgICAgICAgb25DbGljaz17Y3JlYXRlQ29tbWFuZENsaWNrSGFuZGxlcihjb21tYW5kKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSk7XG4gICAgICAgIH0pKCl9XG4gICAgICA8L2Rpdj5cbiAgICA8L0J1dGxlckNvbnRhaW5lcj5cbiAgKTtcbn07XG5CdXRsZXIuZGlzcGxheU5hbWUgPSAnQnV0bGVyJztcblxuY29uc3QgQnV0bGVyV2l0aEFuaW1hdGlvbiA9IChwcm9wczogT21pdDxQcm9wcywgJ2NsYXNzTmFtZVNoYWtlQW5pbWF0aW9uJz4pID0+IChcbiAgPENsYXNzTmFtZXM+XG4gICAgeyh7IGNzcyB9KSA9PiAoXG4gICAgICA8QnV0bGVyXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgY2xhc3NOYW1lU2hha2VBbmltYXRpb249e2Nzc2BcbiAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDAuNDVzO1xuICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gICAgICAgICAgYW5pbWF0aW9uLW5hbWU6ICR7c2hha2VBbmltYXRpb259O1xuICAgICAgICBgfVxuICAgICAgLz5cbiAgICApfVxuICA8L0NsYXNzTmFtZXM+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBCdXRsZXJXaXRoQW5pbWF0aW9uO1xuIl19 */",
|
|
619
|
-
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
620
|
-
};
|
|
621
|
-
|
|
622
|
-
var Butler = function Butler(props) {
|
|
623
|
-
var intl = reactIntl.useIntl();
|
|
624
|
-
|
|
625
|
-
var _useReducer = react$1.useReducer(reducer, initialState),
|
|
626
|
-
_useReducer2 = _slicedToArray(_useReducer, 2),
|
|
627
|
-
state = _useReducer2[0],
|
|
628
|
-
dispatch = _useReducer2[1];
|
|
629
|
-
|
|
630
|
-
var shouldSelectFieldText = react$1.useRef(false);
|
|
631
|
-
var isNewWindowCombo = react$1.useRef(false);
|
|
632
|
-
var skipNextSelection = react$1.useRef(false);
|
|
633
|
-
var searchContainerRef = react$1.useRef(null);
|
|
634
|
-
var searchInputRef = react$1.useRef(null);
|
|
635
|
-
var setHasNetworkError = react$1.useCallback(function () {
|
|
636
|
-
dispatch({
|
|
637
|
-
type: 'networkError',
|
|
638
|
-
payload: true
|
|
639
|
-
});
|
|
640
|
-
}, []);
|
|
641
|
-
var unsetHasNetworkError = react$1.useCallback(function () {
|
|
642
|
-
dispatch({
|
|
643
|
-
type: 'networkError',
|
|
644
|
-
payload: false
|
|
645
|
-
});
|
|
646
|
-
}, []);
|
|
647
|
-
var setIsLoading = react$1.useCallback(function () {
|
|
648
|
-
dispatch({
|
|
649
|
-
type: 'loading',
|
|
650
|
-
payload: true
|
|
651
|
-
});
|
|
652
|
-
}, []);
|
|
653
|
-
var unsetIsLoading = react$1.useCallback(function () {
|
|
654
|
-
dispatch({
|
|
655
|
-
type: 'loading',
|
|
656
|
-
payload: false
|
|
657
|
-
});
|
|
658
|
-
}, []); // Destructure functions from props to reference them in the hook dependency list
|
|
659
|
-
|
|
660
|
-
var searchFromParent = props.search,
|
|
661
|
-
onCloseFromParent = props.onClose,
|
|
662
|
-
executeCommandFromParent = props.executeCommand,
|
|
663
|
-
onHistoryEntriesChangeFromParent = props.onHistoryEntriesChange,
|
|
664
|
-
getNextCommandsFromParent = props.getNextCommands;
|
|
665
|
-
var shake = react$1.useCallback(function () {
|
|
666
|
-
if (searchContainerRef.current) {
|
|
667
|
-
searchContainerRef.current.classList.remove(props.classNameShakeAnimation); // -> triggering reflow
|
|
668
|
-
// eslint-disable-next-line no-void
|
|
669
|
-
|
|
670
|
-
void searchContainerRef.current.offsetWidth;
|
|
671
|
-
searchContainerRef.current.classList.add(props.classNameShakeAnimation);
|
|
672
|
-
}
|
|
673
|
-
}, [props.classNameShakeAnimation]);
|
|
674
|
-
var execute = react$1.useCallback(function (command, meta) {
|
|
675
|
-
var _context7, _context8;
|
|
676
|
-
|
|
677
|
-
// Only main entries get added to history, so when a subcommand is executed,
|
|
678
|
-
// we add the main command of it to the history (the top-level command).
|
|
679
|
-
//
|
|
680
|
-
// The key to identify history entries by is always the searchText
|
|
681
|
-
// There will never be two history entries with the same searchText
|
|
682
|
-
var entry = state.stack.length === 0 ? // The stack is empty, so we are executing a top-level command
|
|
683
|
-
{
|
|
684
|
-
searchText: state.searchText,
|
|
685
|
-
results: state.results
|
|
686
|
-
} : // We are executing a subcommand, so we get the top-level command for it,
|
|
687
|
-
// which is at the bottom of the stack.
|
|
688
|
-
{
|
|
689
|
-
searchText: state.stack[0].searchText,
|
|
690
|
-
results: state.stack[0].results
|
|
691
|
-
}; // Add the entry to the history, while excluding any earlier history entry
|
|
692
|
-
// with the same search text. This effectively "moves" that entry to the
|
|
693
|
-
// top of the history (with the most recent results), or appends a new entry
|
|
694
|
-
// when it didn't exist before.
|
|
695
|
-
|
|
696
|
-
onHistoryEntriesChangeFromParent(_concatInstanceProperty__default["default"](_context7 = []).call(_context7, _toConsumableArray(_filterInstanceProperty__default["default"](_context8 = props.historyEntries).call(_context8, function (command) {
|
|
697
|
-
return command.searchText !== entry.searchText;
|
|
698
|
-
})), [entry]));
|
|
699
|
-
dispatch({
|
|
700
|
-
type: 'resetSearchText'
|
|
701
|
-
});
|
|
702
|
-
onCloseFromParent();
|
|
703
|
-
executeCommandFromParent(command, meta);
|
|
704
|
-
}, [executeCommandFromParent, onCloseFromParent, onHistoryEntriesChangeFromParent, props.historyEntries, state.results, state.searchText, state.stack]);
|
|
705
|
-
var handleKeyDown = react$1.useCallback(function (event) {
|
|
706
|
-
// Preventing cursor jumps can only happen in onKeyDown, but not in onKeyUp
|
|
707
|
-
event.persist(); // We want to know when the user presses cmd+enter (cmd being a meta key).
|
|
708
|
-
// We are only told about this in keyDown, but not in keyUp, so we need
|
|
709
|
-
// to handle it here
|
|
710
|
-
|
|
711
|
-
if (event.key === 'Enter' && hasNewWindowModifier(event)) {
|
|
712
|
-
isNewWindowCombo.current = true;
|
|
713
|
-
return;
|
|
714
|
-
} // Avoid selecting the whole page when user selectes everything with
|
|
715
|
-
// a keyboard shortcut. There is probably a better way to do this though.
|
|
716
|
-
// This prevents the whole page from being selected in case the user
|
|
717
|
-
// 1) opens the search box
|
|
718
|
-
// 2) types into it
|
|
719
|
-
// 3) selects all text using cmd+a
|
|
720
|
-
// 4) closes the search box with esc
|
|
721
|
-
// Without this handling, the whole page would now be selected
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
if (isSelectAllCombo(event)) {
|
|
725
|
-
// This stops the browser from selecting anything
|
|
726
|
-
event.preventDefault();
|
|
727
|
-
|
|
728
|
-
if (searchInputRef.current) {
|
|
729
|
-
// This selects the text in the search input
|
|
730
|
-
searchInputRef.current.setSelectionRange(0, state.searchText.length);
|
|
731
|
-
}
|
|
732
|
-
|
|
733
|
-
return;
|
|
734
|
-
} // avoid interfering with other key combinations using modifier keys
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
if (event.ctrlKey || event.altKey || event.shiftKey || event.metaKey) return;
|
|
738
|
-
if (isCloseCombo(event)) return; // skip next mouseEnter to avoid setting selectedResult when cursor just
|
|
739
|
-
// happens to be where the results will pop up
|
|
740
|
-
|
|
741
|
-
skipNextSelection.current = true;
|
|
742
|
-
|
|
743
|
-
if (event.key === 'ArrowDown') {
|
|
744
|
-
// prevent cursor from jumping to end of text input
|
|
745
|
-
event.preventDefault();
|
|
746
|
-
dispatch({
|
|
747
|
-
type: 'incrementSelectedResult'
|
|
748
|
-
});
|
|
749
|
-
return;
|
|
750
|
-
}
|
|
751
|
-
|
|
752
|
-
if (event.key === 'ArrowUp') {
|
|
753
|
-
// browse through history
|
|
754
|
-
if (state.searchText.length === 0 || state.selectedResult < 1 && state.enableHistory) {
|
|
755
|
-
var _context9;
|
|
756
|
-
|
|
757
|
-
shouldSelectFieldText.current = true;
|
|
758
|
-
var selectedIndex = state.searchText.length === 0 ? // When going back the first step
|
|
759
|
-
-1 : // When going back more than one step
|
|
760
|
-
_findIndexInstanceProperty__default["default"](_context9 = props.historyEntries).call(_context9, function (command) {
|
|
761
|
-
return command.searchText === state.searchText;
|
|
762
|
-
}); // Pick the previous command from the history
|
|
763
|
-
|
|
764
|
-
var prevCommand = selectedIndex === -1 ? // previous command on top of the history when going back on
|
|
765
|
-
// first step
|
|
766
|
-
last__default["default"](props.historyEntries) : // previous command is deeper down
|
|
767
|
-
// When the history does not exist (negative index), then
|
|
768
|
-
// this implicitly returns undefined
|
|
769
|
-
props.historyEntries[selectedIndex - 1]; // Skip when no previous entry exists in the history
|
|
770
|
-
|
|
771
|
-
if (!prevCommand) return;
|
|
772
|
-
dispatch({
|
|
773
|
-
type: 'pickCommandFromHistory',
|
|
774
|
-
payload: {
|
|
775
|
-
searchText: prevCommand.searchText,
|
|
776
|
-
results: prevCommand.results
|
|
777
|
-
}
|
|
778
|
-
});
|
|
779
|
-
return;
|
|
780
|
-
} // prevent cursor from jumping to beginning of text input
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
event.preventDefault();
|
|
784
|
-
dispatch({
|
|
785
|
-
type: 'decrementSelectedResult'
|
|
786
|
-
});
|
|
787
|
-
return;
|
|
788
|
-
}
|
|
789
|
-
|
|
790
|
-
if (state.selectedResult > -1) {
|
|
791
|
-
if (event.key === 'ArrowRight') {
|
|
792
|
-
var _command = state.results[state.selectedResult];
|
|
793
|
-
var _searchText = state.searchText;
|
|
794
|
-
var isCursorAtEnd = searchInputRef.current && state.searchText.length === searchInputRef.current.selectionStart;
|
|
795
|
-
var isEverythingSelected = searchInputRef.current && searchInputRef.current.selectionStart === 0 && state.searchText.length === searchInputRef.current.selectionEnd; // only allow diving in when cursor is at end of input or when
|
|
796
|
-
// the complete text is selected (when browsing through history)
|
|
797
|
-
|
|
798
|
-
if (!isCursorAtEnd && !isEverythingSelected) return;
|
|
799
|
-
unsetHasNetworkError(); // NOTE: since we need to fetch the "next command", which is an async operation,
|
|
800
|
-
// we use a IIFE to process that and eventually update the state.
|
|
801
|
-
|
|
802
|
-
_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee() {
|
|
803
|
-
var nextCommands;
|
|
804
|
-
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context10) {
|
|
805
|
-
while (1) {
|
|
806
|
-
switch (_context10.prev = _context10.next) {
|
|
807
|
-
case 0:
|
|
808
|
-
if (!_command) {
|
|
809
|
-
_context10.next = 7;
|
|
810
|
-
break;
|
|
811
|
-
}
|
|
812
|
-
|
|
813
|
-
_context10.next = 3;
|
|
814
|
-
return getNextCommandsFromParent(_command);
|
|
815
|
-
|
|
816
|
-
case 3:
|
|
817
|
-
nextCommands = _context10.sent;
|
|
818
|
-
|
|
819
|
-
if (!(nextCommands.length > 0)) {
|
|
820
|
-
_context10.next = 7;
|
|
821
|
-
break;
|
|
822
|
-
}
|
|
823
|
-
|
|
824
|
-
// Ensure the search text has not changed while we were loading
|
|
825
|
-
// the next results, otherwise we'd interrupt the user.
|
|
826
|
-
// Throw away the results in case the search text has changed.
|
|
827
|
-
if (state.searchText === _searchText) {
|
|
828
|
-
dispatch({
|
|
829
|
-
type: 'setNextCommands',
|
|
830
|
-
payload: {
|
|
831
|
-
results: nextCommands
|
|
832
|
-
}
|
|
833
|
-
});
|
|
834
|
-
}
|
|
835
|
-
|
|
836
|
-
return _context10.abrupt("return");
|
|
837
|
-
|
|
838
|
-
case 7:
|
|
839
|
-
shake();
|
|
840
|
-
|
|
841
|
-
case 8:
|
|
842
|
-
case "end":
|
|
843
|
-
return _context10.stop();
|
|
844
|
-
}
|
|
845
|
-
}
|
|
846
|
-
}, _callee);
|
|
847
|
-
}))();
|
|
848
|
-
|
|
849
|
-
return;
|
|
850
|
-
}
|
|
851
|
-
|
|
852
|
-
if (event.key === 'ArrowLeft') {
|
|
853
|
-
// go left in stack
|
|
854
|
-
var _prevCommand = last__default["default"](state.stack); // do nothing when we can't go left anymore
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
if (!_prevCommand) return; // prevent cursor from jumping a char to the left in text input
|
|
858
|
-
|
|
859
|
-
event.preventDefault();
|
|
860
|
-
dispatch({
|
|
861
|
-
type: 'setPrevCommands',
|
|
862
|
-
payload: {
|
|
863
|
-
searchText: _prevCommand.searchText,
|
|
864
|
-
results: _prevCommand.results
|
|
865
|
-
}
|
|
866
|
-
});
|
|
867
|
-
return;
|
|
868
|
-
}
|
|
869
|
-
}
|
|
870
|
-
}, [getNextCommandsFromParent, props.historyEntries, shake, state, unsetHasNetworkError]);
|
|
871
|
-
var handleKeyUp = react$1.useCallback(function (event) {
|
|
872
|
-
// setting the selection can only happen in onKeyUp
|
|
873
|
-
if (shouldSelectFieldText.current) {
|
|
874
|
-
var input = event.target;
|
|
875
|
-
input.focus();
|
|
876
|
-
input.select();
|
|
877
|
-
shouldSelectFieldText.current = false;
|
|
878
|
-
}
|
|
879
|
-
|
|
880
|
-
if (event.key !== 'Enter' && !isNewWindowCombo.current) return true; // User just triggered the search
|
|
881
|
-
|
|
882
|
-
if (state.selectedResult === -1) return true; // User had something selected and wants to go there
|
|
883
|
-
|
|
884
|
-
execute(state.results[state.selectedResult], {
|
|
885
|
-
openInNewTab: isNewWindowCombo.current
|
|
886
|
-
});
|
|
887
|
-
isNewWindowCombo.current = false;
|
|
888
|
-
return true;
|
|
889
|
-
}, [execute, state.results, state.selectedResult]);
|
|
890
|
-
var handleChange = react$1.useCallback(function (event) {
|
|
891
|
-
var searchText = event.target.value;
|
|
892
|
-
|
|
893
|
-
if (_trimInstanceProperty__default["default"](searchText).call(searchText).length === 0) {
|
|
894
|
-
dispatch({
|
|
895
|
-
type: 'reset'
|
|
896
|
-
});
|
|
897
|
-
return;
|
|
898
|
-
}
|
|
899
|
-
|
|
900
|
-
dispatch({
|
|
901
|
-
type: 'searchText',
|
|
902
|
-
payload: searchText
|
|
903
|
-
}); // A search via network is only triggered when there
|
|
904
|
-
// are more than three characters. So no false loading
|
|
905
|
-
// indication is given.
|
|
906
|
-
|
|
907
|
-
if (_trimInstanceProperty__default["default"](searchText).call(searchText).length > 3) {
|
|
908
|
-
setIsLoading();
|
|
909
|
-
}
|
|
910
|
-
|
|
911
|
-
searchFromParent(searchText).then(function (asyncResults) {
|
|
912
|
-
var _context11, _context12;
|
|
913
|
-
|
|
914
|
-
unsetHasNetworkError();
|
|
915
|
-
unsetIsLoading();
|
|
916
|
-
var fuse = new Fuse__default["default"](asyncResults, {
|
|
917
|
-
keys: [{
|
|
918
|
-
name: 'text',
|
|
919
|
-
weight: 0.6
|
|
920
|
-
}, {
|
|
921
|
-
name: 'keywords',
|
|
922
|
-
weight: 0.4
|
|
923
|
-
}],
|
|
924
|
-
minMatchCharLength: 2,
|
|
925
|
-
includeScore: true
|
|
926
|
-
});
|
|
927
|
-
|
|
928
|
-
var searchResults = _sliceInstanceProperty__default["default"](_context11 = _filterInstanceProperty__default["default"](_context12 = fuse.search(searchText) // Filter out results with a matching score over 0.75
|
|
929
|
-
).call(_context12, function (result) {
|
|
930
|
-
return result.score ? result.score < 0.75 : false;
|
|
931
|
-
}) // Keep a maximal of 9 results
|
|
932
|
-
).call(_context11, 0, 9);
|
|
933
|
-
|
|
934
|
-
dispatch({
|
|
935
|
-
type: 'setSearchTextResults',
|
|
936
|
-
payload: _mapInstanceProperty__default["default"](searchResults).call(searchResults, function (result) {
|
|
937
|
-
return result.item;
|
|
938
|
-
})
|
|
939
|
-
});
|
|
940
|
-
}, function (error) {
|
|
941
|
-
// eslint-disable-next-line no-console
|
|
942
|
-
if (process.env.NODE_ENV !== 'production') console.error(error);
|
|
943
|
-
unsetIsLoading();
|
|
944
|
-
setHasNetworkError();
|
|
945
|
-
});
|
|
946
|
-
}, [searchFromParent, setHasNetworkError, setIsLoading, unsetHasNetworkError, unsetIsLoading]);
|
|
947
|
-
var handleContainerClick = react$1.useCallback(function () {
|
|
948
|
-
dispatch({
|
|
949
|
-
type: 'resetResultsWhenClosing'
|
|
950
|
-
});
|
|
951
|
-
onCloseFromParent();
|
|
952
|
-
}, [onCloseFromParent]);
|
|
953
|
-
var createCommandMouseEnterHandler = react$1.useCallback(function (index) {
|
|
954
|
-
return function () {
|
|
955
|
-
// In case the cursor happened to be in a location where a
|
|
956
|
-
// result would appear, it would trigger onMouseEnter and the
|
|
957
|
-
// result would be selected immediately. This is not something
|
|
958
|
-
// a user would expect, hence we prevent it from happening.
|
|
959
|
-
// The user has to move the cursor to an option explicitly for
|
|
960
|
-
// it to become active. However, the user can always click and
|
|
961
|
-
// that action will be triggered.
|
|
962
|
-
if (skipNextSelection.current) {
|
|
963
|
-
skipNextSelection.current = false;
|
|
964
|
-
return;
|
|
965
|
-
} // sets the selected result, mainly for the hover effect
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
dispatch({
|
|
969
|
-
type: 'selectedResult',
|
|
970
|
-
payload: index
|
|
971
|
-
});
|
|
972
|
-
};
|
|
973
|
-
}, []);
|
|
974
|
-
var createCommandClickHandler = react$1.useCallback(function (command) {
|
|
975
|
-
return function (event) {
|
|
976
|
-
execute(command, {
|
|
977
|
-
openInNewTab: hasNewWindowModifier(event)
|
|
978
|
-
});
|
|
979
|
-
};
|
|
980
|
-
}, [execute]);
|
|
981
|
-
return jsxRuntime.jsx(dist_commercetoolsFrontendApplicationShell.ButlerContainer, {
|
|
982
|
-
onClick: handleContainerClick,
|
|
983
|
-
"data-testid": "quick-access",
|
|
984
|
-
tabIndex: -1,
|
|
985
|
-
children: jsxRuntime.jsxs("div", {
|
|
986
|
-
ref: searchContainerRef,
|
|
987
|
-
css: /*#__PURE__*/react.css("background-color:", designSystem.customProperties.colorSurface, ";border:0;border-radius:", designSystem.customProperties.borderRadius4, ";min-height:40px;z-index:20002;width:400px;margin:40px auto;overflow:hidden;-webkit-box-shadow:0 10px 30px -8px rgba(0, 0, 0, 0.75);-moz-box-shadow:0 10px 30px -8px rgba(0, 0, 0, 0.75);box-shadow:0 10px 30px -8px rgba(0, 0, 0, 0.75);padding-bottom:", state.hasNetworkError ? '0' : designSystem.customProperties.spacingS, ";" + (process.env.NODE_ENV === "production" ? "" : ";label:Butler;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc2xCZ0IiLCJmaWxlIjoiYnV0bGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQ29tbWFuZCxcbiAgU2VhcmNoVGV4dCxcbiAgU2VsZWN0ZWRSZXN1bHQsXG4gIFN0YWNrLFxuICBIaXN0b3J5RW50cnksXG59IGZyb20gJy4uL3R5cGVzJztcblxuaW1wb3J0IHtcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudCxcbiAgTW91c2VFdmVudEhhbmRsZXIsXG4gIE1vdXNlRXZlbnQsXG4gIHVzZVJlZHVjZXIsXG4gIHVzZVJlZixcbiAgdXNlQ2FsbGJhY2ssXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCBGdXNlIGZyb20gJ2Z1c2UuanMnO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdXNlSW50bCB9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IGxhc3QgZnJvbSAnbG9kYXNoL2xhc3QnO1xuaW1wb3J0IHsgY3NzLCBrZXlmcmFtZXMsIENsYXNzTmFtZXMgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvbG9hZGluZy1zcGlubmVyJztcbmltcG9ydCB7IFNlYXJjaEljb24gfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9pY29ucyc7XG5pbXBvcnQgeyBjdXN0b21Qcm9wZXJ0aWVzIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgQnV0bGVyQ29tbWFuZCBmcm9tICcuLi9idXRsZXItY29tbWFuZCc7XG5pbXBvcnQgQnV0bGVyQ29udGFpbmVyIGZyb20gJy4uL2J1dGxlci1jb250YWluZXInO1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4uL21lc3NhZ2VzJztcblxuY29uc3QgaXNTZWxlY3RBbGxDb21ibyA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT5cbiAgZXZlbnQua2V5ID09PSAnYScgJiZcbiAgZXZlbnQubWV0YUtleSAmJlxuICAhZXZlbnQuY3RybEtleSAmJlxuICAhZXZlbnQuYWx0S2V5ICYmXG4gICFldmVudC5zaGlmdEtleTtcblxuY29uc3QgaXNDbG9zZUNvbWJvID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PlxuICBldmVudC5rZXkgPT09ICdFc2NhcGUnICYmXG4gICFldmVudC5tZXRhS2V5ICYmXG4gICFldmVudC5jdHJsS2V5ICYmXG4gICFldmVudC5hbHRLZXkgJiZcbiAgIWV2ZW50LnNoaWZ0S2V5O1xuXG5jb25zdCBnZXRQbGF0Zm9ybSA9ICgpID0+IHtcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdXaW4nKSkgcmV0dXJuICd3aW5kb3dzJztcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdNYWMnKSkgcmV0dXJuICdtYWNvcyc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnWDExJykpIHJldHVybiAndW5peCc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnTGludXgnKSkgcmV0dXJuICdsaW51eCc7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBoYXNOZXdXaW5kb3dNb2RpZmllciA9IChcbiAgZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTEVsZW1lbnQ+IHwgTW91c2VFdmVudDxIVE1MRWxlbWVudD5cbikgPT4ge1xuICBjb25zdCBwbGF0Zm9ybSA9IGdldFBsYXRmb3JtKCk7XG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdtYWNvcyc6XG4gICAgICByZXR1cm4gZXZlbnQubWV0YUtleTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGV2ZW50LmN0cmxLZXk7XG4gIH1cbn07XG5cbmNvbnN0IHNoYWtlQW5pbWF0aW9uID0ga2V5ZnJhbWVzYFxuICBmcm9tLFxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIDE0JSxcbiAgNDIlLFxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTNweCwgMCwgMCk7XG4gIH1cblxuICAyOCUsXG4gIDU2JSxcbiAgODQlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDNweCwgMCwgMCk7XG4gIH1cbmA7XG5cbnR5cGUgU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogYm9vbGVhbjtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0O1xuICBzZWxlY3RlZFJlc3VsdDogU2VsZWN0ZWRSZXN1bHQ7XG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IGJvb2xlYW47XG4gIHJlc3VsdHM6IENvbW1hbmRbXTtcbiAgc3RhY2s6IFN0YWNrW107XG59O1xudHlwZSBBY3Rpb24gPVxuICB8IHsgdHlwZTogJ25ldHdvcmtFcnJvcic7IHBheWxvYWQ6IGJvb2xlYW4gfVxuICB8IHsgdHlwZTogJ2xvYWRpbmcnOyBwYXlsb2FkOiBib29sZWFuIH1cbiAgfCB7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCc7IHBheWxvYWQ6IG51bWJlciB9XG4gIHwgeyB0eXBlOiAnaW5jcmVtZW50U2VsZWN0ZWRSZXN1bHQnIH1cbiAgfCB7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfVxuICB8IHtcbiAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JztcbiAgICAgIHBheWxvYWQ6IHsgc2VhcmNoVGV4dDogU2VhcmNoVGV4dDsgcmVzdWx0czogQ29tbWFuZFtdIH07XG4gICAgfVxuICB8IHsgdHlwZTogJ3NldE5leHRDb21tYW5kcyc7IHBheWxvYWQ6IHsgcmVzdWx0czogQ29tbWFuZFtdIH0gfVxuICB8IHtcbiAgICAgIHR5cGU6ICdzZXRQcmV2Q29tbWFuZHMnO1xuICAgICAgcGF5bG9hZDogeyBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0OyByZXN1bHRzOiBDb21tYW5kW10gfTtcbiAgICB9XG4gIHwgeyB0eXBlOiAnc2VhcmNoVGV4dCc7IHBheWxvYWQ6IHN0cmluZyB9XG4gIHwgeyB0eXBlOiAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOyBwYXlsb2FkOiBDb21tYW5kW10gfVxuICB8IHsgdHlwZTogJ3Jlc2V0U2VhcmNoVGV4dCcgfVxuICB8IHsgdHlwZTogJ3Jlc2V0UmVzdWx0c1doZW5DbG9zaW5nJyB9XG4gIHwgeyB0eXBlOiAncmVzZXQnIH07XG5jb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogZmFsc2UsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIHNlYXJjaFRleHQ6ICcnLFxuICBzZWxlY3RlZFJlc3VsdDogLTEsXG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IHRydWUsXG4gIHJlc3VsdHM6IFtdLFxuICBzdGFjazogW10sXG59O1xuY29uc3QgcmVkdWNlciA9IChzdGF0ZTogU3RhdGUgPSBpbml0aWFsU3RhdGUsIGFjdGlvbjogQWN0aW9uKTogU3RhdGUgPT4ge1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSAnbmV0d29ya0Vycm9yJzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBoYXNOZXR3b3JrRXJyb3I6IGFjdGlvbi5wYXlsb2FkIH07XG4gICAgY2FzZSAnbG9hZGluZyc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaXNMb2FkaW5nOiBhY3Rpb24ucGF5bG9hZCB9O1xuICAgIGNhc2UgJ3NlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQgfTtcbiAgICBjYXNlICdpbmNyZW1lbnRTZWxlY3RlZFJlc3VsdCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6XG4gICAgICAgICAgc3RhdGUuc2VsZWN0ZWRSZXN1bHQgPT09IHN0YXRlLnJlc3VsdHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0ICsgMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ2RlY3JlbWVudFNlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDpcbiAgICAgICAgICBzdGF0ZS5zZWxlY3RlZFJlc3VsdCA8IDFcbiAgICAgICAgICAgID8gc3RhdGUucmVzdWx0cy5sZW5ndGggLSAxXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0IC0gMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ3BpY2tDb21tYW5kRnJvbUhpc3RvcnknOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNlbGVjdGVkUmVzdWx0OiAwLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZC5zZWFyY2hUZXh0LFxuICAgICAgICByZXN1bHRzOiBhY3Rpb24ucGF5bG9hZC5yZXN1bHRzLFxuICAgICAgICBzdGFjazogW10sXG4gICAgICAgIC8vIFRoZSBoaXN0b3J5IGRvZXMgbm90IGdldCBjaGFuZ2VkIGhlcmUsIGl0IHdpbGwgYmUgY2hhbmdlZCBhbG9uZ1xuICAgICAgICAvLyB3aXRoIHRoZSByZWd1bGFyIGZsb3cuXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldE5leHRDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc3RhY2s6IFtcbiAgICAgICAgICAuLi5zdGF0ZS5zdGFjayxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWFyY2hUZXh0OiBzdGF0ZS5zZWFyY2hUZXh0LFxuICAgICAgICAgICAgcmVzdWx0czogc3RhdGUucmVzdWx0cyxcbiAgICAgICAgICAgIHNlbGVjdGVkUmVzdWx0OiBzdGF0ZS5zZWxlY3RlZFJlc3VsdCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogMCxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLnJlc3VsdHMsXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldFByZXZDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VhcmNoVGV4dDogYWN0aW9uLnBheWxvYWQuc2VhcmNoVGV4dCxcbiAgICAgICAgcmVzdWx0czogYWN0aW9uLnBheWxvYWQucmVzdWx0cyxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6IDAsXG4gICAgICAgIGVuYWJsZUhpc3Rvcnk6IGZhbHNlLFxuICAgICAgICAvLyBvbWl0IGxhc3QgaXRlbVxuICAgICAgICBzdGFjazogc3RhdGUuc3RhY2suc2xpY2UoMCwgLTEpLFxuICAgICAgfTtcbiAgICBjYXNlICdzZWFyY2hUZXh0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgLy8gY2xlYXIgbmV0d29yayBlcnJvciB3aGVuIHNlYXJjaCB0ZXh0IGlzIGNsZWFyZWQsIHNvIHRoYXQgdXNlcnNcbiAgICAgICAgLy8gYXJlIHRlbXB0ZWQgdG8gcmV0cnlcbiAgICAgICAgaGFzTmV0d29ya0Vycm9yOiBhY3Rpb24ucGF5bG9hZC5sZW5ndGggPiAwICYmIHN0YXRlLmhhc05ldHdvcmtFcnJvcixcbiAgICAgIH07XG4gICAgY2FzZSAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQubGVuZ3RoID4gMCA/IDAgOiAtMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogdHJ1ZSxcbiAgICAgICAgc3RhY2s6IFtdLFxuICAgICAgfTtcbiAgICBjYXNlICdyZXNldFNlYXJjaFRleHQnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlYXJjaFRleHQ6ICcnLCByZXN1bHRzOiBbXSwgc2VsZWN0ZWRSZXN1bHQ6IC0xIH07XG4gICAgY2FzZSAncmVzZXRSZXN1bHRzV2hlbkNsb3NpbmcnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlbGVjdGVkUmVzdWx0OiAtMSwgZW5hYmxlSGlzdG9yeTogdHJ1ZSB9O1xuICAgIGNhc2UgJ3Jlc2V0JzpcbiAgICAgIHJldHVybiBpbml0aWFsU3RhdGU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxudHlwZSBQcm9wcyA9IHtcbiAgaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdO1xuICBvbkhpc3RvcnlFbnRyaWVzQ2hhbmdlOiAoaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdKSA9PiB2b2lkO1xuICBzZWFyY2g6IChzZWFyY2hUZXh0OiBTZWFyY2hUZXh0KSA9PiBQcm9taXNlPENvbW1hbmRbXT47XG4gIGdldE5leHRDb21tYW5kczogKGNvbW1hbmQ6IENvbW1hbmQpID0+IFByb21pc2U8Q29tbWFuZFtdPjtcbiAgZXhlY3V0ZUNvbW1hbmQ6IChjb21tYW5kOiBDb21tYW5kLCBtZXRhOiB7IG9wZW5Jbk5ld1RhYjogYm9vbGVhbiB9KSA9PiB2b2lkO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xuICBjbGFzc05hbWVTaGFrZUFuaW1hdGlvbjogc3RyaW5nO1xufTtcbmNvbnN0IEJ1dGxlciA9IChwcm9wczogUHJvcHMpID0+IHtcbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSB1c2VSZWR1Y2VyPFxuICAgIChwcmV2U3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvbikgPT4gU3RhdGVcbiAgPihyZWR1Y2VyLCBpbml0aWFsU3RhdGUpO1xuXG4gIGNvbnN0IHNob3VsZFNlbGVjdEZpZWxkVGV4dCA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IGlzTmV3V2luZG93Q29tYm8gPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBza2lwTmV4dFNlbGVjdGlvbiA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHNlYXJjaENvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IHNlYXJjaElucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IHNldEhhc05ldHdvcmtFcnJvciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICduZXR3b3JrRXJyb3InLCBwYXlsb2FkOiB0cnVlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHVuc2V0SGFzTmV0d29ya0Vycm9yID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogJ25ldHdvcmtFcnJvcicsIHBheWxvYWQ6IGZhbHNlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogdHJ1ZSB9KTtcbiAgfSwgW10pO1xuICBjb25zdCB1bnNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogZmFsc2UgfSk7XG4gIH0sIFtdKTtcblxuICAvLyBEZXN0cnVjdHVyZSBmdW5jdGlvbnMgZnJvbSBwcm9wcyB0byByZWZlcmVuY2UgdGhlbSBpbiB0aGUgaG9vayBkZXBlbmRlbmN5IGxpc3RcbiAgY29uc3Qge1xuICAgIHNlYXJjaDogc2VhcmNoRnJvbVBhcmVudCxcbiAgICBvbkNsb3NlOiBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICBleGVjdXRlQ29tbWFuZDogZXhlY3V0ZUNvbW1hbmRGcm9tUGFyZW50LFxuICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2U6IG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgIGdldE5leHRDb21tYW5kczogZ2V0TmV4dENvbW1hbmRzRnJvbVBhcmVudCxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHNoYWtlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzZWFyY2hDb250YWluZXJSZWYuY3VycmVudCkge1xuICAgICAgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgcHJvcHMuY2xhc3NOYW1lU2hha2VBbmltYXRpb25cbiAgICAgICk7XG4gICAgICAvLyAtPiB0cmlnZ2VyaW5nIHJlZmxvd1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZvaWRcbiAgICAgIHZvaWQgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQub2Zmc2V0V2lkdGg7XG4gICAgICBzZWFyY2hDb250YWluZXJSZWYuY3VycmVudC5jbGFzc0xpc3QuYWRkKHByb3BzLmNsYXNzTmFtZVNoYWtlQW5pbWF0aW9uKTtcbiAgICB9XG4gIH0sIFtwcm9wcy5jbGFzc05hbWVTaGFrZUFuaW1hdGlvbl0pO1xuXG4gIGNvbnN0IGV4ZWN1dGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY29tbWFuZCwgbWV0YSkgPT4ge1xuICAgICAgLy8gT25seSBtYWluIGVudHJpZXMgZ2V0IGFkZGVkIHRvIGhpc3RvcnksIHNvIHdoZW4gYSBzdWJjb21tYW5kIGlzIGV4ZWN1dGVkLFxuICAgICAgLy8gd2UgYWRkIHRoZSBtYWluIGNvbW1hbmQgb2YgaXQgdG8gdGhlIGhpc3RvcnkgKHRoZSB0b3AtbGV2ZWwgY29tbWFuZCkuXG4gICAgICAvL1xuICAgICAgLy8gVGhlIGtleSB0byBpZGVudGlmeSBoaXN0b3J5IGVudHJpZXMgYnkgaXMgYWx3YXlzIHRoZSBzZWFyY2hUZXh0XG4gICAgICAvLyBUaGVyZSB3aWxsIG5ldmVyIGJlIHR3byBoaXN0b3J5IGVudHJpZXMgd2l0aCB0aGUgc2FtZSBzZWFyY2hUZXh0XG4gICAgICBjb25zdCBlbnRyeSA9XG4gICAgICAgIHN0YXRlLnN0YWNrLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gLy8gVGhlIHN0YWNrIGlzIGVtcHR5LCBzbyB3ZSBhcmUgZXhlY3V0aW5nIGEgdG9wLWxldmVsIGNvbW1hbmRcbiAgICAgICAgICAgIHsgc2VhcmNoVGV4dDogc3RhdGUuc2VhcmNoVGV4dCwgcmVzdWx0czogc3RhdGUucmVzdWx0cyB9XG4gICAgICAgICAgOiAvLyBXZSBhcmUgZXhlY3V0aW5nIGEgc3ViY29tbWFuZCwgc28gd2UgZ2V0IHRoZSB0b3AtbGV2ZWwgY29tbWFuZCBmb3IgaXQsXG4gICAgICAgICAgICAvLyB3aGljaCBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSBzdGFjay5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogc3RhdGUuc3RhY2tbMF0uc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogc3RhdGUuc3RhY2tbMF0ucmVzdWx0cyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgIC8vIEFkZCB0aGUgZW50cnkgdG8gdGhlIGhpc3RvcnksIHdoaWxlIGV4Y2x1ZGluZyBhbnkgZWFybGllciBoaXN0b3J5IGVudHJ5XG4gICAgICAvLyB3aXRoIHRoZSBzYW1lIHNlYXJjaCB0ZXh0LiBUaGlzIGVmZmVjdGl2ZWx5IFwibW92ZXNcIiB0aGF0IGVudHJ5IHRvIHRoZVxuICAgICAgLy8gdG9wIG9mIHRoZSBoaXN0b3J5ICh3aXRoIHRoZSBtb3N0IHJlY2VudCByZXN1bHRzKSwgb3IgYXBwZW5kcyBhIG5ldyBlbnRyeVxuICAgICAgLy8gd2hlbiBpdCBkaWRuJ3QgZXhpc3QgYmVmb3JlLlxuICAgICAgb25IaXN0b3J5RW50cmllc0NoYW5nZUZyb21QYXJlbnQoW1xuICAgICAgICAuLi5wcm9wcy5oaXN0b3J5RW50cmllcy5maWx0ZXIoXG4gICAgICAgICAgKGNvbW1hbmQpID0+IGNvbW1hbmQuc2VhcmNoVGV4dCAhPT0gZW50cnkuc2VhcmNoVGV4dFxuICAgICAgICApLFxuICAgICAgICBlbnRyeSxcbiAgICAgIF0pO1xuXG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFNlYXJjaFRleHQnIH0pO1xuXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCgpO1xuXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQoY29tbWFuZCwgbWV0YSk7XG4gICAgfSxcbiAgICBbXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQsXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzdGF0ZS5yZXN1bHRzLFxuICAgICAgc3RhdGUuc2VhcmNoVGV4dCxcbiAgICAgIHN0YXRlLnN0YWNrLFxuICAgIF1cbiAgKTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIFByZXZlbnRpbmcgY3Vyc29yIGp1bXBzIGNhbiBvbmx5IGhhcHBlbiBpbiBvbktleURvd24sIGJ1dCBub3QgaW4gb25LZXlVcFxuICAgICAgZXZlbnQucGVyc2lzdCgpO1xuXG4gICAgICAvLyBXZSB3YW50IHRvIGtub3cgd2hlbiB0aGUgdXNlciBwcmVzc2VzIGNtZCtlbnRlciAoY21kIGJlaW5nIGEgbWV0YSBrZXkpLlxuICAgICAgLy8gV2UgYXJlIG9ubHkgdG9sZCBhYm91dCB0aGlzIGluIGtleURvd24sIGJ1dCBub3QgaW4ga2V5VXAsIHNvIHdlIG5lZWRcbiAgICAgIC8vIHRvIGhhbmRsZSBpdCBoZXJlXG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmIGhhc05ld1dpbmRvd01vZGlmaWVyKGV2ZW50KSkge1xuICAgICAgICBpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEF2b2lkIHNlbGVjdGluZyB0aGUgd2hvbGUgcGFnZSB3aGVuIHVzZXIgc2VsZWN0ZXMgZXZlcnl0aGluZyB3aXRoXG4gICAgICAvLyBhIGtleWJvYXJkIHNob3J0Y3V0LiBUaGVyZSBpcyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyB0aG91Z2guXG4gICAgICAvLyBUaGlzIHByZXZlbnRzIHRoZSB3aG9sZSBwYWdlIGZyb20gYmVpbmcgc2VsZWN0ZWQgaW4gY2FzZSB0aGUgdXNlclxuICAgICAgLy8gMSkgb3BlbnMgdGhlIHNlYXJjaCBib3hcbiAgICAgIC8vIDIpIHR5cGVzIGludG8gaXRcbiAgICAgIC8vIDMpIHNlbGVjdHMgYWxsIHRleHQgdXNpbmcgY21kK2FcbiAgICAgIC8vIDQpIGNsb3NlcyB0aGUgc2VhcmNoIGJveCB3aXRoIGVzY1xuICAgICAgLy8gV2l0aG91dCB0aGlzIGhhbmRsaW5nLCB0aGUgd2hvbGUgcGFnZSB3b3VsZCBub3cgYmUgc2VsZWN0ZWRcbiAgICAgIGlmIChpc1NlbGVjdEFsbENvbWJvKGV2ZW50KSkge1xuICAgICAgICAvLyBUaGlzIHN0b3BzIHRoZSBicm93c2VyIGZyb20gc2VsZWN0aW5nIGFueXRoaW5nXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChzZWFyY2hJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgLy8gVGhpcyBzZWxlY3RzIHRoZSB0ZXh0IGluIHRoZSBzZWFyY2ggaW5wdXRcbiAgICAgICAgICBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGF2b2lkIGludGVyZmVyaW5nIHdpdGggb3RoZXIga2V5IGNvbWJpbmF0aW9ucyB1c2luZyBtb2RpZmllciBrZXlzXG4gICAgICBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQubWV0YUtleSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGlzQ2xvc2VDb21ibyhldmVudCkpIHJldHVybjtcblxuICAgICAgLy8gc2tpcCBuZXh0IG1vdXNlRW50ZXIgdG8gYXZvaWQgc2V0dGluZyBzZWxlY3RlZFJlc3VsdCB3aGVuIGN1cnNvciBqdXN0XG4gICAgICAvLyBoYXBwZW5zIHRvIGJlIHdoZXJlIHRoZSByZXN1bHRzIHdpbGwgcG9wIHVwXG4gICAgICBza2lwTmV4dFNlbGVjdGlvbi5jdXJyZW50ID0gdHJ1ZTtcblxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgLy8gcHJldmVudCBjdXJzb3IgZnJvbSBqdW1waW5nIHRvIGVuZCBvZiB0ZXh0IGlucHV0XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogJ2luY3JlbWVudFNlbGVjdGVkUmVzdWx0JyB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgIC8vIGJyb3dzZSB0aHJvdWdoIGhpc3RvcnlcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgKHN0YXRlLnNlbGVjdGVkUmVzdWx0IDwgMSAmJiBzdGF0ZS5lbmFibGVIaXN0b3J5KVxuICAgICAgICApIHtcbiAgICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9XG4gICAgICAgICAgICBzdGF0ZS5zZWFyY2hUZXh0Lmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICA/IC8vIFdoZW4gZ29pbmcgYmFjayB0aGUgZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIDogLy8gV2hlbiBnb2luZyBiYWNrIG1vcmUgdGhhbiBvbmUgc3RlcFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgIChjb21tYW5kKSA9PiBjb21tYW5kLnNlYXJjaFRleHQgPT09IHN0YXRlLnNlYXJjaFRleHRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgIC8vIFBpY2sgdGhlIHByZXZpb3VzIGNvbW1hbmQgZnJvbSB0aGUgaGlzdG9yeVxuICAgICAgICAgIGNvbnN0IHByZXZDb21tYW5kID1cbiAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPT09IC0xXG4gICAgICAgICAgICAgID8gLy8gcHJldmlvdXMgY29tbWFuZCBvbiB0b3Agb2YgdGhlIGhpc3Rvcnkgd2hlbiBnb2luZyBiYWNrIG9uXG4gICAgICAgICAgICAgICAgLy8gZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIGxhc3QocHJvcHMuaGlzdG9yeUVudHJpZXMpXG4gICAgICAgICAgICAgIDogLy8gcHJldmlvdXMgY29tbWFuZCBpcyBkZWVwZXIgZG93blxuICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGhpc3RvcnkgZG9lcyBub3QgZXhpc3QgKG5lZ2F0aXZlIGluZGV4KSwgdGhlblxuICAgICAgICAgICAgICAgIC8vIHRoaXMgaW1wbGljaXRseSByZXR1cm5zIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzW3NlbGVjdGVkSW5kZXggLSAxXTtcbiAgICAgICAgICAvLyBTa2lwIHdoZW4gbm8gcHJldmlvdXMgZW50cnkgZXhpc3RzIGluIHRoZSBoaXN0b3J5XG4gICAgICAgICAgaWYgKCFwcmV2Q29tbWFuZCkgcmV0dXJuO1xuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyB0byBiZWdpbm5pbmcgb2YgdGV4dCBpbnB1dFxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA+IC0xKSB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSBzdGF0ZS5yZXN1bHRzW3N0YXRlLnNlbGVjdGVkUmVzdWx0XTtcbiAgICAgICAgICBjb25zdCBzZWFyY2hUZXh0ID0gc3RhdGUuc2VhcmNoVGV4dDtcbiAgICAgICAgICBjb25zdCBpc0N1cnNvckF0RW5kID1cbiAgICAgICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvblN0YXJ0O1xuXG4gICAgICAgICAgY29uc3QgaXNFdmVyeXRoaW5nU2VsZWN0ZWQgPVxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudCAmJlxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCAmJlxuICAgICAgICAgICAgc3RhdGUuc2VhcmNoVGV4dC5sZW5ndGggPT09IHNlYXJjaElucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uRW5kO1xuXG4gICAgICAgICAgLy8gb25seSBhbGxvdyBkaXZpbmcgaW4gd2hlbiBjdXJzb3IgaXMgYXQgZW5kIG9mIGlucHV0IG9yIHdoZW5cbiAgICAgICAgICAvLyB0aGUgY29tcGxldGUgdGV4dCBpcyBzZWxlY3RlZCAod2hlbiBicm93c2luZyB0aHJvdWdoIGhpc3RvcnkpXG4gICAgICAgICAgaWYgKCFpc0N1cnNvckF0RW5kICYmICFpc0V2ZXJ5dGhpbmdTZWxlY3RlZCkgcmV0dXJuO1xuXG4gICAgICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IoKTtcblxuICAgICAgICAgIC8vIE5PVEU6IHNpbmNlIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIFwibmV4dCBjb21tYW5kXCIsIHdoaWNoIGlzIGFuIGFzeW5jIG9wZXJhdGlvbixcbiAgICAgICAgICAvLyB3ZSB1c2UgYSBJSUZFIHRvIHByb2Nlc3MgdGhhdCBhbmQgZXZlbnR1YWxseSB1cGRhdGUgdGhlIHN0YXRlLlxuICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29tbWFuZCkge1xuICAgICAgICAgICAgICBjb25zdCBuZXh0Q29tbWFuZHMgPSBhd2FpdCBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50KGNvbW1hbmQpO1xuICAgICAgICAgICAgICAvLyBhdm9pZCBtb3ZpbmcgY3Vyc29yIHdoZW4gdGhlcmUgYXJlIHN1Yi1vcHRpb25zXG4gICAgICAgICAgICAgIGlmIChuZXh0Q29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgc2VhcmNoIHRleHQgaGFzIG5vdCBjaGFuZ2VkIHdoaWxlIHdlIHdlcmUgbG9hZGluZ1xuICAgICAgICAgICAgICAgIC8vIHRoZSBuZXh0IHJlc3VsdHMsIG90aGVyd2lzZSB3ZSdkIGludGVycnVwdCB0aGUgdXNlci5cbiAgICAgICAgICAgICAgICAvLyBUaHJvdyBhd2F5IHRoZSByZXN1bHRzIGluIGNhc2UgdGhlIHNlYXJjaCB0ZXh0IGhhcyBjaGFuZ2VkLlxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zZWFyY2hUZXh0ID09PSBzZWFyY2hUZXh0KSB7XG4gICAgICAgICAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZXROZXh0Q29tbWFuZHMnLFxuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiB7IHJlc3VsdHM6IG5leHRDb21tYW5kcyB9LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hha2UoKTtcbiAgICAgICAgICB9KSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgICAgIC8vIGdvIGxlZnQgaW4gc3RhY2tcbiAgICAgICAgICBjb25zdCBwcmV2Q29tbWFuZCA9IGxhc3Qoc3RhdGUuc3RhY2spO1xuXG4gICAgICAgICAgLy8gZG8gbm90aGluZyB3aGVuIHdlIGNhbid0IGdvIGxlZnQgYW55bW9yZVxuICAgICAgICAgIGlmICghcHJldkNvbW1hbmQpIHJldHVybjtcblxuICAgICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyBhIGNoYXIgdG8gdGhlIGxlZnQgaW4gdGV4dCBpbnB1dFxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlOiAnc2V0UHJldkNvbW1hbmRzJyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzaGFrZSxcbiAgICAgIHN0YXRlLFxuICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVLZXlVcCA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIHNldHRpbmcgdGhlIHNlbGVjdGlvbiBjYW4gb25seSBoYXBwZW4gaW4gb25LZXlVcFxuICAgICAgaWYgKHNob3VsZFNlbGVjdEZpZWxkVGV4dC5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInICYmICFpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGp1c3QgdHJpZ2dlcmVkIHRoZSBzZWFyY2hcbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA9PT0gLTEpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGhhZCBzb21ldGhpbmcgc2VsZWN0ZWQgYW5kIHdhbnRzIHRvIGdvIHRoZXJlXG4gICAgICBleGVjdXRlKHN0YXRlLnJlc3VsdHNbc3RhdGUuc2VsZWN0ZWRSZXN1bHRdLCB7XG4gICAgICAgIG9wZW5Jbk5ld1RhYjogaXNOZXdXaW5kb3dDb21iby5jdXJyZW50LFxuICAgICAgfSk7XG5cbiAgICAgIGlzTmV3V2luZG93Q29tYm8uY3VycmVudCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBbZXhlY3V0ZSwgc3RhdGUucmVzdWx0cywgc3RhdGUuc2VsZWN0ZWRSZXN1bHRdXG4gICk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrPENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50Pj4oXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBzZWFyY2hUZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgaWYgKHNlYXJjaFRleHQudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZGlzcGF0Y2goeyB0eXBlOiAnc2VhcmNoVGV4dCcsIHBheWxvYWQ6IHNlYXJjaFRleHQgfSk7XG5cbiAgICAgIC8vIEEgc2VhcmNoIHZpYSBuZXR3b3JrIGlzIG9ubHkgdHJpZ2dlcmVkIHdoZW4gdGhlcmVcbiAgICAgIC8vIGFyZSBtb3JlIHRoYW4gdGhyZWUgY2hhcmFjdGVycy4gU28gbm8gZmFsc2UgbG9hZGluZ1xuICAgICAgLy8gaW5kaWNhdGlvbiBpcyBnaXZlbi5cbiAgICAgIGlmIChzZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAzKSB7XG4gICAgICAgIHNldElzTG9hZGluZygpO1xuICAgICAgfVxuXG4gICAgICBzZWFyY2hGcm9tUGFyZW50KHNlYXJjaFRleHQpLnRoZW4oXG4gICAgICAgIChhc3luY1Jlc3VsdHM6IENvbW1hbmRbXSkgPT4ge1xuICAgICAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yKCk7XG4gICAgICAgICAgdW5zZXRJc0xvYWRpbmcoKTtcblxuICAgICAgICAgIGNvbnN0IGZ1c2UgPSBuZXcgRnVzZShhc3luY1Jlc3VsdHMsIHtcbiAgICAgICAgICAgIGtleXM6IFtcbiAgICAgICAgICAgICAgeyBuYW1lOiAndGV4dCcsIHdlaWdodDogMC42IH0sXG4gICAgICAgICAgICAgIHsgbmFtZTogJ2tleXdvcmRzJywgd2VpZ2h0OiAwLjQgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBtaW5NYXRjaENoYXJMZW5ndGg6IDIsXG4gICAgICAgICAgICBpbmNsdWRlU2NvcmU6IHRydWUsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBzZWFyY2hSZXN1bHRzID0gZnVzZVxuICAgICAgICAgICAgLnNlYXJjaChzZWFyY2hUZXh0KVxuICAgICAgICAgICAgLy8gRmlsdGVyIG91dCByZXN1bHRzIHdpdGggYSBtYXRjaGluZyBzY29yZSBvdmVyIDAuNzVcbiAgICAgICAgICAgIC5maWx0ZXIoKHJlc3VsdCkgPT4gKHJlc3VsdC5zY29yZSA/IHJlc3VsdC5zY29yZSA8IDAuNzUgOiBmYWxzZSkpXG4gICAgICAgICAgICAvLyBLZWVwIGEgbWF4aW1hbCBvZiA5IHJlc3VsdHNcbiAgICAgICAgICAgIC5zbGljZSgwLCA5KTtcblxuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdzZXRTZWFyY2hUZXh0UmVzdWx0cycsXG4gICAgICAgICAgICBwYXlsb2FkOiBzZWFyY2hSZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQuaXRlbSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB1bnNldElzTG9hZGluZygpO1xuICAgICAgICAgIHNldEhhc05ldHdvcmtFcnJvcigpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0sXG4gICAgW1xuICAgICAgc2VhcmNoRnJvbVBhcmVudCxcbiAgICAgIHNldEhhc05ldHdvcmtFcnJvcixcbiAgICAgIHNldElzTG9hZGluZyxcbiAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yLFxuICAgICAgdW5zZXRJc0xvYWRpbmcsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVDb250YWluZXJDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFJlc3VsdHNXaGVuQ2xvc2luZycgfSk7XG4gICAgb25DbG9zZUZyb21QYXJlbnQoKTtcbiAgfSwgW29uQ2xvc2VGcm9tUGFyZW50XSk7XG5cbiAgY29uc3QgY3JlYXRlQ29tbWFuZE1vdXNlRW50ZXJIYW5kbGVyID0gdXNlQ2FsbGJhY2s8XG4gICAgKGluZGV4OiBudW1iZXIpID0+IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PlxuICA+KFxuICAgIChpbmRleCkgPT4gKCkgPT4ge1xuICAgICAgLy8gSW4gY2FzZSB0aGUgY3Vyc29yIGhhcHBlbmVkIHRvIGJlIGluIGEgbG9jYXRpb24gd2hlcmUgYVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGFwcGVhciwgaXQgd291bGQgdHJpZ2dlciBvbk1vdXNlRW50ZXIgYW5kIHRoZVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGJlIHNlbGVjdGVkIGltbWVkaWF0ZWx5LiBUaGlzIGlzIG5vdCBzb21ldGhpbmdcbiAgICAgIC8vIGEgdXNlciB3b3VsZCBleHBlY3QsIGhlbmNlIHdlIHByZXZlbnQgaXQgZnJvbSBoYXBwZW5pbmcuXG4gICAgICAvLyBUaGUgdXNlciBoYXMgdG8gbW92ZSB0aGUgY3Vyc29yIHRvIGFuIG9wdGlvbiBleHBsaWNpdGx5IGZvclxuICAgICAgLy8gaXQgdG8gYmVjb21lIGFjdGl2ZS4gSG93ZXZlciwgdGhlIHVzZXIgY2FuIGFsd2F5cyBjbGljayBhbmRcbiAgICAgIC8vIHRoYXQgYWN0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkLlxuICAgICAgaWYgKHNraXBOZXh0U2VsZWN0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgc2tpcE5leHRTZWxlY3Rpb24uY3VycmVudCA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIHNldHMgdGhlIHNlbGVjdGVkIHJlc3VsdCwgbWFpbmx5IGZvciB0aGUgaG92ZXIgZWZmZWN0XG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCcsIHBheWxvYWQ6IGluZGV4IH0pO1xuICAgIH0sXG4gICAgW11cbiAgKTtcbiAgY29uc3QgY3JlYXRlQ29tbWFuZENsaWNrSGFuZGxlciA9IHVzZUNhbGxiYWNrPFxuICAgIChjb21tYW5kOiBDb21tYW5kKSA9PiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD5cbiAgPihcbiAgICAoY29tbWFuZCkgPT4gKGV2ZW50KSA9PiB7XG4gICAgICBleGVjdXRlKGNvbW1hbmQsIHtcbiAgICAgICAgb3BlbkluTmV3VGFiOiBoYXNOZXdXaW5kb3dNb2RpZmllcihldmVudCksXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtleGVjdXRlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEJ1dGxlckNvbnRhaW5lclxuICAgICAgb25DbGljaz17aGFuZGxlQ29udGFpbmVyQ2xpY2t9XG4gICAgICBkYXRhLXRlc3RpZD1cInF1aWNrLWFjY2Vzc1wiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3NlYXJjaENvbnRhaW5lclJlZn1cbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yU3VyZmFjZX07XG4gICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICR7Y3VzdG9tUHJvcGVydGllcy5ib3JkZXJSYWRpdXM0fTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA0MHB4O1xuXG4gICAgICAgICAgLyogb25lIG1vcmUgdGhhbiBhcHAtYmFyICgyMDAwMCkgYW5kIG9uZSBtb3JlIHRoYW4gdGhlIG92ZXJsYXkgKDIwMDAxKSAqL1xuICAgICAgICAgIHotaW5kZXg6IDIwMDAyO1xuICAgICAgICAgIHdpZHRoOiA0MDBweDtcbiAgICAgICAgICBtYXJnaW46IDQwcHggYXV0bztcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAxMHB4IDMwcHggLThweCByZ2JhKDAsIDAsIDAsIDAuNzUpO1xuICAgICAgICAgIC1tb3otYm94LXNoYWRvdzogMCAxMHB4IDMwcHggLThweCByZ2JhKDAsIDAsIDAsIDAuNzUpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IC04cHggcmdiYSgwLCAwLCAwLCAwLjc1KTtcbiAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHtzdGF0ZS5oYXNOZXR3b3JrRXJyb3JcbiAgICAgICAgICAgID8gJzAnXG4gICAgICAgICAgICA6IGN1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICBgfVxuICAgICAgICBvbkNsaWNrPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBBdm9pZCBjbG9zaW5nIHdoZW4gdGhlIHNlYXJjaENvbnRhaW5lciBpdHNlbGYgaXMgY2xpY2tlZFxuICAgICAgICAgIC8vIElmIHdlIGRvbid0IGRvIHRoaXMsIHRoZW4gdGhlIG92ZXJsYXkgd2lsbCBjbG9zZSB3aGVuIGUuZy5cbiAgICAgICAgICAvLyB0aGUgc2VhcmNoIGlucHV0IGlzIGNsaWNrZWQuXG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBgfVxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBodG1sRm9yPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nTX07XG4gICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICBgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTZWFyY2hJY29uIGNvbG9yPVwibmV1dHJhbDYwXCIgLz5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJxdWljay1hY2Nlc3Mtc2VhcmNoLWlucHV0XCJcbiAgICAgICAgICAgIHJlZj17c2VhcmNoSW5wdXRSZWZ9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17aW50bC5mb3JtYXRNZXNzYWdlKG1lc3NhZ2VzLmlucHV0UGxhY2Vob2Rlcil9XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ019ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nTX1cbiAgICAgICAgICAgICAgICAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yTmV1dHJhbDYwfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYH1cbiAgICAgICAgICAgIHZhbHVlPXtzdGF0ZS5zZWFyY2hUZXh0fVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgIG9uS2V5VXA9e2hhbmRsZUtleVVwfVxuICAgICAgICAgICAgYXV0b0ZvY3VzPXt0cnVlfVxuICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICB7c3RhdGUuaXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICBpZiAoc3RhdGUuaGFzTmV0d29ya0Vycm9yKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JFcnJvcn07XG4gICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvclN1cmZhY2V9O1xuICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAke2N1c3RvbVByb3BlcnRpZXMuZm9udFNpemVTbWFsbH07XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1hzfTtcbiAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm9mZmxpbmV9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChzdGF0ZS5yZXN1bHRzLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5zZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JOZXV0cmFsfTtcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTb2xpZH07XG4gICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAke2N1c3RvbVByb3BlcnRpZXMuZm9udFNpemVTbWFsbH07XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1hzfTtcbiAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm5vUmVzdWx0c30gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuIHN0YXRlLnJlc3VsdHMubWFwKChjb21tYW5kLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPEJ1dGxlckNvbW1hbmRcbiAgICAgICAgICAgICAga2V5PXtjb21tYW5kLmlkfVxuICAgICAgICAgICAgICBjb21tYW5kPXtjb21tYW5kfVxuICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzdGF0ZS5zZWxlY3RlZFJlc3VsdCA9PT0gaW5kZXh9XG4gICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17Y3JlYXRlQ29tbWFuZE1vdXNlRW50ZXJIYW5kbGVyKGluZGV4KX1cbiAgICAgICAgICAgICAgb25DbGljaz17Y3JlYXRlQ29tbWFuZENsaWNrSGFuZGxlcihjb21tYW5kKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSk7XG4gICAgICAgIH0pKCl9XG4gICAgICA8L2Rpdj5cbiAgICA8L0J1dGxlckNvbnRhaW5lcj5cbiAgKTtcbn07XG5CdXRsZXIuZGlzcGxheU5hbWUgPSAnQnV0bGVyJztcblxuY29uc3QgQnV0bGVyV2l0aEFuaW1hdGlvbiA9IChwcm9wczogT21pdDxQcm9wcywgJ2NsYXNzTmFtZVNoYWtlQW5pbWF0aW9uJz4pID0+IChcbiAgPENsYXNzTmFtZXM+XG4gICAgeyh7IGNzcyB9KSA9PiAoXG4gICAgICA8QnV0bGVyXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgY2xhc3NOYW1lU2hha2VBbmltYXRpb249e2Nzc2BcbiAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDAuNDVzO1xuICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gICAgICAgICAgYW5pbWF0aW9uLW5hbWU6ICR7c2hha2VBbmltYXRpb259O1xuICAgICAgICBgfVxuICAgICAgLz5cbiAgICApfVxuICA8L0NsYXNzTmFtZXM+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBCdXRsZXJXaXRoQW5pbWF0aW9uO1xuIl19 */"),
|
|
988
|
-
onClick: function onClick(event) {
|
|
989
|
-
// Avoid closing when the searchContainer itself is clicked
|
|
990
|
-
// If we don't do this, then the overlay will close when e.g.
|
|
991
|
-
// the search input is clicked.
|
|
992
|
-
event.stopPropagation();
|
|
993
|
-
event.preventDefault();
|
|
994
|
-
},
|
|
995
|
-
children: [jsxRuntime.jsxs("div", {
|
|
996
|
-
css: _ref,
|
|
997
|
-
children: [jsxRuntime.jsx("label", {
|
|
998
|
-
htmlFor: "quick-access-search-input",
|
|
999
|
-
css: /*#__PURE__*/react.css("align-self:center;padding-left:", designSystem.customProperties.spacingM, ";margin-top:", designSystem.customProperties.spacingS, ";" + (process.env.NODE_ENV === "production" ? "" : ";label:Butler;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdW5Cb0IiLCJmaWxlIjoiYnV0bGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQ29tbWFuZCxcbiAgU2VhcmNoVGV4dCxcbiAgU2VsZWN0ZWRSZXN1bHQsXG4gIFN0YWNrLFxuICBIaXN0b3J5RW50cnksXG59IGZyb20gJy4uL3R5cGVzJztcblxuaW1wb3J0IHtcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudCxcbiAgTW91c2VFdmVudEhhbmRsZXIsXG4gIE1vdXNlRXZlbnQsXG4gIHVzZVJlZHVjZXIsXG4gIHVzZVJlZixcbiAgdXNlQ2FsbGJhY2ssXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCBGdXNlIGZyb20gJ2Z1c2UuanMnO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdXNlSW50bCB9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IGxhc3QgZnJvbSAnbG9kYXNoL2xhc3QnO1xuaW1wb3J0IHsgY3NzLCBrZXlmcmFtZXMsIENsYXNzTmFtZXMgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvbG9hZGluZy1zcGlubmVyJztcbmltcG9ydCB7IFNlYXJjaEljb24gfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9pY29ucyc7XG5pbXBvcnQgeyBjdXN0b21Qcm9wZXJ0aWVzIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgQnV0bGVyQ29tbWFuZCBmcm9tICcuLi9idXRsZXItY29tbWFuZCc7XG5pbXBvcnQgQnV0bGVyQ29udGFpbmVyIGZyb20gJy4uL2J1dGxlci1jb250YWluZXInO1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4uL21lc3NhZ2VzJztcblxuY29uc3QgaXNTZWxlY3RBbGxDb21ibyA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT5cbiAgZXZlbnQua2V5ID09PSAnYScgJiZcbiAgZXZlbnQubWV0YUtleSAmJlxuICAhZXZlbnQuY3RybEtleSAmJlxuICAhZXZlbnQuYWx0S2V5ICYmXG4gICFldmVudC5zaGlmdEtleTtcblxuY29uc3QgaXNDbG9zZUNvbWJvID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PlxuICBldmVudC5rZXkgPT09ICdFc2NhcGUnICYmXG4gICFldmVudC5tZXRhS2V5ICYmXG4gICFldmVudC5jdHJsS2V5ICYmXG4gICFldmVudC5hbHRLZXkgJiZcbiAgIWV2ZW50LnNoaWZ0S2V5O1xuXG5jb25zdCBnZXRQbGF0Zm9ybSA9ICgpID0+IHtcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdXaW4nKSkgcmV0dXJuICd3aW5kb3dzJztcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdNYWMnKSkgcmV0dXJuICdtYWNvcyc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnWDExJykpIHJldHVybiAndW5peCc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnTGludXgnKSkgcmV0dXJuICdsaW51eCc7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBoYXNOZXdXaW5kb3dNb2RpZmllciA9IChcbiAgZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTEVsZW1lbnQ+IHwgTW91c2VFdmVudDxIVE1MRWxlbWVudD5cbikgPT4ge1xuICBjb25zdCBwbGF0Zm9ybSA9IGdldFBsYXRmb3JtKCk7XG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdtYWNvcyc6XG4gICAgICByZXR1cm4gZXZlbnQubWV0YUtleTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGV2ZW50LmN0cmxLZXk7XG4gIH1cbn07XG5cbmNvbnN0IHNoYWtlQW5pbWF0aW9uID0ga2V5ZnJhbWVzYFxuICBmcm9tLFxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIDE0JSxcbiAgNDIlLFxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTNweCwgMCwgMCk7XG4gIH1cblxuICAyOCUsXG4gIDU2JSxcbiAgODQlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDNweCwgMCwgMCk7XG4gIH1cbmA7XG5cbnR5cGUgU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogYm9vbGVhbjtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0O1xuICBzZWxlY3RlZFJlc3VsdDogU2VsZWN0ZWRSZXN1bHQ7XG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IGJvb2xlYW47XG4gIHJlc3VsdHM6IENvbW1hbmRbXTtcbiAgc3RhY2s6IFN0YWNrW107XG59O1xudHlwZSBBY3Rpb24gPVxuICB8IHsgdHlwZTogJ25ldHdvcmtFcnJvcic7IHBheWxvYWQ6IGJvb2xlYW4gfVxuICB8IHsgdHlwZTogJ2xvYWRpbmcnOyBwYXlsb2FkOiBib29sZWFuIH1cbiAgfCB7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCc7IHBheWxvYWQ6IG51bWJlciB9XG4gIHwgeyB0eXBlOiAnaW5jcmVtZW50U2VsZWN0ZWRSZXN1bHQnIH1cbiAgfCB7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfVxuICB8IHtcbiAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JztcbiAgICAgIHBheWxvYWQ6IHsgc2VhcmNoVGV4dDogU2VhcmNoVGV4dDsgcmVzdWx0czogQ29tbWFuZFtdIH07XG4gICAgfVxuICB8IHsgdHlwZTogJ3NldE5leHRDb21tYW5kcyc7IHBheWxvYWQ6IHsgcmVzdWx0czogQ29tbWFuZFtdIH0gfVxuICB8IHtcbiAgICAgIHR5cGU6ICdzZXRQcmV2Q29tbWFuZHMnO1xuICAgICAgcGF5bG9hZDogeyBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0OyByZXN1bHRzOiBDb21tYW5kW10gfTtcbiAgICB9XG4gIHwgeyB0eXBlOiAnc2VhcmNoVGV4dCc7IHBheWxvYWQ6IHN0cmluZyB9XG4gIHwgeyB0eXBlOiAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOyBwYXlsb2FkOiBDb21tYW5kW10gfVxuICB8IHsgdHlwZTogJ3Jlc2V0U2VhcmNoVGV4dCcgfVxuICB8IHsgdHlwZTogJ3Jlc2V0UmVzdWx0c1doZW5DbG9zaW5nJyB9XG4gIHwgeyB0eXBlOiAncmVzZXQnIH07XG5jb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogZmFsc2UsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIHNlYXJjaFRleHQ6ICcnLFxuICBzZWxlY3RlZFJlc3VsdDogLTEsXG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IHRydWUsXG4gIHJlc3VsdHM6IFtdLFxuICBzdGFjazogW10sXG59O1xuY29uc3QgcmVkdWNlciA9IChzdGF0ZTogU3RhdGUgPSBpbml0aWFsU3RhdGUsIGFjdGlvbjogQWN0aW9uKTogU3RhdGUgPT4ge1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSAnbmV0d29ya0Vycm9yJzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBoYXNOZXR3b3JrRXJyb3I6IGFjdGlvbi5wYXlsb2FkIH07XG4gICAgY2FzZSAnbG9hZGluZyc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaXNMb2FkaW5nOiBhY3Rpb24ucGF5bG9hZCB9O1xuICAgIGNhc2UgJ3NlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQgfTtcbiAgICBjYXNlICdpbmNyZW1lbnRTZWxlY3RlZFJlc3VsdCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6XG4gICAgICAgICAgc3RhdGUuc2VsZWN0ZWRSZXN1bHQgPT09IHN0YXRlLnJlc3VsdHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0ICsgMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ2RlY3JlbWVudFNlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDpcbiAgICAgICAgICBzdGF0ZS5zZWxlY3RlZFJlc3VsdCA8IDFcbiAgICAgICAgICAgID8gc3RhdGUucmVzdWx0cy5sZW5ndGggLSAxXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0IC0gMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ3BpY2tDb21tYW5kRnJvbUhpc3RvcnknOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNlbGVjdGVkUmVzdWx0OiAwLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZC5zZWFyY2hUZXh0LFxuICAgICAgICByZXN1bHRzOiBhY3Rpb24ucGF5bG9hZC5yZXN1bHRzLFxuICAgICAgICBzdGFjazogW10sXG4gICAgICAgIC8vIFRoZSBoaXN0b3J5IGRvZXMgbm90IGdldCBjaGFuZ2VkIGhlcmUsIGl0IHdpbGwgYmUgY2hhbmdlZCBhbG9uZ1xuICAgICAgICAvLyB3aXRoIHRoZSByZWd1bGFyIGZsb3cuXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldE5leHRDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc3RhY2s6IFtcbiAgICAgICAgICAuLi5zdGF0ZS5zdGFjayxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWFyY2hUZXh0OiBzdGF0ZS5zZWFyY2hUZXh0LFxuICAgICAgICAgICAgcmVzdWx0czogc3RhdGUucmVzdWx0cyxcbiAgICAgICAgICAgIHNlbGVjdGVkUmVzdWx0OiBzdGF0ZS5zZWxlY3RlZFJlc3VsdCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogMCxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLnJlc3VsdHMsXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldFByZXZDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VhcmNoVGV4dDogYWN0aW9uLnBheWxvYWQuc2VhcmNoVGV4dCxcbiAgICAgICAgcmVzdWx0czogYWN0aW9uLnBheWxvYWQucmVzdWx0cyxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6IDAsXG4gICAgICAgIGVuYWJsZUhpc3Rvcnk6IGZhbHNlLFxuICAgICAgICAvLyBvbWl0IGxhc3QgaXRlbVxuICAgICAgICBzdGFjazogc3RhdGUuc3RhY2suc2xpY2UoMCwgLTEpLFxuICAgICAgfTtcbiAgICBjYXNlICdzZWFyY2hUZXh0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgLy8gY2xlYXIgbmV0d29yayBlcnJvciB3aGVuIHNlYXJjaCB0ZXh0IGlzIGNsZWFyZWQsIHNvIHRoYXQgdXNlcnNcbiAgICAgICAgLy8gYXJlIHRlbXB0ZWQgdG8gcmV0cnlcbiAgICAgICAgaGFzTmV0d29ya0Vycm9yOiBhY3Rpb24ucGF5bG9hZC5sZW5ndGggPiAwICYmIHN0YXRlLmhhc05ldHdvcmtFcnJvcixcbiAgICAgIH07XG4gICAgY2FzZSAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQubGVuZ3RoID4gMCA/IDAgOiAtMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogdHJ1ZSxcbiAgICAgICAgc3RhY2s6IFtdLFxuICAgICAgfTtcbiAgICBjYXNlICdyZXNldFNlYXJjaFRleHQnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlYXJjaFRleHQ6ICcnLCByZXN1bHRzOiBbXSwgc2VsZWN0ZWRSZXN1bHQ6IC0xIH07XG4gICAgY2FzZSAncmVzZXRSZXN1bHRzV2hlbkNsb3NpbmcnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlbGVjdGVkUmVzdWx0OiAtMSwgZW5hYmxlSGlzdG9yeTogdHJ1ZSB9O1xuICAgIGNhc2UgJ3Jlc2V0JzpcbiAgICAgIHJldHVybiBpbml0aWFsU3RhdGU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxudHlwZSBQcm9wcyA9IHtcbiAgaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdO1xuICBvbkhpc3RvcnlFbnRyaWVzQ2hhbmdlOiAoaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdKSA9PiB2b2lkO1xuICBzZWFyY2g6IChzZWFyY2hUZXh0OiBTZWFyY2hUZXh0KSA9PiBQcm9taXNlPENvbW1hbmRbXT47XG4gIGdldE5leHRDb21tYW5kczogKGNvbW1hbmQ6IENvbW1hbmQpID0+IFByb21pc2U8Q29tbWFuZFtdPjtcbiAgZXhlY3V0ZUNvbW1hbmQ6IChjb21tYW5kOiBDb21tYW5kLCBtZXRhOiB7IG9wZW5Jbk5ld1RhYjogYm9vbGVhbiB9KSA9PiB2b2lkO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xuICBjbGFzc05hbWVTaGFrZUFuaW1hdGlvbjogc3RyaW5nO1xufTtcbmNvbnN0IEJ1dGxlciA9IChwcm9wczogUHJvcHMpID0+IHtcbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSB1c2VSZWR1Y2VyPFxuICAgIChwcmV2U3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvbikgPT4gU3RhdGVcbiAgPihyZWR1Y2VyLCBpbml0aWFsU3RhdGUpO1xuXG4gIGNvbnN0IHNob3VsZFNlbGVjdEZpZWxkVGV4dCA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IGlzTmV3V2luZG93Q29tYm8gPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBza2lwTmV4dFNlbGVjdGlvbiA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHNlYXJjaENvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IHNlYXJjaElucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IHNldEhhc05ldHdvcmtFcnJvciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICduZXR3b3JrRXJyb3InLCBwYXlsb2FkOiB0cnVlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHVuc2V0SGFzTmV0d29ya0Vycm9yID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogJ25ldHdvcmtFcnJvcicsIHBheWxvYWQ6IGZhbHNlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogdHJ1ZSB9KTtcbiAgfSwgW10pO1xuICBjb25zdCB1bnNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogZmFsc2UgfSk7XG4gIH0sIFtdKTtcblxuICAvLyBEZXN0cnVjdHVyZSBmdW5jdGlvbnMgZnJvbSBwcm9wcyB0byByZWZlcmVuY2UgdGhlbSBpbiB0aGUgaG9vayBkZXBlbmRlbmN5IGxpc3RcbiAgY29uc3Qge1xuICAgIHNlYXJjaDogc2VhcmNoRnJvbVBhcmVudCxcbiAgICBvbkNsb3NlOiBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICBleGVjdXRlQ29tbWFuZDogZXhlY3V0ZUNvbW1hbmRGcm9tUGFyZW50LFxuICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2U6IG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgIGdldE5leHRDb21tYW5kczogZ2V0TmV4dENvbW1hbmRzRnJvbVBhcmVudCxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHNoYWtlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzZWFyY2hDb250YWluZXJSZWYuY3VycmVudCkge1xuICAgICAgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgcHJvcHMuY2xhc3NOYW1lU2hha2VBbmltYXRpb25cbiAgICAgICk7XG4gICAgICAvLyAtPiB0cmlnZ2VyaW5nIHJlZmxvd1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZvaWRcbiAgICAgIHZvaWQgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQub2Zmc2V0V2lkdGg7XG4gICAgICBzZWFyY2hDb250YWluZXJSZWYuY3VycmVudC5jbGFzc0xpc3QuYWRkKHByb3BzLmNsYXNzTmFtZVNoYWtlQW5pbWF0aW9uKTtcbiAgICB9XG4gIH0sIFtwcm9wcy5jbGFzc05hbWVTaGFrZUFuaW1hdGlvbl0pO1xuXG4gIGNvbnN0IGV4ZWN1dGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY29tbWFuZCwgbWV0YSkgPT4ge1xuICAgICAgLy8gT25seSBtYWluIGVudHJpZXMgZ2V0IGFkZGVkIHRvIGhpc3RvcnksIHNvIHdoZW4gYSBzdWJjb21tYW5kIGlzIGV4ZWN1dGVkLFxuICAgICAgLy8gd2UgYWRkIHRoZSBtYWluIGNvbW1hbmQgb2YgaXQgdG8gdGhlIGhpc3RvcnkgKHRoZSB0b3AtbGV2ZWwgY29tbWFuZCkuXG4gICAgICAvL1xuICAgICAgLy8gVGhlIGtleSB0byBpZGVudGlmeSBoaXN0b3J5IGVudHJpZXMgYnkgaXMgYWx3YXlzIHRoZSBzZWFyY2hUZXh0XG4gICAgICAvLyBUaGVyZSB3aWxsIG5ldmVyIGJlIHR3byBoaXN0b3J5IGVudHJpZXMgd2l0aCB0aGUgc2FtZSBzZWFyY2hUZXh0XG4gICAgICBjb25zdCBlbnRyeSA9XG4gICAgICAgIHN0YXRlLnN0YWNrLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gLy8gVGhlIHN0YWNrIGlzIGVtcHR5LCBzbyB3ZSBhcmUgZXhlY3V0aW5nIGEgdG9wLWxldmVsIGNvbW1hbmRcbiAgICAgICAgICAgIHsgc2VhcmNoVGV4dDogc3RhdGUuc2VhcmNoVGV4dCwgcmVzdWx0czogc3RhdGUucmVzdWx0cyB9XG4gICAgICAgICAgOiAvLyBXZSBhcmUgZXhlY3V0aW5nIGEgc3ViY29tbWFuZCwgc28gd2UgZ2V0IHRoZSB0b3AtbGV2ZWwgY29tbWFuZCBmb3IgaXQsXG4gICAgICAgICAgICAvLyB3aGljaCBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSBzdGFjay5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogc3RhdGUuc3RhY2tbMF0uc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogc3RhdGUuc3RhY2tbMF0ucmVzdWx0cyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgIC8vIEFkZCB0aGUgZW50cnkgdG8gdGhlIGhpc3RvcnksIHdoaWxlIGV4Y2x1ZGluZyBhbnkgZWFybGllciBoaXN0b3J5IGVudHJ5XG4gICAgICAvLyB3aXRoIHRoZSBzYW1lIHNlYXJjaCB0ZXh0LiBUaGlzIGVmZmVjdGl2ZWx5IFwibW92ZXNcIiB0aGF0IGVudHJ5IHRvIHRoZVxuICAgICAgLy8gdG9wIG9mIHRoZSBoaXN0b3J5ICh3aXRoIHRoZSBtb3N0IHJlY2VudCByZXN1bHRzKSwgb3IgYXBwZW5kcyBhIG5ldyBlbnRyeVxuICAgICAgLy8gd2hlbiBpdCBkaWRuJ3QgZXhpc3QgYmVmb3JlLlxuICAgICAgb25IaXN0b3J5RW50cmllc0NoYW5nZUZyb21QYXJlbnQoW1xuICAgICAgICAuLi5wcm9wcy5oaXN0b3J5RW50cmllcy5maWx0ZXIoXG4gICAgICAgICAgKGNvbW1hbmQpID0+IGNvbW1hbmQuc2VhcmNoVGV4dCAhPT0gZW50cnkuc2VhcmNoVGV4dFxuICAgICAgICApLFxuICAgICAgICBlbnRyeSxcbiAgICAgIF0pO1xuXG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFNlYXJjaFRleHQnIH0pO1xuXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCgpO1xuXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQoY29tbWFuZCwgbWV0YSk7XG4gICAgfSxcbiAgICBbXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQsXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzdGF0ZS5yZXN1bHRzLFxuICAgICAgc3RhdGUuc2VhcmNoVGV4dCxcbiAgICAgIHN0YXRlLnN0YWNrLFxuICAgIF1cbiAgKTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIFByZXZlbnRpbmcgY3Vyc29yIGp1bXBzIGNhbiBvbmx5IGhhcHBlbiBpbiBvbktleURvd24sIGJ1dCBub3QgaW4gb25LZXlVcFxuICAgICAgZXZlbnQucGVyc2lzdCgpO1xuXG4gICAgICAvLyBXZSB3YW50IHRvIGtub3cgd2hlbiB0aGUgdXNlciBwcmVzc2VzIGNtZCtlbnRlciAoY21kIGJlaW5nIGEgbWV0YSBrZXkpLlxuICAgICAgLy8gV2UgYXJlIG9ubHkgdG9sZCBhYm91dCB0aGlzIGluIGtleURvd24sIGJ1dCBub3QgaW4ga2V5VXAsIHNvIHdlIG5lZWRcbiAgICAgIC8vIHRvIGhhbmRsZSBpdCBoZXJlXG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmIGhhc05ld1dpbmRvd01vZGlmaWVyKGV2ZW50KSkge1xuICAgICAgICBpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEF2b2lkIHNlbGVjdGluZyB0aGUgd2hvbGUgcGFnZSB3aGVuIHVzZXIgc2VsZWN0ZXMgZXZlcnl0aGluZyB3aXRoXG4gICAgICAvLyBhIGtleWJvYXJkIHNob3J0Y3V0LiBUaGVyZSBpcyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyB0aG91Z2guXG4gICAgICAvLyBUaGlzIHByZXZlbnRzIHRoZSB3aG9sZSBwYWdlIGZyb20gYmVpbmcgc2VsZWN0ZWQgaW4gY2FzZSB0aGUgdXNlclxuICAgICAgLy8gMSkgb3BlbnMgdGhlIHNlYXJjaCBib3hcbiAgICAgIC8vIDIpIHR5cGVzIGludG8gaXRcbiAgICAgIC8vIDMpIHNlbGVjdHMgYWxsIHRleHQgdXNpbmcgY21kK2FcbiAgICAgIC8vIDQpIGNsb3NlcyB0aGUgc2VhcmNoIGJveCB3aXRoIGVzY1xuICAgICAgLy8gV2l0aG91dCB0aGlzIGhhbmRsaW5nLCB0aGUgd2hvbGUgcGFnZSB3b3VsZCBub3cgYmUgc2VsZWN0ZWRcbiAgICAgIGlmIChpc1NlbGVjdEFsbENvbWJvKGV2ZW50KSkge1xuICAgICAgICAvLyBUaGlzIHN0b3BzIHRoZSBicm93c2VyIGZyb20gc2VsZWN0aW5nIGFueXRoaW5nXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChzZWFyY2hJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgLy8gVGhpcyBzZWxlY3RzIHRoZSB0ZXh0IGluIHRoZSBzZWFyY2ggaW5wdXRcbiAgICAgICAgICBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGF2b2lkIGludGVyZmVyaW5nIHdpdGggb3RoZXIga2V5IGNvbWJpbmF0aW9ucyB1c2luZyBtb2RpZmllciBrZXlzXG4gICAgICBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQubWV0YUtleSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGlzQ2xvc2VDb21ibyhldmVudCkpIHJldHVybjtcblxuICAgICAgLy8gc2tpcCBuZXh0IG1vdXNlRW50ZXIgdG8gYXZvaWQgc2V0dGluZyBzZWxlY3RlZFJlc3VsdCB3aGVuIGN1cnNvciBqdXN0XG4gICAgICAvLyBoYXBwZW5zIHRvIGJlIHdoZXJlIHRoZSByZXN1bHRzIHdpbGwgcG9wIHVwXG4gICAgICBza2lwTmV4dFNlbGVjdGlvbi5jdXJyZW50ID0gdHJ1ZTtcblxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgLy8gcHJldmVudCBjdXJzb3IgZnJvbSBqdW1waW5nIHRvIGVuZCBvZiB0ZXh0IGlucHV0XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogJ2luY3JlbWVudFNlbGVjdGVkUmVzdWx0JyB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgIC8vIGJyb3dzZSB0aHJvdWdoIGhpc3RvcnlcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgKHN0YXRlLnNlbGVjdGVkUmVzdWx0IDwgMSAmJiBzdGF0ZS5lbmFibGVIaXN0b3J5KVxuICAgICAgICApIHtcbiAgICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9XG4gICAgICAgICAgICBzdGF0ZS5zZWFyY2hUZXh0Lmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICA/IC8vIFdoZW4gZ29pbmcgYmFjayB0aGUgZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIDogLy8gV2hlbiBnb2luZyBiYWNrIG1vcmUgdGhhbiBvbmUgc3RlcFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgIChjb21tYW5kKSA9PiBjb21tYW5kLnNlYXJjaFRleHQgPT09IHN0YXRlLnNlYXJjaFRleHRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgIC8vIFBpY2sgdGhlIHByZXZpb3VzIGNvbW1hbmQgZnJvbSB0aGUgaGlzdG9yeVxuICAgICAgICAgIGNvbnN0IHByZXZDb21tYW5kID1cbiAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPT09IC0xXG4gICAgICAgICAgICAgID8gLy8gcHJldmlvdXMgY29tbWFuZCBvbiB0b3Agb2YgdGhlIGhpc3Rvcnkgd2hlbiBnb2luZyBiYWNrIG9uXG4gICAgICAgICAgICAgICAgLy8gZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIGxhc3QocHJvcHMuaGlzdG9yeUVudHJpZXMpXG4gICAgICAgICAgICAgIDogLy8gcHJldmlvdXMgY29tbWFuZCBpcyBkZWVwZXIgZG93blxuICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGhpc3RvcnkgZG9lcyBub3QgZXhpc3QgKG5lZ2F0aXZlIGluZGV4KSwgdGhlblxuICAgICAgICAgICAgICAgIC8vIHRoaXMgaW1wbGljaXRseSByZXR1cm5zIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzW3NlbGVjdGVkSW5kZXggLSAxXTtcbiAgICAgICAgICAvLyBTa2lwIHdoZW4gbm8gcHJldmlvdXMgZW50cnkgZXhpc3RzIGluIHRoZSBoaXN0b3J5XG4gICAgICAgICAgaWYgKCFwcmV2Q29tbWFuZCkgcmV0dXJuO1xuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyB0byBiZWdpbm5pbmcgb2YgdGV4dCBpbnB1dFxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA+IC0xKSB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSBzdGF0ZS5yZXN1bHRzW3N0YXRlLnNlbGVjdGVkUmVzdWx0XTtcbiAgICAgICAgICBjb25zdCBzZWFyY2hUZXh0ID0gc3RhdGUuc2VhcmNoVGV4dDtcbiAgICAgICAgICBjb25zdCBpc0N1cnNvckF0RW5kID1cbiAgICAgICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvblN0YXJ0O1xuXG4gICAgICAgICAgY29uc3QgaXNFdmVyeXRoaW5nU2VsZWN0ZWQgPVxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudCAmJlxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCAmJlxuICAgICAgICAgICAgc3RhdGUuc2VhcmNoVGV4dC5sZW5ndGggPT09IHNlYXJjaElucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uRW5kO1xuXG4gICAgICAgICAgLy8gb25seSBhbGxvdyBkaXZpbmcgaW4gd2hlbiBjdXJzb3IgaXMgYXQgZW5kIG9mIGlucHV0IG9yIHdoZW5cbiAgICAgICAgICAvLyB0aGUgY29tcGxldGUgdGV4dCBpcyBzZWxlY3RlZCAod2hlbiBicm93c2luZyB0aHJvdWdoIGhpc3RvcnkpXG4gICAgICAgICAgaWYgKCFpc0N1cnNvckF0RW5kICYmICFpc0V2ZXJ5dGhpbmdTZWxlY3RlZCkgcmV0dXJuO1xuXG4gICAgICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IoKTtcblxuICAgICAgICAgIC8vIE5PVEU6IHNpbmNlIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIFwibmV4dCBjb21tYW5kXCIsIHdoaWNoIGlzIGFuIGFzeW5jIG9wZXJhdGlvbixcbiAgICAgICAgICAvLyB3ZSB1c2UgYSBJSUZFIHRvIHByb2Nlc3MgdGhhdCBhbmQgZXZlbnR1YWxseSB1cGRhdGUgdGhlIHN0YXRlLlxuICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29tbWFuZCkge1xuICAgICAgICAgICAgICBjb25zdCBuZXh0Q29tbWFuZHMgPSBhd2FpdCBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50KGNvbW1hbmQpO1xuICAgICAgICAgICAgICAvLyBhdm9pZCBtb3ZpbmcgY3Vyc29yIHdoZW4gdGhlcmUgYXJlIHN1Yi1vcHRpb25zXG4gICAgICAgICAgICAgIGlmIChuZXh0Q29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgc2VhcmNoIHRleHQgaGFzIG5vdCBjaGFuZ2VkIHdoaWxlIHdlIHdlcmUgbG9hZGluZ1xuICAgICAgICAgICAgICAgIC8vIHRoZSBuZXh0IHJlc3VsdHMsIG90aGVyd2lzZSB3ZSdkIGludGVycnVwdCB0aGUgdXNlci5cbiAgICAgICAgICAgICAgICAvLyBUaHJvdyBhd2F5IHRoZSByZXN1bHRzIGluIGNhc2UgdGhlIHNlYXJjaCB0ZXh0IGhhcyBjaGFuZ2VkLlxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zZWFyY2hUZXh0ID09PSBzZWFyY2hUZXh0KSB7XG4gICAgICAgICAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZXROZXh0Q29tbWFuZHMnLFxuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiB7IHJlc3VsdHM6IG5leHRDb21tYW5kcyB9LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hha2UoKTtcbiAgICAgICAgICB9KSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgICAgIC8vIGdvIGxlZnQgaW4gc3RhY2tcbiAgICAgICAgICBjb25zdCBwcmV2Q29tbWFuZCA9IGxhc3Qoc3RhdGUuc3RhY2spO1xuXG4gICAgICAgICAgLy8gZG8gbm90aGluZyB3aGVuIHdlIGNhbid0IGdvIGxlZnQgYW55bW9yZVxuICAgICAgICAgIGlmICghcHJldkNvbW1hbmQpIHJldHVybjtcblxuICAgICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyBhIGNoYXIgdG8gdGhlIGxlZnQgaW4gdGV4dCBpbnB1dFxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlOiAnc2V0UHJldkNvbW1hbmRzJyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzaGFrZSxcbiAgICAgIHN0YXRlLFxuICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVLZXlVcCA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIHNldHRpbmcgdGhlIHNlbGVjdGlvbiBjYW4gb25seSBoYXBwZW4gaW4gb25LZXlVcFxuICAgICAgaWYgKHNob3VsZFNlbGVjdEZpZWxkVGV4dC5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInICYmICFpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGp1c3QgdHJpZ2dlcmVkIHRoZSBzZWFyY2hcbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA9PT0gLTEpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGhhZCBzb21ldGhpbmcgc2VsZWN0ZWQgYW5kIHdhbnRzIHRvIGdvIHRoZXJlXG4gICAgICBleGVjdXRlKHN0YXRlLnJlc3VsdHNbc3RhdGUuc2VsZWN0ZWRSZXN1bHRdLCB7XG4gICAgICAgIG9wZW5Jbk5ld1RhYjogaXNOZXdXaW5kb3dDb21iby5jdXJyZW50LFxuICAgICAgfSk7XG5cbiAgICAgIGlzTmV3V2luZG93Q29tYm8uY3VycmVudCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBbZXhlY3V0ZSwgc3RhdGUucmVzdWx0cywgc3RhdGUuc2VsZWN0ZWRSZXN1bHRdXG4gICk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrPENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50Pj4oXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBzZWFyY2hUZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgaWYgKHNlYXJjaFRleHQudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZGlzcGF0Y2goeyB0eXBlOiAnc2VhcmNoVGV4dCcsIHBheWxvYWQ6IHNlYXJjaFRleHQgfSk7XG5cbiAgICAgIC8vIEEgc2VhcmNoIHZpYSBuZXR3b3JrIGlzIG9ubHkgdHJpZ2dlcmVkIHdoZW4gdGhlcmVcbiAgICAgIC8vIGFyZSBtb3JlIHRoYW4gdGhyZWUgY2hhcmFjdGVycy4gU28gbm8gZmFsc2UgbG9hZGluZ1xuICAgICAgLy8gaW5kaWNhdGlvbiBpcyBnaXZlbi5cbiAgICAgIGlmIChzZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAzKSB7XG4gICAgICAgIHNldElzTG9hZGluZygpO1xuICAgICAgfVxuXG4gICAgICBzZWFyY2hGcm9tUGFyZW50KHNlYXJjaFRleHQpLnRoZW4oXG4gICAgICAgIChhc3luY1Jlc3VsdHM6IENvbW1hbmRbXSkgPT4ge1xuICAgICAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yKCk7XG4gICAgICAgICAgdW5zZXRJc0xvYWRpbmcoKTtcblxuICAgICAgICAgIGNvbnN0IGZ1c2UgPSBuZXcgRnVzZShhc3luY1Jlc3VsdHMsIHtcbiAgICAgICAgICAgIGtleXM6IFtcbiAgICAgICAgICAgICAgeyBuYW1lOiAndGV4dCcsIHdlaWdodDogMC42IH0sXG4gICAgICAgICAgICAgIHsgbmFtZTogJ2tleXdvcmRzJywgd2VpZ2h0OiAwLjQgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBtaW5NYXRjaENoYXJMZW5ndGg6IDIsXG4gICAgICAgICAgICBpbmNsdWRlU2NvcmU6IHRydWUsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBzZWFyY2hSZXN1bHRzID0gZnVzZVxuICAgICAgICAgICAgLnNlYXJjaChzZWFyY2hUZXh0KVxuICAgICAgICAgICAgLy8gRmlsdGVyIG91dCByZXN1bHRzIHdpdGggYSBtYXRjaGluZyBzY29yZSBvdmVyIDAuNzVcbiAgICAgICAgICAgIC5maWx0ZXIoKHJlc3VsdCkgPT4gKHJlc3VsdC5zY29yZSA/IHJlc3VsdC5zY29yZSA8IDAuNzUgOiBmYWxzZSkpXG4gICAgICAgICAgICAvLyBLZWVwIGEgbWF4aW1hbCBvZiA5IHJlc3VsdHNcbiAgICAgICAgICAgIC5zbGljZSgwLCA5KTtcblxuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdzZXRTZWFyY2hUZXh0UmVzdWx0cycsXG4gICAgICAgICAgICBwYXlsb2FkOiBzZWFyY2hSZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQuaXRlbSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB1bnNldElzTG9hZGluZygpO1xuICAgICAgICAgIHNldEhhc05ldHdvcmtFcnJvcigpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0sXG4gICAgW1xuICAgICAgc2VhcmNoRnJvbVBhcmVudCxcbiAgICAgIHNldEhhc05ldHdvcmtFcnJvcixcbiAgICAgIHNldElzTG9hZGluZyxcbiAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yLFxuICAgICAgdW5zZXRJc0xvYWRpbmcsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVDb250YWluZXJDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFJlc3VsdHNXaGVuQ2xvc2luZycgfSk7XG4gICAgb25DbG9zZUZyb21QYXJlbnQoKTtcbiAgfSwgW29uQ2xvc2VGcm9tUGFyZW50XSk7XG5cbiAgY29uc3QgY3JlYXRlQ29tbWFuZE1vdXNlRW50ZXJIYW5kbGVyID0gdXNlQ2FsbGJhY2s8XG4gICAgKGluZGV4OiBudW1iZXIpID0+IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PlxuICA+KFxuICAgIChpbmRleCkgPT4gKCkgPT4ge1xuICAgICAgLy8gSW4gY2FzZSB0aGUgY3Vyc29yIGhhcHBlbmVkIHRvIGJlIGluIGEgbG9jYXRpb24gd2hlcmUgYVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGFwcGVhciwgaXQgd291bGQgdHJpZ2dlciBvbk1vdXNlRW50ZXIgYW5kIHRoZVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGJlIHNlbGVjdGVkIGltbWVkaWF0ZWx5LiBUaGlzIGlzIG5vdCBzb21ldGhpbmdcbiAgICAgIC8vIGEgdXNlciB3b3VsZCBleHBlY3QsIGhlbmNlIHdlIHByZXZlbnQgaXQgZnJvbSBoYXBwZW5pbmcuXG4gICAgICAvLyBUaGUgdXNlciBoYXMgdG8gbW92ZSB0aGUgY3Vyc29yIHRvIGFuIG9wdGlvbiBleHBsaWNpdGx5IGZvclxuICAgICAgLy8gaXQgdG8gYmVjb21lIGFjdGl2ZS4gSG93ZXZlciwgdGhlIHVzZXIgY2FuIGFsd2F5cyBjbGljayBhbmRcbiAgICAgIC8vIHRoYXQgYWN0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkLlxuICAgICAgaWYgKHNraXBOZXh0U2VsZWN0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgc2tpcE5leHRTZWxlY3Rpb24uY3VycmVudCA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIHNldHMgdGhlIHNlbGVjdGVkIHJlc3VsdCwgbWFpbmx5IGZvciB0aGUgaG92ZXIgZWZmZWN0XG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCcsIHBheWxvYWQ6IGluZGV4IH0pO1xuICAgIH0sXG4gICAgW11cbiAgKTtcbiAgY29uc3QgY3JlYXRlQ29tbWFuZENsaWNrSGFuZGxlciA9IHVzZUNhbGxiYWNrPFxuICAgIChjb21tYW5kOiBDb21tYW5kKSA9PiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD5cbiAgPihcbiAgICAoY29tbWFuZCkgPT4gKGV2ZW50KSA9PiB7XG4gICAgICBleGVjdXRlKGNvbW1hbmQsIHtcbiAgICAgICAgb3BlbkluTmV3VGFiOiBoYXNOZXdXaW5kb3dNb2RpZmllcihldmVudCksXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtleGVjdXRlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEJ1dGxlckNvbnRhaW5lclxuICAgICAgb25DbGljaz17aGFuZGxlQ29udGFpbmVyQ2xpY2t9XG4gICAgICBkYXRhLXRlc3RpZD1cInF1aWNrLWFjY2Vzc1wiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3NlYXJjaENvbnRhaW5lclJlZn1cbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yU3VyZmFjZX07XG4gICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICR7Y3VzdG9tUHJvcGVydGllcy5ib3JkZXJSYWRpdXM0fTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA0MHB4O1xuXG4gICAgICAgICAgLyogb25lIG1vcmUgdGhhbiBhcHAtYmFyICgyMDAwMCkgYW5kIG9uZSBtb3JlIHRoYW4gdGhlIG92ZXJsYXkgKDIwMDAxKSAqL1xuICAgICAgICAgIHotaW5kZXg6IDIwMDAyO1xuICAgICAgICAgIHdpZHRoOiA0MDBweDtcbiAgICAgICAgICBtYXJnaW46IDQwcHggYXV0bztcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAxMHB4IDMwcHggLThweCByZ2JhKDAsIDAsIDAsIDAuNzUpO1xuICAgICAgICAgIC1tb3otYm94LXNoYWRvdzogMCAxMHB4IDMwcHggLThweCByZ2JhKDAsIDAsIDAsIDAuNzUpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IC04cHggcmdiYSgwLCAwLCAwLCAwLjc1KTtcbiAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHtzdGF0ZS5oYXNOZXR3b3JrRXJyb3JcbiAgICAgICAgICAgID8gJzAnXG4gICAgICAgICAgICA6IGN1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICBgfVxuICAgICAgICBvbkNsaWNrPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBBdm9pZCBjbG9zaW5nIHdoZW4gdGhlIHNlYXJjaENvbnRhaW5lciBpdHNlbGYgaXMgY2xpY2tlZFxuICAgICAgICAgIC8vIElmIHdlIGRvbid0IGRvIHRoaXMsIHRoZW4gdGhlIG92ZXJsYXkgd2lsbCBjbG9zZSB3aGVuIGUuZy5cbiAgICAgICAgICAvLyB0aGUgc2VhcmNoIGlucHV0IGlzIGNsaWNrZWQuXG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBgfVxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBodG1sRm9yPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nTX07XG4gICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICBgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTZWFyY2hJY29uIGNvbG9yPVwibmV1dHJhbDYwXCIgLz5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJxdWljay1hY2Nlc3Mtc2VhcmNoLWlucHV0XCJcbiAgICAgICAgICAgIHJlZj17c2VhcmNoSW5wdXRSZWZ9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17aW50bC5mb3JtYXRNZXNzYWdlKG1lc3NhZ2VzLmlucHV0UGxhY2Vob2Rlcil9XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ019ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nTX1cbiAgICAgICAgICAgICAgICAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yTmV1dHJhbDYwfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYH1cbiAgICAgICAgICAgIHZhbHVlPXtzdGF0ZS5zZWFyY2hUZXh0fVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgIG9uS2V5VXA9e2hhbmRsZUtleVVwfVxuICAgICAgICAgICAgYXV0b0ZvY3VzPXt0cnVlfVxuICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICB7c3RhdGUuaXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICBpZiAoc3RhdGUuaGFzTmV0d29ya0Vycm9yKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JFcnJvcn07XG4gICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvclN1cmZhY2V9O1xuICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAke2N1c3RvbVByb3BlcnRpZXMuZm9udFNpemVTbWFsbH07XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1hzfTtcbiAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm9mZmxpbmV9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChzdGF0ZS5yZXN1bHRzLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5zZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JOZXV0cmFsfTtcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTb2xpZH07XG4gICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAke2N1c3RvbVByb3BlcnRpZXMuZm9udFNpemVTbWFsbH07XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1hzfTtcbiAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm5vUmVzdWx0c30gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuIHN0YXRlLnJlc3VsdHMubWFwKChjb21tYW5kLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPEJ1dGxlckNvbW1hbmRcbiAgICAgICAgICAgICAga2V5PXtjb21tYW5kLmlkfVxuICAgICAgICAgICAgICBjb21tYW5kPXtjb21tYW5kfVxuICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzdGF0ZS5zZWxlY3RlZFJlc3VsdCA9PT0gaW5kZXh9XG4gICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17Y3JlYXRlQ29tbWFuZE1vdXNlRW50ZXJIYW5kbGVyKGluZGV4KX1cbiAgICAgICAgICAgICAgb25DbGljaz17Y3JlYXRlQ29tbWFuZENsaWNrSGFuZGxlcihjb21tYW5kKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSk7XG4gICAgICAgIH0pKCl9XG4gICAgICA8L2Rpdj5cbiAgICA8L0J1dGxlckNvbnRhaW5lcj5cbiAgKTtcbn07XG5CdXRsZXIuZGlzcGxheU5hbWUgPSAnQnV0bGVyJztcblxuY29uc3QgQnV0bGVyV2l0aEFuaW1hdGlvbiA9IChwcm9wczogT21pdDxQcm9wcywgJ2NsYXNzTmFtZVNoYWtlQW5pbWF0aW9uJz4pID0+IChcbiAgPENsYXNzTmFtZXM+XG4gICAgeyh7IGNzcyB9KSA9PiAoXG4gICAgICA8QnV0bGVyXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgY2xhc3NOYW1lU2hha2VBbmltYXRpb249e2Nzc2BcbiAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDAuNDVzO1xuICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gICAgICAgICAgYW5pbWF0aW9uLW5hbWU6ICR7c2hha2VBbmltYXRpb259O1xuICAgICAgICBgfVxuICAgICAgLz5cbiAgICApfVxuICA8L0NsYXNzTmFtZXM+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBCdXRsZXJXaXRoQW5pbWF0aW9uO1xuIl19 */"),
|
|
1000
|
-
children: jsxRuntime.jsx(icons.SearchIcon, {
|
|
1001
|
-
color: "neutral60"
|
|
1002
|
-
})
|
|
1003
|
-
}), jsxRuntime.jsx("input", {
|
|
1004
|
-
id: "quick-access-search-input",
|
|
1005
|
-
ref: searchInputRef,
|
|
1006
|
-
placeholder: intl.formatMessage(messages.inputPlacehoder),
|
|
1007
|
-
type: "text",
|
|
1008
|
-
css: /*#__PURE__*/react.css("width:100%;border:0;outline:0;font-size:22px;font-weight:300;padding:", designSystem.customProperties.spacingM, " ", designSystem.customProperties.spacingM, " ", designSystem.customProperties.spacingS, " ", designSystem.customProperties.spacingS, ";&::placeholder{color:", designSystem.customProperties.colorNeutral60, ";}" + (process.env.NODE_ENV === "production" ? "" : ";label:Butler;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb29Cb0IiLCJmaWxlIjoiYnV0bGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQ29tbWFuZCxcbiAgU2VhcmNoVGV4dCxcbiAgU2VsZWN0ZWRSZXN1bHQsXG4gIFN0YWNrLFxuICBIaXN0b3J5RW50cnksXG59IGZyb20gJy4uL3R5cGVzJztcblxuaW1wb3J0IHtcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudCxcbiAgTW91c2VFdmVudEhhbmRsZXIsXG4gIE1vdXNlRXZlbnQsXG4gIHVzZVJlZHVjZXIsXG4gIHVzZVJlZixcbiAgdXNlQ2FsbGJhY2ssXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCBGdXNlIGZyb20gJ2Z1c2UuanMnO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdXNlSW50bCB9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IGxhc3QgZnJvbSAnbG9kYXNoL2xhc3QnO1xuaW1wb3J0IHsgY3NzLCBrZXlmcmFtZXMsIENsYXNzTmFtZXMgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvbG9hZGluZy1zcGlubmVyJztcbmltcG9ydCB7IFNlYXJjaEljb24gfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9pY29ucyc7XG5pbXBvcnQgeyBjdXN0b21Qcm9wZXJ0aWVzIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgQnV0bGVyQ29tbWFuZCBmcm9tICcuLi9idXRsZXItY29tbWFuZCc7XG5pbXBvcnQgQnV0bGVyQ29udGFpbmVyIGZyb20gJy4uL2J1dGxlci1jb250YWluZXInO1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4uL21lc3NhZ2VzJztcblxuY29uc3QgaXNTZWxlY3RBbGxDb21ibyA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT5cbiAgZXZlbnQua2V5ID09PSAnYScgJiZcbiAgZXZlbnQubWV0YUtleSAmJlxuICAhZXZlbnQuY3RybEtleSAmJlxuICAhZXZlbnQuYWx0S2V5ICYmXG4gICFldmVudC5zaGlmdEtleTtcblxuY29uc3QgaXNDbG9zZUNvbWJvID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PlxuICBldmVudC5rZXkgPT09ICdFc2NhcGUnICYmXG4gICFldmVudC5tZXRhS2V5ICYmXG4gICFldmVudC5jdHJsS2V5ICYmXG4gICFldmVudC5hbHRLZXkgJiZcbiAgIWV2ZW50LnNoaWZ0S2V5O1xuXG5jb25zdCBnZXRQbGF0Zm9ybSA9ICgpID0+IHtcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdXaW4nKSkgcmV0dXJuICd3aW5kb3dzJztcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdNYWMnKSkgcmV0dXJuICdtYWNvcyc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnWDExJykpIHJldHVybiAndW5peCc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnTGludXgnKSkgcmV0dXJuICdsaW51eCc7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBoYXNOZXdXaW5kb3dNb2RpZmllciA9IChcbiAgZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTEVsZW1lbnQ+IHwgTW91c2VFdmVudDxIVE1MRWxlbWVudD5cbikgPT4ge1xuICBjb25zdCBwbGF0Zm9ybSA9IGdldFBsYXRmb3JtKCk7XG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdtYWNvcyc6XG4gICAgICByZXR1cm4gZXZlbnQubWV0YUtleTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGV2ZW50LmN0cmxLZXk7XG4gIH1cbn07XG5cbmNvbnN0IHNoYWtlQW5pbWF0aW9uID0ga2V5ZnJhbWVzYFxuICBmcm9tLFxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIDE0JSxcbiAgNDIlLFxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTNweCwgMCwgMCk7XG4gIH1cblxuICAyOCUsXG4gIDU2JSxcbiAgODQlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDNweCwgMCwgMCk7XG4gIH1cbmA7XG5cbnR5cGUgU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogYm9vbGVhbjtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0O1xuICBzZWxlY3RlZFJlc3VsdDogU2VsZWN0ZWRSZXN1bHQ7XG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IGJvb2xlYW47XG4gIHJlc3VsdHM6IENvbW1hbmRbXTtcbiAgc3RhY2s6IFN0YWNrW107XG59O1xudHlwZSBBY3Rpb24gPVxuICB8IHsgdHlwZTogJ25ldHdvcmtFcnJvcic7IHBheWxvYWQ6IGJvb2xlYW4gfVxuICB8IHsgdHlwZTogJ2xvYWRpbmcnOyBwYXlsb2FkOiBib29sZWFuIH1cbiAgfCB7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCc7IHBheWxvYWQ6IG51bWJlciB9XG4gIHwgeyB0eXBlOiAnaW5jcmVtZW50U2VsZWN0ZWRSZXN1bHQnIH1cbiAgfCB7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfVxuICB8IHtcbiAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JztcbiAgICAgIHBheWxvYWQ6IHsgc2VhcmNoVGV4dDogU2VhcmNoVGV4dDsgcmVzdWx0czogQ29tbWFuZFtdIH07XG4gICAgfVxuICB8IHsgdHlwZTogJ3NldE5leHRDb21tYW5kcyc7IHBheWxvYWQ6IHsgcmVzdWx0czogQ29tbWFuZFtdIH0gfVxuICB8IHtcbiAgICAgIHR5cGU6ICdzZXRQcmV2Q29tbWFuZHMnO1xuICAgICAgcGF5bG9hZDogeyBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0OyByZXN1bHRzOiBDb21tYW5kW10gfTtcbiAgICB9XG4gIHwgeyB0eXBlOiAnc2VhcmNoVGV4dCc7IHBheWxvYWQ6IHN0cmluZyB9XG4gIHwgeyB0eXBlOiAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOyBwYXlsb2FkOiBDb21tYW5kW10gfVxuICB8IHsgdHlwZTogJ3Jlc2V0U2VhcmNoVGV4dCcgfVxuICB8IHsgdHlwZTogJ3Jlc2V0UmVzdWx0c1doZW5DbG9zaW5nJyB9XG4gIHwgeyB0eXBlOiAncmVzZXQnIH07XG5jb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogZmFsc2UsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIHNlYXJjaFRleHQ6ICcnLFxuICBzZWxlY3RlZFJlc3VsdDogLTEsXG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IHRydWUsXG4gIHJlc3VsdHM6IFtdLFxuICBzdGFjazogW10sXG59O1xuY29uc3QgcmVkdWNlciA9IChzdGF0ZTogU3RhdGUgPSBpbml0aWFsU3RhdGUsIGFjdGlvbjogQWN0aW9uKTogU3RhdGUgPT4ge1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSAnbmV0d29ya0Vycm9yJzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBoYXNOZXR3b3JrRXJyb3I6IGFjdGlvbi5wYXlsb2FkIH07XG4gICAgY2FzZSAnbG9hZGluZyc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaXNMb2FkaW5nOiBhY3Rpb24ucGF5bG9hZCB9O1xuICAgIGNhc2UgJ3NlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQgfTtcbiAgICBjYXNlICdpbmNyZW1lbnRTZWxlY3RlZFJlc3VsdCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6XG4gICAgICAgICAgc3RhdGUuc2VsZWN0ZWRSZXN1bHQgPT09IHN0YXRlLnJlc3VsdHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0ICsgMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ2RlY3JlbWVudFNlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDpcbiAgICAgICAgICBzdGF0ZS5zZWxlY3RlZFJlc3VsdCA8IDFcbiAgICAgICAgICAgID8gc3RhdGUucmVzdWx0cy5sZW5ndGggLSAxXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0IC0gMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ3BpY2tDb21tYW5kRnJvbUhpc3RvcnknOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNlbGVjdGVkUmVzdWx0OiAwLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZC5zZWFyY2hUZXh0LFxuICAgICAgICByZXN1bHRzOiBhY3Rpb24ucGF5bG9hZC5yZXN1bHRzLFxuICAgICAgICBzdGFjazogW10sXG4gICAgICAgIC8vIFRoZSBoaXN0b3J5IGRvZXMgbm90IGdldCBjaGFuZ2VkIGhlcmUsIGl0IHdpbGwgYmUgY2hhbmdlZCBhbG9uZ1xuICAgICAgICAvLyB3aXRoIHRoZSByZWd1bGFyIGZsb3cuXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldE5leHRDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc3RhY2s6IFtcbiAgICAgICAgICAuLi5zdGF0ZS5zdGFjayxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWFyY2hUZXh0OiBzdGF0ZS5zZWFyY2hUZXh0LFxuICAgICAgICAgICAgcmVzdWx0czogc3RhdGUucmVzdWx0cyxcbiAgICAgICAgICAgIHNlbGVjdGVkUmVzdWx0OiBzdGF0ZS5zZWxlY3RlZFJlc3VsdCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogMCxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLnJlc3VsdHMsXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldFByZXZDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VhcmNoVGV4dDogYWN0aW9uLnBheWxvYWQuc2VhcmNoVGV4dCxcbiAgICAgICAgcmVzdWx0czogYWN0aW9uLnBheWxvYWQucmVzdWx0cyxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6IDAsXG4gICAgICAgIGVuYWJsZUhpc3Rvcnk6IGZhbHNlLFxuICAgICAgICAvLyBvbWl0IGxhc3QgaXRlbVxuICAgICAgICBzdGFjazogc3RhdGUuc3RhY2suc2xpY2UoMCwgLTEpLFxuICAgICAgfTtcbiAgICBjYXNlICdzZWFyY2hUZXh0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgLy8gY2xlYXIgbmV0d29yayBlcnJvciB3aGVuIHNlYXJjaCB0ZXh0IGlzIGNsZWFyZWQsIHNvIHRoYXQgdXNlcnNcbiAgICAgICAgLy8gYXJlIHRlbXB0ZWQgdG8gcmV0cnlcbiAgICAgICAgaGFzTmV0d29ya0Vycm9yOiBhY3Rpb24ucGF5bG9hZC5sZW5ndGggPiAwICYmIHN0YXRlLmhhc05ldHdvcmtFcnJvcixcbiAgICAgIH07XG4gICAgY2FzZSAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQubGVuZ3RoID4gMCA/IDAgOiAtMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogdHJ1ZSxcbiAgICAgICAgc3RhY2s6IFtdLFxuICAgICAgfTtcbiAgICBjYXNlICdyZXNldFNlYXJjaFRleHQnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlYXJjaFRleHQ6ICcnLCByZXN1bHRzOiBbXSwgc2VsZWN0ZWRSZXN1bHQ6IC0xIH07XG4gICAgY2FzZSAncmVzZXRSZXN1bHRzV2hlbkNsb3NpbmcnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlbGVjdGVkUmVzdWx0OiAtMSwgZW5hYmxlSGlzdG9yeTogdHJ1ZSB9O1xuICAgIGNhc2UgJ3Jlc2V0JzpcbiAgICAgIHJldHVybiBpbml0aWFsU3RhdGU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxudHlwZSBQcm9wcyA9IHtcbiAgaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdO1xuICBvbkhpc3RvcnlFbnRyaWVzQ2hhbmdlOiAoaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdKSA9PiB2b2lkO1xuICBzZWFyY2g6IChzZWFyY2hUZXh0OiBTZWFyY2hUZXh0KSA9PiBQcm9taXNlPENvbW1hbmRbXT47XG4gIGdldE5leHRDb21tYW5kczogKGNvbW1hbmQ6IENvbW1hbmQpID0+IFByb21pc2U8Q29tbWFuZFtdPjtcbiAgZXhlY3V0ZUNvbW1hbmQ6IChjb21tYW5kOiBDb21tYW5kLCBtZXRhOiB7IG9wZW5Jbk5ld1RhYjogYm9vbGVhbiB9KSA9PiB2b2lkO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xuICBjbGFzc05hbWVTaGFrZUFuaW1hdGlvbjogc3RyaW5nO1xufTtcbmNvbnN0IEJ1dGxlciA9IChwcm9wczogUHJvcHMpID0+IHtcbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSB1c2VSZWR1Y2VyPFxuICAgIChwcmV2U3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvbikgPT4gU3RhdGVcbiAgPihyZWR1Y2VyLCBpbml0aWFsU3RhdGUpO1xuXG4gIGNvbnN0IHNob3VsZFNlbGVjdEZpZWxkVGV4dCA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IGlzTmV3V2luZG93Q29tYm8gPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBza2lwTmV4dFNlbGVjdGlvbiA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHNlYXJjaENvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IHNlYXJjaElucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IHNldEhhc05ldHdvcmtFcnJvciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICduZXR3b3JrRXJyb3InLCBwYXlsb2FkOiB0cnVlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHVuc2V0SGFzTmV0d29ya0Vycm9yID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogJ25ldHdvcmtFcnJvcicsIHBheWxvYWQ6IGZhbHNlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogdHJ1ZSB9KTtcbiAgfSwgW10pO1xuICBjb25zdCB1bnNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogZmFsc2UgfSk7XG4gIH0sIFtdKTtcblxuICAvLyBEZXN0cnVjdHVyZSBmdW5jdGlvbnMgZnJvbSBwcm9wcyB0byByZWZlcmVuY2UgdGhlbSBpbiB0aGUgaG9vayBkZXBlbmRlbmN5IGxpc3RcbiAgY29uc3Qge1xuICAgIHNlYXJjaDogc2VhcmNoRnJvbVBhcmVudCxcbiAgICBvbkNsb3NlOiBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICBleGVjdXRlQ29tbWFuZDogZXhlY3V0ZUNvbW1hbmRGcm9tUGFyZW50LFxuICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2U6IG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgIGdldE5leHRDb21tYW5kczogZ2V0TmV4dENvbW1hbmRzRnJvbVBhcmVudCxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHNoYWtlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzZWFyY2hDb250YWluZXJSZWYuY3VycmVudCkge1xuICAgICAgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgcHJvcHMuY2xhc3NOYW1lU2hha2VBbmltYXRpb25cbiAgICAgICk7XG4gICAgICAvLyAtPiB0cmlnZ2VyaW5nIHJlZmxvd1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZvaWRcbiAgICAgIHZvaWQgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQub2Zmc2V0V2lkdGg7XG4gICAgICBzZWFyY2hDb250YWluZXJSZWYuY3VycmVudC5jbGFzc0xpc3QuYWRkKHByb3BzLmNsYXNzTmFtZVNoYWtlQW5pbWF0aW9uKTtcbiAgICB9XG4gIH0sIFtwcm9wcy5jbGFzc05hbWVTaGFrZUFuaW1hdGlvbl0pO1xuXG4gIGNvbnN0IGV4ZWN1dGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY29tbWFuZCwgbWV0YSkgPT4ge1xuICAgICAgLy8gT25seSBtYWluIGVudHJpZXMgZ2V0IGFkZGVkIHRvIGhpc3RvcnksIHNvIHdoZW4gYSBzdWJjb21tYW5kIGlzIGV4ZWN1dGVkLFxuICAgICAgLy8gd2UgYWRkIHRoZSBtYWluIGNvbW1hbmQgb2YgaXQgdG8gdGhlIGhpc3RvcnkgKHRoZSB0b3AtbGV2ZWwgY29tbWFuZCkuXG4gICAgICAvL1xuICAgICAgLy8gVGhlIGtleSB0byBpZGVudGlmeSBoaXN0b3J5IGVudHJpZXMgYnkgaXMgYWx3YXlzIHRoZSBzZWFyY2hUZXh0XG4gICAgICAvLyBUaGVyZSB3aWxsIG5ldmVyIGJlIHR3byBoaXN0b3J5IGVudHJpZXMgd2l0aCB0aGUgc2FtZSBzZWFyY2hUZXh0XG4gICAgICBjb25zdCBlbnRyeSA9XG4gICAgICAgIHN0YXRlLnN0YWNrLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gLy8gVGhlIHN0YWNrIGlzIGVtcHR5LCBzbyB3ZSBhcmUgZXhlY3V0aW5nIGEgdG9wLWxldmVsIGNvbW1hbmRcbiAgICAgICAgICAgIHsgc2VhcmNoVGV4dDogc3RhdGUuc2VhcmNoVGV4dCwgcmVzdWx0czogc3RhdGUucmVzdWx0cyB9XG4gICAgICAgICAgOiAvLyBXZSBhcmUgZXhlY3V0aW5nIGEgc3ViY29tbWFuZCwgc28gd2UgZ2V0IHRoZSB0b3AtbGV2ZWwgY29tbWFuZCBmb3IgaXQsXG4gICAgICAgICAgICAvLyB3aGljaCBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSBzdGFjay5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogc3RhdGUuc3RhY2tbMF0uc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogc3RhdGUuc3RhY2tbMF0ucmVzdWx0cyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgIC8vIEFkZCB0aGUgZW50cnkgdG8gdGhlIGhpc3RvcnksIHdoaWxlIGV4Y2x1ZGluZyBhbnkgZWFybGllciBoaXN0b3J5IGVudHJ5XG4gICAgICAvLyB3aXRoIHRoZSBzYW1lIHNlYXJjaCB0ZXh0LiBUaGlzIGVmZmVjdGl2ZWx5IFwibW92ZXNcIiB0aGF0IGVudHJ5IHRvIHRoZVxuICAgICAgLy8gdG9wIG9mIHRoZSBoaXN0b3J5ICh3aXRoIHRoZSBtb3N0IHJlY2VudCByZXN1bHRzKSwgb3IgYXBwZW5kcyBhIG5ldyBlbnRyeVxuICAgICAgLy8gd2hlbiBpdCBkaWRuJ3QgZXhpc3QgYmVmb3JlLlxuICAgICAgb25IaXN0b3J5RW50cmllc0NoYW5nZUZyb21QYXJlbnQoW1xuICAgICAgICAuLi5wcm9wcy5oaXN0b3J5RW50cmllcy5maWx0ZXIoXG4gICAgICAgICAgKGNvbW1hbmQpID0+IGNvbW1hbmQuc2VhcmNoVGV4dCAhPT0gZW50cnkuc2VhcmNoVGV4dFxuICAgICAgICApLFxuICAgICAgICBlbnRyeSxcbiAgICAgIF0pO1xuXG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFNlYXJjaFRleHQnIH0pO1xuXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCgpO1xuXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQoY29tbWFuZCwgbWV0YSk7XG4gICAgfSxcbiAgICBbXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQsXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzdGF0ZS5yZXN1bHRzLFxuICAgICAgc3RhdGUuc2VhcmNoVGV4dCxcbiAgICAgIHN0YXRlLnN0YWNrLFxuICAgIF1cbiAgKTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIFByZXZlbnRpbmcgY3Vyc29yIGp1bXBzIGNhbiBvbmx5IGhhcHBlbiBpbiBvbktleURvd24sIGJ1dCBub3QgaW4gb25LZXlVcFxuICAgICAgZXZlbnQucGVyc2lzdCgpO1xuXG4gICAgICAvLyBXZSB3YW50IHRvIGtub3cgd2hlbiB0aGUgdXNlciBwcmVzc2VzIGNtZCtlbnRlciAoY21kIGJlaW5nIGEgbWV0YSBrZXkpLlxuICAgICAgLy8gV2UgYXJlIG9ubHkgdG9sZCBhYm91dCB0aGlzIGluIGtleURvd24sIGJ1dCBub3QgaW4ga2V5VXAsIHNvIHdlIG5lZWRcbiAgICAgIC8vIHRvIGhhbmRsZSBpdCBoZXJlXG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmIGhhc05ld1dpbmRvd01vZGlmaWVyKGV2ZW50KSkge1xuICAgICAgICBpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEF2b2lkIHNlbGVjdGluZyB0aGUgd2hvbGUgcGFnZSB3aGVuIHVzZXIgc2VsZWN0ZXMgZXZlcnl0aGluZyB3aXRoXG4gICAgICAvLyBhIGtleWJvYXJkIHNob3J0Y3V0LiBUaGVyZSBpcyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyB0aG91Z2guXG4gICAgICAvLyBUaGlzIHByZXZlbnRzIHRoZSB3aG9sZSBwYWdlIGZyb20gYmVpbmcgc2VsZWN0ZWQgaW4gY2FzZSB0aGUgdXNlclxuICAgICAgLy8gMSkgb3BlbnMgdGhlIHNlYXJjaCBib3hcbiAgICAgIC8vIDIpIHR5cGVzIGludG8gaXRcbiAgICAgIC8vIDMpIHNlbGVjdHMgYWxsIHRleHQgdXNpbmcgY21kK2FcbiAgICAgIC8vIDQpIGNsb3NlcyB0aGUgc2VhcmNoIGJveCB3aXRoIGVzY1xuICAgICAgLy8gV2l0aG91dCB0aGlzIGhhbmRsaW5nLCB0aGUgd2hvbGUgcGFnZSB3b3VsZCBub3cgYmUgc2VsZWN0ZWRcbiAgICAgIGlmIChpc1NlbGVjdEFsbENvbWJvKGV2ZW50KSkge1xuICAgICAgICAvLyBUaGlzIHN0b3BzIHRoZSBicm93c2VyIGZyb20gc2VsZWN0aW5nIGFueXRoaW5nXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChzZWFyY2hJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgLy8gVGhpcyBzZWxlY3RzIHRoZSB0ZXh0IGluIHRoZSBzZWFyY2ggaW5wdXRcbiAgICAgICAgICBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGF2b2lkIGludGVyZmVyaW5nIHdpdGggb3RoZXIga2V5IGNvbWJpbmF0aW9ucyB1c2luZyBtb2RpZmllciBrZXlzXG4gICAgICBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQubWV0YUtleSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGlzQ2xvc2VDb21ibyhldmVudCkpIHJldHVybjtcblxuICAgICAgLy8gc2tpcCBuZXh0IG1vdXNlRW50ZXIgdG8gYXZvaWQgc2V0dGluZyBzZWxlY3RlZFJlc3VsdCB3aGVuIGN1cnNvciBqdXN0XG4gICAgICAvLyBoYXBwZW5zIHRvIGJlIHdoZXJlIHRoZSByZXN1bHRzIHdpbGwgcG9wIHVwXG4gICAgICBza2lwTmV4dFNlbGVjdGlvbi5jdXJyZW50ID0gdHJ1ZTtcblxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgLy8gcHJldmVudCBjdXJzb3IgZnJvbSBqdW1waW5nIHRvIGVuZCBvZiB0ZXh0IGlucHV0XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogJ2luY3JlbWVudFNlbGVjdGVkUmVzdWx0JyB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgIC8vIGJyb3dzZSB0aHJvdWdoIGhpc3RvcnlcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgKHN0YXRlLnNlbGVjdGVkUmVzdWx0IDwgMSAmJiBzdGF0ZS5lbmFibGVIaXN0b3J5KVxuICAgICAgICApIHtcbiAgICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9XG4gICAgICAgICAgICBzdGF0ZS5zZWFyY2hUZXh0Lmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICA/IC8vIFdoZW4gZ29pbmcgYmFjayB0aGUgZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIDogLy8gV2hlbiBnb2luZyBiYWNrIG1vcmUgdGhhbiBvbmUgc3RlcFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgIChjb21tYW5kKSA9PiBjb21tYW5kLnNlYXJjaFRleHQgPT09IHN0YXRlLnNlYXJjaFRleHRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgIC8vIFBpY2sgdGhlIHByZXZpb3VzIGNvbW1hbmQgZnJvbSB0aGUgaGlzdG9yeVxuICAgICAgICAgIGNvbnN0IHByZXZDb21tYW5kID1cbiAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPT09IC0xXG4gICAgICAgICAgICAgID8gLy8gcHJldmlvdXMgY29tbWFuZCBvbiB0b3Agb2YgdGhlIGhpc3Rvcnkgd2hlbiBnb2luZyBiYWNrIG9uXG4gICAgICAgICAgICAgICAgLy8gZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIGxhc3QocHJvcHMuaGlzdG9yeUVudHJpZXMpXG4gICAgICAgICAgICAgIDogLy8gcHJldmlvdXMgY29tbWFuZCBpcyBkZWVwZXIgZG93blxuICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGhpc3RvcnkgZG9lcyBub3QgZXhpc3QgKG5lZ2F0aXZlIGluZGV4KSwgdGhlblxuICAgICAgICAgICAgICAgIC8vIHRoaXMgaW1wbGljaXRseSByZXR1cm5zIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzW3NlbGVjdGVkSW5kZXggLSAxXTtcbiAgICAgICAgICAvLyBTa2lwIHdoZW4gbm8gcHJldmlvdXMgZW50cnkgZXhpc3RzIGluIHRoZSBoaXN0b3J5XG4gICAgICAgICAgaWYgKCFwcmV2Q29tbWFuZCkgcmV0dXJuO1xuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyB0byBiZWdpbm5pbmcgb2YgdGV4dCBpbnB1dFxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA+IC0xKSB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSBzdGF0ZS5yZXN1bHRzW3N0YXRlLnNlbGVjdGVkUmVzdWx0XTtcbiAgICAgICAgICBjb25zdCBzZWFyY2hUZXh0ID0gc3RhdGUuc2VhcmNoVGV4dDtcbiAgICAgICAgICBjb25zdCBpc0N1cnNvckF0RW5kID1cbiAgICAgICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvblN0YXJ0O1xuXG4gICAgICAgICAgY29uc3QgaXNFdmVyeXRoaW5nU2VsZWN0ZWQgPVxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudCAmJlxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCAmJlxuICAgICAgICAgICAgc3RhdGUuc2VhcmNoVGV4dC5sZW5ndGggPT09IHNlYXJjaElucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uRW5kO1xuXG4gICAgICAgICAgLy8gb25seSBhbGxvdyBkaXZpbmcgaW4gd2hlbiBjdXJzb3IgaXMgYXQgZW5kIG9mIGlucHV0IG9yIHdoZW5cbiAgICAgICAgICAvLyB0aGUgY29tcGxldGUgdGV4dCBpcyBzZWxlY3RlZCAod2hlbiBicm93c2luZyB0aHJvdWdoIGhpc3RvcnkpXG4gICAgICAgICAgaWYgKCFpc0N1cnNvckF0RW5kICYmICFpc0V2ZXJ5dGhpbmdTZWxlY3RlZCkgcmV0dXJuO1xuXG4gICAgICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IoKTtcblxuICAgICAgICAgIC8vIE5PVEU6IHNpbmNlIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIFwibmV4dCBjb21tYW5kXCIsIHdoaWNoIGlzIGFuIGFzeW5jIG9wZXJhdGlvbixcbiAgICAgICAgICAvLyB3ZSB1c2UgYSBJSUZFIHRvIHByb2Nlc3MgdGhhdCBhbmQgZXZlbnR1YWxseSB1cGRhdGUgdGhlIHN0YXRlLlxuICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29tbWFuZCkge1xuICAgICAgICAgICAgICBjb25zdCBuZXh0Q29tbWFuZHMgPSBhd2FpdCBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50KGNvbW1hbmQpO1xuICAgICAgICAgICAgICAvLyBhdm9pZCBtb3ZpbmcgY3Vyc29yIHdoZW4gdGhlcmUgYXJlIHN1Yi1vcHRpb25zXG4gICAgICAgICAgICAgIGlmIChuZXh0Q29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgc2VhcmNoIHRleHQgaGFzIG5vdCBjaGFuZ2VkIHdoaWxlIHdlIHdlcmUgbG9hZGluZ1xuICAgICAgICAgICAgICAgIC8vIHRoZSBuZXh0IHJlc3VsdHMsIG90aGVyd2lzZSB3ZSdkIGludGVycnVwdCB0aGUgdXNlci5cbiAgICAgICAgICAgICAgICAvLyBUaHJvdyBhd2F5IHRoZSByZXN1bHRzIGluIGNhc2UgdGhlIHNlYXJjaCB0ZXh0IGhhcyBjaGFuZ2VkLlxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zZWFyY2hUZXh0ID09PSBzZWFyY2hUZXh0KSB7XG4gICAgICAgICAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZXROZXh0Q29tbWFuZHMnLFxuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiB7IHJlc3VsdHM6IG5leHRDb21tYW5kcyB9LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hha2UoKTtcbiAgICAgICAgICB9KSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgICAgIC8vIGdvIGxlZnQgaW4gc3RhY2tcbiAgICAgICAgICBjb25zdCBwcmV2Q29tbWFuZCA9IGxhc3Qoc3RhdGUuc3RhY2spO1xuXG4gICAgICAgICAgLy8gZG8gbm90aGluZyB3aGVuIHdlIGNhbid0IGdvIGxlZnQgYW55bW9yZVxuICAgICAgICAgIGlmICghcHJldkNvbW1hbmQpIHJldHVybjtcblxuICAgICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyBhIGNoYXIgdG8gdGhlIGxlZnQgaW4gdGV4dCBpbnB1dFxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlOiAnc2V0UHJldkNvbW1hbmRzJyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzaGFrZSxcbiAgICAgIHN0YXRlLFxuICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVLZXlVcCA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIHNldHRpbmcgdGhlIHNlbGVjdGlvbiBjYW4gb25seSBoYXBwZW4gaW4gb25LZXlVcFxuICAgICAgaWYgKHNob3VsZFNlbGVjdEZpZWxkVGV4dC5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInICYmICFpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGp1c3QgdHJpZ2dlcmVkIHRoZSBzZWFyY2hcbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA9PT0gLTEpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGhhZCBzb21ldGhpbmcgc2VsZWN0ZWQgYW5kIHdhbnRzIHRvIGdvIHRoZXJlXG4gICAgICBleGVjdXRlKHN0YXRlLnJlc3VsdHNbc3RhdGUuc2VsZWN0ZWRSZXN1bHRdLCB7XG4gICAgICAgIG9wZW5Jbk5ld1RhYjogaXNOZXdXaW5kb3dDb21iby5jdXJyZW50LFxuICAgICAgfSk7XG5cbiAgICAgIGlzTmV3V2luZG93Q29tYm8uY3VycmVudCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBbZXhlY3V0ZSwgc3RhdGUucmVzdWx0cywgc3RhdGUuc2VsZWN0ZWRSZXN1bHRdXG4gICk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrPENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50Pj4oXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBzZWFyY2hUZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgaWYgKHNlYXJjaFRleHQudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZGlzcGF0Y2goeyB0eXBlOiAnc2VhcmNoVGV4dCcsIHBheWxvYWQ6IHNlYXJjaFRleHQgfSk7XG5cbiAgICAgIC8vIEEgc2VhcmNoIHZpYSBuZXR3b3JrIGlzIG9ubHkgdHJpZ2dlcmVkIHdoZW4gdGhlcmVcbiAgICAgIC8vIGFyZSBtb3JlIHRoYW4gdGhyZWUgY2hhcmFjdGVycy4gU28gbm8gZmFsc2UgbG9hZGluZ1xuICAgICAgLy8gaW5kaWNhdGlvbiBpcyBnaXZlbi5cbiAgICAgIGlmIChzZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAzKSB7XG4gICAgICAgIHNldElzTG9hZGluZygpO1xuICAgICAgfVxuXG4gICAgICBzZWFyY2hGcm9tUGFyZW50KHNlYXJjaFRleHQpLnRoZW4oXG4gICAgICAgIChhc3luY1Jlc3VsdHM6IENvbW1hbmRbXSkgPT4ge1xuICAgICAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yKCk7XG4gICAgICAgICAgdW5zZXRJc0xvYWRpbmcoKTtcblxuICAgICAgICAgIGNvbnN0IGZ1c2UgPSBuZXcgRnVzZShhc3luY1Jlc3VsdHMsIHtcbiAgICAgICAgICAgIGtleXM6IFtcbiAgICAgICAgICAgICAgeyBuYW1lOiAndGV4dCcsIHdlaWdodDogMC42IH0sXG4gICAgICAgICAgICAgIHsgbmFtZTogJ2tleXdvcmRzJywgd2VpZ2h0OiAwLjQgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBtaW5NYXRjaENoYXJMZW5ndGg6IDIsXG4gICAgICAgICAgICBpbmNsdWRlU2NvcmU6IHRydWUsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBzZWFyY2hSZXN1bHRzID0gZnVzZVxuICAgICAgICAgICAgLnNlYXJjaChzZWFyY2hUZXh0KVxuICAgICAgICAgICAgLy8gRmlsdGVyIG91dCByZXN1bHRzIHdpdGggYSBtYXRjaGluZyBzY29yZSBvdmVyIDAuNzVcbiAgICAgICAgICAgIC5maWx0ZXIoKHJlc3VsdCkgPT4gKHJlc3VsdC5zY29yZSA/IHJlc3VsdC5zY29yZSA8IDAuNzUgOiBmYWxzZSkpXG4gICAgICAgICAgICAvLyBLZWVwIGEgbWF4aW1hbCBvZiA5IHJlc3VsdHNcbiAgICAgICAgICAgIC5zbGljZSgwLCA5KTtcblxuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdzZXRTZWFyY2hUZXh0UmVzdWx0cycsXG4gICAgICAgICAgICBwYXlsb2FkOiBzZWFyY2hSZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQuaXRlbSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB1bnNldElzTG9hZGluZygpO1xuICAgICAgICAgIHNldEhhc05ldHdvcmtFcnJvcigpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0sXG4gICAgW1xuICAgICAgc2VhcmNoRnJvbVBhcmVudCxcbiAgICAgIHNldEhhc05ldHdvcmtFcnJvcixcbiAgICAgIHNldElzTG9hZGluZyxcbiAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yLFxuICAgICAgdW5zZXRJc0xvYWRpbmcsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVDb250YWluZXJDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFJlc3VsdHNXaGVuQ2xvc2luZycgfSk7XG4gICAgb25DbG9zZUZyb21QYXJlbnQoKTtcbiAgfSwgW29uQ2xvc2VGcm9tUGFyZW50XSk7XG5cbiAgY29uc3QgY3JlYXRlQ29tbWFuZE1vdXNlRW50ZXJIYW5kbGVyID0gdXNlQ2FsbGJhY2s8XG4gICAgKGluZGV4OiBudW1iZXIpID0+IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PlxuICA+KFxuICAgIChpbmRleCkgPT4gKCkgPT4ge1xuICAgICAgLy8gSW4gY2FzZSB0aGUgY3Vyc29yIGhhcHBlbmVkIHRvIGJlIGluIGEgbG9jYXRpb24gd2hlcmUgYVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGFwcGVhciwgaXQgd291bGQgdHJpZ2dlciBvbk1vdXNlRW50ZXIgYW5kIHRoZVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGJlIHNlbGVjdGVkIGltbWVkaWF0ZWx5LiBUaGlzIGlzIG5vdCBzb21ldGhpbmdcbiAgICAgIC8vIGEgdXNlciB3b3VsZCBleHBlY3QsIGhlbmNlIHdlIHByZXZlbnQgaXQgZnJvbSBoYXBwZW5pbmcuXG4gICAgICAvLyBUaGUgdXNlciBoYXMgdG8gbW92ZSB0aGUgY3Vyc29yIHRvIGFuIG9wdGlvbiBleHBsaWNpdGx5IGZvclxuICAgICAgLy8gaXQgdG8gYmVjb21lIGFjdGl2ZS4gSG93ZXZlciwgdGhlIHVzZXIgY2FuIGFsd2F5cyBjbGljayBhbmRcbiAgICAgIC8vIHRoYXQgYWN0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkLlxuICAgICAgaWYgKHNraXBOZXh0U2VsZWN0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgc2tpcE5leHRTZWxlY3Rpb24uY3VycmVudCA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIHNldHMgdGhlIHNlbGVjdGVkIHJlc3VsdCwgbWFpbmx5IGZvciB0aGUgaG92ZXIgZWZmZWN0XG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCcsIHBheWxvYWQ6IGluZGV4IH0pO1xuICAgIH0sXG4gICAgW11cbiAgKTtcbiAgY29uc3QgY3JlYXRlQ29tbWFuZENsaWNrSGFuZGxlciA9IHVzZUNhbGxiYWNrPFxuICAgIChjb21tYW5kOiBDb21tYW5kKSA9PiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD5cbiAgPihcbiAgICAoY29tbWFuZCkgPT4gKGV2ZW50KSA9PiB7XG4gICAgICBleGVjdXRlKGNvbW1hbmQsIHtcbiAgICAgICAgb3BlbkluTmV3VGFiOiBoYXNOZXdXaW5kb3dNb2RpZmllcihldmVudCksXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtleGVjdXRlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEJ1dGxlckNvbnRhaW5lclxuICAgICAgb25DbGljaz17aGFuZGxlQ29udGFpbmVyQ2xpY2t9XG4gICAgICBkYXRhLXRlc3RpZD1cInF1aWNrLWFjY2Vzc1wiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3NlYXJjaENvbnRhaW5lclJlZn1cbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yU3VyZmFjZX07XG4gICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICR7Y3VzdG9tUHJvcGVydGllcy5ib3JkZXJSYWRpdXM0fTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA0MHB4O1xuXG4gICAgICAgICAgLyogb25lIG1vcmUgdGhhbiBhcHAtYmFyICgyMDAwMCkgYW5kIG9uZSBtb3JlIHRoYW4gdGhlIG92ZXJsYXkgKDIwMDAxKSAqL1xuICAgICAgICAgIHotaW5kZXg6IDIwMDAyO1xuICAgICAgICAgIHdpZHRoOiA0MDBweDtcbiAgICAgICAgICBtYXJnaW46IDQwcHggYXV0bztcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAxMHB4IDMwcHggLThweCByZ2JhKDAsIDAsIDAsIDAuNzUpO1xuICAgICAgICAgIC1tb3otYm94LXNoYWRvdzogMCAxMHB4IDMwcHggLThweCByZ2JhKDAsIDAsIDAsIDAuNzUpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IC04cHggcmdiYSgwLCAwLCAwLCAwLjc1KTtcbiAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHtzdGF0ZS5oYXNOZXR3b3JrRXJyb3JcbiAgICAgICAgICAgID8gJzAnXG4gICAgICAgICAgICA6IGN1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICBgfVxuICAgICAgICBvbkNsaWNrPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBBdm9pZCBjbG9zaW5nIHdoZW4gdGhlIHNlYXJjaENvbnRhaW5lciBpdHNlbGYgaXMgY2xpY2tlZFxuICAgICAgICAgIC8vIElmIHdlIGRvbid0IGRvIHRoaXMsIHRoZW4gdGhlIG92ZXJsYXkgd2lsbCBjbG9zZSB3aGVuIGUuZy5cbiAgICAgICAgICAvLyB0aGUgc2VhcmNoIGlucHV0IGlzIGNsaWNrZWQuXG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBgfVxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBodG1sRm9yPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nTX07XG4gICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICBgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTZWFyY2hJY29uIGNvbG9yPVwibmV1dHJhbDYwXCIgLz5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJxdWljay1hY2Nlc3Mtc2VhcmNoLWlucHV0XCJcbiAgICAgICAgICAgIHJlZj17c2VhcmNoSW5wdXRSZWZ9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17aW50bC5mb3JtYXRNZXNzYWdlKG1lc3NhZ2VzLmlucHV0UGxhY2Vob2Rlcil9XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ019ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nTX1cbiAgICAgICAgICAgICAgICAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yTmV1dHJhbDYwfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYH1cbiAgICAgICAgICAgIHZhbHVlPXtzdGF0ZS5zZWFyY2hUZXh0fVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgIG9uS2V5VXA9e2hhbmRsZUtleVVwfVxuICAgICAgICAgICAgYXV0b0ZvY3VzPXt0cnVlfVxuICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICB7c3RhdGUuaXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICBpZiAoc3RhdGUuaGFzTmV0d29ya0Vycm9yKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JFcnJvcn07XG4gICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvclN1cmZhY2V9O1xuICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAke2N1c3RvbVByb3BlcnRpZXMuZm9udFNpemVTbWFsbH07XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1hzfTtcbiAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm9mZmxpbmV9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChzdGF0ZS5yZXN1bHRzLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5zZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JOZXV0cmFsfTtcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTb2xpZH07XG4gICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAke2N1c3RvbVByb3BlcnRpZXMuZm9udFNpemVTbWFsbH07XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1hzfTtcbiAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm5vUmVzdWx0c30gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuIHN0YXRlLnJlc3VsdHMubWFwKChjb21tYW5kLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPEJ1dGxlckNvbW1hbmRcbiAgICAgICAgICAgICAga2V5PXtjb21tYW5kLmlkfVxuICAgICAgICAgICAgICBjb21tYW5kPXtjb21tYW5kfVxuICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzdGF0ZS5zZWxlY3RlZFJlc3VsdCA9PT0gaW5kZXh9XG4gICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17Y3JlYXRlQ29tbWFuZE1vdXNlRW50ZXJIYW5kbGVyKGluZGV4KX1cbiAgICAgICAgICAgICAgb25DbGljaz17Y3JlYXRlQ29tbWFuZENsaWNrSGFuZGxlcihjb21tYW5kKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSk7XG4gICAgICAgIH0pKCl9XG4gICAgICA8L2Rpdj5cbiAgICA8L0J1dGxlckNvbnRhaW5lcj5cbiAgKTtcbn07XG5CdXRsZXIuZGlzcGxheU5hbWUgPSAnQnV0bGVyJztcblxuY29uc3QgQnV0bGVyV2l0aEFuaW1hdGlvbiA9IChwcm9wczogT21pdDxQcm9wcywgJ2NsYXNzTmFtZVNoYWtlQW5pbWF0aW9uJz4pID0+IChcbiAgPENsYXNzTmFtZXM+XG4gICAgeyh7IGNzcyB9KSA9PiAoXG4gICAgICA8QnV0bGVyXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgY2xhc3NOYW1lU2hha2VBbmltYXRpb249e2Nzc2BcbiAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDAuNDVzO1xuICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gICAgICAgICAgYW5pbWF0aW9uLW5hbWU6ICR7c2hha2VBbmltYXRpb259O1xuICAgICAgICBgfVxuICAgICAgLz5cbiAgICApfVxuICA8L0NsYXNzTmFtZXM+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBCdXRsZXJXaXRoQW5pbWF0aW9uO1xuIl19 */"),
|
|
1009
|
-
value: state.searchText,
|
|
1010
|
-
onChange: handleChange,
|
|
1011
|
-
onKeyDown: handleKeyDown,
|
|
1012
|
-
onKeyUp: handleKeyUp,
|
|
1013
|
-
autoFocus: true,
|
|
1014
|
-
autoComplete: "off",
|
|
1015
|
-
"data-testid": "quick-access-search-input"
|
|
1016
|
-
}), state.isLoading && jsxRuntime.jsx("div", {
|
|
1017
|
-
css: /*#__PURE__*/react.css("align-self:center;margin-top:", designSystem.customProperties.spacingS, ";margin-right:", designSystem.customProperties.spacingS, ";" + (process.env.NODE_ENV === "production" ? "" : ";label:Butler;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMHBCc0IiLCJmaWxlIjoiYnV0bGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQ29tbWFuZCxcbiAgU2VhcmNoVGV4dCxcbiAgU2VsZWN0ZWRSZXN1bHQsXG4gIFN0YWNrLFxuICBIaXN0b3J5RW50cnksXG59IGZyb20gJy4uL3R5cGVzJztcblxuaW1wb3J0IHtcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudCxcbiAgTW91c2VFdmVudEhhbmRsZXIsXG4gIE1vdXNlRXZlbnQsXG4gIHVzZVJlZHVjZXIsXG4gIHVzZVJlZixcbiAgdXNlQ2FsbGJhY2ssXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCBGdXNlIGZyb20gJ2Z1c2UuanMnO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdXNlSW50bCB9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IGxhc3QgZnJvbSAnbG9kYXNoL2xhc3QnO1xuaW1wb3J0IHsgY3NzLCBrZXlmcmFtZXMsIENsYXNzTmFtZXMgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvbG9hZGluZy1zcGlubmVyJztcbmltcG9ydCB7IFNlYXJjaEljb24gfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9pY29ucyc7XG5pbXBvcnQgeyBjdXN0b21Qcm9wZXJ0aWVzIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgQnV0bGVyQ29tbWFuZCBmcm9tICcuLi9idXRsZXItY29tbWFuZCc7XG5pbXBvcnQgQnV0bGVyQ29udGFpbmVyIGZyb20gJy4uL2J1dGxlci1jb250YWluZXInO1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4uL21lc3NhZ2VzJztcblxuY29uc3QgaXNTZWxlY3RBbGxDb21ibyA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT5cbiAgZXZlbnQua2V5ID09PSAnYScgJiZcbiAgZXZlbnQubWV0YUtleSAmJlxuICAhZXZlbnQuY3RybEtleSAmJlxuICAhZXZlbnQuYWx0S2V5ICYmXG4gICFldmVudC5zaGlmdEtleTtcblxuY29uc3QgaXNDbG9zZUNvbWJvID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PlxuICBldmVudC5rZXkgPT09ICdFc2NhcGUnICYmXG4gICFldmVudC5tZXRhS2V5ICYmXG4gICFldmVudC5jdHJsS2V5ICYmXG4gICFldmVudC5hbHRLZXkgJiZcbiAgIWV2ZW50LnNoaWZ0S2V5O1xuXG5jb25zdCBnZXRQbGF0Zm9ybSA9ICgpID0+IHtcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdXaW4nKSkgcmV0dXJuICd3aW5kb3dzJztcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdNYWMnKSkgcmV0dXJuICdtYWNvcyc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnWDExJykpIHJldHVybiAndW5peCc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnTGludXgnKSkgcmV0dXJuICdsaW51eCc7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBoYXNOZXdXaW5kb3dNb2RpZmllciA9IChcbiAgZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTEVsZW1lbnQ+IHwgTW91c2VFdmVudDxIVE1MRWxlbWVudD5cbikgPT4ge1xuICBjb25zdCBwbGF0Zm9ybSA9IGdldFBsYXRmb3JtKCk7XG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdtYWNvcyc6XG4gICAgICByZXR1cm4gZXZlbnQubWV0YUtleTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGV2ZW50LmN0cmxLZXk7XG4gIH1cbn07XG5cbmNvbnN0IHNoYWtlQW5pbWF0aW9uID0ga2V5ZnJhbWVzYFxuICBmcm9tLFxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIDE0JSxcbiAgNDIlLFxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTNweCwgMCwgMCk7XG4gIH1cblxuICAyOCUsXG4gIDU2JSxcbiAgODQlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDNweCwgMCwgMCk7XG4gIH1cbmA7XG5cbnR5cGUgU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogYm9vbGVhbjtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0O1xuICBzZWxlY3RlZFJlc3VsdDogU2VsZWN0ZWRSZXN1bHQ7XG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IGJvb2xlYW47XG4gIHJlc3VsdHM6IENvbW1hbmRbXTtcbiAgc3RhY2s6IFN0YWNrW107XG59O1xudHlwZSBBY3Rpb24gPVxuICB8IHsgdHlwZTogJ25ldHdvcmtFcnJvcic7IHBheWxvYWQ6IGJvb2xlYW4gfVxuICB8IHsgdHlwZTogJ2xvYWRpbmcnOyBwYXlsb2FkOiBib29sZWFuIH1cbiAgfCB7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCc7IHBheWxvYWQ6IG51bWJlciB9XG4gIHwgeyB0eXBlOiAnaW5jcmVtZW50U2VsZWN0ZWRSZXN1bHQnIH1cbiAgfCB7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfVxuICB8IHtcbiAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JztcbiAgICAgIHBheWxvYWQ6IHsgc2VhcmNoVGV4dDogU2VhcmNoVGV4dDsgcmVzdWx0czogQ29tbWFuZFtdIH07XG4gICAgfVxuICB8IHsgdHlwZTogJ3NldE5leHRDb21tYW5kcyc7IHBheWxvYWQ6IHsgcmVzdWx0czogQ29tbWFuZFtdIH0gfVxuICB8IHtcbiAgICAgIHR5cGU6ICdzZXRQcmV2Q29tbWFuZHMnO1xuICAgICAgcGF5bG9hZDogeyBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0OyByZXN1bHRzOiBDb21tYW5kW10gfTtcbiAgICB9XG4gIHwgeyB0eXBlOiAnc2VhcmNoVGV4dCc7IHBheWxvYWQ6IHN0cmluZyB9XG4gIHwgeyB0eXBlOiAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOyBwYXlsb2FkOiBDb21tYW5kW10gfVxuICB8IHsgdHlwZTogJ3Jlc2V0U2VhcmNoVGV4dCcgfVxuICB8IHsgdHlwZTogJ3Jlc2V0UmVzdWx0c1doZW5DbG9zaW5nJyB9XG4gIHwgeyB0eXBlOiAncmVzZXQnIH07XG5jb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogZmFsc2UsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIHNlYXJjaFRleHQ6ICcnLFxuICBzZWxlY3RlZFJlc3VsdDogLTEsXG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IHRydWUsXG4gIHJlc3VsdHM6IFtdLFxuICBzdGFjazogW10sXG59O1xuY29uc3QgcmVkdWNlciA9IChzdGF0ZTogU3RhdGUgPSBpbml0aWFsU3RhdGUsIGFjdGlvbjogQWN0aW9uKTogU3RhdGUgPT4ge1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSAnbmV0d29ya0Vycm9yJzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBoYXNOZXR3b3JrRXJyb3I6IGFjdGlvbi5wYXlsb2FkIH07XG4gICAgY2FzZSAnbG9hZGluZyc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaXNMb2FkaW5nOiBhY3Rpb24ucGF5bG9hZCB9O1xuICAgIGNhc2UgJ3NlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQgfTtcbiAgICBjYXNlICdpbmNyZW1lbnRTZWxlY3RlZFJlc3VsdCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6XG4gICAgICAgICAgc3RhdGUuc2VsZWN0ZWRSZXN1bHQgPT09IHN0YXRlLnJlc3VsdHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0ICsgMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ2RlY3JlbWVudFNlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDpcbiAgICAgICAgICBzdGF0ZS5zZWxlY3RlZFJlc3VsdCA8IDFcbiAgICAgICAgICAgID8gc3RhdGUucmVzdWx0cy5sZW5ndGggLSAxXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0IC0gMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ3BpY2tDb21tYW5kRnJvbUhpc3RvcnknOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNlbGVjdGVkUmVzdWx0OiAwLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZC5zZWFyY2hUZXh0LFxuICAgICAgICByZXN1bHRzOiBhY3Rpb24ucGF5bG9hZC5yZXN1bHRzLFxuICAgICAgICBzdGFjazogW10sXG4gICAgICAgIC8vIFRoZSBoaXN0b3J5IGRvZXMgbm90IGdldCBjaGFuZ2VkIGhlcmUsIGl0IHdpbGwgYmUgY2hhbmdlZCBhbG9uZ1xuICAgICAgICAvLyB3aXRoIHRoZSByZWd1bGFyIGZsb3cuXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldE5leHRDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc3RhY2s6IFtcbiAgICAgICAgICAuLi5zdGF0ZS5zdGFjayxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWFyY2hUZXh0OiBzdGF0ZS5zZWFyY2hUZXh0LFxuICAgICAgICAgICAgcmVzdWx0czogc3RhdGUucmVzdWx0cyxcbiAgICAgICAgICAgIHNlbGVjdGVkUmVzdWx0OiBzdGF0ZS5zZWxlY3RlZFJlc3VsdCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogMCxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLnJlc3VsdHMsXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldFByZXZDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VhcmNoVGV4dDogYWN0aW9uLnBheWxvYWQuc2VhcmNoVGV4dCxcbiAgICAgICAgcmVzdWx0czogYWN0aW9uLnBheWxvYWQucmVzdWx0cyxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6IDAsXG4gICAgICAgIGVuYWJsZUhpc3Rvcnk6IGZhbHNlLFxuICAgICAgICAvLyBvbWl0IGxhc3QgaXRlbVxuICAgICAgICBzdGFjazogc3RhdGUuc3RhY2suc2xpY2UoMCwgLTEpLFxuICAgICAgfTtcbiAgICBjYXNlICdzZWFyY2hUZXh0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgLy8gY2xlYXIgbmV0d29yayBlcnJvciB3aGVuIHNlYXJjaCB0ZXh0IGlzIGNsZWFyZWQsIHNvIHRoYXQgdXNlcnNcbiAgICAgICAgLy8gYXJlIHRlbXB0ZWQgdG8gcmV0cnlcbiAgICAgICAgaGFzTmV0d29ya0Vycm9yOiBhY3Rpb24ucGF5bG9hZC5sZW5ndGggPiAwICYmIHN0YXRlLmhhc05ldHdvcmtFcnJvcixcbiAgICAgIH07XG4gICAgY2FzZSAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQubGVuZ3RoID4gMCA/IDAgOiAtMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogdHJ1ZSxcbiAgICAgICAgc3RhY2s6IFtdLFxuICAgICAgfTtcbiAgICBjYXNlICdyZXNldFNlYXJjaFRleHQnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlYXJjaFRleHQ6ICcnLCByZXN1bHRzOiBbXSwgc2VsZWN0ZWRSZXN1bHQ6IC0xIH07XG4gICAgY2FzZSAncmVzZXRSZXN1bHRzV2hlbkNsb3NpbmcnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlbGVjdGVkUmVzdWx0OiAtMSwgZW5hYmxlSGlzdG9yeTogdHJ1ZSB9O1xuICAgIGNhc2UgJ3Jlc2V0JzpcbiAgICAgIHJldHVybiBpbml0aWFsU3RhdGU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxudHlwZSBQcm9wcyA9IHtcbiAgaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdO1xuICBvbkhpc3RvcnlFbnRyaWVzQ2hhbmdlOiAoaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdKSA9PiB2b2lkO1xuICBzZWFyY2g6IChzZWFyY2hUZXh0OiBTZWFyY2hUZXh0KSA9PiBQcm9taXNlPENvbW1hbmRbXT47XG4gIGdldE5leHRDb21tYW5kczogKGNvbW1hbmQ6IENvbW1hbmQpID0+IFByb21pc2U8Q29tbWFuZFtdPjtcbiAgZXhlY3V0ZUNvbW1hbmQ6IChjb21tYW5kOiBDb21tYW5kLCBtZXRhOiB7IG9wZW5Jbk5ld1RhYjogYm9vbGVhbiB9KSA9PiB2b2lkO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xuICBjbGFzc05hbWVTaGFrZUFuaW1hdGlvbjogc3RyaW5nO1xufTtcbmNvbnN0IEJ1dGxlciA9IChwcm9wczogUHJvcHMpID0+IHtcbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSB1c2VSZWR1Y2VyPFxuICAgIChwcmV2U3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvbikgPT4gU3RhdGVcbiAgPihyZWR1Y2VyLCBpbml0aWFsU3RhdGUpO1xuXG4gIGNvbnN0IHNob3VsZFNlbGVjdEZpZWxkVGV4dCA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IGlzTmV3V2luZG93Q29tYm8gPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBza2lwTmV4dFNlbGVjdGlvbiA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHNlYXJjaENvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IHNlYXJjaElucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IHNldEhhc05ldHdvcmtFcnJvciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICduZXR3b3JrRXJyb3InLCBwYXlsb2FkOiB0cnVlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHVuc2V0SGFzTmV0d29ya0Vycm9yID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogJ25ldHdvcmtFcnJvcicsIHBheWxvYWQ6IGZhbHNlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogdHJ1ZSB9KTtcbiAgfSwgW10pO1xuICBjb25zdCB1bnNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogZmFsc2UgfSk7XG4gIH0sIFtdKTtcblxuICAvLyBEZXN0cnVjdHVyZSBmdW5jdGlvbnMgZnJvbSBwcm9wcyB0byByZWZlcmVuY2UgdGhlbSBpbiB0aGUgaG9vayBkZXBlbmRlbmN5IGxpc3RcbiAgY29uc3Qge1xuICAgIHNlYXJjaDogc2VhcmNoRnJvbVBhcmVudCxcbiAgICBvbkNsb3NlOiBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICBleGVjdXRlQ29tbWFuZDogZXhlY3V0ZUNvbW1hbmRGcm9tUGFyZW50LFxuICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2U6IG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgIGdldE5leHRDb21tYW5kczogZ2V0TmV4dENvbW1hbmRzRnJvbVBhcmVudCxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHNoYWtlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzZWFyY2hDb250YWluZXJSZWYuY3VycmVudCkge1xuICAgICAgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgcHJvcHMuY2xhc3NOYW1lU2hha2VBbmltYXRpb25cbiAgICAgICk7XG4gICAgICAvLyAtPiB0cmlnZ2VyaW5nIHJlZmxvd1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZvaWRcbiAgICAgIHZvaWQgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQub2Zmc2V0V2lkdGg7XG4gICAgICBzZWFyY2hDb250YWluZXJSZWYuY3VycmVudC5jbGFzc0xpc3QuYWRkKHByb3BzLmNsYXNzTmFtZVNoYWtlQW5pbWF0aW9uKTtcbiAgICB9XG4gIH0sIFtwcm9wcy5jbGFzc05hbWVTaGFrZUFuaW1hdGlvbl0pO1xuXG4gIGNvbnN0IGV4ZWN1dGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY29tbWFuZCwgbWV0YSkgPT4ge1xuICAgICAgLy8gT25seSBtYWluIGVudHJpZXMgZ2V0IGFkZGVkIHRvIGhpc3RvcnksIHNvIHdoZW4gYSBzdWJjb21tYW5kIGlzIGV4ZWN1dGVkLFxuICAgICAgLy8gd2UgYWRkIHRoZSBtYWluIGNvbW1hbmQgb2YgaXQgdG8gdGhlIGhpc3RvcnkgKHRoZSB0b3AtbGV2ZWwgY29tbWFuZCkuXG4gICAgICAvL1xuICAgICAgLy8gVGhlIGtleSB0byBpZGVudGlmeSBoaXN0b3J5IGVudHJpZXMgYnkgaXMgYWx3YXlzIHRoZSBzZWFyY2hUZXh0XG4gICAgICAvLyBUaGVyZSB3aWxsIG5ldmVyIGJlIHR3byBoaXN0b3J5IGVudHJpZXMgd2l0aCB0aGUgc2FtZSBzZWFyY2hUZXh0XG4gICAgICBjb25zdCBlbnRyeSA9XG4gICAgICAgIHN0YXRlLnN0YWNrLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gLy8gVGhlIHN0YWNrIGlzIGVtcHR5LCBzbyB3ZSBhcmUgZXhlY3V0aW5nIGEgdG9wLWxldmVsIGNvbW1hbmRcbiAgICAgICAgICAgIHsgc2VhcmNoVGV4dDogc3RhdGUuc2VhcmNoVGV4dCwgcmVzdWx0czogc3RhdGUucmVzdWx0cyB9XG4gICAgICAgICAgOiAvLyBXZSBhcmUgZXhlY3V0aW5nIGEgc3ViY29tbWFuZCwgc28gd2UgZ2V0IHRoZSB0b3AtbGV2ZWwgY29tbWFuZCBmb3IgaXQsXG4gICAgICAgICAgICAvLyB3aGljaCBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSBzdGFjay5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogc3RhdGUuc3RhY2tbMF0uc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogc3RhdGUuc3RhY2tbMF0ucmVzdWx0cyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgIC8vIEFkZCB0aGUgZW50cnkgdG8gdGhlIGhpc3RvcnksIHdoaWxlIGV4Y2x1ZGluZyBhbnkgZWFybGllciBoaXN0b3J5IGVudHJ5XG4gICAgICAvLyB3aXRoIHRoZSBzYW1lIHNlYXJjaCB0ZXh0LiBUaGlzIGVmZmVjdGl2ZWx5IFwibW92ZXNcIiB0aGF0IGVudHJ5IHRvIHRoZVxuICAgICAgLy8gdG9wIG9mIHRoZSBoaXN0b3J5ICh3aXRoIHRoZSBtb3N0IHJlY2VudCByZXN1bHRzKSwgb3IgYXBwZW5kcyBhIG5ldyBlbnRyeVxuICAgICAgLy8gd2hlbiBpdCBkaWRuJ3QgZXhpc3QgYmVmb3JlLlxuICAgICAgb25IaXN0b3J5RW50cmllc0NoYW5nZUZyb21QYXJlbnQoW1xuICAgICAgICAuLi5wcm9wcy5oaXN0b3J5RW50cmllcy5maWx0ZXIoXG4gICAgICAgICAgKGNvbW1hbmQpID0+IGNvbW1hbmQuc2VhcmNoVGV4dCAhPT0gZW50cnkuc2VhcmNoVGV4dFxuICAgICAgICApLFxuICAgICAgICBlbnRyeSxcbiAgICAgIF0pO1xuXG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFNlYXJjaFRleHQnIH0pO1xuXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCgpO1xuXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQoY29tbWFuZCwgbWV0YSk7XG4gICAgfSxcbiAgICBbXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQsXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzdGF0ZS5yZXN1bHRzLFxuICAgICAgc3RhdGUuc2VhcmNoVGV4dCxcbiAgICAgIHN0YXRlLnN0YWNrLFxuICAgIF1cbiAgKTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIFByZXZlbnRpbmcgY3Vyc29yIGp1bXBzIGNhbiBvbmx5IGhhcHBlbiBpbiBvbktleURvd24sIGJ1dCBub3QgaW4gb25LZXlVcFxuICAgICAgZXZlbnQucGVyc2lzdCgpO1xuXG4gICAgICAvLyBXZSB3YW50IHRvIGtub3cgd2hlbiB0aGUgdXNlciBwcmVzc2VzIGNtZCtlbnRlciAoY21kIGJlaW5nIGEgbWV0YSBrZXkpLlxuICAgICAgLy8gV2UgYXJlIG9ubHkgdG9sZCBhYm91dCB0aGlzIGluIGtleURvd24sIGJ1dCBub3QgaW4ga2V5VXAsIHNvIHdlIG5lZWRcbiAgICAgIC8vIHRvIGhhbmRsZSBpdCBoZXJlXG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmIGhhc05ld1dpbmRvd01vZGlmaWVyKGV2ZW50KSkge1xuICAgICAgICBpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEF2b2lkIHNlbGVjdGluZyB0aGUgd2hvbGUgcGFnZSB3aGVuIHVzZXIgc2VsZWN0ZXMgZXZlcnl0aGluZyB3aXRoXG4gICAgICAvLyBhIGtleWJvYXJkIHNob3J0Y3V0LiBUaGVyZSBpcyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyB0aG91Z2guXG4gICAgICAvLyBUaGlzIHByZXZlbnRzIHRoZSB3aG9sZSBwYWdlIGZyb20gYmVpbmcgc2VsZWN0ZWQgaW4gY2FzZSB0aGUgdXNlclxuICAgICAgLy8gMSkgb3BlbnMgdGhlIHNlYXJjaCBib3hcbiAgICAgIC8vIDIpIHR5cGVzIGludG8gaXRcbiAgICAgIC8vIDMpIHNlbGVjdHMgYWxsIHRleHQgdXNpbmcgY21kK2FcbiAgICAgIC8vIDQpIGNsb3NlcyB0aGUgc2VhcmNoIGJveCB3aXRoIGVzY1xuICAgICAgLy8gV2l0aG91dCB0aGlzIGhhbmRsaW5nLCB0aGUgd2hvbGUgcGFnZSB3b3VsZCBub3cgYmUgc2VsZWN0ZWRcbiAgICAgIGlmIChpc1NlbGVjdEFsbENvbWJvKGV2ZW50KSkge1xuICAgICAgICAvLyBUaGlzIHN0b3BzIHRoZSBicm93c2VyIGZyb20gc2VsZWN0aW5nIGFueXRoaW5nXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChzZWFyY2hJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgLy8gVGhpcyBzZWxlY3RzIHRoZSB0ZXh0IGluIHRoZSBzZWFyY2ggaW5wdXRcbiAgICAgICAgICBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGF2b2lkIGludGVyZmVyaW5nIHdpdGggb3RoZXIga2V5IGNvbWJpbmF0aW9ucyB1c2luZyBtb2RpZmllciBrZXlzXG4gICAgICBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQubWV0YUtleSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGlzQ2xvc2VDb21ibyhldmVudCkpIHJldHVybjtcblxuICAgICAgLy8gc2tpcCBuZXh0IG1vdXNlRW50ZXIgdG8gYXZvaWQgc2V0dGluZyBzZWxlY3RlZFJlc3VsdCB3aGVuIGN1cnNvciBqdXN0XG4gICAgICAvLyBoYXBwZW5zIHRvIGJlIHdoZXJlIHRoZSByZXN1bHRzIHdpbGwgcG9wIHVwXG4gICAgICBza2lwTmV4dFNlbGVjdGlvbi5jdXJyZW50ID0gdHJ1ZTtcblxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgLy8gcHJldmVudCBjdXJzb3IgZnJvbSBqdW1waW5nIHRvIGVuZCBvZiB0ZXh0IGlucHV0XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogJ2luY3JlbWVudFNlbGVjdGVkUmVzdWx0JyB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgIC8vIGJyb3dzZSB0aHJvdWdoIGhpc3RvcnlcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgKHN0YXRlLnNlbGVjdGVkUmVzdWx0IDwgMSAmJiBzdGF0ZS5lbmFibGVIaXN0b3J5KVxuICAgICAgICApIHtcbiAgICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9XG4gICAgICAgICAgICBzdGF0ZS5zZWFyY2hUZXh0Lmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICA/IC8vIFdoZW4gZ29pbmcgYmFjayB0aGUgZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIDogLy8gV2hlbiBnb2luZyBiYWNrIG1vcmUgdGhhbiBvbmUgc3RlcFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgIChjb21tYW5kKSA9PiBjb21tYW5kLnNlYXJjaFRleHQgPT09IHN0YXRlLnNlYXJjaFRleHRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgIC8vIFBpY2sgdGhlIHByZXZpb3VzIGNvbW1hbmQgZnJvbSB0aGUgaGlzdG9yeVxuICAgICAgICAgIGNvbnN0IHByZXZDb21tYW5kID1cbiAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPT09IC0xXG4gICAgICAgICAgICAgID8gLy8gcHJldmlvdXMgY29tbWFuZCBvbiB0b3Agb2YgdGhlIGhpc3Rvcnkgd2hlbiBnb2luZyBiYWNrIG9uXG4gICAgICAgICAgICAgICAgLy8gZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIGxhc3QocHJvcHMuaGlzdG9yeUVudHJpZXMpXG4gICAgICAgICAgICAgIDogLy8gcHJldmlvdXMgY29tbWFuZCBpcyBkZWVwZXIgZG93blxuICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGhpc3RvcnkgZG9lcyBub3QgZXhpc3QgKG5lZ2F0aXZlIGluZGV4KSwgdGhlblxuICAgICAgICAgICAgICAgIC8vIHRoaXMgaW1wbGljaXRseSByZXR1cm5zIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzW3NlbGVjdGVkSW5kZXggLSAxXTtcbiAgICAgICAgICAvLyBTa2lwIHdoZW4gbm8gcHJldmlvdXMgZW50cnkgZXhpc3RzIGluIHRoZSBoaXN0b3J5XG4gICAgICAgICAgaWYgKCFwcmV2Q29tbWFuZCkgcmV0dXJuO1xuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyB0byBiZWdpbm5pbmcgb2YgdGV4dCBpbnB1dFxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA+IC0xKSB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSBzdGF0ZS5yZXN1bHRzW3N0YXRlLnNlbGVjdGVkUmVzdWx0XTtcbiAgICAgICAgICBjb25zdCBzZWFyY2hUZXh0ID0gc3RhdGUuc2VhcmNoVGV4dDtcbiAgICAgICAgICBjb25zdCBpc0N1cnNvckF0RW5kID1cbiAgICAgICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvblN0YXJ0O1xuXG4gICAgICAgICAgY29uc3QgaXNFdmVyeXRoaW5nU2VsZWN0ZWQgPVxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudCAmJlxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCAmJlxuICAgICAgICAgICAgc3RhdGUuc2VhcmNoVGV4dC5sZW5ndGggPT09IHNlYXJjaElucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uRW5kO1xuXG4gICAgICAgICAgLy8gb25seSBhbGxvdyBkaXZpbmcgaW4gd2hlbiBjdXJzb3IgaXMgYXQgZW5kIG9mIGlucHV0IG9yIHdoZW5cbiAgICAgICAgICAvLyB0aGUgY29tcGxldGUgdGV4dCBpcyBzZWxlY3RlZCAod2hlbiBicm93c2luZyB0aHJvdWdoIGhpc3RvcnkpXG4gICAgICAgICAgaWYgKCFpc0N1cnNvckF0RW5kICYmICFpc0V2ZXJ5dGhpbmdTZWxlY3RlZCkgcmV0dXJuO1xuXG4gICAgICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IoKTtcblxuICAgICAgICAgIC8vIE5PVEU6IHNpbmNlIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIFwibmV4dCBjb21tYW5kXCIsIHdoaWNoIGlzIGFuIGFzeW5jIG9wZXJhdGlvbixcbiAgICAgICAgICAvLyB3ZSB1c2UgYSBJSUZFIHRvIHByb2Nlc3MgdGhhdCBhbmQgZXZlbnR1YWxseSB1cGRhdGUgdGhlIHN0YXRlLlxuICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29tbWFuZCkge1xuICAgICAgICAgICAgICBjb25zdCBuZXh0Q29tbWFuZHMgPSBhd2FpdCBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50KGNvbW1hbmQpO1xuICAgICAgICAgICAgICAvLyBhdm9pZCBtb3ZpbmcgY3Vyc29yIHdoZW4gdGhlcmUgYXJlIHN1Yi1vcHRpb25zXG4gICAgICAgICAgICAgIGlmIChuZXh0Q29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgc2VhcmNoIHRleHQgaGFzIG5vdCBjaGFuZ2VkIHdoaWxlIHdlIHdlcmUgbG9hZGluZ1xuICAgICAgICAgICAgICAgIC8vIHRoZSBuZXh0IHJlc3VsdHMsIG90aGVyd2lzZSB3ZSdkIGludGVycnVwdCB0aGUgdXNlci5cbiAgICAgICAgICAgICAgICAvLyBUaHJvdyBhd2F5IHRoZSByZXN1bHRzIGluIGNhc2UgdGhlIHNlYXJjaCB0ZXh0IGhhcyBjaGFuZ2VkLlxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zZWFyY2hUZXh0ID09PSBzZWFyY2hUZXh0KSB7XG4gICAgICAgICAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZXROZXh0Q29tbWFuZHMnLFxuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiB7IHJlc3VsdHM6IG5leHRDb21tYW5kcyB9LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hha2UoKTtcbiAgICAgICAgICB9KSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgICAgIC8vIGdvIGxlZnQgaW4gc3RhY2tcbiAgICAgICAgICBjb25zdCBwcmV2Q29tbWFuZCA9IGxhc3Qoc3RhdGUuc3RhY2spO1xuXG4gICAgICAgICAgLy8gZG8gbm90aGluZyB3aGVuIHdlIGNhbid0IGdvIGxlZnQgYW55bW9yZVxuICAgICAgICAgIGlmICghcHJldkNvbW1hbmQpIHJldHVybjtcblxuICAgICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyBhIGNoYXIgdG8gdGhlIGxlZnQgaW4gdGV4dCBpbnB1dFxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlOiAnc2V0UHJldkNvbW1hbmRzJyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzaGFrZSxcbiAgICAgIHN0YXRlLFxuICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVLZXlVcCA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIHNldHRpbmcgdGhlIHNlbGVjdGlvbiBjYW4gb25seSBoYXBwZW4gaW4gb25LZXlVcFxuICAgICAgaWYgKHNob3VsZFNlbGVjdEZpZWxkVGV4dC5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInICYmICFpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGp1c3QgdHJpZ2dlcmVkIHRoZSBzZWFyY2hcbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA9PT0gLTEpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGhhZCBzb21ldGhpbmcgc2VsZWN0ZWQgYW5kIHdhbnRzIHRvIGdvIHRoZXJlXG4gICAgICBleGVjdXRlKHN0YXRlLnJlc3VsdHNbc3RhdGUuc2VsZWN0ZWRSZXN1bHRdLCB7XG4gICAgICAgIG9wZW5Jbk5ld1RhYjogaXNOZXdXaW5kb3dDb21iby5jdXJyZW50LFxuICAgICAgfSk7XG5cbiAgICAgIGlzTmV3V2luZG93Q29tYm8uY3VycmVudCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBbZXhlY3V0ZSwgc3RhdGUucmVzdWx0cywgc3RhdGUuc2VsZWN0ZWRSZXN1bHRdXG4gICk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrPENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50Pj4oXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBzZWFyY2hUZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgaWYgKHNlYXJjaFRleHQudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZGlzcGF0Y2goeyB0eXBlOiAnc2VhcmNoVGV4dCcsIHBheWxvYWQ6IHNlYXJjaFRleHQgfSk7XG5cbiAgICAgIC8vIEEgc2VhcmNoIHZpYSBuZXR3b3JrIGlzIG9ubHkgdHJpZ2dlcmVkIHdoZW4gdGhlcmVcbiAgICAgIC8vIGFyZSBtb3JlIHRoYW4gdGhyZWUgY2hhcmFjdGVycy4gU28gbm8gZmFsc2UgbG9hZGluZ1xuICAgICAgLy8gaW5kaWNhdGlvbiBpcyBnaXZlbi5cbiAgICAgIGlmIChzZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAzKSB7XG4gICAgICAgIHNldElzTG9hZGluZygpO1xuICAgICAgfVxuXG4gICAgICBzZWFyY2hGcm9tUGFyZW50KHNlYXJjaFRleHQpLnRoZW4oXG4gICAgICAgIChhc3luY1Jlc3VsdHM6IENvbW1hbmRbXSkgPT4ge1xuICAgICAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yKCk7XG4gICAgICAgICAgdW5zZXRJc0xvYWRpbmcoKTtcblxuICAgICAgICAgIGNvbnN0IGZ1c2UgPSBuZXcgRnVzZShhc3luY1Jlc3VsdHMsIHtcbiAgICAgICAgICAgIGtleXM6IFtcbiAgICAgICAgICAgICAgeyBuYW1lOiAndGV4dCcsIHdlaWdodDogMC42IH0sXG4gICAgICAgICAgICAgIHsgbmFtZTogJ2tleXdvcmRzJywgd2VpZ2h0OiAwLjQgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBtaW5NYXRjaENoYXJMZW5ndGg6IDIsXG4gICAgICAgICAgICBpbmNsdWRlU2NvcmU6IHRydWUsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBzZWFyY2hSZXN1bHRzID0gZnVzZVxuICAgICAgICAgICAgLnNlYXJjaChzZWFyY2hUZXh0KVxuICAgICAgICAgICAgLy8gRmlsdGVyIG91dCByZXN1bHRzIHdpdGggYSBtYXRjaGluZyBzY29yZSBvdmVyIDAuNzVcbiAgICAgICAgICAgIC5maWx0ZXIoKHJlc3VsdCkgPT4gKHJlc3VsdC5zY29yZSA/IHJlc3VsdC5zY29yZSA8IDAuNzUgOiBmYWxzZSkpXG4gICAgICAgICAgICAvLyBLZWVwIGEgbWF4aW1hbCBvZiA5IHJlc3VsdHNcbiAgICAgICAgICAgIC5zbGljZSgwLCA5KTtcblxuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdzZXRTZWFyY2hUZXh0UmVzdWx0cycsXG4gICAgICAgICAgICBwYXlsb2FkOiBzZWFyY2hSZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQuaXRlbSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB1bnNldElzTG9hZGluZygpO1xuICAgICAgICAgIHNldEhhc05ldHdvcmtFcnJvcigpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0sXG4gICAgW1xuICAgICAgc2VhcmNoRnJvbVBhcmVudCxcbiAgICAgIHNldEhhc05ldHdvcmtFcnJvcixcbiAgICAgIHNldElzTG9hZGluZyxcbiAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yLFxuICAgICAgdW5zZXRJc0xvYWRpbmcsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVDb250YWluZXJDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFJlc3VsdHNXaGVuQ2xvc2luZycgfSk7XG4gICAgb25DbG9zZUZyb21QYXJlbnQoKTtcbiAgfSwgW29uQ2xvc2VGcm9tUGFyZW50XSk7XG5cbiAgY29uc3QgY3JlYXRlQ29tbWFuZE1vdXNlRW50ZXJIYW5kbGVyID0gdXNlQ2FsbGJhY2s8XG4gICAgKGluZGV4OiBudW1iZXIpID0+IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PlxuICA+KFxuICAgIChpbmRleCkgPT4gKCkgPT4ge1xuICAgICAgLy8gSW4gY2FzZSB0aGUgY3Vyc29yIGhhcHBlbmVkIHRvIGJlIGluIGEgbG9jYXRpb24gd2hlcmUgYVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGFwcGVhciwgaXQgd291bGQgdHJpZ2dlciBvbk1vdXNlRW50ZXIgYW5kIHRoZVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGJlIHNlbGVjdGVkIGltbWVkaWF0ZWx5LiBUaGlzIGlzIG5vdCBzb21ldGhpbmdcbiAgICAgIC8vIGEgdXNlciB3b3VsZCBleHBlY3QsIGhlbmNlIHdlIHByZXZlbnQgaXQgZnJvbSBoYXBwZW5pbmcuXG4gICAgICAvLyBUaGUgdXNlciBoYXMgdG8gbW92ZSB0aGUgY3Vyc29yIHRvIGFuIG9wdGlvbiBleHBsaWNpdGx5IGZvclxuICAgICAgLy8gaXQgdG8gYmVjb21lIGFjdGl2ZS4gSG93ZXZlciwgdGhlIHVzZXIgY2FuIGFsd2F5cyBjbGljayBhbmRcbiAgICAgIC8vIHRoYXQgYWN0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkLlxuICAgICAgaWYgKHNraXBOZXh0U2VsZWN0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgc2tpcE5leHRTZWxlY3Rpb24uY3VycmVudCA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIHNldHMgdGhlIHNlbGVjdGVkIHJlc3VsdCwgbWFpbmx5IGZvciB0aGUgaG92ZXIgZWZmZWN0XG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCcsIHBheWxvYWQ6IGluZGV4IH0pO1xuICAgIH0sXG4gICAgW11cbiAgKTtcbiAgY29uc3QgY3JlYXRlQ29tbWFuZENsaWNrSGFuZGxlciA9IHVzZUNhbGxiYWNrPFxuICAgIChjb21tYW5kOiBDb21tYW5kKSA9PiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD5cbiAgPihcbiAgICAoY29tbWFuZCkgPT4gKGV2ZW50KSA9PiB7XG4gICAgICBleGVjdXRlKGNvbW1hbmQsIHtcbiAgICAgICAgb3BlbkluTmV3VGFiOiBoYXNOZXdXaW5kb3dNb2RpZmllcihldmVudCksXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtleGVjdXRlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEJ1dGxlckNvbnRhaW5lclxuICAgICAgb25DbGljaz17aGFuZGxlQ29udGFpbmVyQ2xpY2t9XG4gICAgICBkYXRhLXRlc3RpZD1cInF1aWNrLWFjY2Vzc1wiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3NlYXJjaENvbnRhaW5lclJlZn1cbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yU3VyZmFjZX07XG4gICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICR7Y3VzdG9tUHJvcGVydGllcy5ib3JkZXJSYWRpdXM0fTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA0MHB4O1xuXG4gICAgICAgICAgLyogb25lIG1vcmUgdGhhbiBhcHAtYmFyICgyMDAwMCkgYW5kIG9uZSBtb3JlIHRoYW4gdGhlIG92ZXJsYXkgKDIwMDAxKSAqL1xuICAgICAgICAgIHotaW5kZXg6IDIwMDAyO1xuICAgICAgICAgIHdpZHRoOiA0MDBweDtcbiAgICAgICAgICBtYXJnaW46IDQwcHggYXV0bztcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAxMHB4IDMwcHggLThweCByZ2JhKDAsIDAsIDAsIDAuNzUpO1xuICAgICAgICAgIC1tb3otYm94LXNoYWRvdzogMCAxMHB4IDMwcHggLThweCByZ2JhKDAsIDAsIDAsIDAuNzUpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IC04cHggcmdiYSgwLCAwLCAwLCAwLjc1KTtcbiAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHtzdGF0ZS5oYXNOZXR3b3JrRXJyb3JcbiAgICAgICAgICAgID8gJzAnXG4gICAgICAgICAgICA6IGN1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICBgfVxuICAgICAgICBvbkNsaWNrPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBBdm9pZCBjbG9zaW5nIHdoZW4gdGhlIHNlYXJjaENvbnRhaW5lciBpdHNlbGYgaXMgY2xpY2tlZFxuICAgICAgICAgIC8vIElmIHdlIGRvbid0IGRvIHRoaXMsIHRoZW4gdGhlIG92ZXJsYXkgd2lsbCBjbG9zZSB3aGVuIGUuZy5cbiAgICAgICAgICAvLyB0aGUgc2VhcmNoIGlucHV0IGlzIGNsaWNrZWQuXG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBgfVxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBodG1sRm9yPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nTX07XG4gICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICBgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTZWFyY2hJY29uIGNvbG9yPVwibmV1dHJhbDYwXCIgLz5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJxdWljay1hY2Nlc3Mtc2VhcmNoLWlucHV0XCJcbiAgICAgICAgICAgIHJlZj17c2VhcmNoSW5wdXRSZWZ9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17aW50bC5mb3JtYXRNZXNzYWdlKG1lc3NhZ2VzLmlucHV0UGxhY2Vob2Rlcil9XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ019ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nTX1cbiAgICAgICAgICAgICAgICAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yTmV1dHJhbDYwfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYH1cbiAgICAgICAgICAgIHZhbHVlPXtzdGF0ZS5zZWFyY2hUZXh0fVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgIG9uS2V5VXA9e2hhbmRsZUtleVVwfVxuICAgICAgICAgICAgYXV0b0ZvY3VzPXt0cnVlfVxuICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICB7c3RhdGUuaXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICBpZiAoc3RhdGUuaGFzTmV0d29ya0Vycm9yKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JFcnJvcn07XG4gICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvclN1cmZhY2V9O1xuICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAke2N1c3RvbVByb3BlcnRpZXMuZm9udFNpemVTbWFsbH07XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1hzfTtcbiAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm9mZmxpbmV9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChzdGF0ZS5yZXN1bHRzLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5zZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JOZXV0cmFsfTtcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTb2xpZH07XG4gICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAke2N1c3RvbVByb3BlcnRpZXMuZm9udFNpemVTbWFsbH07XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1hzfTtcbiAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm5vUmVzdWx0c30gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuIHN0YXRlLnJlc3VsdHMubWFwKChjb21tYW5kLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPEJ1dGxlckNvbW1hbmRcbiAgICAgICAgICAgICAga2V5PXtjb21tYW5kLmlkfVxuICAgICAgICAgICAgICBjb21tYW5kPXtjb21tYW5kfVxuICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzdGF0ZS5zZWxlY3RlZFJlc3VsdCA9PT0gaW5kZXh9XG4gICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17Y3JlYXRlQ29tbWFuZE1vdXNlRW50ZXJIYW5kbGVyKGluZGV4KX1cbiAgICAgICAgICAgICAgb25DbGljaz17Y3JlYXRlQ29tbWFuZENsaWNrSGFuZGxlcihjb21tYW5kKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSk7XG4gICAgICAgIH0pKCl9XG4gICAgICA8L2Rpdj5cbiAgICA8L0J1dGxlckNvbnRhaW5lcj5cbiAgKTtcbn07XG5CdXRsZXIuZGlzcGxheU5hbWUgPSAnQnV0bGVyJztcblxuY29uc3QgQnV0bGVyV2l0aEFuaW1hdGlvbiA9IChwcm9wczogT21pdDxQcm9wcywgJ2NsYXNzTmFtZVNoYWtlQW5pbWF0aW9uJz4pID0+IChcbiAgPENsYXNzTmFtZXM+XG4gICAgeyh7IGNzcyB9KSA9PiAoXG4gICAgICA8QnV0bGVyXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgY2xhc3NOYW1lU2hha2VBbmltYXRpb249e2Nzc2BcbiAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDAuNDVzO1xuICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gICAgICAgICAgYW5pbWF0aW9uLW5hbWU6ICR7c2hha2VBbmltYXRpb259O1xuICAgICAgICBgfVxuICAgICAgLz5cbiAgICApfVxuICA8L0NsYXNzTmFtZXM+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBCdXRsZXJXaXRoQW5pbWF0aW9uO1xuIl19 */"),
|
|
1018
|
-
children: jsxRuntime.jsx(LoadingSpinner__default["default"], {})
|
|
1019
|
-
})]
|
|
1020
|
-
}), function () {
|
|
1021
|
-
var _context13, _context14;
|
|
1022
|
-
|
|
1023
|
-
if (state.hasNetworkError) return jsxRuntime.jsx("div", {
|
|
1024
|
-
css: /*#__PURE__*/react.css("overflow:hidden;white-space:nowrap;cursor:default;background:", designSystem.customProperties.colorError, ";text-align:center;text-transform:uppercase;color:", designSystem.customProperties.colorSurface, ";font-size:", designSystem.customProperties.fontSizeSmall, ";padding:", designSystem.customProperties.spacingXs, ";" + (process.env.NODE_ENV === "production" ? "" : ";label:Butler;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd3FCd0IiLCJmaWxlIjoiYnV0bGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQ29tbWFuZCxcbiAgU2VhcmNoVGV4dCxcbiAgU2VsZWN0ZWRSZXN1bHQsXG4gIFN0YWNrLFxuICBIaXN0b3J5RW50cnksXG59IGZyb20gJy4uL3R5cGVzJztcblxuaW1wb3J0IHtcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudCxcbiAgTW91c2VFdmVudEhhbmRsZXIsXG4gIE1vdXNlRXZlbnQsXG4gIHVzZVJlZHVjZXIsXG4gIHVzZVJlZixcbiAgdXNlQ2FsbGJhY2ssXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCBGdXNlIGZyb20gJ2Z1c2UuanMnO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdXNlSW50bCB9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IGxhc3QgZnJvbSAnbG9kYXNoL2xhc3QnO1xuaW1wb3J0IHsgY3NzLCBrZXlmcmFtZXMsIENsYXNzTmFtZXMgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvbG9hZGluZy1zcGlubmVyJztcbmltcG9ydCB7IFNlYXJjaEljb24gfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9pY29ucyc7XG5pbXBvcnQgeyBjdXN0b21Qcm9wZXJ0aWVzIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgQnV0bGVyQ29tbWFuZCBmcm9tICcuLi9idXRsZXItY29tbWFuZCc7XG5pbXBvcnQgQnV0bGVyQ29udGFpbmVyIGZyb20gJy4uL2J1dGxlci1jb250YWluZXInO1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4uL21lc3NhZ2VzJztcblxuY29uc3QgaXNTZWxlY3RBbGxDb21ibyA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT5cbiAgZXZlbnQua2V5ID09PSAnYScgJiZcbiAgZXZlbnQubWV0YUtleSAmJlxuICAhZXZlbnQuY3RybEtleSAmJlxuICAhZXZlbnQuYWx0S2V5ICYmXG4gICFldmVudC5zaGlmdEtleTtcblxuY29uc3QgaXNDbG9zZUNvbWJvID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PlxuICBldmVudC5rZXkgPT09ICdFc2NhcGUnICYmXG4gICFldmVudC5tZXRhS2V5ICYmXG4gICFldmVudC5jdHJsS2V5ICYmXG4gICFldmVudC5hbHRLZXkgJiZcbiAgIWV2ZW50LnNoaWZ0S2V5O1xuXG5jb25zdCBnZXRQbGF0Zm9ybSA9ICgpID0+IHtcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdXaW4nKSkgcmV0dXJuICd3aW5kb3dzJztcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdNYWMnKSkgcmV0dXJuICdtYWNvcyc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnWDExJykpIHJldHVybiAndW5peCc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnTGludXgnKSkgcmV0dXJuICdsaW51eCc7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBoYXNOZXdXaW5kb3dNb2RpZmllciA9IChcbiAgZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTEVsZW1lbnQ+IHwgTW91c2VFdmVudDxIVE1MRWxlbWVudD5cbikgPT4ge1xuICBjb25zdCBwbGF0Zm9ybSA9IGdldFBsYXRmb3JtKCk7XG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdtYWNvcyc6XG4gICAgICByZXR1cm4gZXZlbnQubWV0YUtleTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGV2ZW50LmN0cmxLZXk7XG4gIH1cbn07XG5cbmNvbnN0IHNoYWtlQW5pbWF0aW9uID0ga2V5ZnJhbWVzYFxuICBmcm9tLFxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIDE0JSxcbiAgNDIlLFxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTNweCwgMCwgMCk7XG4gIH1cblxuICAyOCUsXG4gIDU2JSxcbiAgODQlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDNweCwgMCwgMCk7XG4gIH1cbmA7XG5cbnR5cGUgU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogYm9vbGVhbjtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0O1xuICBzZWxlY3RlZFJlc3VsdDogU2VsZWN0ZWRSZXN1bHQ7XG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IGJvb2xlYW47XG4gIHJlc3VsdHM6IENvbW1hbmRbXTtcbiAgc3RhY2s6IFN0YWNrW107XG59O1xudHlwZSBBY3Rpb24gPVxuICB8IHsgdHlwZTogJ25ldHdvcmtFcnJvcic7IHBheWxvYWQ6IGJvb2xlYW4gfVxuICB8IHsgdHlwZTogJ2xvYWRpbmcnOyBwYXlsb2FkOiBib29sZWFuIH1cbiAgfCB7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCc7IHBheWxvYWQ6IG51bWJlciB9XG4gIHwgeyB0eXBlOiAnaW5jcmVtZW50U2VsZWN0ZWRSZXN1bHQnIH1cbiAgfCB7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfVxuICB8IHtcbiAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JztcbiAgICAgIHBheWxvYWQ6IHsgc2VhcmNoVGV4dDogU2VhcmNoVGV4dDsgcmVzdWx0czogQ29tbWFuZFtdIH07XG4gICAgfVxuICB8IHsgdHlwZTogJ3NldE5leHRDb21tYW5kcyc7IHBheWxvYWQ6IHsgcmVzdWx0czogQ29tbWFuZFtdIH0gfVxuICB8IHtcbiAgICAgIHR5cGU6ICdzZXRQcmV2Q29tbWFuZHMnO1xuICAgICAgcGF5bG9hZDogeyBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0OyByZXN1bHRzOiBDb21tYW5kW10gfTtcbiAgICB9XG4gIHwgeyB0eXBlOiAnc2VhcmNoVGV4dCc7IHBheWxvYWQ6IHN0cmluZyB9XG4gIHwgeyB0eXBlOiAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOyBwYXlsb2FkOiBDb21tYW5kW10gfVxuICB8IHsgdHlwZTogJ3Jlc2V0U2VhcmNoVGV4dCcgfVxuICB8IHsgdHlwZTogJ3Jlc2V0UmVzdWx0c1doZW5DbG9zaW5nJyB9XG4gIHwgeyB0eXBlOiAncmVzZXQnIH07XG5jb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogZmFsc2UsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIHNlYXJjaFRleHQ6ICcnLFxuICBzZWxlY3RlZFJlc3VsdDogLTEsXG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IHRydWUsXG4gIHJlc3VsdHM6IFtdLFxuICBzdGFjazogW10sXG59O1xuY29uc3QgcmVkdWNlciA9IChzdGF0ZTogU3RhdGUgPSBpbml0aWFsU3RhdGUsIGFjdGlvbjogQWN0aW9uKTogU3RhdGUgPT4ge1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSAnbmV0d29ya0Vycm9yJzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBoYXNOZXR3b3JrRXJyb3I6IGFjdGlvbi5wYXlsb2FkIH07XG4gICAgY2FzZSAnbG9hZGluZyc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaXNMb2FkaW5nOiBhY3Rpb24ucGF5bG9hZCB9O1xuICAgIGNhc2UgJ3NlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQgfTtcbiAgICBjYXNlICdpbmNyZW1lbnRTZWxlY3RlZFJlc3VsdCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6XG4gICAgICAgICAgc3RhdGUuc2VsZWN0ZWRSZXN1bHQgPT09IHN0YXRlLnJlc3VsdHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0ICsgMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ2RlY3JlbWVudFNlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDpcbiAgICAgICAgICBzdGF0ZS5zZWxlY3RlZFJlc3VsdCA8IDFcbiAgICAgICAgICAgID8gc3RhdGUucmVzdWx0cy5sZW5ndGggLSAxXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0IC0gMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ3BpY2tDb21tYW5kRnJvbUhpc3RvcnknOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNlbGVjdGVkUmVzdWx0OiAwLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZC5zZWFyY2hUZXh0LFxuICAgICAgICByZXN1bHRzOiBhY3Rpb24ucGF5bG9hZC5yZXN1bHRzLFxuICAgICAgICBzdGFjazogW10sXG4gICAgICAgIC8vIFRoZSBoaXN0b3J5IGRvZXMgbm90IGdldCBjaGFuZ2VkIGhlcmUsIGl0IHdpbGwgYmUgY2hhbmdlZCBhbG9uZ1xuICAgICAgICAvLyB3aXRoIHRoZSByZWd1bGFyIGZsb3cuXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldE5leHRDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc3RhY2s6IFtcbiAgICAgICAgICAuLi5zdGF0ZS5zdGFjayxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWFyY2hUZXh0OiBzdGF0ZS5zZWFyY2hUZXh0LFxuICAgICAgICAgICAgcmVzdWx0czogc3RhdGUucmVzdWx0cyxcbiAgICAgICAgICAgIHNlbGVjdGVkUmVzdWx0OiBzdGF0ZS5zZWxlY3RlZFJlc3VsdCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogMCxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLnJlc3VsdHMsXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldFByZXZDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VhcmNoVGV4dDogYWN0aW9uLnBheWxvYWQuc2VhcmNoVGV4dCxcbiAgICAgICAgcmVzdWx0czogYWN0aW9uLnBheWxvYWQucmVzdWx0cyxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6IDAsXG4gICAgICAgIGVuYWJsZUhpc3Rvcnk6IGZhbHNlLFxuICAgICAgICAvLyBvbWl0IGxhc3QgaXRlbVxuICAgICAgICBzdGFjazogc3RhdGUuc3RhY2suc2xpY2UoMCwgLTEpLFxuICAgICAgfTtcbiAgICBjYXNlICdzZWFyY2hUZXh0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgLy8gY2xlYXIgbmV0d29yayBlcnJvciB3aGVuIHNlYXJjaCB0ZXh0IGlzIGNsZWFyZWQsIHNvIHRoYXQgdXNlcnNcbiAgICAgICAgLy8gYXJlIHRlbXB0ZWQgdG8gcmV0cnlcbiAgICAgICAgaGFzTmV0d29ya0Vycm9yOiBhY3Rpb24ucGF5bG9hZC5sZW5ndGggPiAwICYmIHN0YXRlLmhhc05ldHdvcmtFcnJvcixcbiAgICAgIH07XG4gICAgY2FzZSAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQubGVuZ3RoID4gMCA/IDAgOiAtMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogdHJ1ZSxcbiAgICAgICAgc3RhY2s6IFtdLFxuICAgICAgfTtcbiAgICBjYXNlICdyZXNldFNlYXJjaFRleHQnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlYXJjaFRleHQ6ICcnLCByZXN1bHRzOiBbXSwgc2VsZWN0ZWRSZXN1bHQ6IC0xIH07XG4gICAgY2FzZSAncmVzZXRSZXN1bHRzV2hlbkNsb3NpbmcnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlbGVjdGVkUmVzdWx0OiAtMSwgZW5hYmxlSGlzdG9yeTogdHJ1ZSB9O1xuICAgIGNhc2UgJ3Jlc2V0JzpcbiAgICAgIHJldHVybiBpbml0aWFsU3RhdGU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxudHlwZSBQcm9wcyA9IHtcbiAgaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdO1xuICBvbkhpc3RvcnlFbnRyaWVzQ2hhbmdlOiAoaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdKSA9PiB2b2lkO1xuICBzZWFyY2g6IChzZWFyY2hUZXh0OiBTZWFyY2hUZXh0KSA9PiBQcm9taXNlPENvbW1hbmRbXT47XG4gIGdldE5leHRDb21tYW5kczogKGNvbW1hbmQ6IENvbW1hbmQpID0+IFByb21pc2U8Q29tbWFuZFtdPjtcbiAgZXhlY3V0ZUNvbW1hbmQ6IChjb21tYW5kOiBDb21tYW5kLCBtZXRhOiB7IG9wZW5Jbk5ld1RhYjogYm9vbGVhbiB9KSA9PiB2b2lkO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xuICBjbGFzc05hbWVTaGFrZUFuaW1hdGlvbjogc3RyaW5nO1xufTtcbmNvbnN0IEJ1dGxlciA9IChwcm9wczogUHJvcHMpID0+IHtcbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSB1c2VSZWR1Y2VyPFxuICAgIChwcmV2U3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvbikgPT4gU3RhdGVcbiAgPihyZWR1Y2VyLCBpbml0aWFsU3RhdGUpO1xuXG4gIGNvbnN0IHNob3VsZFNlbGVjdEZpZWxkVGV4dCA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IGlzTmV3V2luZG93Q29tYm8gPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBza2lwTmV4dFNlbGVjdGlvbiA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHNlYXJjaENvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IHNlYXJjaElucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IHNldEhhc05ldHdvcmtFcnJvciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICduZXR3b3JrRXJyb3InLCBwYXlsb2FkOiB0cnVlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHVuc2V0SGFzTmV0d29ya0Vycm9yID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogJ25ldHdvcmtFcnJvcicsIHBheWxvYWQ6IGZhbHNlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogdHJ1ZSB9KTtcbiAgfSwgW10pO1xuICBjb25zdCB1bnNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogZmFsc2UgfSk7XG4gIH0sIFtdKTtcblxuICAvLyBEZXN0cnVjdHVyZSBmdW5jdGlvbnMgZnJvbSBwcm9wcyB0byByZWZlcmVuY2UgdGhlbSBpbiB0aGUgaG9vayBkZXBlbmRlbmN5IGxpc3RcbiAgY29uc3Qge1xuICAgIHNlYXJjaDogc2VhcmNoRnJvbVBhcmVudCxcbiAgICBvbkNsb3NlOiBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICBleGVjdXRlQ29tbWFuZDogZXhlY3V0ZUNvbW1hbmRGcm9tUGFyZW50LFxuICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2U6IG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgIGdldE5leHRDb21tYW5kczogZ2V0TmV4dENvbW1hbmRzRnJvbVBhcmVudCxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHNoYWtlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzZWFyY2hDb250YWluZXJSZWYuY3VycmVudCkge1xuICAgICAgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgcHJvcHMuY2xhc3NOYW1lU2hha2VBbmltYXRpb25cbiAgICAgICk7XG4gICAgICAvLyAtPiB0cmlnZ2VyaW5nIHJlZmxvd1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZvaWRcbiAgICAgIHZvaWQgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQub2Zmc2V0V2lkdGg7XG4gICAgICBzZWFyY2hDb250YWluZXJSZWYuY3VycmVudC5jbGFzc0xpc3QuYWRkKHByb3BzLmNsYXNzTmFtZVNoYWtlQW5pbWF0aW9uKTtcbiAgICB9XG4gIH0sIFtwcm9wcy5jbGFzc05hbWVTaGFrZUFuaW1hdGlvbl0pO1xuXG4gIGNvbnN0IGV4ZWN1dGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY29tbWFuZCwgbWV0YSkgPT4ge1xuICAgICAgLy8gT25seSBtYWluIGVudHJpZXMgZ2V0IGFkZGVkIHRvIGhpc3RvcnksIHNvIHdoZW4gYSBzdWJjb21tYW5kIGlzIGV4ZWN1dGVkLFxuICAgICAgLy8gd2UgYWRkIHRoZSBtYWluIGNvbW1hbmQgb2YgaXQgdG8gdGhlIGhpc3RvcnkgKHRoZSB0b3AtbGV2ZWwgY29tbWFuZCkuXG4gICAgICAvL1xuICAgICAgLy8gVGhlIGtleSB0byBpZGVudGlmeSBoaXN0b3J5IGVudHJpZXMgYnkgaXMgYWx3YXlzIHRoZSBzZWFyY2hUZXh0XG4gICAgICAvLyBUaGVyZSB3aWxsIG5ldmVyIGJlIHR3byBoaXN0b3J5IGVudHJpZXMgd2l0aCB0aGUgc2FtZSBzZWFyY2hUZXh0XG4gICAgICBjb25zdCBlbnRyeSA9XG4gICAgICAgIHN0YXRlLnN0YWNrLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gLy8gVGhlIHN0YWNrIGlzIGVtcHR5LCBzbyB3ZSBhcmUgZXhlY3V0aW5nIGEgdG9wLWxldmVsIGNvbW1hbmRcbiAgICAgICAgICAgIHsgc2VhcmNoVGV4dDogc3RhdGUuc2VhcmNoVGV4dCwgcmVzdWx0czogc3RhdGUucmVzdWx0cyB9XG4gICAgICAgICAgOiAvLyBXZSBhcmUgZXhlY3V0aW5nIGEgc3ViY29tbWFuZCwgc28gd2UgZ2V0IHRoZSB0b3AtbGV2ZWwgY29tbWFuZCBmb3IgaXQsXG4gICAgICAgICAgICAvLyB3aGljaCBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSBzdGFjay5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogc3RhdGUuc3RhY2tbMF0uc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogc3RhdGUuc3RhY2tbMF0ucmVzdWx0cyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgIC8vIEFkZCB0aGUgZW50cnkgdG8gdGhlIGhpc3RvcnksIHdoaWxlIGV4Y2x1ZGluZyBhbnkgZWFybGllciBoaXN0b3J5IGVudHJ5XG4gICAgICAvLyB3aXRoIHRoZSBzYW1lIHNlYXJjaCB0ZXh0LiBUaGlzIGVmZmVjdGl2ZWx5IFwibW92ZXNcIiB0aGF0IGVudHJ5IHRvIHRoZVxuICAgICAgLy8gdG9wIG9mIHRoZSBoaXN0b3J5ICh3aXRoIHRoZSBtb3N0IHJlY2VudCByZXN1bHRzKSwgb3IgYXBwZW5kcyBhIG5ldyBlbnRyeVxuICAgICAgLy8gd2hlbiBpdCBkaWRuJ3QgZXhpc3QgYmVmb3JlLlxuICAgICAgb25IaXN0b3J5RW50cmllc0NoYW5nZUZyb21QYXJlbnQoW1xuICAgICAgICAuLi5wcm9wcy5oaXN0b3J5RW50cmllcy5maWx0ZXIoXG4gICAgICAgICAgKGNvbW1hbmQpID0+IGNvbW1hbmQuc2VhcmNoVGV4dCAhPT0gZW50cnkuc2VhcmNoVGV4dFxuICAgICAgICApLFxuICAgICAgICBlbnRyeSxcbiAgICAgIF0pO1xuXG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFNlYXJjaFRleHQnIH0pO1xuXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCgpO1xuXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQoY29tbWFuZCwgbWV0YSk7XG4gICAgfSxcbiAgICBbXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQsXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzdGF0ZS5yZXN1bHRzLFxuICAgICAgc3RhdGUuc2VhcmNoVGV4dCxcbiAgICAgIHN0YXRlLnN0YWNrLFxuICAgIF1cbiAgKTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIFByZXZlbnRpbmcgY3Vyc29yIGp1bXBzIGNhbiBvbmx5IGhhcHBlbiBpbiBvbktleURvd24sIGJ1dCBub3QgaW4gb25LZXlVcFxuICAgICAgZXZlbnQucGVyc2lzdCgpO1xuXG4gICAgICAvLyBXZSB3YW50IHRvIGtub3cgd2hlbiB0aGUgdXNlciBwcmVzc2VzIGNtZCtlbnRlciAoY21kIGJlaW5nIGEgbWV0YSBrZXkpLlxuICAgICAgLy8gV2UgYXJlIG9ubHkgdG9sZCBhYm91dCB0aGlzIGluIGtleURvd24sIGJ1dCBub3QgaW4ga2V5VXAsIHNvIHdlIG5lZWRcbiAgICAgIC8vIHRvIGhhbmRsZSBpdCBoZXJlXG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmIGhhc05ld1dpbmRvd01vZGlmaWVyKGV2ZW50KSkge1xuICAgICAgICBpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEF2b2lkIHNlbGVjdGluZyB0aGUgd2hvbGUgcGFnZSB3aGVuIHVzZXIgc2VsZWN0ZXMgZXZlcnl0aGluZyB3aXRoXG4gICAgICAvLyBhIGtleWJvYXJkIHNob3J0Y3V0LiBUaGVyZSBpcyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyB0aG91Z2guXG4gICAgICAvLyBUaGlzIHByZXZlbnRzIHRoZSB3aG9sZSBwYWdlIGZyb20gYmVpbmcgc2VsZWN0ZWQgaW4gY2FzZSB0aGUgdXNlclxuICAgICAgLy8gMSkgb3BlbnMgdGhlIHNlYXJjaCBib3hcbiAgICAgIC8vIDIpIHR5cGVzIGludG8gaXRcbiAgICAgIC8vIDMpIHNlbGVjdHMgYWxsIHRleHQgdXNpbmcgY21kK2FcbiAgICAgIC8vIDQpIGNsb3NlcyB0aGUgc2VhcmNoIGJveCB3aXRoIGVzY1xuICAgICAgLy8gV2l0aG91dCB0aGlzIGhhbmRsaW5nLCB0aGUgd2hvbGUgcGFnZSB3b3VsZCBub3cgYmUgc2VsZWN0ZWRcbiAgICAgIGlmIChpc1NlbGVjdEFsbENvbWJvKGV2ZW50KSkge1xuICAgICAgICAvLyBUaGlzIHN0b3BzIHRoZSBicm93c2VyIGZyb20gc2VsZWN0aW5nIGFueXRoaW5nXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChzZWFyY2hJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgLy8gVGhpcyBzZWxlY3RzIHRoZSB0ZXh0IGluIHRoZSBzZWFyY2ggaW5wdXRcbiAgICAgICAgICBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGF2b2lkIGludGVyZmVyaW5nIHdpdGggb3RoZXIga2V5IGNvbWJpbmF0aW9ucyB1c2luZyBtb2RpZmllciBrZXlzXG4gICAgICBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQubWV0YUtleSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGlzQ2xvc2VDb21ibyhldmVudCkpIHJldHVybjtcblxuICAgICAgLy8gc2tpcCBuZXh0IG1vdXNlRW50ZXIgdG8gYXZvaWQgc2V0dGluZyBzZWxlY3RlZFJlc3VsdCB3aGVuIGN1cnNvciBqdXN0XG4gICAgICAvLyBoYXBwZW5zIHRvIGJlIHdoZXJlIHRoZSByZXN1bHRzIHdpbGwgcG9wIHVwXG4gICAgICBza2lwTmV4dFNlbGVjdGlvbi5jdXJyZW50ID0gdHJ1ZTtcblxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgLy8gcHJldmVudCBjdXJzb3IgZnJvbSBqdW1waW5nIHRvIGVuZCBvZiB0ZXh0IGlucHV0XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogJ2luY3JlbWVudFNlbGVjdGVkUmVzdWx0JyB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgIC8vIGJyb3dzZSB0aHJvdWdoIGhpc3RvcnlcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgKHN0YXRlLnNlbGVjdGVkUmVzdWx0IDwgMSAmJiBzdGF0ZS5lbmFibGVIaXN0b3J5KVxuICAgICAgICApIHtcbiAgICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9XG4gICAgICAgICAgICBzdGF0ZS5zZWFyY2hUZXh0Lmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICA/IC8vIFdoZW4gZ29pbmcgYmFjayB0aGUgZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIDogLy8gV2hlbiBnb2luZyBiYWNrIG1vcmUgdGhhbiBvbmUgc3RlcFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgIChjb21tYW5kKSA9PiBjb21tYW5kLnNlYXJjaFRleHQgPT09IHN0YXRlLnNlYXJjaFRleHRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgIC8vIFBpY2sgdGhlIHByZXZpb3VzIGNvbW1hbmQgZnJvbSB0aGUgaGlzdG9yeVxuICAgICAgICAgIGNvbnN0IHByZXZDb21tYW5kID1cbiAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPT09IC0xXG4gICAgICAgICAgICAgID8gLy8gcHJldmlvdXMgY29tbWFuZCBvbiB0b3Agb2YgdGhlIGhpc3Rvcnkgd2hlbiBnb2luZyBiYWNrIG9uXG4gICAgICAgICAgICAgICAgLy8gZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIGxhc3QocHJvcHMuaGlzdG9yeUVudHJpZXMpXG4gICAgICAgICAgICAgIDogLy8gcHJldmlvdXMgY29tbWFuZCBpcyBkZWVwZXIgZG93blxuICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGhpc3RvcnkgZG9lcyBub3QgZXhpc3QgKG5lZ2F0aXZlIGluZGV4KSwgdGhlblxuICAgICAgICAgICAgICAgIC8vIHRoaXMgaW1wbGljaXRseSByZXR1cm5zIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzW3NlbGVjdGVkSW5kZXggLSAxXTtcbiAgICAgICAgICAvLyBTa2lwIHdoZW4gbm8gcHJldmlvdXMgZW50cnkgZXhpc3RzIGluIHRoZSBoaXN0b3J5XG4gICAgICAgICAgaWYgKCFwcmV2Q29tbWFuZCkgcmV0dXJuO1xuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyB0byBiZWdpbm5pbmcgb2YgdGV4dCBpbnB1dFxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA+IC0xKSB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSBzdGF0ZS5yZXN1bHRzW3N0YXRlLnNlbGVjdGVkUmVzdWx0XTtcbiAgICAgICAgICBjb25zdCBzZWFyY2hUZXh0ID0gc3RhdGUuc2VhcmNoVGV4dDtcbiAgICAgICAgICBjb25zdCBpc0N1cnNvckF0RW5kID1cbiAgICAgICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvblN0YXJ0O1xuXG4gICAgICAgICAgY29uc3QgaXNFdmVyeXRoaW5nU2VsZWN0ZWQgPVxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudCAmJlxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCAmJlxuICAgICAgICAgICAgc3RhdGUuc2VhcmNoVGV4dC5sZW5ndGggPT09IHNlYXJjaElucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uRW5kO1xuXG4gICAgICAgICAgLy8gb25seSBhbGxvdyBkaXZpbmcgaW4gd2hlbiBjdXJzb3IgaXMgYXQgZW5kIG9mIGlucHV0IG9yIHdoZW5cbiAgICAgICAgICAvLyB0aGUgY29tcGxldGUgdGV4dCBpcyBzZWxlY3RlZCAod2hlbiBicm93c2luZyB0aHJvdWdoIGhpc3RvcnkpXG4gICAgICAgICAgaWYgKCFpc0N1cnNvckF0RW5kICYmICFpc0V2ZXJ5dGhpbmdTZWxlY3RlZCkgcmV0dXJuO1xuXG4gICAgICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IoKTtcblxuICAgICAgICAgIC8vIE5PVEU6IHNpbmNlIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIFwibmV4dCBjb21tYW5kXCIsIHdoaWNoIGlzIGFuIGFzeW5jIG9wZXJhdGlvbixcbiAgICAgICAgICAvLyB3ZSB1c2UgYSBJSUZFIHRvIHByb2Nlc3MgdGhhdCBhbmQgZXZlbnR1YWxseSB1cGRhdGUgdGhlIHN0YXRlLlxuICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29tbWFuZCkge1xuICAgICAgICAgICAgICBjb25zdCBuZXh0Q29tbWFuZHMgPSBhd2FpdCBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50KGNvbW1hbmQpO1xuICAgICAgICAgICAgICAvLyBhdm9pZCBtb3ZpbmcgY3Vyc29yIHdoZW4gdGhlcmUgYXJlIHN1Yi1vcHRpb25zXG4gICAgICAgICAgICAgIGlmIChuZXh0Q29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgc2VhcmNoIHRleHQgaGFzIG5vdCBjaGFuZ2VkIHdoaWxlIHdlIHdlcmUgbG9hZGluZ1xuICAgICAgICAgICAgICAgIC8vIHRoZSBuZXh0IHJlc3VsdHMsIG90aGVyd2lzZSB3ZSdkIGludGVycnVwdCB0aGUgdXNlci5cbiAgICAgICAgICAgICAgICAvLyBUaHJvdyBhd2F5IHRoZSByZXN1bHRzIGluIGNhc2UgdGhlIHNlYXJjaCB0ZXh0IGhhcyBjaGFuZ2VkLlxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zZWFyY2hUZXh0ID09PSBzZWFyY2hUZXh0KSB7XG4gICAgICAgICAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZXROZXh0Q29tbWFuZHMnLFxuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiB7IHJlc3VsdHM6IG5leHRDb21tYW5kcyB9LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hha2UoKTtcbiAgICAgICAgICB9KSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgICAgIC8vIGdvIGxlZnQgaW4gc3RhY2tcbiAgICAgICAgICBjb25zdCBwcmV2Q29tbWFuZCA9IGxhc3Qoc3RhdGUuc3RhY2spO1xuXG4gICAgICAgICAgLy8gZG8gbm90aGluZyB3aGVuIHdlIGNhbid0IGdvIGxlZnQgYW55bW9yZVxuICAgICAgICAgIGlmICghcHJldkNvbW1hbmQpIHJldHVybjtcblxuICAgICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyBhIGNoYXIgdG8gdGhlIGxlZnQgaW4gdGV4dCBpbnB1dFxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlOiAnc2V0UHJldkNvbW1hbmRzJyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzaGFrZSxcbiAgICAgIHN0YXRlLFxuICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVLZXlVcCA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIHNldHRpbmcgdGhlIHNlbGVjdGlvbiBjYW4gb25seSBoYXBwZW4gaW4gb25LZXlVcFxuICAgICAgaWYgKHNob3VsZFNlbGVjdEZpZWxkVGV4dC5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInICYmICFpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGp1c3QgdHJpZ2dlcmVkIHRoZSBzZWFyY2hcbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA9PT0gLTEpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGhhZCBzb21ldGhpbmcgc2VsZWN0ZWQgYW5kIHdhbnRzIHRvIGdvIHRoZXJlXG4gICAgICBleGVjdXRlKHN0YXRlLnJlc3VsdHNbc3RhdGUuc2VsZWN0ZWRSZXN1bHRdLCB7XG4gICAgICAgIG9wZW5Jbk5ld1RhYjogaXNOZXdXaW5kb3dDb21iby5jdXJyZW50LFxuICAgICAgfSk7XG5cbiAgICAgIGlzTmV3V2luZG93Q29tYm8uY3VycmVudCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBbZXhlY3V0ZSwgc3RhdGUucmVzdWx0cywgc3RhdGUuc2VsZWN0ZWRSZXN1bHRdXG4gICk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrPENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50Pj4oXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBzZWFyY2hUZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgaWYgKHNlYXJjaFRleHQudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZGlzcGF0Y2goeyB0eXBlOiAnc2VhcmNoVGV4dCcsIHBheWxvYWQ6IHNlYXJjaFRleHQgfSk7XG5cbiAgICAgIC8vIEEgc2VhcmNoIHZpYSBuZXR3b3JrIGlzIG9ubHkgdHJpZ2dlcmVkIHdoZW4gdGhlcmVcbiAgICAgIC8vIGFyZSBtb3JlIHRoYW4gdGhyZWUgY2hhcmFjdGVycy4gU28gbm8gZmFsc2UgbG9hZGluZ1xuICAgICAgLy8gaW5kaWNhdGlvbiBpcyBnaXZlbi5cbiAgICAgIGlmIChzZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAzKSB7XG4gICAgICAgIHNldElzTG9hZGluZygpO1xuICAgICAgfVxuXG4gICAgICBzZWFyY2hGcm9tUGFyZW50KHNlYXJjaFRleHQpLnRoZW4oXG4gICAgICAgIChhc3luY1Jlc3VsdHM6IENvbW1hbmRbXSkgPT4ge1xuICAgICAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yKCk7XG4gICAgICAgICAgdW5zZXRJc0xvYWRpbmcoKTtcblxuICAgICAgICAgIGNvbnN0IGZ1c2UgPSBuZXcgRnVzZShhc3luY1Jlc3VsdHMsIHtcbiAgICAgICAgICAgIGtleXM6IFtcbiAgICAgICAgICAgICAgeyBuYW1lOiAndGV4dCcsIHdlaWdodDogMC42IH0sXG4gICAgICAgICAgICAgIHsgbmFtZTogJ2tleXdvcmRzJywgd2VpZ2h0OiAwLjQgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBtaW5NYXRjaENoYXJMZW5ndGg6IDIsXG4gICAgICAgICAgICBpbmNsdWRlU2NvcmU6IHRydWUsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBzZWFyY2hSZXN1bHRzID0gZnVzZVxuICAgICAgICAgICAgLnNlYXJjaChzZWFyY2hUZXh0KVxuICAgICAgICAgICAgLy8gRmlsdGVyIG91dCByZXN1bHRzIHdpdGggYSBtYXRjaGluZyBzY29yZSBvdmVyIDAuNzVcbiAgICAgICAgICAgIC5maWx0ZXIoKHJlc3VsdCkgPT4gKHJlc3VsdC5zY29yZSA/IHJlc3VsdC5zY29yZSA8IDAuNzUgOiBmYWxzZSkpXG4gICAgICAgICAgICAvLyBLZWVwIGEgbWF4aW1hbCBvZiA5IHJlc3VsdHNcbiAgICAgICAgICAgIC5zbGljZSgwLCA5KTtcblxuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdzZXRTZWFyY2hUZXh0UmVzdWx0cycsXG4gICAgICAgICAgICBwYXlsb2FkOiBzZWFyY2hSZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQuaXRlbSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB1bnNldElzTG9hZGluZygpO1xuICAgICAgICAgIHNldEhhc05ldHdvcmtFcnJvcigpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0sXG4gICAgW1xuICAgICAgc2VhcmNoRnJvbVBhcmVudCxcbiAgICAgIHNldEhhc05ldHdvcmtFcnJvcixcbiAgICAgIHNldElzTG9hZGluZyxcbiAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yLFxuICAgICAgdW5zZXRJc0xvYWRpbmcsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVDb250YWluZXJDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFJlc3VsdHNXaGVuQ2xvc2luZycgfSk7XG4gICAgb25DbG9zZUZyb21QYXJlbnQoKTtcbiAgfSwgW29uQ2xvc2VGcm9tUGFyZW50XSk7XG5cbiAgY29uc3QgY3JlYXRlQ29tbWFuZE1vdXNlRW50ZXJIYW5kbGVyID0gdXNlQ2FsbGJhY2s8XG4gICAgKGluZGV4OiBudW1iZXIpID0+IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PlxuICA+KFxuICAgIChpbmRleCkgPT4gKCkgPT4ge1xuICAgICAgLy8gSW4gY2FzZSB0aGUgY3Vyc29yIGhhcHBlbmVkIHRvIGJlIGluIGEgbG9jYXRpb24gd2hlcmUgYVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGFwcGVhciwgaXQgd291bGQgdHJpZ2dlciBvbk1vdXNlRW50ZXIgYW5kIHRoZVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGJlIHNlbGVjdGVkIGltbWVkaWF0ZWx5LiBUaGlzIGlzIG5vdCBzb21ldGhpbmdcbiAgICAgIC8vIGEgdXNlciB3b3VsZCBleHBlY3QsIGhlbmNlIHdlIHByZXZlbnQgaXQgZnJvbSBoYXBwZW5pbmcuXG4gICAgICAvLyBUaGUgdXNlciBoYXMgdG8gbW92ZSB0aGUgY3Vyc29yIHRvIGFuIG9wdGlvbiBleHBsaWNpdGx5IGZvclxuICAgICAgLy8gaXQgdG8gYmVjb21lIGFjdGl2ZS4gSG93ZXZlciwgdGhlIHVzZXIgY2FuIGFsd2F5cyBjbGljayBhbmRcbiAgICAgIC8vIHRoYXQgYWN0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkLlxuICAgICAgaWYgKHNraXBOZXh0U2VsZWN0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgc2tpcE5leHRTZWxlY3Rpb24uY3VycmVudCA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIHNldHMgdGhlIHNlbGVjdGVkIHJlc3VsdCwgbWFpbmx5IGZvciB0aGUgaG92ZXIgZWZmZWN0XG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCcsIHBheWxvYWQ6IGluZGV4IH0pO1xuICAgIH0sXG4gICAgW11cbiAgKTtcbiAgY29uc3QgY3JlYXRlQ29tbWFuZENsaWNrSGFuZGxlciA9IHVzZUNhbGxiYWNrPFxuICAgIChjb21tYW5kOiBDb21tYW5kKSA9PiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD5cbiAgPihcbiAgICAoY29tbWFuZCkgPT4gKGV2ZW50KSA9PiB7XG4gICAgICBleGVjdXRlKGNvbW1hbmQsIHtcbiAgICAgICAgb3BlbkluTmV3VGFiOiBoYXNOZXdXaW5kb3dNb2RpZmllcihldmVudCksXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtleGVjdXRlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEJ1dGxlckNvbnRhaW5lclxuICAgICAgb25DbGljaz17aGFuZGxlQ29udGFpbmVyQ2xpY2t9XG4gICAgICBkYXRhLXRlc3RpZD1cInF1aWNrLWFjY2Vzc1wiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3NlYXJjaENvbnRhaW5lclJlZn1cbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yU3VyZmFjZX07XG4gICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICR7Y3VzdG9tUHJvcGVydGllcy5ib3JkZXJSYWRpdXM0fTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA0MHB4O1xuXG4gICAgICAgICAgLyogb25lIG1vcmUgdGhhbiBhcHAtYmFyICgyMDAwMCkgYW5kIG9uZSBtb3JlIHRoYW4gdGhlIG92ZXJsYXkgKDIwMDAxKSAqL1xuICAgICAgICAgIHotaW5kZXg6IDIwMDAyO1xuICAgICAgICAgIHdpZHRoOiA0MDBweDtcbiAgICAgICAgICBtYXJnaW46IDQwcHggYXV0bztcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAxMHB4IDMwcHggLThweCByZ2JhKDAsIDAsIDAsIDAuNzUpO1xuICAgICAgICAgIC1tb3otYm94LXNoYWRvdzogMCAxMHB4IDMwcHggLThweCByZ2JhKDAsIDAsIDAsIDAuNzUpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IC04cHggcmdiYSgwLCAwLCAwLCAwLjc1KTtcbiAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHtzdGF0ZS5oYXNOZXR3b3JrRXJyb3JcbiAgICAgICAgICAgID8gJzAnXG4gICAgICAgICAgICA6IGN1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICBgfVxuICAgICAgICBvbkNsaWNrPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBBdm9pZCBjbG9zaW5nIHdoZW4gdGhlIHNlYXJjaENvbnRhaW5lciBpdHNlbGYgaXMgY2xpY2tlZFxuICAgICAgICAgIC8vIElmIHdlIGRvbid0IGRvIHRoaXMsIHRoZW4gdGhlIG92ZXJsYXkgd2lsbCBjbG9zZSB3aGVuIGUuZy5cbiAgICAgICAgICAvLyB0aGUgc2VhcmNoIGlucHV0IGlzIGNsaWNrZWQuXG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBgfVxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBodG1sRm9yPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nTX07XG4gICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICBgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTZWFyY2hJY29uIGNvbG9yPVwibmV1dHJhbDYwXCIgLz5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJxdWljay1hY2Nlc3Mtc2VhcmNoLWlucHV0XCJcbiAgICAgICAgICAgIHJlZj17c2VhcmNoSW5wdXRSZWZ9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17aW50bC5mb3JtYXRNZXNzYWdlKG1lc3NhZ2VzLmlucHV0UGxhY2Vob2Rlcil9XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ019ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nTX1cbiAgICAgICAgICAgICAgICAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yTmV1dHJhbDYwfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYH1cbiAgICAgICAgICAgIHZhbHVlPXtzdGF0ZS5zZWFyY2hUZXh0fVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgIG9uS2V5VXA9e2hhbmRsZUtleVVwfVxuICAgICAgICAgICAgYXV0b0ZvY3VzPXt0cnVlfVxuICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICB7c3RhdGUuaXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICBpZiAoc3RhdGUuaGFzTmV0d29ya0Vycm9yKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JFcnJvcn07XG4gICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvclN1cmZhY2V9O1xuICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAke2N1c3RvbVByb3BlcnRpZXMuZm9udFNpemVTbWFsbH07XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1hzfTtcbiAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm9mZmxpbmV9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChzdGF0ZS5yZXN1bHRzLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5zZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JOZXV0cmFsfTtcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTb2xpZH07XG4gICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAke2N1c3RvbVByb3BlcnRpZXMuZm9udFNpemVTbWFsbH07XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1hzfTtcbiAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm5vUmVzdWx0c30gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuIHN0YXRlLnJlc3VsdHMubWFwKChjb21tYW5kLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPEJ1dGxlckNvbW1hbmRcbiAgICAgICAgICAgICAga2V5PXtjb21tYW5kLmlkfVxuICAgICAgICAgICAgICBjb21tYW5kPXtjb21tYW5kfVxuICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzdGF0ZS5zZWxlY3RlZFJlc3VsdCA9PT0gaW5kZXh9XG4gICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17Y3JlYXRlQ29tbWFuZE1vdXNlRW50ZXJIYW5kbGVyKGluZGV4KX1cbiAgICAgICAgICAgICAgb25DbGljaz17Y3JlYXRlQ29tbWFuZENsaWNrSGFuZGxlcihjb21tYW5kKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSk7XG4gICAgICAgIH0pKCl9XG4gICAgICA8L2Rpdj5cbiAgICA8L0J1dGxlckNvbnRhaW5lcj5cbiAgKTtcbn07XG5CdXRsZXIuZGlzcGxheU5hbWUgPSAnQnV0bGVyJztcblxuY29uc3QgQnV0bGVyV2l0aEFuaW1hdGlvbiA9IChwcm9wczogT21pdDxQcm9wcywgJ2NsYXNzTmFtZVNoYWtlQW5pbWF0aW9uJz4pID0+IChcbiAgPENsYXNzTmFtZXM+XG4gICAgeyh7IGNzcyB9KSA9PiAoXG4gICAgICA8QnV0bGVyXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgY2xhc3NOYW1lU2hha2VBbmltYXRpb249e2Nzc2BcbiAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDAuNDVzO1xuICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gICAgICAgICAgYW5pbWF0aW9uLW5hbWU6ICR7c2hha2VBbmltYXRpb259O1xuICAgICAgICBgfVxuICAgICAgLz5cbiAgICApfVxuICA8L0NsYXNzTmFtZXM+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBCdXRsZXJXaXRoQW5pbWF0aW9uO1xuIl19 */"),
|
|
1025
|
-
children: jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread({}, messages.offline))
|
|
1026
|
-
});
|
|
1027
|
-
if (state.results.length === 0 && _trimInstanceProperty__default["default"](_context13 = state.searchText).call(_context13).length > 0) return jsxRuntime.jsx("div", {
|
|
1028
|
-
css: /*#__PURE__*/react.css("overflow:hidden;white-space:nowrap;cursor:default;background:", designSystem.customProperties.colorNeutral, ";color:", designSystem.customProperties.colorSolid, ";text-align:center;text-transform:uppercase;font-size:", designSystem.customProperties.fontSizeSmall, ";padding:", designSystem.customProperties.spacingXs, ";" + (process.env.NODE_ENV === "production" ? "" : ";label:Butler;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMnJCd0IiLCJmaWxlIjoiYnV0bGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQ29tbWFuZCxcbiAgU2VhcmNoVGV4dCxcbiAgU2VsZWN0ZWRSZXN1bHQsXG4gIFN0YWNrLFxuICBIaXN0b3J5RW50cnksXG59IGZyb20gJy4uL3R5cGVzJztcblxuaW1wb3J0IHtcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgS2V5Ym9hcmRFdmVudCxcbiAgTW91c2VFdmVudEhhbmRsZXIsXG4gIE1vdXNlRXZlbnQsXG4gIHVzZVJlZHVjZXIsXG4gIHVzZVJlZixcbiAgdXNlQ2FsbGJhY2ssXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCBGdXNlIGZyb20gJ2Z1c2UuanMnO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdXNlSW50bCB9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IGxhc3QgZnJvbSAnbG9kYXNoL2xhc3QnO1xuaW1wb3J0IHsgY3NzLCBrZXlmcmFtZXMsIENsYXNzTmFtZXMgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvbG9hZGluZy1zcGlubmVyJztcbmltcG9ydCB7IFNlYXJjaEljb24gfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9pY29ucyc7XG5pbXBvcnQgeyBjdXN0b21Qcm9wZXJ0aWVzIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgQnV0bGVyQ29tbWFuZCBmcm9tICcuLi9idXRsZXItY29tbWFuZCc7XG5pbXBvcnQgQnV0bGVyQ29udGFpbmVyIGZyb20gJy4uL2J1dGxlci1jb250YWluZXInO1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4uL21lc3NhZ2VzJztcblxuY29uc3QgaXNTZWxlY3RBbGxDb21ibyA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT5cbiAgZXZlbnQua2V5ID09PSAnYScgJiZcbiAgZXZlbnQubWV0YUtleSAmJlxuICAhZXZlbnQuY3RybEtleSAmJlxuICAhZXZlbnQuYWx0S2V5ICYmXG4gICFldmVudC5zaGlmdEtleTtcblxuY29uc3QgaXNDbG9zZUNvbWJvID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PlxuICBldmVudC5rZXkgPT09ICdFc2NhcGUnICYmXG4gICFldmVudC5tZXRhS2V5ICYmXG4gICFldmVudC5jdHJsS2V5ICYmXG4gICFldmVudC5hbHRLZXkgJiZcbiAgIWV2ZW50LnNoaWZ0S2V5O1xuXG5jb25zdCBnZXRQbGF0Zm9ybSA9ICgpID0+IHtcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdXaW4nKSkgcmV0dXJuICd3aW5kb3dzJztcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdNYWMnKSkgcmV0dXJuICdtYWNvcyc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnWDExJykpIHJldHVybiAndW5peCc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnTGludXgnKSkgcmV0dXJuICdsaW51eCc7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBoYXNOZXdXaW5kb3dNb2RpZmllciA9IChcbiAgZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTEVsZW1lbnQ+IHwgTW91c2VFdmVudDxIVE1MRWxlbWVudD5cbikgPT4ge1xuICBjb25zdCBwbGF0Zm9ybSA9IGdldFBsYXRmb3JtKCk7XG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdtYWNvcyc6XG4gICAgICByZXR1cm4gZXZlbnQubWV0YUtleTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGV2ZW50LmN0cmxLZXk7XG4gIH1cbn07XG5cbmNvbnN0IHNoYWtlQW5pbWF0aW9uID0ga2V5ZnJhbWVzYFxuICBmcm9tLFxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIDE0JSxcbiAgNDIlLFxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTNweCwgMCwgMCk7XG4gIH1cblxuICAyOCUsXG4gIDU2JSxcbiAgODQlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDNweCwgMCwgMCk7XG4gIH1cbmA7XG5cbnR5cGUgU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogYm9vbGVhbjtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0O1xuICBzZWxlY3RlZFJlc3VsdDogU2VsZWN0ZWRSZXN1bHQ7XG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IGJvb2xlYW47XG4gIHJlc3VsdHM6IENvbW1hbmRbXTtcbiAgc3RhY2s6IFN0YWNrW107XG59O1xudHlwZSBBY3Rpb24gPVxuICB8IHsgdHlwZTogJ25ldHdvcmtFcnJvcic7IHBheWxvYWQ6IGJvb2xlYW4gfVxuICB8IHsgdHlwZTogJ2xvYWRpbmcnOyBwYXlsb2FkOiBib29sZWFuIH1cbiAgfCB7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCc7IHBheWxvYWQ6IG51bWJlciB9XG4gIHwgeyB0eXBlOiAnaW5jcmVtZW50U2VsZWN0ZWRSZXN1bHQnIH1cbiAgfCB7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfVxuICB8IHtcbiAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JztcbiAgICAgIHBheWxvYWQ6IHsgc2VhcmNoVGV4dDogU2VhcmNoVGV4dDsgcmVzdWx0czogQ29tbWFuZFtdIH07XG4gICAgfVxuICB8IHsgdHlwZTogJ3NldE5leHRDb21tYW5kcyc7IHBheWxvYWQ6IHsgcmVzdWx0czogQ29tbWFuZFtdIH0gfVxuICB8IHtcbiAgICAgIHR5cGU6ICdzZXRQcmV2Q29tbWFuZHMnO1xuICAgICAgcGF5bG9hZDogeyBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0OyByZXN1bHRzOiBDb21tYW5kW10gfTtcbiAgICB9XG4gIHwgeyB0eXBlOiAnc2VhcmNoVGV4dCc7IHBheWxvYWQ6IHN0cmluZyB9XG4gIHwgeyB0eXBlOiAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOyBwYXlsb2FkOiBDb21tYW5kW10gfVxuICB8IHsgdHlwZTogJ3Jlc2V0U2VhcmNoVGV4dCcgfVxuICB8IHsgdHlwZTogJ3Jlc2V0UmVzdWx0c1doZW5DbG9zaW5nJyB9XG4gIHwgeyB0eXBlOiAncmVzZXQnIH07XG5jb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogZmFsc2UsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIHNlYXJjaFRleHQ6ICcnLFxuICBzZWxlY3RlZFJlc3VsdDogLTEsXG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IHRydWUsXG4gIHJlc3VsdHM6IFtdLFxuICBzdGFjazogW10sXG59O1xuY29uc3QgcmVkdWNlciA9IChzdGF0ZTogU3RhdGUgPSBpbml0aWFsU3RhdGUsIGFjdGlvbjogQWN0aW9uKTogU3RhdGUgPT4ge1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSAnbmV0d29ya0Vycm9yJzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBoYXNOZXR3b3JrRXJyb3I6IGFjdGlvbi5wYXlsb2FkIH07XG4gICAgY2FzZSAnbG9hZGluZyc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaXNMb2FkaW5nOiBhY3Rpb24ucGF5bG9hZCB9O1xuICAgIGNhc2UgJ3NlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQgfTtcbiAgICBjYXNlICdpbmNyZW1lbnRTZWxlY3RlZFJlc3VsdCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6XG4gICAgICAgICAgc3RhdGUuc2VsZWN0ZWRSZXN1bHQgPT09IHN0YXRlLnJlc3VsdHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0ICsgMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ2RlY3JlbWVudFNlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDpcbiAgICAgICAgICBzdGF0ZS5zZWxlY3RlZFJlc3VsdCA8IDFcbiAgICAgICAgICAgID8gc3RhdGUucmVzdWx0cy5sZW5ndGggLSAxXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0IC0gMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ3BpY2tDb21tYW5kRnJvbUhpc3RvcnknOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNlbGVjdGVkUmVzdWx0OiAwLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZC5zZWFyY2hUZXh0LFxuICAgICAgICByZXN1bHRzOiBhY3Rpb24ucGF5bG9hZC5yZXN1bHRzLFxuICAgICAgICBzdGFjazogW10sXG4gICAgICAgIC8vIFRoZSBoaXN0b3J5IGRvZXMgbm90IGdldCBjaGFuZ2VkIGhlcmUsIGl0IHdpbGwgYmUgY2hhbmdlZCBhbG9uZ1xuICAgICAgICAvLyB3aXRoIHRoZSByZWd1bGFyIGZsb3cuXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldE5leHRDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc3RhY2s6IFtcbiAgICAgICAgICAuLi5zdGF0ZS5zdGFjayxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWFyY2hUZXh0OiBzdGF0ZS5zZWFyY2hUZXh0LFxuICAgICAgICAgICAgcmVzdWx0czogc3RhdGUucmVzdWx0cyxcbiAgICAgICAgICAgIHNlbGVjdGVkUmVzdWx0OiBzdGF0ZS5zZWxlY3RlZFJlc3VsdCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogMCxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLnJlc3VsdHMsXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldFByZXZDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VhcmNoVGV4dDogYWN0aW9uLnBheWxvYWQuc2VhcmNoVGV4dCxcbiAgICAgICAgcmVzdWx0czogYWN0aW9uLnBheWxvYWQucmVzdWx0cyxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6IDAsXG4gICAgICAgIGVuYWJsZUhpc3Rvcnk6IGZhbHNlLFxuICAgICAgICAvLyBvbWl0IGxhc3QgaXRlbVxuICAgICAgICBzdGFjazogc3RhdGUuc3RhY2suc2xpY2UoMCwgLTEpLFxuICAgICAgfTtcbiAgICBjYXNlICdzZWFyY2hUZXh0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgLy8gY2xlYXIgbmV0d29yayBlcnJvciB3aGVuIHNlYXJjaCB0ZXh0IGlzIGNsZWFyZWQsIHNvIHRoYXQgdXNlcnNcbiAgICAgICAgLy8gYXJlIHRlbXB0ZWQgdG8gcmV0cnlcbiAgICAgICAgaGFzTmV0d29ya0Vycm9yOiBhY3Rpb24ucGF5bG9hZC5sZW5ndGggPiAwICYmIHN0YXRlLmhhc05ldHdvcmtFcnJvcixcbiAgICAgIH07XG4gICAgY2FzZSAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQubGVuZ3RoID4gMCA/IDAgOiAtMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogdHJ1ZSxcbiAgICAgICAgc3RhY2s6IFtdLFxuICAgICAgfTtcbiAgICBjYXNlICdyZXNldFNlYXJjaFRleHQnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlYXJjaFRleHQ6ICcnLCByZXN1bHRzOiBbXSwgc2VsZWN0ZWRSZXN1bHQ6IC0xIH07XG4gICAgY2FzZSAncmVzZXRSZXN1bHRzV2hlbkNsb3NpbmcnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlbGVjdGVkUmVzdWx0OiAtMSwgZW5hYmxlSGlzdG9yeTogdHJ1ZSB9O1xuICAgIGNhc2UgJ3Jlc2V0JzpcbiAgICAgIHJldHVybiBpbml0aWFsU3RhdGU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxudHlwZSBQcm9wcyA9IHtcbiAgaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdO1xuICBvbkhpc3RvcnlFbnRyaWVzQ2hhbmdlOiAoaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdKSA9PiB2b2lkO1xuICBzZWFyY2g6IChzZWFyY2hUZXh0OiBTZWFyY2hUZXh0KSA9PiBQcm9taXNlPENvbW1hbmRbXT47XG4gIGdldE5leHRDb21tYW5kczogKGNvbW1hbmQ6IENvbW1hbmQpID0+IFByb21pc2U8Q29tbWFuZFtdPjtcbiAgZXhlY3V0ZUNvbW1hbmQ6IChjb21tYW5kOiBDb21tYW5kLCBtZXRhOiB7IG9wZW5Jbk5ld1RhYjogYm9vbGVhbiB9KSA9PiB2b2lkO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xuICBjbGFzc05hbWVTaGFrZUFuaW1hdGlvbjogc3RyaW5nO1xufTtcbmNvbnN0IEJ1dGxlciA9IChwcm9wczogUHJvcHMpID0+IHtcbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSB1c2VSZWR1Y2VyPFxuICAgIChwcmV2U3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvbikgPT4gU3RhdGVcbiAgPihyZWR1Y2VyLCBpbml0aWFsU3RhdGUpO1xuXG4gIGNvbnN0IHNob3VsZFNlbGVjdEZpZWxkVGV4dCA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IGlzTmV3V2luZG93Q29tYm8gPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBza2lwTmV4dFNlbGVjdGlvbiA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHNlYXJjaENvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IHNlYXJjaElucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IHNldEhhc05ldHdvcmtFcnJvciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICduZXR3b3JrRXJyb3InLCBwYXlsb2FkOiB0cnVlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHVuc2V0SGFzTmV0d29ya0Vycm9yID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogJ25ldHdvcmtFcnJvcicsIHBheWxvYWQ6IGZhbHNlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogdHJ1ZSB9KTtcbiAgfSwgW10pO1xuICBjb25zdCB1bnNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogZmFsc2UgfSk7XG4gIH0sIFtdKTtcblxuICAvLyBEZXN0cnVjdHVyZSBmdW5jdGlvbnMgZnJvbSBwcm9wcyB0byByZWZlcmVuY2UgdGhlbSBpbiB0aGUgaG9vayBkZXBlbmRlbmN5IGxpc3RcbiAgY29uc3Qge1xuICAgIHNlYXJjaDogc2VhcmNoRnJvbVBhcmVudCxcbiAgICBvbkNsb3NlOiBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICBleGVjdXRlQ29tbWFuZDogZXhlY3V0ZUNvbW1hbmRGcm9tUGFyZW50LFxuICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2U6IG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgIGdldE5leHRDb21tYW5kczogZ2V0TmV4dENvbW1hbmRzRnJvbVBhcmVudCxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHNoYWtlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzZWFyY2hDb250YWluZXJSZWYuY3VycmVudCkge1xuICAgICAgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgcHJvcHMuY2xhc3NOYW1lU2hha2VBbmltYXRpb25cbiAgICAgICk7XG4gICAgICAvLyAtPiB0cmlnZ2VyaW5nIHJlZmxvd1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZvaWRcbiAgICAgIHZvaWQgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQub2Zmc2V0V2lkdGg7XG4gICAgICBzZWFyY2hDb250YWluZXJSZWYuY3VycmVudC5jbGFzc0xpc3QuYWRkKHByb3BzLmNsYXNzTmFtZVNoYWtlQW5pbWF0aW9uKTtcbiAgICB9XG4gIH0sIFtwcm9wcy5jbGFzc05hbWVTaGFrZUFuaW1hdGlvbl0pO1xuXG4gIGNvbnN0IGV4ZWN1dGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY29tbWFuZCwgbWV0YSkgPT4ge1xuICAgICAgLy8gT25seSBtYWluIGVudHJpZXMgZ2V0IGFkZGVkIHRvIGhpc3RvcnksIHNvIHdoZW4gYSBzdWJjb21tYW5kIGlzIGV4ZWN1dGVkLFxuICAgICAgLy8gd2UgYWRkIHRoZSBtYWluIGNvbW1hbmQgb2YgaXQgdG8gdGhlIGhpc3RvcnkgKHRoZSB0b3AtbGV2ZWwgY29tbWFuZCkuXG4gICAgICAvL1xuICAgICAgLy8gVGhlIGtleSB0byBpZGVudGlmeSBoaXN0b3J5IGVudHJpZXMgYnkgaXMgYWx3YXlzIHRoZSBzZWFyY2hUZXh0XG4gICAgICAvLyBUaGVyZSB3aWxsIG5ldmVyIGJlIHR3byBoaXN0b3J5IGVudHJpZXMgd2l0aCB0aGUgc2FtZSBzZWFyY2hUZXh0XG4gICAgICBjb25zdCBlbnRyeSA9XG4gICAgICAgIHN0YXRlLnN0YWNrLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gLy8gVGhlIHN0YWNrIGlzIGVtcHR5LCBzbyB3ZSBhcmUgZXhlY3V0aW5nIGEgdG9wLWxldmVsIGNvbW1hbmRcbiAgICAgICAgICAgIHsgc2VhcmNoVGV4dDogc3RhdGUuc2VhcmNoVGV4dCwgcmVzdWx0czogc3RhdGUucmVzdWx0cyB9XG4gICAgICAgICAgOiAvLyBXZSBhcmUgZXhlY3V0aW5nIGEgc3ViY29tbWFuZCwgc28gd2UgZ2V0IHRoZSB0b3AtbGV2ZWwgY29tbWFuZCBmb3IgaXQsXG4gICAgICAgICAgICAvLyB3aGljaCBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSBzdGFjay5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogc3RhdGUuc3RhY2tbMF0uc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogc3RhdGUuc3RhY2tbMF0ucmVzdWx0cyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgIC8vIEFkZCB0aGUgZW50cnkgdG8gdGhlIGhpc3RvcnksIHdoaWxlIGV4Y2x1ZGluZyBhbnkgZWFybGllciBoaXN0b3J5IGVudHJ5XG4gICAgICAvLyB3aXRoIHRoZSBzYW1lIHNlYXJjaCB0ZXh0LiBUaGlzIGVmZmVjdGl2ZWx5IFwibW92ZXNcIiB0aGF0IGVudHJ5IHRvIHRoZVxuICAgICAgLy8gdG9wIG9mIHRoZSBoaXN0b3J5ICh3aXRoIHRoZSBtb3N0IHJlY2VudCByZXN1bHRzKSwgb3IgYXBwZW5kcyBhIG5ldyBlbnRyeVxuICAgICAgLy8gd2hlbiBpdCBkaWRuJ3QgZXhpc3QgYmVmb3JlLlxuICAgICAgb25IaXN0b3J5RW50cmllc0NoYW5nZUZyb21QYXJlbnQoW1xuICAgICAgICAuLi5wcm9wcy5oaXN0b3J5RW50cmllcy5maWx0ZXIoXG4gICAgICAgICAgKGNvbW1hbmQpID0+IGNvbW1hbmQuc2VhcmNoVGV4dCAhPT0gZW50cnkuc2VhcmNoVGV4dFxuICAgICAgICApLFxuICAgICAgICBlbnRyeSxcbiAgICAgIF0pO1xuXG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFNlYXJjaFRleHQnIH0pO1xuXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCgpO1xuXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQoY29tbWFuZCwgbWV0YSk7XG4gICAgfSxcbiAgICBbXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQsXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzdGF0ZS5yZXN1bHRzLFxuICAgICAgc3RhdGUuc2VhcmNoVGV4dCxcbiAgICAgIHN0YXRlLnN0YWNrLFxuICAgIF1cbiAgKTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIFByZXZlbnRpbmcgY3Vyc29yIGp1bXBzIGNhbiBvbmx5IGhhcHBlbiBpbiBvbktleURvd24sIGJ1dCBub3QgaW4gb25LZXlVcFxuICAgICAgZXZlbnQucGVyc2lzdCgpO1xuXG4gICAgICAvLyBXZSB3YW50IHRvIGtub3cgd2hlbiB0aGUgdXNlciBwcmVzc2VzIGNtZCtlbnRlciAoY21kIGJlaW5nIGEgbWV0YSBrZXkpLlxuICAgICAgLy8gV2UgYXJlIG9ubHkgdG9sZCBhYm91dCB0aGlzIGluIGtleURvd24sIGJ1dCBub3QgaW4ga2V5VXAsIHNvIHdlIG5lZWRcbiAgICAgIC8vIHRvIGhhbmRsZSBpdCBoZXJlXG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmIGhhc05ld1dpbmRvd01vZGlmaWVyKGV2ZW50KSkge1xuICAgICAgICBpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEF2b2lkIHNlbGVjdGluZyB0aGUgd2hvbGUgcGFnZSB3aGVuIHVzZXIgc2VsZWN0ZXMgZXZlcnl0aGluZyB3aXRoXG4gICAgICAvLyBhIGtleWJvYXJkIHNob3J0Y3V0LiBUaGVyZSBpcyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyB0aG91Z2guXG4gICAgICAvLyBUaGlzIHByZXZlbnRzIHRoZSB3aG9sZSBwYWdlIGZyb20gYmVpbmcgc2VsZWN0ZWQgaW4gY2FzZSB0aGUgdXNlclxuICAgICAgLy8gMSkgb3BlbnMgdGhlIHNlYXJjaCBib3hcbiAgICAgIC8vIDIpIHR5cGVzIGludG8gaXRcbiAgICAgIC8vIDMpIHNlbGVjdHMgYWxsIHRleHQgdXNpbmcgY21kK2FcbiAgICAgIC8vIDQpIGNsb3NlcyB0aGUgc2VhcmNoIGJveCB3aXRoIGVzY1xuICAgICAgLy8gV2l0aG91dCB0aGlzIGhhbmRsaW5nLCB0aGUgd2hvbGUgcGFnZSB3b3VsZCBub3cgYmUgc2VsZWN0ZWRcbiAgICAgIGlmIChpc1NlbGVjdEFsbENvbWJvKGV2ZW50KSkge1xuICAgICAgICAvLyBUaGlzIHN0b3BzIHRoZSBicm93c2VyIGZyb20gc2VsZWN0aW5nIGFueXRoaW5nXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChzZWFyY2hJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgLy8gVGhpcyBzZWxlY3RzIHRoZSB0ZXh0IGluIHRoZSBzZWFyY2ggaW5wdXRcbiAgICAgICAgICBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGF2b2lkIGludGVyZmVyaW5nIHdpdGggb3RoZXIga2V5IGNvbWJpbmF0aW9ucyB1c2luZyBtb2RpZmllciBrZXlzXG4gICAgICBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQubWV0YUtleSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGlzQ2xvc2VDb21ibyhldmVudCkpIHJldHVybjtcblxuICAgICAgLy8gc2tpcCBuZXh0IG1vdXNlRW50ZXIgdG8gYXZvaWQgc2V0dGluZyBzZWxlY3RlZFJlc3VsdCB3aGVuIGN1cnNvciBqdXN0XG4gICAgICAvLyBoYXBwZW5zIHRvIGJlIHdoZXJlIHRoZSByZXN1bHRzIHdpbGwgcG9wIHVwXG4gICAgICBza2lwTmV4dFNlbGVjdGlvbi5jdXJyZW50ID0gdHJ1ZTtcblxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgLy8gcHJldmVudCBjdXJzb3IgZnJvbSBqdW1waW5nIHRvIGVuZCBvZiB0ZXh0IGlucHV0XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogJ2luY3JlbWVudFNlbGVjdGVkUmVzdWx0JyB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgIC8vIGJyb3dzZSB0aHJvdWdoIGhpc3RvcnlcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgKHN0YXRlLnNlbGVjdGVkUmVzdWx0IDwgMSAmJiBzdGF0ZS5lbmFibGVIaXN0b3J5KVxuICAgICAgICApIHtcbiAgICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9XG4gICAgICAgICAgICBzdGF0ZS5zZWFyY2hUZXh0Lmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICA/IC8vIFdoZW4gZ29pbmcgYmFjayB0aGUgZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIDogLy8gV2hlbiBnb2luZyBiYWNrIG1vcmUgdGhhbiBvbmUgc3RlcFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgIChjb21tYW5kKSA9PiBjb21tYW5kLnNlYXJjaFRleHQgPT09IHN0YXRlLnNlYXJjaFRleHRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgIC8vIFBpY2sgdGhlIHByZXZpb3VzIGNvbW1hbmQgZnJvbSB0aGUgaGlzdG9yeVxuICAgICAgICAgIGNvbnN0IHByZXZDb21tYW5kID1cbiAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPT09IC0xXG4gICAgICAgICAgICAgID8gLy8gcHJldmlvdXMgY29tbWFuZCBvbiB0b3Agb2YgdGhlIGhpc3Rvcnkgd2hlbiBnb2luZyBiYWNrIG9uXG4gICAgICAgICAgICAgICAgLy8gZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIGxhc3QocHJvcHMuaGlzdG9yeUVudHJpZXMpXG4gICAgICAgICAgICAgIDogLy8gcHJldmlvdXMgY29tbWFuZCBpcyBkZWVwZXIgZG93blxuICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGhpc3RvcnkgZG9lcyBub3QgZXhpc3QgKG5lZ2F0aXZlIGluZGV4KSwgdGhlblxuICAgICAgICAgICAgICAgIC8vIHRoaXMgaW1wbGljaXRseSByZXR1cm5zIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzW3NlbGVjdGVkSW5kZXggLSAxXTtcbiAgICAgICAgICAvLyBTa2lwIHdoZW4gbm8gcHJldmlvdXMgZW50cnkgZXhpc3RzIGluIHRoZSBoaXN0b3J5XG4gICAgICAgICAgaWYgKCFwcmV2Q29tbWFuZCkgcmV0dXJuO1xuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyB0byBiZWdpbm5pbmcgb2YgdGV4dCBpbnB1dFxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA+IC0xKSB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSBzdGF0ZS5yZXN1bHRzW3N0YXRlLnNlbGVjdGVkUmVzdWx0XTtcbiAgICAgICAgICBjb25zdCBzZWFyY2hUZXh0ID0gc3RhdGUuc2VhcmNoVGV4dDtcbiAgICAgICAgICBjb25zdCBpc0N1cnNvckF0RW5kID1cbiAgICAgICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvblN0YXJ0O1xuXG4gICAgICAgICAgY29uc3QgaXNFdmVyeXRoaW5nU2VsZWN0ZWQgPVxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudCAmJlxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCAmJlxuICAgICAgICAgICAgc3RhdGUuc2VhcmNoVGV4dC5sZW5ndGggPT09IHNlYXJjaElucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uRW5kO1xuXG4gICAgICAgICAgLy8gb25seSBhbGxvdyBkaXZpbmcgaW4gd2hlbiBjdXJzb3IgaXMgYXQgZW5kIG9mIGlucHV0IG9yIHdoZW5cbiAgICAgICAgICAvLyB0aGUgY29tcGxldGUgdGV4dCBpcyBzZWxlY3RlZCAod2hlbiBicm93c2luZyB0aHJvdWdoIGhpc3RvcnkpXG4gICAgICAgICAgaWYgKCFpc0N1cnNvckF0RW5kICYmICFpc0V2ZXJ5dGhpbmdTZWxlY3RlZCkgcmV0dXJuO1xuXG4gICAgICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IoKTtcblxuICAgICAgICAgIC8vIE5PVEU6IHNpbmNlIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIFwibmV4dCBjb21tYW5kXCIsIHdoaWNoIGlzIGFuIGFzeW5jIG9wZXJhdGlvbixcbiAgICAgICAgICAvLyB3ZSB1c2UgYSBJSUZFIHRvIHByb2Nlc3MgdGhhdCBhbmQgZXZlbnR1YWxseSB1cGRhdGUgdGhlIHN0YXRlLlxuICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29tbWFuZCkge1xuICAgICAgICAgICAgICBjb25zdCBuZXh0Q29tbWFuZHMgPSBhd2FpdCBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50KGNvbW1hbmQpO1xuICAgICAgICAgICAgICAvLyBhdm9pZCBtb3ZpbmcgY3Vyc29yIHdoZW4gdGhlcmUgYXJlIHN1Yi1vcHRpb25zXG4gICAgICAgICAgICAgIGlmIChuZXh0Q29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgc2VhcmNoIHRleHQgaGFzIG5vdCBjaGFuZ2VkIHdoaWxlIHdlIHdlcmUgbG9hZGluZ1xuICAgICAgICAgICAgICAgIC8vIHRoZSBuZXh0IHJlc3VsdHMsIG90aGVyd2lzZSB3ZSdkIGludGVycnVwdCB0aGUgdXNlci5cbiAgICAgICAgICAgICAgICAvLyBUaHJvdyBhd2F5IHRoZSByZXN1bHRzIGluIGNhc2UgdGhlIHNlYXJjaCB0ZXh0IGhhcyBjaGFuZ2VkLlxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zZWFyY2hUZXh0ID09PSBzZWFyY2hUZXh0KSB7XG4gICAgICAgICAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZXROZXh0Q29tbWFuZHMnLFxuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiB7IHJlc3VsdHM6IG5leHRDb21tYW5kcyB9LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hha2UoKTtcbiAgICAgICAgICB9KSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgICAgIC8vIGdvIGxlZnQgaW4gc3RhY2tcbiAgICAgICAgICBjb25zdCBwcmV2Q29tbWFuZCA9IGxhc3Qoc3RhdGUuc3RhY2spO1xuXG4gICAgICAgICAgLy8gZG8gbm90aGluZyB3aGVuIHdlIGNhbid0IGdvIGxlZnQgYW55bW9yZVxuICAgICAgICAgIGlmICghcHJldkNvbW1hbmQpIHJldHVybjtcblxuICAgICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyBhIGNoYXIgdG8gdGhlIGxlZnQgaW4gdGV4dCBpbnB1dFxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlOiAnc2V0UHJldkNvbW1hbmRzJyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzaGFrZSxcbiAgICAgIHN0YXRlLFxuICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVLZXlVcCA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIHNldHRpbmcgdGhlIHNlbGVjdGlvbiBjYW4gb25seSBoYXBwZW4gaW4gb25LZXlVcFxuICAgICAgaWYgKHNob3VsZFNlbGVjdEZpZWxkVGV4dC5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInICYmICFpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGp1c3QgdHJpZ2dlcmVkIHRoZSBzZWFyY2hcbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA9PT0gLTEpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGhhZCBzb21ldGhpbmcgc2VsZWN0ZWQgYW5kIHdhbnRzIHRvIGdvIHRoZXJlXG4gICAgICBleGVjdXRlKHN0YXRlLnJlc3VsdHNbc3RhdGUuc2VsZWN0ZWRSZXN1bHRdLCB7XG4gICAgICAgIG9wZW5Jbk5ld1RhYjogaXNOZXdXaW5kb3dDb21iby5jdXJyZW50LFxuICAgICAgfSk7XG5cbiAgICAgIGlzTmV3V2luZG93Q29tYm8uY3VycmVudCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBbZXhlY3V0ZSwgc3RhdGUucmVzdWx0cywgc3RhdGUuc2VsZWN0ZWRSZXN1bHRdXG4gICk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrPENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50Pj4oXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBzZWFyY2hUZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgaWYgKHNlYXJjaFRleHQudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZGlzcGF0Y2goeyB0eXBlOiAnc2VhcmNoVGV4dCcsIHBheWxvYWQ6IHNlYXJjaFRleHQgfSk7XG5cbiAgICAgIC8vIEEgc2VhcmNoIHZpYSBuZXR3b3JrIGlzIG9ubHkgdHJpZ2dlcmVkIHdoZW4gdGhlcmVcbiAgICAgIC8vIGFyZSBtb3JlIHRoYW4gdGhyZWUgY2hhcmFjdGVycy4gU28gbm8gZmFsc2UgbG9hZGluZ1xuICAgICAgLy8gaW5kaWNhdGlvbiBpcyBnaXZlbi5cbiAgICAgIGlmIChzZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAzKSB7XG4gICAgICAgIHNldElzTG9hZGluZygpO1xuICAgICAgfVxuXG4gICAgICBzZWFyY2hGcm9tUGFyZW50KHNlYXJjaFRleHQpLnRoZW4oXG4gICAgICAgIChhc3luY1Jlc3VsdHM6IENvbW1hbmRbXSkgPT4ge1xuICAgICAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yKCk7XG4gICAgICAgICAgdW5zZXRJc0xvYWRpbmcoKTtcblxuICAgICAgICAgIGNvbnN0IGZ1c2UgPSBuZXcgRnVzZShhc3luY1Jlc3VsdHMsIHtcbiAgICAgICAgICAgIGtleXM6IFtcbiAgICAgICAgICAgICAgeyBuYW1lOiAndGV4dCcsIHdlaWdodDogMC42IH0sXG4gICAgICAgICAgICAgIHsgbmFtZTogJ2tleXdvcmRzJywgd2VpZ2h0OiAwLjQgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBtaW5NYXRjaENoYXJMZW5ndGg6IDIsXG4gICAgICAgICAgICBpbmNsdWRlU2NvcmU6IHRydWUsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBzZWFyY2hSZXN1bHRzID0gZnVzZVxuICAgICAgICAgICAgLnNlYXJjaChzZWFyY2hUZXh0KVxuICAgICAgICAgICAgLy8gRmlsdGVyIG91dCByZXN1bHRzIHdpdGggYSBtYXRjaGluZyBzY29yZSBvdmVyIDAuNzVcbiAgICAgICAgICAgIC5maWx0ZXIoKHJlc3VsdCkgPT4gKHJlc3VsdC5zY29yZSA/IHJlc3VsdC5zY29yZSA8IDAuNzUgOiBmYWxzZSkpXG4gICAgICAgICAgICAvLyBLZWVwIGEgbWF4aW1hbCBvZiA5IHJlc3VsdHNcbiAgICAgICAgICAgIC5zbGljZSgwLCA5KTtcblxuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdzZXRTZWFyY2hUZXh0UmVzdWx0cycsXG4gICAgICAgICAgICBwYXlsb2FkOiBzZWFyY2hSZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQuaXRlbSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB1bnNldElzTG9hZGluZygpO1xuICAgICAgICAgIHNldEhhc05ldHdvcmtFcnJvcigpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0sXG4gICAgW1xuICAgICAgc2VhcmNoRnJvbVBhcmVudCxcbiAgICAgIHNldEhhc05ldHdvcmtFcnJvcixcbiAgICAgIHNldElzTG9hZGluZyxcbiAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yLFxuICAgICAgdW5zZXRJc0xvYWRpbmcsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVDb250YWluZXJDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFJlc3VsdHNXaGVuQ2xvc2luZycgfSk7XG4gICAgb25DbG9zZUZyb21QYXJlbnQoKTtcbiAgfSwgW29uQ2xvc2VGcm9tUGFyZW50XSk7XG5cbiAgY29uc3QgY3JlYXRlQ29tbWFuZE1vdXNlRW50ZXJIYW5kbGVyID0gdXNlQ2FsbGJhY2s8XG4gICAgKGluZGV4OiBudW1iZXIpID0+IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PlxuICA+KFxuICAgIChpbmRleCkgPT4gKCkgPT4ge1xuICAgICAgLy8gSW4gY2FzZSB0aGUgY3Vyc29yIGhhcHBlbmVkIHRvIGJlIGluIGEgbG9jYXRpb24gd2hlcmUgYVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGFwcGVhciwgaXQgd291bGQgdHJpZ2dlciBvbk1vdXNlRW50ZXIgYW5kIHRoZVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGJlIHNlbGVjdGVkIGltbWVkaWF0ZWx5LiBUaGlzIGlzIG5vdCBzb21ldGhpbmdcbiAgICAgIC8vIGEgdXNlciB3b3VsZCBleHBlY3QsIGhlbmNlIHdlIHByZXZlbnQgaXQgZnJvbSBoYXBwZW5pbmcuXG4gICAgICAvLyBUaGUgdXNlciBoYXMgdG8gbW92ZSB0aGUgY3Vyc29yIHRvIGFuIG9wdGlvbiBleHBsaWNpdGx5IGZvclxuICAgICAgLy8gaXQgdG8gYmVjb21lIGFjdGl2ZS4gSG93ZXZlciwgdGhlIHVzZXIgY2FuIGFsd2F5cyBjbGljayBhbmRcbiAgICAgIC8vIHRoYXQgYWN0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkLlxuICAgICAgaWYgKHNraXBOZXh0U2VsZWN0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgc2tpcE5leHRTZWxlY3Rpb24uY3VycmVudCA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIHNldHMgdGhlIHNlbGVjdGVkIHJlc3VsdCwgbWFpbmx5IGZvciB0aGUgaG92ZXIgZWZmZWN0XG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCcsIHBheWxvYWQ6IGluZGV4IH0pO1xuICAgIH0sXG4gICAgW11cbiAgKTtcbiAgY29uc3QgY3JlYXRlQ29tbWFuZENsaWNrSGFuZGxlciA9IHVzZUNhbGxiYWNrPFxuICAgIChjb21tYW5kOiBDb21tYW5kKSA9PiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD5cbiAgPihcbiAgICAoY29tbWFuZCkgPT4gKGV2ZW50KSA9PiB7XG4gICAgICBleGVjdXRlKGNvbW1hbmQsIHtcbiAgICAgICAgb3BlbkluTmV3VGFiOiBoYXNOZXdXaW5kb3dNb2RpZmllcihldmVudCksXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtleGVjdXRlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEJ1dGxlckNvbnRhaW5lclxuICAgICAgb25DbGljaz17aGFuZGxlQ29udGFpbmVyQ2xpY2t9XG4gICAgICBkYXRhLXRlc3RpZD1cInF1aWNrLWFjY2Vzc1wiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3NlYXJjaENvbnRhaW5lclJlZn1cbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yU3VyZmFjZX07XG4gICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICR7Y3VzdG9tUHJvcGVydGllcy5ib3JkZXJSYWRpdXM0fTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA0MHB4O1xuXG4gICAgICAgICAgLyogb25lIG1vcmUgdGhhbiBhcHAtYmFyICgyMDAwMCkgYW5kIG9uZSBtb3JlIHRoYW4gdGhlIG92ZXJsYXkgKDIwMDAxKSAqL1xuICAgICAgICAgIHotaW5kZXg6IDIwMDAyO1xuICAgICAgICAgIHdpZHRoOiA0MDBweDtcbiAgICAgICAgICBtYXJnaW46IDQwcHggYXV0bztcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAxMHB4IDMwcHggLThweCByZ2JhKDAsIDAsIDAsIDAuNzUpO1xuICAgICAgICAgIC1tb3otYm94LXNoYWRvdzogMCAxMHB4IDMwcHggLThweCByZ2JhKDAsIDAsIDAsIDAuNzUpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IC04cHggcmdiYSgwLCAwLCAwLCAwLjc1KTtcbiAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHtzdGF0ZS5oYXNOZXR3b3JrRXJyb3JcbiAgICAgICAgICAgID8gJzAnXG4gICAgICAgICAgICA6IGN1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICBgfVxuICAgICAgICBvbkNsaWNrPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBBdm9pZCBjbG9zaW5nIHdoZW4gdGhlIHNlYXJjaENvbnRhaW5lciBpdHNlbGYgaXMgY2xpY2tlZFxuICAgICAgICAgIC8vIElmIHdlIGRvbid0IGRvIHRoaXMsIHRoZW4gdGhlIG92ZXJsYXkgd2lsbCBjbG9zZSB3aGVuIGUuZy5cbiAgICAgICAgICAvLyB0aGUgc2VhcmNoIGlucHV0IGlzIGNsaWNrZWQuXG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBgfVxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBodG1sRm9yPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nTX07XG4gICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICBgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTZWFyY2hJY29uIGNvbG9yPVwibmV1dHJhbDYwXCIgLz5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJxdWljay1hY2Nlc3Mtc2VhcmNoLWlucHV0XCJcbiAgICAgICAgICAgIHJlZj17c2VhcmNoSW5wdXRSZWZ9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17aW50bC5mb3JtYXRNZXNzYWdlKG1lc3NhZ2VzLmlucHV0UGxhY2Vob2Rlcil9XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ019ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nTX1cbiAgICAgICAgICAgICAgICAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yTmV1dHJhbDYwfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYH1cbiAgICAgICAgICAgIHZhbHVlPXtzdGF0ZS5zZWFyY2hUZXh0fVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgIG9uS2V5VXA9e2hhbmRsZUtleVVwfVxuICAgICAgICAgICAgYXV0b0ZvY3VzPXt0cnVlfVxuICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICB7c3RhdGUuaXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR7Y3VzdG9tUHJvcGVydGllcy5zcGFjaW5nU307XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICBpZiAoc3RhdGUuaGFzTmV0d29ya0Vycm9yKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JFcnJvcn07XG4gICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvclN1cmZhY2V9O1xuICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAke2N1c3RvbVByb3BlcnRpZXMuZm9udFNpemVTbWFsbH07XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1hzfTtcbiAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm9mZmxpbmV9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChzdGF0ZS5yZXN1bHRzLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5zZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JOZXV0cmFsfTtcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTb2xpZH07XG4gICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAke2N1c3RvbVByb3BlcnRpZXMuZm9udFNpemVTbWFsbH07XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1hzfTtcbiAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm5vUmVzdWx0c30gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuIHN0YXRlLnJlc3VsdHMubWFwKChjb21tYW5kLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPEJ1dGxlckNvbW1hbmRcbiAgICAgICAgICAgICAga2V5PXtjb21tYW5kLmlkfVxuICAgICAgICAgICAgICBjb21tYW5kPXtjb21tYW5kfVxuICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzdGF0ZS5zZWxlY3RlZFJlc3VsdCA9PT0gaW5kZXh9XG4gICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17Y3JlYXRlQ29tbWFuZE1vdXNlRW50ZXJIYW5kbGVyKGluZGV4KX1cbiAgICAgICAgICAgICAgb25DbGljaz17Y3JlYXRlQ29tbWFuZENsaWNrSGFuZGxlcihjb21tYW5kKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSk7XG4gICAgICAgIH0pKCl9XG4gICAgICA8L2Rpdj5cbiAgICA8L0J1dGxlckNvbnRhaW5lcj5cbiAgKTtcbn07XG5CdXRsZXIuZGlzcGxheU5hbWUgPSAnQnV0bGVyJztcblxuY29uc3QgQnV0bGVyV2l0aEFuaW1hdGlvbiA9IChwcm9wczogT21pdDxQcm9wcywgJ2NsYXNzTmFtZVNoYWtlQW5pbWF0aW9uJz4pID0+IChcbiAgPENsYXNzTmFtZXM+XG4gICAgeyh7IGNzcyB9KSA9PiAoXG4gICAgICA8QnV0bGVyXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgY2xhc3NOYW1lU2hha2VBbmltYXRpb249e2Nzc2BcbiAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDAuNDVzO1xuICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gICAgICAgICAgYW5pbWF0aW9uLW5hbWU6ICR7c2hha2VBbmltYXRpb259O1xuICAgICAgICBgfVxuICAgICAgLz5cbiAgICApfVxuICA8L0NsYXNzTmFtZXM+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBCdXRsZXJXaXRoQW5pbWF0aW9uO1xuIl19 */"),
|
|
1029
|
-
children: jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread({}, messages.noResults))
|
|
1030
|
-
});
|
|
1031
|
-
return _mapInstanceProperty__default["default"](_context14 = state.results).call(_context14, function (command, index) {
|
|
1032
|
-
return jsxRuntime.jsx(ButlerCommand, {
|
|
1033
|
-
command: command,
|
|
1034
|
-
isSelected: state.selectedResult === index,
|
|
1035
|
-
onMouseEnter: createCommandMouseEnterHandler(index),
|
|
1036
|
-
onClick: createCommandClickHandler(command)
|
|
1037
|
-
}, command.id);
|
|
1038
|
-
});
|
|
1039
|
-
}()]
|
|
1040
|
-
})
|
|
1041
|
-
});
|
|
1042
|
-
};
|
|
1043
|
-
|
|
1044
|
-
Butler.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
1045
|
-
historyEntries: _pt__default["default"].arrayOf(_pt__default["default"].any).isRequired,
|
|
1046
|
-
onHistoryEntriesChange: _pt__default["default"].func.isRequired,
|
|
1047
|
-
search: _pt__default["default"].func.isRequired,
|
|
1048
|
-
getNextCommands: _pt__default["default"].func.isRequired,
|
|
1049
|
-
executeCommand: _pt__default["default"].func.isRequired,
|
|
1050
|
-
onClose: _pt__default["default"].func.isRequired,
|
|
1051
|
-
classNameShakeAnimation: _pt__default["default"].string.isRequired
|
|
1052
|
-
} : {};
|
|
1053
|
-
Butler.displayName = 'Butler';
|
|
1054
|
-
|
|
1055
|
-
var ButlerWithAnimation = function ButlerWithAnimation(props) {
|
|
1056
|
-
return jsxRuntime.jsx(react.ClassNames, {
|
|
1057
|
-
children: function children(_ref3) {
|
|
1058
|
-
var css = _ref3.css;
|
|
1059
|
-
return jsxRuntime.jsx(Butler, _objectSpread(_objectSpread({}, props), {}, {
|
|
1060
|
-
classNameShakeAnimation: css(_templateObject2$2 || (_templateObject2$2 = _taggedTemplateLiteral(["\n animation-duration: 0.45s;\n animation-fill-mode: both;\n animation-name: ", ";\n "])), shakeAnimation)
|
|
1061
|
-
}));
|
|
1062
|
-
}
|
|
1063
|
-
});
|
|
1064
|
-
};
|
|
1065
|
-
|
|
1066
|
-
// eslint-disable-next-line import/prefer-default-export
|
|
1067
|
-
var permissions = {
|
|
1068
|
-
ViewOrders: 'ViewOrders',
|
|
1069
|
-
ManageOrders: 'ManageOrders',
|
|
1070
|
-
ViewProducts: 'ViewProducts',
|
|
1071
|
-
ManageProducts: 'ManageProducts',
|
|
1072
|
-
ViewCategories: 'ViewCategories',
|
|
1073
|
-
ManageCategories: 'ManageCategories',
|
|
1074
|
-
ViewCustomers: 'ViewCustomers',
|
|
1075
|
-
ManageCustomers: 'ManageCustomers',
|
|
1076
|
-
ViewCustomerGroups: 'ViewCustomerGroups',
|
|
1077
|
-
ManageCustomerGroups: 'ManageCustomerGroups',
|
|
1078
|
-
ViewProductDiscounts: 'ViewProductDiscounts',
|
|
1079
|
-
ManageProductDiscounts: 'ManageProductDiscounts',
|
|
1080
|
-
ViewDiscountCodes: 'ViewDiscountCodes',
|
|
1081
|
-
ManageDiscountCodes: 'ManageDiscountCodes',
|
|
1082
|
-
ViewCartDiscounts: 'ViewCartDiscounts',
|
|
1083
|
-
ManageCartDiscounts: 'ManageCartDiscounts',
|
|
1084
|
-
ViewProjectSettings: 'ViewProjectSettings',
|
|
1085
|
-
ManageProjectSettings: 'ManageProjectSettings',
|
|
1086
|
-
ViewDeveloperSettings: 'ViewDeveloperSettings',
|
|
1087
|
-
ManageDeveloperSettings: 'ManageDeveloperSettings',
|
|
1088
|
-
ViewProductTypes: 'ViewProductTypes',
|
|
1089
|
-
ManageProductTypes: 'ManageProductTypes'
|
|
1090
|
-
};
|
|
1091
|
-
|
|
1092
|
-
var actionTypes = {
|
|
1093
|
-
go: 'go'
|
|
1094
|
-
};
|
|
1095
|
-
|
|
1096
|
-
var _templateObject$2;
|
|
1097
|
-
|
|
1098
|
-
function nonNullable(value) {
|
|
1099
|
-
return value !== null && value !== undefined && typeof value !== 'boolean';
|
|
1100
|
-
}
|
|
1101
|
-
|
|
1102
|
-
var createCommands = function createCommands(_ref) {
|
|
1103
|
-
var _context, _context2, _context3, _context4, _context5, _context6, _context7, _context8, _context9, _context10, _context11, _context14;
|
|
1104
|
-
|
|
1105
|
-
var intl = _ref.intl,
|
|
1106
|
-
applicationContext = _ref.applicationContext,
|
|
1107
|
-
featureToggles = _ref.featureToggles,
|
|
1108
|
-
changeProjectDataLocale = _ref.changeProjectDataLocale;
|
|
1109
|
-
return _filterInstanceProperty__default["default"](_context = _concatInstanceProperty__default["default"](_context2 = [applicationContext.project && applicationContext.permissions && featureToggles.canViewDashboard && permissions$1.hasSomePermissions([permissions.ViewOrders], applicationContext.permissions) && {
|
|
1110
|
-
id: 'go/dashboard',
|
|
1111
|
-
text: intl.formatMessage(messages.openDashboard),
|
|
1112
|
-
keywords: ['Go to Dashboard'],
|
|
1113
|
-
action: {
|
|
1114
|
-
type: actionTypes.go,
|
|
1115
|
-
to: "/".concat(applicationContext.project.key, "/dashboard")
|
|
1116
|
-
}
|
|
1117
|
-
}, applicationContext.project && applicationContext.permissions && permissions$1.hasSomePermissions([permissions.ViewProducts], applicationContext.permissions) && {
|
|
1118
|
-
id: 'go/products',
|
|
1119
|
-
text: intl.formatMessage(messages.openProducts),
|
|
1120
|
-
keywords: ['Go to Products'],
|
|
1121
|
-
action: {
|
|
1122
|
-
type: actionTypes.go,
|
|
1123
|
-
to: "/".concat(applicationContext.project.key, "/products")
|
|
1124
|
-
},
|
|
1125
|
-
subCommands: _filterInstanceProperty__default["default"](_context3 = [permissions$1.hasSomePermissions([permissions.ViewProducts], applicationContext.permissions) && {
|
|
1126
|
-
id: 'go/products/list',
|
|
1127
|
-
text: intl.formatMessage(messages.openProductList),
|
|
1128
|
-
action: {
|
|
1129
|
-
type: actionTypes.go,
|
|
1130
|
-
to: "/".concat(applicationContext.project.key, "/products")
|
|
1131
|
-
}
|
|
1132
|
-
}, permissions$1.hasSomePermissions([permissions.ViewProducts], applicationContext.permissions) && {
|
|
1133
|
-
id: 'go/products/modified',
|
|
1134
|
-
text: intl.formatMessage(messages.openModifiedProducts),
|
|
1135
|
-
action: {
|
|
1136
|
-
type: actionTypes.go,
|
|
1137
|
-
to: "/".concat(applicationContext.project.key, "/products/modified")
|
|
1138
|
-
}
|
|
1139
|
-
}, permissions$1.hasSomePermissions([permissions.ViewProducts], applicationContext.permissions) && featureToggles.pimSearch && {
|
|
1140
|
-
id: 'go/products/pim-search',
|
|
1141
|
-
text: intl.formatMessage(messages.openPimSearch),
|
|
1142
|
-
action: {
|
|
1143
|
-
type: actionTypes.go,
|
|
1144
|
-
to: "/".concat(applicationContext.project.key, "/products")
|
|
1145
|
-
}
|
|
1146
|
-
}, permissions$1.hasSomePermissions([permissions.ManageProducts], applicationContext.permissions) && {
|
|
1147
|
-
id: 'go/products/add',
|
|
1148
|
-
text: intl.formatMessage(messages.openAddProducts),
|
|
1149
|
-
action: {
|
|
1150
|
-
type: actionTypes.go,
|
|
1151
|
-
to: "/".concat(applicationContext.project.key, "/products/new")
|
|
1152
|
-
}
|
|
1153
|
-
}]).call(_context3, nonNullable)
|
|
1154
|
-
}, applicationContext.project && applicationContext.permissions && permissions$1.hasSomePermissions([permissions.ViewCategories], applicationContext.permissions) && {
|
|
1155
|
-
id: 'go/categories',
|
|
1156
|
-
text: intl.formatMessage(messages.openCategories),
|
|
1157
|
-
keywords: ['Go to Categories'],
|
|
1158
|
-
action: {
|
|
1159
|
-
type: actionTypes.go,
|
|
1160
|
-
to: "/".concat(applicationContext.project.key, "/categories")
|
|
1161
|
-
},
|
|
1162
|
-
subCommands: _filterInstanceProperty__default["default"](_context4 = [permissions$1.hasSomePermissions([permissions.ViewCategories], applicationContext.permissions) && {
|
|
1163
|
-
id: 'go/categories/list',
|
|
1164
|
-
text: intl.formatMessage(messages.openCategoriesList),
|
|
1165
|
-
action: {
|
|
1166
|
-
type: actionTypes.go,
|
|
1167
|
-
to: "/".concat(applicationContext.project.key, "/categories?mode=list")
|
|
1168
|
-
}
|
|
1169
|
-
}, permissions$1.hasSomePermissions([permissions.ViewCategories], applicationContext.permissions) && {
|
|
1170
|
-
id: 'go/categories/search',
|
|
1171
|
-
text: intl.formatMessage(messages.openCategoriesSearch),
|
|
1172
|
-
action: {
|
|
1173
|
-
type: actionTypes.go,
|
|
1174
|
-
to: "/".concat(applicationContext.project.key, "/categories?mode=search")
|
|
1175
|
-
}
|
|
1176
|
-
}, permissions$1.hasSomePermissions([permissions.ManageCategories], applicationContext.permissions) && {
|
|
1177
|
-
id: 'go/categories/add',
|
|
1178
|
-
text: intl.formatMessage(messages.openAddCategory),
|
|
1179
|
-
action: {
|
|
1180
|
-
type: actionTypes.go,
|
|
1181
|
-
to: "/".concat(applicationContext.project.key, "/categories/new")
|
|
1182
|
-
}
|
|
1183
|
-
}]).call(_context4, nonNullable)
|
|
1184
|
-
}, applicationContext.project && applicationContext.permissions && permissions$1.hasSomePermissions([permissions.ViewCustomers, permissions.ViewCustomerGroups], applicationContext.permissions) && {
|
|
1185
|
-
id: 'go/customers',
|
|
1186
|
-
text: intl.formatMessage(messages.openCustomers),
|
|
1187
|
-
keywords: ['Go to Customers'],
|
|
1188
|
-
action: {
|
|
1189
|
-
type: actionTypes.go,
|
|
1190
|
-
to: "/".concat(applicationContext.project.key, "/customers")
|
|
1191
|
-
},
|
|
1192
|
-
subCommands: _filterInstanceProperty__default["default"](_context5 = [permissions$1.hasSomePermissions([permissions.ViewCustomers], applicationContext.permissions) && {
|
|
1193
|
-
id: 'go/customers/list',
|
|
1194
|
-
text: intl.formatMessage(messages.openCustomersList),
|
|
1195
|
-
action: {
|
|
1196
|
-
type: actionTypes.go,
|
|
1197
|
-
to: "/".concat(applicationContext.project.key, "/customers")
|
|
1198
|
-
}
|
|
1199
|
-
}, permissions$1.hasSomePermissions([permissions.ManageCustomers], applicationContext.permissions) && {
|
|
1200
|
-
id: 'go/customers/new',
|
|
1201
|
-
text: intl.formatMessage(messages.openAddCustomer),
|
|
1202
|
-
action: {
|
|
1203
|
-
type: actionTypes.go,
|
|
1204
|
-
to: "/".concat(applicationContext.project.key, "/customers/new")
|
|
1205
|
-
}
|
|
1206
|
-
}, permissions$1.hasSomePermissions([permissions.ViewCustomerGroups], applicationContext.permissions) && {
|
|
1207
|
-
id: 'go/customer/customer-groups',
|
|
1208
|
-
text: intl.formatMessage(messages.openCustomerGroupsList),
|
|
1209
|
-
action: {
|
|
1210
|
-
type: actionTypes.go,
|
|
1211
|
-
to: "/".concat(applicationContext.project.key, "/customers/customer-groups")
|
|
1212
|
-
}
|
|
1213
|
-
}, permissions$1.hasSomePermissions([permissions.ManageCustomerGroups], applicationContext.permissions) && {
|
|
1214
|
-
id: 'go/customers/customer-groups/add',
|
|
1215
|
-
text: intl.formatMessage(messages.openAddCustomerGroup),
|
|
1216
|
-
action: {
|
|
1217
|
-
type: actionTypes.go,
|
|
1218
|
-
to: "/".concat(applicationContext.project.key, "/customers/customer-groups/new")
|
|
1219
|
-
}
|
|
1220
|
-
}]).call(_context5, nonNullable)
|
|
1221
|
-
}, applicationContext.project && applicationContext.permissions && permissions$1.hasSomePermissions([permissions.ViewOrders], applicationContext.permissions) && {
|
|
1222
|
-
id: 'go/orders',
|
|
1223
|
-
text: intl.formatMessage(messages.openOrders),
|
|
1224
|
-
keywords: ['Go to Orders'],
|
|
1225
|
-
action: {
|
|
1226
|
-
type: actionTypes.go,
|
|
1227
|
-
to: "/".concat(applicationContext.project.key, "/orders")
|
|
1228
|
-
},
|
|
1229
|
-
subCommands: _filterInstanceProperty__default["default"](_context6 = [permissions$1.hasSomePermissions([permissions.ViewOrders], applicationContext.permissions) && {
|
|
1230
|
-
id: 'go/orders/list',
|
|
1231
|
-
text: intl.formatMessage(messages.openOrdersList),
|
|
1232
|
-
action: {
|
|
1233
|
-
type: actionTypes.go,
|
|
1234
|
-
to: "/".concat(applicationContext.project.key, "/orders")
|
|
1235
|
-
}
|
|
1236
|
-
}, permissions$1.hasSomePermissions([permissions.ManageOrders], applicationContext.permissions) && {
|
|
1237
|
-
id: 'go/orders/add',
|
|
1238
|
-
text: intl.formatMessage(messages.openAddOrder),
|
|
1239
|
-
action: {
|
|
1240
|
-
type: actionTypes.go,
|
|
1241
|
-
to: "/".concat(applicationContext.project.key, "/orders/new")
|
|
1242
|
-
}
|
|
1243
|
-
}]).call(_context6, nonNullable)
|
|
1244
|
-
}, applicationContext.project && applicationContext.permissions && permissions$1.hasSomePermissions([permissions.ViewDiscountCodes, permissions.ViewProductDiscounts, permissions.ViewCartDiscounts], applicationContext.permissions) && {
|
|
1245
|
-
id: 'go/discounts',
|
|
1246
|
-
text: intl.formatMessage(messages.openDiscounts),
|
|
1247
|
-
keywords: ['Go to Discounts'],
|
|
1248
|
-
action: {
|
|
1249
|
-
type: actionTypes.go,
|
|
1250
|
-
to: "/".concat(applicationContext.project.key, "/discounts")
|
|
1251
|
-
},
|
|
1252
|
-
subCommands: _filterInstanceProperty__default["default"](_context7 = [permissions$1.hasSomePermissions([permissions.ViewProductDiscounts], applicationContext.permissions) && {
|
|
1253
|
-
id: 'go/discounts/products/list',
|
|
1254
|
-
text: intl.formatMessage(messages.openProductDiscountsList),
|
|
1255
|
-
action: {
|
|
1256
|
-
type: actionTypes.go,
|
|
1257
|
-
to: "/".concat(applicationContext.project.key, "/discounts/products")
|
|
1258
|
-
}
|
|
1259
|
-
}, permissions$1.hasSomePermissions([permissions.ViewCartDiscounts], applicationContext.permissions) && {
|
|
1260
|
-
id: 'go/discounts/carts/list',
|
|
1261
|
-
text: intl.formatMessage(messages.openCartDiscountsList),
|
|
1262
|
-
action: {
|
|
1263
|
-
type: actionTypes.go,
|
|
1264
|
-
to: "/".concat(applicationContext.project.key, "/discounts/carts")
|
|
1265
|
-
}
|
|
1266
|
-
}, permissions$1.hasSomePermissions([permissions.ViewDiscountCodes], applicationContext.permissions) && {
|
|
1267
|
-
id: 'go/discounts/codes/list',
|
|
1268
|
-
text: intl.formatMessage(messages.openDiscountCodesList),
|
|
1269
|
-
action: {
|
|
1270
|
-
type: actionTypes.go,
|
|
1271
|
-
to: "/".concat(applicationContext.project.key, "/discounts/codes")
|
|
1272
|
-
}
|
|
1273
|
-
}, permissions$1.hasSomePermissions([permissions.ManageProductDiscounts, permissions.ManageDiscountCodes, permissions.ManageCartDiscounts], applicationContext.permissions) && {
|
|
1274
|
-
id: 'go/discounts/add',
|
|
1275
|
-
text: intl.formatMessage(messages.openAddDiscount),
|
|
1276
|
-
action: {
|
|
1277
|
-
type: actionTypes.go,
|
|
1278
|
-
to: "/".concat(applicationContext.project.key, "/discounts/new")
|
|
1279
|
-
},
|
|
1280
|
-
subCommands: _filterInstanceProperty__default["default"](_context8 = [permissions$1.hasSomePermissions([permissions.ManageProductDiscounts], applicationContext.permissions) && {
|
|
1281
|
-
id: 'go/discounts/product/add',
|
|
1282
|
-
text: intl.formatMessage(messages.openAddProductDiscount),
|
|
1283
|
-
action: {
|
|
1284
|
-
type: actionTypes.go,
|
|
1285
|
-
to: "/".concat(applicationContext.project.key, "/discounts/products/new")
|
|
1286
|
-
}
|
|
1287
|
-
}, permissions$1.hasSomePermissions([permissions.ManageCartDiscounts], applicationContext.permissions) && {
|
|
1288
|
-
id: 'go/discounts/cart/add',
|
|
1289
|
-
text: intl.formatMessage(messages.openAddCartDiscount),
|
|
1290
|
-
action: {
|
|
1291
|
-
type: actionTypes.go,
|
|
1292
|
-
to: "/".concat(applicationContext.project.key, "/discounts/carts/new")
|
|
1293
|
-
}
|
|
1294
|
-
}, permissions$1.hasSomePermissions([permissions.ManageDiscountCodes], applicationContext.permissions) && {
|
|
1295
|
-
id: 'go/discounts/code/add',
|
|
1296
|
-
text: intl.formatMessage(messages.openAddCartDiscount),
|
|
1297
|
-
action: {
|
|
1298
|
-
type: actionTypes.go,
|
|
1299
|
-
to: "/".concat(applicationContext.project.key, "/discounts/codes/new")
|
|
1300
|
-
}
|
|
1301
|
-
}]).call(_context8, nonNullable)
|
|
1302
|
-
}]).call(_context7, nonNullable)
|
|
1303
|
-
}, applicationContext.project && applicationContext.permissions && permissions$1.hasSomePermissions([permissions.ViewProjectSettings, permissions.ViewDeveloperSettings, permissions.ViewProductTypes], applicationContext.permissions) && {
|
|
1304
|
-
id: 'go/settings',
|
|
1305
|
-
text: intl.formatMessage(messages.openSettings),
|
|
1306
|
-
keywords: ['Go to Settings'],
|
|
1307
|
-
action: {
|
|
1308
|
-
type: actionTypes.go,
|
|
1309
|
-
to: "/".concat(applicationContext.project.key, "/settings/project")
|
|
1310
|
-
},
|
|
1311
|
-
subCommands: _filterInstanceProperty__default["default"](_context9 = [permissions$1.hasSomePermissions([permissions.ViewProjectSettings, permissions.ManageProjectSettings], applicationContext.permissions) && {
|
|
1312
|
-
id: 'go/settings/project',
|
|
1313
|
-
text: intl.formatMessage(messages.openProjectSettings),
|
|
1314
|
-
action: {
|
|
1315
|
-
type: actionTypes.go,
|
|
1316
|
-
to: "/".concat(applicationContext.project.key, "/settings/project")
|
|
1317
|
-
},
|
|
1318
|
-
subCommands: _filterInstanceProperty__default["default"](_context10 = [{
|
|
1319
|
-
id: 'go/settings/project/international',
|
|
1320
|
-
text: intl.formatMessage(messages.openProjectSettingsInternationalTab),
|
|
1321
|
-
action: {
|
|
1322
|
-
type: actionTypes.go,
|
|
1323
|
-
to: "/".concat(applicationContext.project.key, "/settings/project/international")
|
|
1324
|
-
}
|
|
1325
|
-
}, {
|
|
1326
|
-
id: 'go/settings/project/taxes',
|
|
1327
|
-
text: intl.formatMessage(messages.openProjectSettingsTaxesTab),
|
|
1328
|
-
action: {
|
|
1329
|
-
type: actionTypes.go,
|
|
1330
|
-
to: "/".concat(applicationContext.project.key, "/settings/project/taxes")
|
|
1331
|
-
}
|
|
1332
|
-
}, {
|
|
1333
|
-
id: 'go/settings/project/shipping-methods',
|
|
1334
|
-
text: intl.formatMessage(messages.openProjectSettingsShippingMethodsTab),
|
|
1335
|
-
action: {
|
|
1336
|
-
type: actionTypes.go,
|
|
1337
|
-
to: "/".concat(applicationContext.project.key, "/settings/project/shipping-methods")
|
|
1338
|
-
}
|
|
1339
|
-
}, {
|
|
1340
|
-
id: 'go/settings/project/channels',
|
|
1341
|
-
text: intl.formatMessage(messages.openProjectSettingsChannelsTab),
|
|
1342
|
-
action: {
|
|
1343
|
-
type: actionTypes.go,
|
|
1344
|
-
to: "/".concat(applicationContext.project.key, "/settings/project/channels")
|
|
1345
|
-
}
|
|
1346
|
-
}, {
|
|
1347
|
-
id: 'go/settings/project/stores',
|
|
1348
|
-
text: intl.formatMessage(messages.openProjectSettingsStoresTab),
|
|
1349
|
-
action: {
|
|
1350
|
-
type: actionTypes.go,
|
|
1351
|
-
to: "/".concat(applicationContext.project.key, "/settings/project/stores")
|
|
1352
|
-
}
|
|
1353
|
-
}]).call(_context10, nonNullable)
|
|
1354
|
-
}, permissions$1.hasSomePermissions([permissions.ViewProductTypes], applicationContext.permissions) && {
|
|
1355
|
-
id: 'go/settings/product-types',
|
|
1356
|
-
text: intl.formatMessage(messages.openProductTypesSettings),
|
|
1357
|
-
action: {
|
|
1358
|
-
type: actionTypes.go,
|
|
1359
|
-
to: "/".concat(applicationContext.project.key, "/settings/product-types")
|
|
1360
|
-
}
|
|
1361
|
-
}, permissions$1.hasSomePermissions([permissions.ViewDeveloperSettings], applicationContext.permissions) && {
|
|
1362
|
-
id: 'go/settings/developer',
|
|
1363
|
-
text: intl.formatMessage(messages.openDeveloperSettings),
|
|
1364
|
-
action: {
|
|
1365
|
-
type: actionTypes.go,
|
|
1366
|
-
to: "/".concat(applicationContext.project.key, "/settings/developer")
|
|
1367
|
-
},
|
|
1368
|
-
subCommands: _filterInstanceProperty__default["default"](_context11 = [permissions$1.hasSomePermissions([permissions.ViewDeveloperSettings], applicationContext.permissions) && {
|
|
1369
|
-
id: 'go/settings/developer/api-clients/list',
|
|
1370
|
-
text: intl.formatMessage(messages.openApiClientsList),
|
|
1371
|
-
action: {
|
|
1372
|
-
type: actionTypes.go,
|
|
1373
|
-
to: "/".concat(applicationContext.project.key, "/settings/developer/api-clients")
|
|
1374
|
-
}
|
|
1375
|
-
}, permissions$1.hasSomePermissions([permissions.ManageDeveloperSettings], applicationContext.permissions) && {
|
|
1376
|
-
id: 'go/settings/developer/api-clients/add',
|
|
1377
|
-
text: intl.formatMessage(messages.openAddApiClient),
|
|
1378
|
-
action: {
|
|
1379
|
-
type: actionTypes.go,
|
|
1380
|
-
to: "/".concat(applicationContext.project.key, "/settings/developer/api-clients/new")
|
|
1381
|
-
}
|
|
1382
|
-
}]).call(_context11, nonNullable)
|
|
1383
|
-
}, featureToggles.customApplications && permissions$1.hasSomePermissions([permissions.ManageProjectSettings], applicationContext.permissions) && {
|
|
1384
|
-
id: 'go/settings/custom-applications',
|
|
1385
|
-
text: intl.formatMessage(messages.openCustomApplicationsSettings),
|
|
1386
|
-
action: {
|
|
1387
|
-
type: actionTypes.go,
|
|
1388
|
-
to: "/".concat(applicationContext.project.key, "/settings/custom-applications")
|
|
1389
|
-
}
|
|
1390
|
-
}]).call(_context9, nonNullable)
|
|
1391
|
-
}, applicationContext.project && applicationContext.project.languages && applicationContext.project.languages.length > 1 && {
|
|
1392
|
-
id: 'action/set-resource-language',
|
|
1393
|
-
text: intl.formatMessage(messages.setResourceLanguage),
|
|
1394
|
-
keywords: ['set resource locale', 'set project data language', 'set project data locale'],
|
|
1395
|
-
action: function action() {
|
|
1396
|
-
return void 0;
|
|
1397
|
-
},
|
|
1398
|
-
// We would know these statically, but we define them here as we don't
|
|
1399
|
-
// want to include them in the top-level search results
|
|
1400
|
-
subCommands: function subCommands() {
|
|
1401
|
-
var _context12, _context13;
|
|
1402
|
-
|
|
1403
|
-
return _Promise__default["default"].resolve(_filterInstanceProperty__default["default"](_context12 = _mapInstanceProperty__default["default"](_context13 = applicationContext.project ? applicationContext.project.languages : []).call(_context13, function (language) {
|
|
1404
|
-
return changeProjectDataLocale && {
|
|
1405
|
-
id: "action/set-resource-language/".concat(language),
|
|
1406
|
-
text: commonTags.oneLineTrim(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteral(["\n ", "\n ", "\n "])), language, language === applicationContext.dataLocale ? ' (active)' : ''),
|
|
1407
|
-
action: function action() {
|
|
1408
|
-
changeProjectDataLocale(language); // We reload, since ProjectDataLocale is written in a way where
|
|
1409
|
-
// only the tree under the parent container reloads, but
|
|
1410
|
-
// not all of them reload.
|
|
1411
|
-
// So this action would seem like it had not effect, unless we
|
|
1412
|
-
// reload
|
|
1413
|
-
|
|
1414
|
-
applicationEntryPoint.location.reload();
|
|
1415
|
-
}
|
|
1416
|
-
};
|
|
1417
|
-
})).call(_context12, nonNullable));
|
|
1418
|
-
}
|
|
1419
|
-
}, {
|
|
1420
|
-
id: 'go/support',
|
|
1421
|
-
text: intl.formatMessage(messages.openSupport),
|
|
1422
|
-
keywords: ['Go to support'],
|
|
1423
|
-
action: {
|
|
1424
|
-
type: actionTypes.go,
|
|
1425
|
-
to: constants.SUPPORT_PORTAL_URL
|
|
1426
|
-
}
|
|
1427
|
-
}, {
|
|
1428
|
-
id: 'go/account-profile',
|
|
1429
|
-
text: intl.formatMessage(messages.openMyProfile),
|
|
1430
|
-
keywords: ['Go to user account', 'Go to profile', 'Open profile'],
|
|
1431
|
-
action: {
|
|
1432
|
-
type: actionTypes.go,
|
|
1433
|
-
to: "/account/profile"
|
|
1434
|
-
}
|
|
1435
|
-
}, {
|
|
1436
|
-
id: 'go/privacy-policy',
|
|
1437
|
-
text: intl.formatMessage(messages.showPrivacyPolicy),
|
|
1438
|
-
keywords: ['Open Privacy Policy'],
|
|
1439
|
-
action: {
|
|
1440
|
-
type: actionTypes.go,
|
|
1441
|
-
to: 'https://commercetools.com/privacy#suppliers'
|
|
1442
|
-
}
|
|
1443
|
-
}, {
|
|
1444
|
-
id: 'go/logout',
|
|
1445
|
-
text: intl.formatMessage(messages.logout),
|
|
1446
|
-
keywords: ['Sign out'],
|
|
1447
|
-
action: {
|
|
1448
|
-
type: actionTypes.go,
|
|
1449
|
-
to: "/logout?reason=".concat(constants.LOGOUT_REASONS.USER)
|
|
1450
|
-
}
|
|
1451
|
-
}, {
|
|
1452
|
-
id: 'go/manage-projects',
|
|
1453
|
-
text: intl.formatMessage(messages.openManageProjects),
|
|
1454
|
-
keywords: ['Go to manage projects', 'Go to projects', 'Open projects list'],
|
|
1455
|
-
action: {
|
|
1456
|
-
type: actionTypes.go,
|
|
1457
|
-
to: "/account/projects"
|
|
1458
|
-
}
|
|
1459
|
-
}, {
|
|
1460
|
-
id: 'go/manage-organizations',
|
|
1461
|
-
text: intl.formatMessage(messages.openManageOrganizations),
|
|
1462
|
-
keywords: ['Go to manage organizations', 'Go to organizations', 'Open organizations list'],
|
|
1463
|
-
action: {
|
|
1464
|
-
type: actionTypes.go,
|
|
1465
|
-
to: "/account/organizations"
|
|
1466
|
-
}
|
|
1467
|
-
}]).call(_context2, _toConsumableArray(applicationContext.user ? _mapInstanceProperty__default["default"](_context14 = applicationContext.user.projects.results).call(_context14, function (userProject) {
|
|
1468
|
-
return {
|
|
1469
|
-
id: "go/project(".concat(userProject.key, ")"),
|
|
1470
|
-
text: intl.formatMessage(messages.useProject, {
|
|
1471
|
-
projectName: userProject.name
|
|
1472
|
-
}),
|
|
1473
|
-
keywords: [userProject.key],
|
|
1474
|
-
action: function action() {
|
|
1475
|
-
// Switching projects needs a full redirect so that
|
|
1476
|
-
// the feature flags are reloaded (and things caches get destroyed)
|
|
1477
|
-
window.location.href = "/".concat(userProject.key);
|
|
1478
|
-
}
|
|
1479
|
-
};
|
|
1480
|
-
}) : []))).call(_context, nonNullable);
|
|
1481
|
-
};
|
|
1482
|
-
|
|
1483
|
-
var sanitize = function sanitize(param) {
|
|
1484
|
-
return param // Replace all \ with \\ (to prevent generate escape characters)
|
|
1485
|
-
.replace(/\\/g, '\\\\') // Replace all " with \"
|
|
1486
|
-
.replace(/"/g, '\\"');
|
|
1487
|
-
};
|
|
1488
|
-
var flattenCommands = /*#__PURE__*/function () {
|
|
1489
|
-
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee3(results, execQuery) {
|
|
1490
|
-
var flatten, _flatten;
|
|
1491
|
-
|
|
1492
|
-
return _regeneratorRuntime__default["default"].wrap(function _callee3$(_context6) {
|
|
1493
|
-
while (1) {
|
|
1494
|
-
switch (_context6.prev = _context6.next) {
|
|
1495
|
-
case 0:
|
|
1496
|
-
_flatten = function _flatten3() {
|
|
1497
|
-
_flatten = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee2(commands) {
|
|
1498
|
-
return _regeneratorRuntime__default["default"].wrap(function _callee2$(_context5) {
|
|
1499
|
-
while (1) {
|
|
1500
|
-
switch (_context5.prev = _context5.next) {
|
|
1501
|
-
case 0:
|
|
1502
|
-
return _context5.abrupt("return", _reduceInstanceProperty__default["default"](commands).call(commands, /*#__PURE__*/function () {
|
|
1503
|
-
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(prevPromise, command) {
|
|
1504
|
-
var _context3;
|
|
1505
|
-
|
|
1506
|
-
var prevResults, _context2, _context, subCommands, _flattenSubCommands, flattenSubCommands;
|
|
1507
|
-
|
|
1508
|
-
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context4) {
|
|
1509
|
-
while (1) {
|
|
1510
|
-
switch (_context4.prev = _context4.next) {
|
|
1511
|
-
case 0:
|
|
1512
|
-
_context4.next = 2;
|
|
1513
|
-
return prevPromise;
|
|
1514
|
-
|
|
1515
|
-
case 2:
|
|
1516
|
-
prevResults = _context4.sent;
|
|
1517
|
-
|
|
1518
|
-
if (!command.subCommands) {
|
|
1519
|
-
_context4.next = 16;
|
|
1520
|
-
break;
|
|
1521
|
-
}
|
|
1522
|
-
|
|
1523
|
-
if (!(typeof command.subCommands === 'function')) {
|
|
1524
|
-
_context4.next = 12;
|
|
1525
|
-
break;
|
|
1526
|
-
}
|
|
1527
|
-
|
|
1528
|
-
_context4.next = 7;
|
|
1529
|
-
return command.subCommands(execQuery);
|
|
1530
|
-
|
|
1531
|
-
case 7:
|
|
1532
|
-
subCommands = _context4.sent;
|
|
1533
|
-
_context4.next = 10;
|
|
1534
|
-
return flatten(subCommands);
|
|
1535
|
-
|
|
1536
|
-
case 10:
|
|
1537
|
-
_flattenSubCommands = _context4.sent;
|
|
1538
|
-
return _context4.abrupt("return", _concatInstanceProperty__default["default"](_context = []).call(_context, _toConsumableArray(prevResults), [command], _toConsumableArray(_flattenSubCommands)));
|
|
1539
|
-
|
|
1540
|
-
case 12:
|
|
1541
|
-
_context4.next = 14;
|
|
1542
|
-
return flatten(command.subCommands);
|
|
1543
|
-
|
|
1544
|
-
case 14:
|
|
1545
|
-
flattenSubCommands = _context4.sent;
|
|
1546
|
-
return _context4.abrupt("return", _concatInstanceProperty__default["default"](_context2 = []).call(_context2, _toConsumableArray(prevResults), [command], _toConsumableArray(flattenSubCommands)));
|
|
1547
|
-
|
|
1548
|
-
case 16:
|
|
1549
|
-
return _context4.abrupt("return", _concatInstanceProperty__default["default"](_context3 = []).call(_context3, _toConsumableArray(prevResults), [command]));
|
|
1550
|
-
|
|
1551
|
-
case 17:
|
|
1552
|
-
case "end":
|
|
1553
|
-
return _context4.stop();
|
|
1554
|
-
}
|
|
1555
|
-
}
|
|
1556
|
-
}, _callee);
|
|
1557
|
-
}));
|
|
1558
|
-
|
|
1559
|
-
return function (_x4, _x5) {
|
|
1560
|
-
return _ref2.apply(this, arguments);
|
|
1561
|
-
};
|
|
1562
|
-
}(), _Promise__default["default"].resolve([])));
|
|
1563
|
-
|
|
1564
|
-
case 1:
|
|
1565
|
-
case "end":
|
|
1566
|
-
return _context5.stop();
|
|
1567
|
-
}
|
|
1568
|
-
}
|
|
1569
|
-
}, _callee2);
|
|
1570
|
-
}));
|
|
1571
|
-
return _flatten.apply(this, arguments);
|
|
1572
|
-
};
|
|
1573
|
-
|
|
1574
|
-
flatten = function _flatten2(_x3) {
|
|
1575
|
-
return _flatten.apply(this, arguments);
|
|
1576
|
-
};
|
|
1577
|
-
|
|
1578
|
-
_context6.next = 4;
|
|
1579
|
-
return flatten(results);
|
|
1580
|
-
|
|
1581
|
-
case 4:
|
|
1582
|
-
return _context6.abrupt("return", _context6.sent);
|
|
1583
|
-
|
|
1584
|
-
case 5:
|
|
1585
|
-
case "end":
|
|
1586
|
-
return _context6.stop();
|
|
1587
|
-
}
|
|
1588
|
-
}
|
|
1589
|
-
}, _callee3);
|
|
1590
|
-
}));
|
|
1591
|
-
|
|
1592
|
-
return function flattenCommands(_x, _x2) {
|
|
1593
|
-
return _ref.apply(this, arguments);
|
|
1594
|
-
};
|
|
1595
|
-
}(); // Once ui-kit exposes its fallback mechanism, we can use the same one here
|
|
1596
|
-
|
|
1597
|
-
var translate = function translate(nameAllLocales, projectDataLocale) {
|
|
1598
|
-
var matchedTranslation = _findInstanceProperty__default["default"](nameAllLocales).call(nameAllLocales, function (translation) {
|
|
1599
|
-
return translation.locale === projectDataLocale && translation.value;
|
|
1600
|
-
});
|
|
1601
|
-
|
|
1602
|
-
if (matchedTranslation) return matchedTranslation.value; // Fall back to the first available locale
|
|
1603
|
-
|
|
1604
|
-
if (nameAllLocales.length > 0) return nameAllLocales[0].value;
|
|
1605
|
-
return '';
|
|
1606
|
-
};
|
|
1607
|
-
|
|
1608
|
-
var _templateObject$1, _templateObject2$1, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
|
|
1609
|
-
var QuickAccessProductQuery = { kind: "Document", definitions: [{ kind: "OperationDefinition", operation: "query", name: { kind: "Name", value: "QuickAccessProduct" }, variableDefinitions: [{ kind: "VariableDefinition", variable: { kind: "Variable", name: { kind: "Name", value: "productId" } }, type: { kind: "NonNullType", type: { kind: "NamedType", name: { kind: "Name", value: "String" } } }, directives: [] }], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "product" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "id" }, value: { kind: "Variable", name: { kind: "Name", value: "productId" } } }], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "masterData" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "staged" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "allVariants" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "key" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "sku" }, arguments: [], directives: [] }] } }] } }] } }] } }] } }], loc: { start: 0, end: 208, source: { body: "query QuickAccessProduct($productId: String!) {\n product(id: $productId) {\n id\n masterData {\n staged {\n allVariants {\n id\n key\n sku\n }\n }\n }\n }\n}\n", name: "GraphQL request", locationOffset: { line: 1, column: 1 } } } };
|
|
1610
|
-
var createProductVariantSubCommands = function createProductVariantSubCommands(_ref) {
|
|
1611
|
-
var _context, _context2, _context3, _context4;
|
|
1612
|
-
|
|
1613
|
-
var intl = _ref.intl,
|
|
1614
|
-
applicationContext = _ref.applicationContext,
|
|
1615
|
-
productId = _ref.productId,
|
|
1616
|
-
variantId = _ref.variantId;
|
|
1617
|
-
var canViewProducts = permissions$1.hasSomePermissions([permissions.ViewProducts], applicationContext.permissions);
|
|
1618
|
-
if (!canViewProducts || !applicationContext.project) return [];
|
|
1619
|
-
return [{
|
|
1620
|
-
id: _concatInstanceProperty__default["default"](_context = "go/product(".concat(productId, ")/variant(")).call(_context, variantId, ")/attributes"),
|
|
1621
|
-
text: intl.formatMessage(messages.showProductVariantAttributes),
|
|
1622
|
-
action: {
|
|
1623
|
-
type: actionTypes.go,
|
|
1624
|
-
to: commonTags.oneLineTrim(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteral(["\n /", "\n /products\n /", "\n /variants\n /", "\n /attributes\n "])), applicationContext.project.key, productId, variantId)
|
|
1625
|
-
}
|
|
1626
|
-
}, {
|
|
1627
|
-
id: _concatInstanceProperty__default["default"](_context2 = "go/product(".concat(productId, ")/variant")).call(_context2, variantId, "/images"),
|
|
1628
|
-
text: intl.formatMessage(messages.showProductVariantImages),
|
|
1629
|
-
action: {
|
|
1630
|
-
type: actionTypes.go,
|
|
1631
|
-
to: commonTags.oneLineTrim(_templateObject2$1 || (_templateObject2$1 = _taggedTemplateLiteral(["\n /", "\n /products\n /", "\n /variants\n /", "\n /images\n "])), applicationContext.project.key, productId, variantId)
|
|
1632
|
-
}
|
|
1633
|
-
}, {
|
|
1634
|
-
id: _concatInstanceProperty__default["default"](_context3 = "go/product(".concat(productId, ")/variant(")).call(_context3, variantId, ")/prices"),
|
|
1635
|
-
text: intl.formatMessage(messages.showProductVariantPrices),
|
|
1636
|
-
action: {
|
|
1637
|
-
type: actionTypes.go,
|
|
1638
|
-
to: commonTags.oneLineTrim(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n /", "\n /products\n /", "\n /variants\n /", "\n /prices\n "])), applicationContext.project.key, productId, variantId)
|
|
1639
|
-
}
|
|
1640
|
-
}, {
|
|
1641
|
-
id: _concatInstanceProperty__default["default"](_context4 = "go/product(".concat(productId, ")/variant(")).call(_context4, variantId, ")/inventory"),
|
|
1642
|
-
text: intl.formatMessage(messages.showProductVariantInventory),
|
|
1643
|
-
action: {
|
|
1644
|
-
type: actionTypes.go,
|
|
1645
|
-
to: commonTags.oneLineTrim(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n /", "\n /products\n /", "\n /variants\n /", "\n /inventory\n "])), applicationContext.project.key, productId, variantId)
|
|
1646
|
-
}
|
|
1647
|
-
}];
|
|
1648
|
-
};
|
|
1649
|
-
|
|
1650
|
-
var formatVariantMessage = function formatVariantMessage(variant, intl) {
|
|
1651
|
-
if (variant.sku) return intl.formatMessage(messages.openVariantBySku, {
|
|
1652
|
-
sku: variant.sku
|
|
1653
|
-
});
|
|
1654
|
-
if (variant.key) return intl.formatMessage(messages.openVariantByKey, {
|
|
1655
|
-
key: variant.key
|
|
1656
|
-
});
|
|
1657
|
-
return intl.formatMessage(messages.openVariantById, {
|
|
1658
|
-
id: variant.id
|
|
1659
|
-
});
|
|
1660
|
-
};
|
|
1661
|
-
|
|
1662
|
-
var createProductVariantListSubCommands = /*#__PURE__*/function () {
|
|
1663
|
-
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(_ref2) {
|
|
1664
|
-
var intl, applicationContext, productId, execQuery, canViewProducts, data, _context5, projectKey;
|
|
1665
|
-
|
|
1666
|
-
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context7) {
|
|
1667
|
-
while (1) {
|
|
1668
|
-
switch (_context7.prev = _context7.next) {
|
|
1669
|
-
case 0:
|
|
1670
|
-
intl = _ref2.intl, applicationContext = _ref2.applicationContext, productId = _ref2.productId, execQuery = _ref2.execQuery;
|
|
1671
|
-
canViewProducts = permissions$1.hasSomePermissions([permissions.ViewProducts], applicationContext.permissions);
|
|
1672
|
-
|
|
1673
|
-
if (canViewProducts) {
|
|
1674
|
-
_context7.next = 4;
|
|
1675
|
-
break;
|
|
1676
|
-
}
|
|
1677
|
-
|
|
1678
|
-
return _context7.abrupt("return", []);
|
|
1679
|
-
|
|
1680
|
-
case 4:
|
|
1681
|
-
_context7.next = 6;
|
|
1682
|
-
return execQuery(QuickAccessProductQuery, {
|
|
1683
|
-
productId: productId
|
|
1684
|
-
}, {
|
|
1685
|
-
target: constants.GRAPHQL_TARGETS.COMMERCETOOLS_PLATFORM
|
|
1686
|
-
});
|
|
1687
|
-
|
|
1688
|
-
case 6:
|
|
1689
|
-
data = _context7.sent;
|
|
1690
|
-
|
|
1691
|
-
if (!(data && data.product && data.product.masterData && data.product.masterData.staged && applicationContext.project)) {
|
|
1692
|
-
_context7.next = 10;
|
|
1693
|
-
break;
|
|
1694
|
-
}
|
|
1695
|
-
|
|
1696
|
-
projectKey = applicationContext.project.key;
|
|
1697
|
-
return _context7.abrupt("return", _mapInstanceProperty__default["default"](_context5 = data.product.masterData.staged.allVariants).call(_context5, function (variant) {
|
|
1698
|
-
var _context6;
|
|
1699
|
-
|
|
1700
|
-
return {
|
|
1701
|
-
id: _concatInstanceProperty__default["default"](_context6 = "go/product(".concat(productId, ")/variant(")).call(_context6, variant.id, ")"),
|
|
1702
|
-
text: formatVariantMessage(variant, intl),
|
|
1703
|
-
subCommands: createProductVariantSubCommands({
|
|
1704
|
-
intl: intl,
|
|
1705
|
-
applicationContext: applicationContext,
|
|
1706
|
-
productId: productId,
|
|
1707
|
-
variantId: variant.id
|
|
1708
|
-
}),
|
|
1709
|
-
action: {
|
|
1710
|
-
type: actionTypes.go,
|
|
1711
|
-
to: commonTags.oneLineTrim(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n /", "\n /products\n /", "\n /variants\n /", "\n "])), projectKey, productId, variant.id)
|
|
1712
|
-
}
|
|
1713
|
-
};
|
|
1714
|
-
}));
|
|
1715
|
-
|
|
1716
|
-
case 10:
|
|
1717
|
-
return _context7.abrupt("return", []);
|
|
1718
|
-
|
|
1719
|
-
case 11:
|
|
1720
|
-
case "end":
|
|
1721
|
-
return _context7.stop();
|
|
1722
|
-
}
|
|
1723
|
-
}
|
|
1724
|
-
}, _callee);
|
|
1725
|
-
}));
|
|
1726
|
-
|
|
1727
|
-
return function createProductVariantListSubCommands(_x) {
|
|
1728
|
-
return _ref3.apply(this, arguments);
|
|
1729
|
-
};
|
|
1730
|
-
}();
|
|
1731
|
-
|
|
1732
|
-
var createProductTabsSubCommands = function createProductTabsSubCommands(_ref4) {
|
|
1733
|
-
var intl = _ref4.intl,
|
|
1734
|
-
applicationContext = _ref4.applicationContext,
|
|
1735
|
-
productId = _ref4.productId;
|
|
1736
|
-
var canViewProducts = permissions$1.hasSomePermissions([permissions.ViewProducts], applicationContext.permissions);
|
|
1737
|
-
if (!canViewProducts || !applicationContext.project) return [];
|
|
1738
|
-
return [{
|
|
1739
|
-
id: "go/product(".concat(productId, ")/general"),
|
|
1740
|
-
text: intl.formatMessage(messages.openProductVariantGeneral),
|
|
1741
|
-
action: {
|
|
1742
|
-
type: actionTypes.go,
|
|
1743
|
-
to: commonTags.oneLineTrim(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n /", "\n /products\n /", "\n /general\n "])), applicationContext.project.key, productId)
|
|
1744
|
-
}
|
|
1745
|
-
}, {
|
|
1746
|
-
id: "go/product(".concat(productId, ")/variants"),
|
|
1747
|
-
text: intl.formatMessage(messages.openProductVariantList),
|
|
1748
|
-
action: {
|
|
1749
|
-
type: actionTypes.go,
|
|
1750
|
-
to: commonTags.oneLineTrim(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n /", "\n /products\n /", "\n /variants\n "])), applicationContext.project.key, productId)
|
|
1751
|
-
},
|
|
1752
|
-
subCommands: function subCommands(execQuery) {
|
|
1753
|
-
return createProductVariantListSubCommands({
|
|
1754
|
-
intl: intl,
|
|
1755
|
-
applicationContext: applicationContext,
|
|
1756
|
-
productId: productId,
|
|
1757
|
-
execQuery: execQuery
|
|
1758
|
-
});
|
|
1759
|
-
}
|
|
1760
|
-
}, {
|
|
1761
|
-
id: "go/product(".concat(productId, ")/search"),
|
|
1762
|
-
text: intl.formatMessage(messages.openProductVariantSearch),
|
|
1763
|
-
action: {
|
|
1764
|
-
type: actionTypes.go,
|
|
1765
|
-
to: commonTags.oneLineTrim(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n /", "\n /products\n /", "\n /search\n "])), applicationContext.project.key, productId)
|
|
1766
|
-
}
|
|
1767
|
-
}];
|
|
1768
|
-
};
|
|
1769
|
-
|
|
1770
|
-
var STORAGE_KEY = 'quickAccessHistoryEntries';
|
|
1771
|
-
var saveHistoryEntries = function saveHistoryEntries(historyEntries) {
|
|
1772
|
-
try {
|
|
1773
|
-
window.sessionStorage.setItem(STORAGE_KEY, _JSON$stringify__default["default"](historyEntries));
|
|
1774
|
-
return true;
|
|
1775
|
-
} catch (error) {
|
|
1776
|
-
return false;
|
|
1777
|
-
}
|
|
1778
|
-
};
|
|
1779
|
-
var loadHistoryEntries = function loadHistoryEntries() {
|
|
1780
|
-
try {
|
|
1781
|
-
var value = sessionStorage.getItem(STORAGE_KEY);
|
|
1782
|
-
return value ? JSON.parse(value) : [];
|
|
1783
|
-
} catch (error) {
|
|
1784
|
-
return [];
|
|
1785
|
-
}
|
|
1786
|
-
};
|
|
1787
|
-
|
|
1788
|
-
var _templateObject, _templateObject2;
|
|
1789
|
-
var QuickAccessQuery = { kind: "Document", definitions: [{ kind: "OperationDefinition", operation: "query", name: { kind: "Name", value: "QuickAccess" }, variableDefinitions: [{ kind: "VariableDefinition", variable: { kind: "Variable", name: { kind: "Name", value: "searchText" } }, type: { kind: "NonNullType", type: { kind: "NamedType", name: { kind: "Name", value: "String" } } }, directives: [] }, { kind: "VariableDefinition", variable: { kind: "Variable", name: { kind: "Name", value: "canViewProducts" } }, type: { kind: "NonNullType", type: { kind: "NamedType", name: { kind: "Name", value: "Boolean" } } }, directives: [] }, { kind: "VariableDefinition", variable: { kind: "Variable", name: { kind: "Name", value: "productsWhereClause" } }, type: { kind: "NamedType", name: { kind: "Name", value: "String" } }, directives: [] }, { kind: "VariableDefinition", variable: { kind: "Variable", name: { kind: "Name", value: "includeProductsByIds" } }, type: { kind: "NonNullType", type: { kind: "NamedType", name: { kind: "Name", value: "Boolean" } } }, directives: [] }], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", alias: { kind: "Name", value: "productsByIds" }, name: { kind: "Name", value: "products" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "where" }, value: { kind: "Variable", name: { kind: "Name", value: "productsWhereClause" } } }], directives: [{ kind: "Directive", name: { kind: "Name", value: "include" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "if" }, value: { kind: "Variable", name: { kind: "Name", value: "includeProductsByIds" } } }] }], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "results" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "masterData" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "staged" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "nameAllLocales" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "locale" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }] } }] } }] } }] } }, { kind: "Field", alias: { kind: "Name", value: "productById" }, name: { kind: "Name", value: "product" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "id" }, value: { kind: "Variable", name: { kind: "Name", value: "searchText" } } }], directives: [{ kind: "Directive", name: { kind: "Name", value: "include" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "if" }, value: { kind: "Variable", name: { kind: "Name", value: "canViewProducts" } } }] }], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "masterData" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "staged" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "nameAllLocales" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "locale" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }] } }] } }] } }, { kind: "Field", alias: { kind: "Name", value: "productByKey" }, name: { kind: "Name", value: "product" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "key" }, value: { kind: "Variable", name: { kind: "Name", value: "searchText" } } }], directives: [{ kind: "Directive", name: { kind: "Name", value: "include" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "if" }, value: { kind: "Variable", name: { kind: "Name", value: "canViewProducts" } } }] }], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "masterData" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "staged" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "nameAllLocales" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "locale" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }] } }] } }] } }, { kind: "Field", alias: { kind: "Name", value: "productByVariantSku" }, name: { kind: "Name", value: "product" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "sku" }, value: { kind: "Variable", name: { kind: "Name", value: "searchText" } } }], directives: [{ kind: "Directive", name: { kind: "Name", value: "include" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "if" }, value: { kind: "Variable", name: { kind: "Name", value: "canViewProducts" } } }] }], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "masterData" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "staged" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "nameAllLocales" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "locale" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "variant" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "sku" }, value: { kind: "Variable", name: { kind: "Name", value: "searchText" } } }], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "sku" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "key" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }] } }] } }] } }] } }, { kind: "Field", alias: { kind: "Name", value: "productByVariantKey" }, name: { kind: "Name", value: "product" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "variantKey" }, value: { kind: "Variable", name: { kind: "Name", value: "searchText" } } }], directives: [{ kind: "Directive", name: { kind: "Name", value: "include" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "if" }, value: { kind: "Variable", name: { kind: "Name", value: "canViewProducts" } } }] }], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "masterData" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "staged" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "nameAllLocales" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "locale" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "variant" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "key" }, value: { kind: "Variable", name: { kind: "Name", value: "searchText" } } }], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "sku" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "key" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }] } }] } }] } }] } }] } }], loc: { start: 0, end: 1407, source: { body: "query QuickAccess(\n $searchText: String!\n $canViewProducts: Boolean!\n $productsWhereClause: String\n $includeProductsByIds: Boolean!\n) {\n productsByIds: products(where: $productsWhereClause)\n @include(if: $includeProductsByIds) {\n results {\n id\n masterData {\n staged {\n nameAllLocales {\n locale\n value\n }\n }\n }\n }\n }\n\n productById: product(id: $searchText) @include(if: $canViewProducts) {\n id\n masterData {\n staged {\n nameAllLocales {\n locale\n value\n }\n }\n }\n }\n\n productByKey: product(key: $searchText) @include(if: $canViewProducts) {\n id\n masterData {\n staged {\n nameAllLocales {\n locale\n value\n }\n }\n }\n }\n\n productByVariantSku: product(sku: $searchText)\n @include(if: $canViewProducts) {\n id\n masterData {\n staged {\n nameAllLocales {\n locale\n value\n }\n variant(sku: $searchText) {\n sku\n key\n id\n }\n }\n }\n }\n\n productByVariantKey: product(variantKey: $searchText)\n @include(if: $canViewProducts) {\n id\n masterData {\n staged {\n nameAllLocales {\n locale\n value\n }\n variant(key: $searchText) {\n sku\n key\n id\n }\n }\n }\n }\n}\n", name: "GraphQL request", locationOffset: { line: 1, column: 1 } } } };
|
|
1790
|
-
|
|
1791
|
-
var searchProductIdsAction = function searchProductIdsAction(searchText, projectKey, dataLocale) {
|
|
1792
|
-
return sdk.actions.post({
|
|
1793
|
-
uri: "/".concat(projectKey, "/search/products"),
|
|
1794
|
-
mcApiProxyTarget: constants.MC_API_PROXY_TARGETS.PIM_SEARCH,
|
|
1795
|
-
payload: {
|
|
1796
|
-
query: {
|
|
1797
|
-
fullText: {
|
|
1798
|
-
field: 'name',
|
|
1799
|
-
language: dataLocale,
|
|
1800
|
-
value: searchText
|
|
1801
|
-
}
|
|
1802
|
-
},
|
|
1803
|
-
sort: [{
|
|
1804
|
-
field: 'name',
|
|
1805
|
-
language: dataLocale,
|
|
1806
|
-
order: 'desc'
|
|
1807
|
-
}],
|
|
1808
|
-
limit: 9,
|
|
1809
|
-
offset: 0
|
|
1810
|
-
}
|
|
1811
|
-
});
|
|
1812
|
-
};
|
|
1813
|
-
|
|
1814
|
-
var pimIndexerStatusAction = function pimIndexerStatusAction(projectKey, dataLocale) {
|
|
1815
|
-
return (// TODO this should be sdkActions.head()
|
|
1816
|
-
// and then we should check whether the response code is
|
|
1817
|
-
// - 200 meaning the project is indexed
|
|
1818
|
-
// - 404 meaning the project is not indexed
|
|
1819
|
-
//
|
|
1820
|
-
// But there is a problem in tne node-sdk client as it tries to
|
|
1821
|
-
// .json()-parse the response to HEAD requests which results in an
|
|
1822
|
-
// error, so we send a regular request for now and limit to no results
|
|
1823
|
-
// instead to keep the payload minimal
|
|
1824
|
-
sdk.actions.post({
|
|
1825
|
-
uri: "/".concat(projectKey, "/search/products"),
|
|
1826
|
-
mcApiProxyTarget: constants.MC_API_PROXY_TARGETS.PIM_SEARCH,
|
|
1827
|
-
payload: {
|
|
1828
|
-
query: {
|
|
1829
|
-
fullText: {
|
|
1830
|
-
field: 'name',
|
|
1831
|
-
language: dataLocale,
|
|
1832
|
-
value: 'availability-check'
|
|
1833
|
-
}
|
|
1834
|
-
},
|
|
1835
|
-
limit: 0,
|
|
1836
|
-
offset: 0
|
|
1837
|
-
}
|
|
1838
|
-
})
|
|
1839
|
-
);
|
|
1840
|
-
};
|
|
1841
|
-
|
|
1842
|
-
var QuickAccess = function QuickAccess(props) {
|
|
1843
|
-
var _useState = react$1.useState(loadHistoryEntries()),
|
|
1844
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
1845
|
-
historyEntries = _useState2[0],
|
|
1846
|
-
setHistoryEntries = _useState2[1];
|
|
1847
|
-
|
|
1848
|
-
var handleHistoryEntriesChange = react$1.useCallback(function (entries) {
|
|
1849
|
-
// Keep the history in sync with the session storage
|
|
1850
|
-
saveHistoryEntries(entries);
|
|
1851
|
-
setHistoryEntries(entries);
|
|
1852
|
-
}, []);
|
|
1853
|
-
var history = reactRouterDom.useHistory();
|
|
1854
|
-
var apolloClient = react$2.useApolloClient();
|
|
1855
|
-
var intl = reactIntl.useIntl();
|
|
1856
|
-
|
|
1857
|
-
var _useFeatureToggles = reactBroadcast.useFeatureToggles({
|
|
1858
|
-
pimSearch: true,
|
|
1859
|
-
customApplications: true,
|
|
1860
|
-
canViewDashboard: true
|
|
1861
|
-
}),
|
|
1862
|
-
_useFeatureToggles2 = _slicedToArray(_useFeatureToggles, 3),
|
|
1863
|
-
isPimSearchEnabled = _useFeatureToggles2[0],
|
|
1864
|
-
isCustomApplicationsEnabled = _useFeatureToggles2[1],
|
|
1865
|
-
isCanViewDashboardEnabled = _useFeatureToggles2[2];
|
|
1866
|
-
|
|
1867
|
-
var applicationContext = applicationShellConnectors.useApplicationContext(); // Destructure functions from props to reference them in the hook dependency list
|
|
1868
|
-
|
|
1869
|
-
var onPimIndexerStateChangeFromParent = props.onPimIndexerStateChange;
|
|
1870
|
-
var dispatchFetchProductIds = sdk.useAsyncDispatch();
|
|
1871
|
-
var fetchPimSearchProductIds = react$1.useCallback( /*#__PURE__*/function () {
|
|
1872
|
-
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(searchText) {
|
|
1873
|
-
var _context, result;
|
|
1874
|
-
|
|
1875
|
-
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context2) {
|
|
1876
|
-
while (1) {
|
|
1877
|
-
switch (_context2.prev = _context2.next) {
|
|
1878
|
-
case 0:
|
|
1879
|
-
if (!(applicationContext.project && applicationContext.dataLocale)) {
|
|
1880
|
-
_context2.next = 5;
|
|
1881
|
-
break;
|
|
1882
|
-
}
|
|
1883
|
-
|
|
1884
|
-
_context2.next = 3;
|
|
1885
|
-
return dispatchFetchProductIds(searchProductIdsAction(searchText, applicationContext.project.key, applicationContext.dataLocale));
|
|
1886
|
-
|
|
1887
|
-
case 3:
|
|
1888
|
-
result = _context2.sent;
|
|
1889
|
-
return _context2.abrupt("return", result && result.hits ? _mapInstanceProperty__default["default"](_context = result.hits).call(_context, function (hit) {
|
|
1890
|
-
return hit.id;
|
|
1891
|
-
}) : []);
|
|
1892
|
-
|
|
1893
|
-
case 5:
|
|
1894
|
-
return _context2.abrupt("return", []);
|
|
1895
|
-
|
|
1896
|
-
case 6:
|
|
1897
|
-
case "end":
|
|
1898
|
-
return _context2.stop();
|
|
1899
|
-
}
|
|
1900
|
-
}
|
|
1901
|
-
}, _callee);
|
|
1902
|
-
}));
|
|
1903
|
-
|
|
1904
|
-
return function (_x) {
|
|
1905
|
-
return _ref.apply(this, arguments);
|
|
1906
|
-
};
|
|
1907
|
-
}(), [applicationContext.dataLocale, applicationContext.project, dispatchFetchProductIds]);
|
|
1908
|
-
var dispatchFetchPimIndexerStatus = sdk.useAsyncDispatch();
|
|
1909
|
-
var fetchPimIndexerStatus = react$1.useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee2() {
|
|
1910
|
-
return _regeneratorRuntime__default["default"].wrap(function _callee2$(_context3) {
|
|
1911
|
-
while (1) {
|
|
1912
|
-
switch (_context3.prev = _context3.next) {
|
|
1913
|
-
case 0:
|
|
1914
|
-
if (!(applicationContext.project && applicationContext.dataLocale)) {
|
|
1915
|
-
_context3.next = 10;
|
|
1916
|
-
break;
|
|
1917
|
-
}
|
|
1918
|
-
|
|
1919
|
-
_context3.prev = 1;
|
|
1920
|
-
dispatchFetchPimIndexerStatus(pimIndexerStatusAction(applicationContext.project.key, applicationContext.dataLocale));
|
|
1921
|
-
return _context3.abrupt("return", dist_commercetoolsFrontendApplicationShell.pimIndexerStates.INDEXED);
|
|
1922
|
-
|
|
1923
|
-
case 6:
|
|
1924
|
-
_context3.prev = 6;
|
|
1925
|
-
_context3.t0 = _context3["catch"](1);
|
|
1926
|
-
// eslint-disable-next-line no-console
|
|
1927
|
-
if (process.env.NODE_ENV !== 'production') console.error(_context3.t0); // project is not using pim-indexer when response error code is 404,
|
|
1928
|
-
// but we treat all errors as non-indexed as a safe guard, so we're
|
|
1929
|
-
// not checking the response error code at all
|
|
1930
|
-
|
|
1931
|
-
return _context3.abrupt("return", dist_commercetoolsFrontendApplicationShell.pimIndexerStates.NOT_INDEXED);
|
|
1932
|
-
|
|
1933
|
-
case 10:
|
|
1934
|
-
return _context3.abrupt("return", dist_commercetoolsFrontendApplicationShell.pimIndexerStates.NOT_INDEXED);
|
|
1935
|
-
|
|
1936
|
-
case 11:
|
|
1937
|
-
case "end":
|
|
1938
|
-
return _context3.stop();
|
|
1939
|
-
}
|
|
1940
|
-
}
|
|
1941
|
-
}, _callee2, null, [[1, 6]]);
|
|
1942
|
-
})), [applicationContext.dataLocale, applicationContext.project, dispatchFetchPimIndexerStatus]);
|
|
1943
|
-
var getProjectIndexStatus = react$1.useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee3() {
|
|
1944
|
-
var canViewProducts;
|
|
1945
|
-
return _regeneratorRuntime__default["default"].wrap(function _callee3$(_context4) {
|
|
1946
|
-
while (1) {
|
|
1947
|
-
switch (_context4.prev = _context4.next) {
|
|
1948
|
-
case 0:
|
|
1949
|
-
if (applicationContext.project) {
|
|
1950
|
-
_context4.next = 2;
|
|
1951
|
-
break;
|
|
1952
|
-
}
|
|
1953
|
-
|
|
1954
|
-
return _context4.abrupt("return", dist_commercetoolsFrontendApplicationShell.pimIndexerStates.NOT_INDEXED);
|
|
1955
|
-
|
|
1956
|
-
case 2:
|
|
1957
|
-
canViewProducts = permissions$1.hasSomePermissions([permissions.ViewProducts], applicationContext.permissions); // skip checking when user can't view products anyways
|
|
1958
|
-
|
|
1959
|
-
if (canViewProducts) {
|
|
1960
|
-
_context4.next = 5;
|
|
1961
|
-
break;
|
|
1962
|
-
}
|
|
1963
|
-
|
|
1964
|
-
return _context4.abrupt("return", dist_commercetoolsFrontendApplicationShell.pimIndexerStates.NOT_INDEXED);
|
|
1965
|
-
|
|
1966
|
-
case 5:
|
|
1967
|
-
_context4.next = 7;
|
|
1968
|
-
return fetchPimIndexerStatus();
|
|
1969
|
-
|
|
1970
|
-
case 7:
|
|
1971
|
-
return _context4.abrupt("return", _context4.sent);
|
|
1972
|
-
|
|
1973
|
-
case 8:
|
|
1974
|
-
case "end":
|
|
1975
|
-
return _context4.stop();
|
|
1976
|
-
}
|
|
1977
|
-
}
|
|
1978
|
-
}, _callee3);
|
|
1979
|
-
})), [applicationContext.permissions, applicationContext.project, fetchPimIndexerStatus]);
|
|
1980
|
-
react$1.useEffect(function () {
|
|
1981
|
-
if (props.pimIndexerState === dist_commercetoolsFrontendApplicationShell.pimIndexerStates.UNCHECKED) {
|
|
1982
|
-
getProjectIndexStatus().then(function (status) {
|
|
1983
|
-
onPimIndexerStateChangeFromParent(status);
|
|
1984
|
-
});
|
|
1985
|
-
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1986
|
-
|
|
1987
|
-
}, []); // <-- run only once, when component mounts
|
|
1988
|
-
|
|
1989
|
-
var execQuery = react$1.useCallback(function (Query, variables, context) {
|
|
1990
|
-
return apolloClient.query({
|
|
1991
|
-
query: Query,
|
|
1992
|
-
errorPolicy: 'ignore',
|
|
1993
|
-
variables: variables,
|
|
1994
|
-
context: context
|
|
1995
|
-
}).then(function (response) {
|
|
1996
|
-
return response.data;
|
|
1997
|
-
});
|
|
1998
|
-
}, [apolloClient]);
|
|
1999
|
-
var getNextCommands = react$1.useCallback( /*#__PURE__*/function () {
|
|
2000
|
-
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee4(command) {
|
|
2001
|
-
return _regeneratorRuntime__default["default"].wrap(function _callee4$(_context5) {
|
|
2002
|
-
while (1) {
|
|
2003
|
-
switch (_context5.prev = _context5.next) {
|
|
2004
|
-
case 0:
|
|
2005
|
-
if (command.subCommands) {
|
|
2006
|
-
_context5.next = 2;
|
|
2007
|
-
break;
|
|
2008
|
-
}
|
|
2009
|
-
|
|
2010
|
-
return _context5.abrupt("return", []);
|
|
2011
|
-
|
|
2012
|
-
case 2:
|
|
2013
|
-
if (!_Array$isArray__default["default"](command.subCommands)) {
|
|
2014
|
-
_context5.next = 4;
|
|
2015
|
-
break;
|
|
2016
|
-
}
|
|
2017
|
-
|
|
2018
|
-
return _context5.abrupt("return", command.subCommands);
|
|
2019
|
-
|
|
2020
|
-
case 4:
|
|
2021
|
-
_context5.next = 6;
|
|
2022
|
-
return command.subCommands(execQuery);
|
|
2023
|
-
|
|
2024
|
-
case 6:
|
|
2025
|
-
return _context5.abrupt("return", _context5.sent);
|
|
2026
|
-
|
|
2027
|
-
case 7:
|
|
2028
|
-
case "end":
|
|
2029
|
-
return _context5.stop();
|
|
2030
|
-
}
|
|
2031
|
-
}
|
|
2032
|
-
}, _callee4);
|
|
2033
|
-
}));
|
|
2034
|
-
|
|
2035
|
-
return function (_x2) {
|
|
2036
|
-
return _ref4.apply(this, arguments);
|
|
2037
|
-
};
|
|
2038
|
-
}(), [execQuery]);
|
|
2039
|
-
var getProjectCommands = react$1.useCallback( /*#__PURE__*/function () {
|
|
2040
|
-
var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee5(searchText) {
|
|
2041
|
-
var idsOfProductsMatchingSearchText, canViewProducts, data, commands, _context6, productId, variantId, variantKey, _context7, _productId, _variantId, _context8, _productId2, _context9, _context11, _productId3;
|
|
2042
|
-
|
|
2043
|
-
return _regeneratorRuntime__default["default"].wrap(function _callee5$(_context12) {
|
|
2044
|
-
while (1) {
|
|
2045
|
-
switch (_context12.prev = _context12.next) {
|
|
2046
|
-
case 0:
|
|
2047
|
-
if (!(props.pimIndexerState === dist_commercetoolsFrontendApplicationShell.pimIndexerStates.INDEXED)) {
|
|
2048
|
-
_context12.next = 6;
|
|
2049
|
-
break;
|
|
2050
|
-
}
|
|
2051
|
-
|
|
2052
|
-
_context12.next = 3;
|
|
2053
|
-
return fetchPimSearchProductIds(searchText);
|
|
2054
|
-
|
|
2055
|
-
case 3:
|
|
2056
|
-
_context12.t0 = _context12.sent;
|
|
2057
|
-
_context12.next = 7;
|
|
2058
|
-
break;
|
|
2059
|
-
|
|
2060
|
-
case 6:
|
|
2061
|
-
_context12.t0 = [];
|
|
2062
|
-
|
|
2063
|
-
case 7:
|
|
2064
|
-
idsOfProductsMatchingSearchText = _context12.t0;
|
|
2065
|
-
canViewProducts = permissions$1.hasSomePermissions([permissions.ViewProducts], applicationContext.permissions);
|
|
2066
|
-
_context12.next = 11;
|
|
2067
|
-
return execQuery(QuickAccessQuery, {
|
|
2068
|
-
searchText: sanitize(searchText),
|
|
2069
|
-
// Pass conditional arguments to disable some of the queries
|
|
2070
|
-
canViewProducts: canViewProducts,
|
|
2071
|
-
productsWhereClause: "id in (".concat(_mapInstanceProperty__default["default"](idsOfProductsMatchingSearchText).call(idsOfProductsMatchingSearchText, function (id) {
|
|
2072
|
-
return _JSON$stringify__default["default"](id);
|
|
2073
|
-
}).join(', '), ")"),
|
|
2074
|
-
includeProductsByIds: Boolean(canViewProducts && idsOfProductsMatchingSearchText.length > 0)
|
|
2075
|
-
}, {
|
|
2076
|
-
target: constants.GRAPHQL_TARGETS.COMMERCETOOLS_PLATFORM
|
|
2077
|
-
});
|
|
2078
|
-
|
|
2079
|
-
case 11:
|
|
2080
|
-
data = _context12.sent;
|
|
2081
|
-
commands = [];
|
|
2082
|
-
|
|
2083
|
-
if (data && data.productByVariantKey && data.productByVariantKey.masterData && data.productByVariantKey.masterData.staged && data.productByVariantKey.masterData.staged.variant && applicationContext.project && applicationContext.dataLocale) {
|
|
2084
|
-
productId = data.productByVariantKey.id;
|
|
2085
|
-
variantId = data.productByVariantKey.masterData.staged.variant.id;
|
|
2086
|
-
variantKey = data.productByVariantKey.masterData.staged.variant.key;
|
|
2087
|
-
commands.push({
|
|
2088
|
-
id: _concatInstanceProperty__default["default"](_context6 = "go/product-variant-by-key/product(".concat(productId, "/variant(")).call(_context6, variantId, ")"),
|
|
2089
|
-
text: intl.formatMessage(messages.showProductVariant, {
|
|
2090
|
-
variantName: translate(data.productByVariantKey.masterData.staged.nameAllLocales, applicationContext.dataLocale)
|
|
2091
|
-
}),
|
|
2092
|
-
keywords: variantKey ? [variantKey] : undefined,
|
|
2093
|
-
action: {
|
|
2094
|
-
type: actionTypes.go,
|
|
2095
|
-
to: commonTags.oneLineTrim(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n /", "\n /products\n /", "\n /variants\n /", "\n "])), applicationContext.project.key, productId, variantId)
|
|
2096
|
-
},
|
|
2097
|
-
subCommands: createProductVariantSubCommands({
|
|
2098
|
-
intl: intl,
|
|
2099
|
-
applicationContext: applicationContext,
|
|
2100
|
-
productId: productId,
|
|
2101
|
-
variantId: variantId
|
|
2102
|
-
})
|
|
2103
|
-
});
|
|
2104
|
-
}
|
|
2105
|
-
|
|
2106
|
-
if (data && data.productByVariantSku && data.productByVariantSku.masterData && data.productByVariantSku.masterData.staged && data.productByVariantSku.masterData.staged.variant && applicationContext.project && applicationContext.dataLocale) {
|
|
2107
|
-
_productId = data.productByVariantSku.id;
|
|
2108
|
-
_variantId = data.productByVariantSku.masterData.staged.variant.id;
|
|
2109
|
-
commands.push({
|
|
2110
|
-
id: _concatInstanceProperty__default["default"](_context7 = "go/product-variant-by-sku/product(".concat(_productId, ")/variant(")).call(_context7, _variantId, ")"),
|
|
2111
|
-
text: intl.formatMessage(messages.showProductVariant, {
|
|
2112
|
-
variantName: data.productByVariantSku.masterData.staged.variant.sku
|
|
2113
|
-
}),
|
|
2114
|
-
action: {
|
|
2115
|
-
type: actionTypes.go,
|
|
2116
|
-
to: commonTags.oneLineTrim(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n /", "\n /products\n /", "\n /variants\n /", "\n "])), applicationContext.project.key, _productId, _variantId)
|
|
2117
|
-
},
|
|
2118
|
-
subCommands: createProductVariantSubCommands({
|
|
2119
|
-
intl: intl,
|
|
2120
|
-
applicationContext: applicationContext,
|
|
2121
|
-
productId: _productId,
|
|
2122
|
-
variantId: _variantId
|
|
2123
|
-
})
|
|
2124
|
-
});
|
|
2125
|
-
}
|
|
2126
|
-
|
|
2127
|
-
if (data && data.productById && data.productById.masterData && data.productById.masterData.staged && data.productById.masterData.staged.nameAllLocales && applicationContext.project && applicationContext.dataLocale) {
|
|
2128
|
-
_productId2 = data.productById.id;
|
|
2129
|
-
commands.push({
|
|
2130
|
-
id: "go/product-by-id/product(".concat(_productId2, ")"),
|
|
2131
|
-
text: intl.formatMessage(messages.showProduct, {
|
|
2132
|
-
productName: translate(data.productById.masterData.staged.nameAllLocales, applicationContext.dataLocale)
|
|
2133
|
-
}),
|
|
2134
|
-
keywords: [_productId2],
|
|
2135
|
-
action: {
|
|
2136
|
-
type: actionTypes.go,
|
|
2137
|
-
to: _concatInstanceProperty__default["default"](_context8 = "/".concat(applicationContext.project.key, "/products/")).call(_context8, _productId2)
|
|
2138
|
-
},
|
|
2139
|
-
subCommands: createProductTabsSubCommands({
|
|
2140
|
-
intl: intl,
|
|
2141
|
-
applicationContext: applicationContext,
|
|
2142
|
-
productId: _productId2
|
|
2143
|
-
})
|
|
2144
|
-
});
|
|
2145
|
-
}
|
|
2146
|
-
|
|
2147
|
-
if (data && data.productsByIds && data.productsByIds.results) {
|
|
2148
|
-
_forEachInstanceProperty__default["default"](_context9 = data.productsByIds.results).call(_context9, function (product) {
|
|
2149
|
-
if (product.masterData.staged && applicationContext.project && applicationContext.dataLocale) {
|
|
2150
|
-
var _context10;
|
|
2151
|
-
|
|
2152
|
-
commands.push({
|
|
2153
|
-
id: "go/product-by-search-text/product(".concat(product.id, ")"),
|
|
2154
|
-
text: intl.formatMessage(messages.showProduct, {
|
|
2155
|
-
productName: translate(product.masterData.staged.nameAllLocales, applicationContext.dataLocale)
|
|
2156
|
-
}),
|
|
2157
|
-
keywords: [product.id],
|
|
2158
|
-
action: {
|
|
2159
|
-
type: actionTypes.go,
|
|
2160
|
-
to: _concatInstanceProperty__default["default"](_context10 = "/".concat(applicationContext.project.key, "/products/")).call(_context10, product.id)
|
|
2161
|
-
},
|
|
2162
|
-
subCommands: createProductTabsSubCommands({
|
|
2163
|
-
intl: intl,
|
|
2164
|
-
applicationContext: applicationContext,
|
|
2165
|
-
productId: product.id
|
|
2166
|
-
})
|
|
2167
|
-
});
|
|
2168
|
-
}
|
|
2169
|
-
});
|
|
2170
|
-
}
|
|
2171
|
-
|
|
2172
|
-
if (data && data.productByKey && applicationContext.project && applicationContext.dataLocale) {
|
|
2173
|
-
_productId3 = data.productByKey.id;
|
|
2174
|
-
commands.push({
|
|
2175
|
-
id: "go/product-by-key/product(".concat(_productId3, ")"),
|
|
2176
|
-
text: intl.formatMessage(messages.showProduct, {
|
|
2177
|
-
productName: searchText
|
|
2178
|
-
}),
|
|
2179
|
-
action: {
|
|
2180
|
-
type: actionTypes.go,
|
|
2181
|
-
to: _concatInstanceProperty__default["default"](_context11 = "/".concat(applicationContext.project.key, "/products/")).call(_context11, _productId3)
|
|
2182
|
-
},
|
|
2183
|
-
subCommands: createProductTabsSubCommands({
|
|
2184
|
-
intl: intl,
|
|
2185
|
-
applicationContext: applicationContext,
|
|
2186
|
-
productId: _productId3
|
|
2187
|
-
})
|
|
2188
|
-
});
|
|
2189
|
-
}
|
|
2190
|
-
|
|
2191
|
-
return _context12.abrupt("return", commands);
|
|
2192
|
-
|
|
2193
|
-
case 19:
|
|
2194
|
-
case "end":
|
|
2195
|
-
return _context12.stop();
|
|
2196
|
-
}
|
|
2197
|
-
}
|
|
2198
|
-
}, _callee5);
|
|
2199
|
-
}));
|
|
2200
|
-
|
|
2201
|
-
return function (_x3) {
|
|
2202
|
-
return _ref5.apply(this, arguments);
|
|
2203
|
-
};
|
|
2204
|
-
}(), [applicationContext, execQuery, fetchPimSearchProductIds, intl, props.pimIndexerState]);
|
|
2205
|
-
var debouncedGetProjectCommands = debounce__default["default"](getProjectCommands, 200, {
|
|
2206
|
-
cancelObj: 'canceled'
|
|
2207
|
-
});
|
|
2208
|
-
var search = react$1.useCallback( /*#__PURE__*/function () {
|
|
2209
|
-
var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee6(searchText) {
|
|
2210
|
-
var generalCommands, _context13, projectCommands, allCommands;
|
|
2211
|
-
|
|
2212
|
-
return _regeneratorRuntime__default["default"].wrap(function _callee6$(_context14) {
|
|
2213
|
-
while (1) {
|
|
2214
|
-
switch (_context14.prev = _context14.next) {
|
|
2215
|
-
case 0:
|
|
2216
|
-
generalCommands = createCommands({
|
|
2217
|
-
applicationContext: applicationContext,
|
|
2218
|
-
changeProjectDataLocale: props.onChangeProjectDataLocale,
|
|
2219
|
-
intl: intl,
|
|
2220
|
-
featureToggles: {
|
|
2221
|
-
pimSearch: isPimSearchEnabled,
|
|
2222
|
-
customApplications: isCustomApplicationsEnabled,
|
|
2223
|
-
canViewDashboard: isCanViewDashboardEnabled
|
|
2224
|
-
}
|
|
2225
|
-
});
|
|
2226
|
-
|
|
2227
|
-
if (applicationContext.project) {
|
|
2228
|
-
_context14.next = 3;
|
|
2229
|
-
break;
|
|
2230
|
-
}
|
|
2231
|
-
|
|
2232
|
-
return _context14.abrupt("return", generalCommands);
|
|
2233
|
-
|
|
2234
|
-
case 3:
|
|
2235
|
-
if (!(_trimInstanceProperty__default["default"](searchText).call(searchText).length < 3)) {
|
|
2236
|
-
_context14.next = 5;
|
|
2237
|
-
break;
|
|
2238
|
-
}
|
|
2239
|
-
|
|
2240
|
-
return _context14.abrupt("return", generalCommands);
|
|
2241
|
-
|
|
2242
|
-
case 5:
|
|
2243
|
-
_context14.prev = 5;
|
|
2244
|
-
_context14.next = 8;
|
|
2245
|
-
return debouncedGetProjectCommands(searchText);
|
|
2246
|
-
|
|
2247
|
-
case 8:
|
|
2248
|
-
projectCommands = _context14.sent;
|
|
2249
|
-
allCommands = _concatInstanceProperty__default["default"](_context13 = []).call(_context13, _toConsumableArray(generalCommands), _toConsumableArray(projectCommands));
|
|
2250
|
-
_context14.next = 12;
|
|
2251
|
-
return flattenCommands(allCommands, execQuery);
|
|
2252
|
-
|
|
2253
|
-
case 12:
|
|
2254
|
-
return _context14.abrupt("return", _context14.sent);
|
|
2255
|
-
|
|
2256
|
-
case 15:
|
|
2257
|
-
_context14.prev = 15;
|
|
2258
|
-
_context14.t0 = _context14["catch"](5);
|
|
2259
|
-
|
|
2260
|
-
if (!(_context14.t0 === 'canceled')) {
|
|
2261
|
-
_context14.next = 19;
|
|
2262
|
-
break;
|
|
2263
|
-
}
|
|
2264
|
-
|
|
2265
|
-
return _context14.abrupt("return", generalCommands);
|
|
2266
|
-
|
|
2267
|
-
case 19:
|
|
2268
|
-
throw _context14.t0;
|
|
2269
|
-
|
|
2270
|
-
case 20:
|
|
2271
|
-
case "end":
|
|
2272
|
-
return _context14.stop();
|
|
2273
|
-
}
|
|
2274
|
-
}
|
|
2275
|
-
}, _callee6, null, [[5, 15]]);
|
|
2276
|
-
}));
|
|
2277
|
-
|
|
2278
|
-
return function (_x4) {
|
|
2279
|
-
return _ref6.apply(this, arguments);
|
|
2280
|
-
};
|
|
2281
|
-
}(), [applicationContext, debouncedGetProjectCommands, execQuery, intl, isCanViewDashboardEnabled, isCustomApplicationsEnabled, isPimSearchEnabled, props.onChangeProjectDataLocale]);
|
|
2282
|
-
var executeCommand = react$1.useCallback(function (command, meta) {
|
|
2283
|
-
var _context15;
|
|
2284
|
-
|
|
2285
|
-
if (typeof command.action === 'function') {
|
|
2286
|
-
// Idea: We could handle these errors and set them on status bar of Butler
|
|
2287
|
-
// We can also handle sync/async commands by checking command.action.then
|
|
2288
|
-
command.action();
|
|
2289
|
-
return;
|
|
2290
|
-
} // open in new window
|
|
2291
|
-
// and always open other pages in a new window
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
if (meta.openInNewTab || !_startsWithInstanceProperty__default["default"](_context15 = command.action.to).call(_context15, '/')) {
|
|
2295
|
-
// eslint-disable-next-line no-restricted-globals
|
|
2296
|
-
open(command.action.to, '_blank');
|
|
2297
|
-
} else if (applicationContext.environment.useFullRedirectsForLinks) {
|
|
2298
|
-
applicationEntryPoint.location.replace(command.action.to);
|
|
2299
|
-
} else {
|
|
2300
|
-
history.push(command.action.to);
|
|
2301
|
-
}
|
|
2302
|
-
}, [applicationContext.environment.useFullRedirectsForLinks, history]);
|
|
2303
|
-
return jsxRuntime.jsx(ButlerWithAnimation, {
|
|
2304
|
-
historyEntries: historyEntries,
|
|
2305
|
-
onHistoryEntriesChange: handleHistoryEntriesChange,
|
|
2306
|
-
search: search,
|
|
2307
|
-
executeCommand: executeCommand,
|
|
2308
|
-
onClose: props.onClose,
|
|
2309
|
-
getNextCommands: getNextCommands
|
|
2310
|
-
});
|
|
2311
|
-
};
|
|
2312
|
-
|
|
2313
|
-
QuickAccess.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
2314
|
-
pimIndexerState: _pt__default["default"].any.isRequired,
|
|
2315
|
-
onPimIndexerStateChange: _pt__default["default"].func.isRequired,
|
|
2316
|
-
onClose: _pt__default["default"].func.isRequired,
|
|
2317
|
-
onChangeProjectDataLocale: _pt__default["default"].func
|
|
2318
|
-
} : {};
|
|
2319
|
-
QuickAccess.displayName = 'QuickAccess';
|
|
2320
|
-
|
|
2321
|
-
exports["default"] = QuickAccess;
|