@projectcor/maia-components 2.50.1-0 → 2.50.1-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/lib/components/atoms/MAIAInput/MAIAInput.js +110 -93
- package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +80 -2
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +24 -24
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.spec.js +154 -2
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +3 -3
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +75 -7
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +4 -3
- package/lib/dev/Providers.js +1 -1
- package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.spec.js +257 -0
- package/lib/hooks/useFrequentlyUsedActions.js +3 -2
- package/lib/hooks/useFrequentlyUsedActions.spec.js +159 -1
- package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +66 -1
- package/lib/utils/hoursPlannerQuickActionType.js +43 -1
- package/lib/utils/hoursPlannerQuickActionType.spec.js +62 -2
- package/package.json +1 -1
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
1
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
3
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
4
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
5
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
6
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
7
|
import React from 'react';
|
|
6
|
-
import { fireEvent, renderWithProviders, screen } from '../../../test/test-utils';
|
|
8
|
+
import { fireEvent, renderWithProviders, screen, waitFor } from '../../../test/test-utils';
|
|
7
9
|
import { GlobalContextTestProvider } from '../../../test/global-context';
|
|
8
10
|
import { MAIAInput } from './MAIAInput';
|
|
9
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -306,6 +308,82 @@ describe('MAIAInput', function () {
|
|
|
306
308
|
expect(screen.getByText('chat.plusMenuAttach')).toBeInTheDocument();
|
|
307
309
|
expect(screen.getByText('chat.searchWeb')).toBeInTheDocument();
|
|
308
310
|
});
|
|
311
|
+
it('keeps the plus menu open on inside clicks and closes it on outside clicks', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
312
|
+
var plusButton;
|
|
313
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
314
|
+
while (1) switch (_context.prev = _context.next) {
|
|
315
|
+
case 0:
|
|
316
|
+
renderWithProviders(/*#__PURE__*/_jsx(GlobalContextTestProvider, {
|
|
317
|
+
children: /*#__PURE__*/_jsx(MAIAInput, {
|
|
318
|
+
onSendMessage: jest.fn()
|
|
319
|
+
})
|
|
320
|
+
}));
|
|
321
|
+
plusButton = screen.getByRole('button', {
|
|
322
|
+
name: 'chat.openPlusMenuAria'
|
|
323
|
+
});
|
|
324
|
+
fireEvent.click(plusButton);
|
|
325
|
+
fireEvent.mouseDown(screen.getByText('chat.searchWeb'));
|
|
326
|
+
fireEvent.mouseDown(plusButton);
|
|
327
|
+
expect(screen.getByText('chat.plusMenuAttach')).toBeInTheDocument();
|
|
328
|
+
fireEvent.mouseDown(document.body);
|
|
329
|
+
_context.next = 1;
|
|
330
|
+
return waitFor(function () {
|
|
331
|
+
return expect(screen.queryByText('chat.plusMenuAttach')).not.toBeInTheDocument();
|
|
332
|
+
});
|
|
333
|
+
case 1:
|
|
334
|
+
case "end":
|
|
335
|
+
return _context.stop();
|
|
336
|
+
}
|
|
337
|
+
}, _callee);
|
|
338
|
+
})));
|
|
339
|
+
it('closes the skills catalog and the mention popover when opening the plus menu', function () {
|
|
340
|
+
mentionPopoverState.close.mockClear();
|
|
341
|
+
renderWithProviders(/*#__PURE__*/_jsx(GlobalContextTestProvider, {
|
|
342
|
+
children: /*#__PURE__*/_jsx(MAIAInput, {
|
|
343
|
+
onSendMessage: jest.fn()
|
|
344
|
+
})
|
|
345
|
+
}));
|
|
346
|
+
fireEvent.click(screen.getByRole('button', {
|
|
347
|
+
name: 'mySkills.dropdownButton'
|
|
348
|
+
}));
|
|
349
|
+
expect(screen.getByRole('button', {
|
|
350
|
+
name: /#Resumir/
|
|
351
|
+
})).toBeInTheDocument();
|
|
352
|
+
fireEvent.click(screen.getByRole('button', {
|
|
353
|
+
name: 'chat.openPlusMenuAria'
|
|
354
|
+
}));
|
|
355
|
+
expect(screen.queryByRole('button', {
|
|
356
|
+
name: /#Resumir/
|
|
357
|
+
})).not.toBeInTheDocument();
|
|
358
|
+
expect(mentionPopoverState.close).toHaveBeenCalledTimes(1);
|
|
359
|
+
expect(screen.getByText('chat.plusMenuAttach')).toBeInTheDocument();
|
|
360
|
+
});
|
|
361
|
+
it('closes the slash command menu when opening the plus menu', function () {
|
|
362
|
+
renderWithProviders(/*#__PURE__*/_jsx(GlobalContextTestProvider, {
|
|
363
|
+
value: {
|
|
364
|
+
agent: {
|
|
365
|
+
id: '1',
|
|
366
|
+
name: 'MAIA',
|
|
367
|
+
type: 'orchestrator',
|
|
368
|
+
entity: 'global'
|
|
369
|
+
}
|
|
370
|
+
},
|
|
371
|
+
children: /*#__PURE__*/_jsx(MAIAInput, {
|
|
372
|
+
onSendMessage: jest.fn()
|
|
373
|
+
})
|
|
374
|
+
}));
|
|
375
|
+
fireEvent.change(screen.getByLabelText('maia-editor'), {
|
|
376
|
+
target: {
|
|
377
|
+
value: '/res'
|
|
378
|
+
}
|
|
379
|
+
});
|
|
380
|
+
fireEvent.click(screen.getByRole('button', {
|
|
381
|
+
name: 'chat.openPlusMenuAria'
|
|
382
|
+
}));
|
|
383
|
+
expect(screen.queryByRole('listbox', {
|
|
384
|
+
name: 'slash-commands'
|
|
385
|
+
})).not.toBeInTheDocument();
|
|
386
|
+
});
|
|
309
387
|
it('opens the skills catalog and selects a skill', function () {
|
|
310
388
|
insertSkillMention.mockClear();
|
|
311
389
|
renderWithProviders(/*#__PURE__*/_jsx(GlobalContextTestProvider, {
|
|
@@ -638,4 +716,4 @@ describe('MAIAInput', function () {
|
|
|
638
716
|
expect(sendButton()).not.toBeDisabled();
|
|
639
717
|
});
|
|
640
718
|
});
|
|
641
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZpcmVFdmVudCIsInJlbmRlcldpdGhQcm92aWRlcnMiLCJzY3JlZW4iLCJHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyIiwiTUFJQUlucHV0IiwianN4IiwiX2pzeCIsImluc2VydFNraWxsTWVudGlvbiIsImplc3QiLCJmbiIsImluc2VydE1lbnRpb25UcmlnZ2VyIiwibW9jayIsIkVWRU5UUyIsImFpQ2hhdFBsdXNPcGVuIiwiYWlDaGF0UXVpY2tBY3Rpb25PcGVuIiwiYWlDaGF0U2tpbGxPcGVuIiwiYWlDaGF0U2tpbGxTZWxlY3QiLCJhaUNoYXRTa2lsbFJlbW92ZSIsInVzZUV2ZW50IiwiQ09SVXNlclJvbGUiLCJDTEVWRUwiLCJESVJFQ1RPUiIsIlBST0pFQ1RfTUFOQUdFUiIsIkNPTExBQk9SQVRPUiIsIkZSRUVMQU5DRVIiLCJDTElFTlQiLCJ1c2VVc2VyIiwiaWQiLCJyb2xlX2lkIiwibW9ja0NhbkFjY2Vzc1RvU2tpbGxzIiwiY2FuQWNjZXNzVG9Ta2lsbHMiLCJhcHBseSIsImFyZ3VtZW50cyIsImlzU2tpbGxzUGlsb3RDb21wYW55IiwidXNlU2tpbGxzQ2F0YWxvZyIsInNraWxscyIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsImNvbnRlbnQiLCJsb2FkaW5nIiwiZXJyb3IiLCJmZXRjaFNraWxscyIsInNsYXNoQ29tbWFuZHNTdGF0ZSIsImNvbW1hbmRzIiwidGl0bGUiLCJ1c2VTbGFzaENvbW1hbmRzIiwibWVudGlvblBvcG92ZXJTdGF0ZSIsInBvcG92ZXJPcGVuIiwicmVzZXRNZW50aW9uT3BlblRyYWNraW5nIiwiaGFuZGxlVHJpZ2dlciIsImhhbmRsZUtleURvd24iLCJwb3BvdmVyTm9kZSIsImNsb3NlIiwidXNlTWVudGlvblBvcG92ZXIiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwiTW9kYWxGaWxlRXhjZWVkcyIsIlNsYXNoQ29tbWFuZERyb3Bkb3duIiwiX3JlZiIsIm9uU2VsZWN0Iiwicm9sZSIsImNoaWxkcmVuIiwibWFwIiwiY29tbWFuZCIsInR5cGUiLCJvbkNsaWNrIiwiUmVhY3RBY3R1YWwiLCJyZXF1aXJlQWN0dWFsIiwiQ29udGV4dE1lbnRpb25FZGl0b3IiLCJmb3J3YXJkUmVmIiwiX3JlZjIiLCJyZWYiLCJvbklucHV0Iiwib25LZXlEb3duIiwicGxhY2Vob2xkZXIiLCJkaXNhYmxlZCIsIl9SZWFjdEFjdHVhbCR1c2VTdGF0ZSIsInVzZVN0YXRlIiwiX1JlYWN0QWN0dWFsJHVzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwidmFsdWUiLCJzZXRWYWx1ZSIsImVtaXQiLCJ0ZXh0IiwiX29iamVjdFNwcmVhZCIsIm1lbnRpb25zIiwic2xhc2hDb21tYW5kcyIsInRyaWdnZXIiLCJhY3RpdmUiLCJxdWVyeSIsImF0UnVuTGVuZ3RoIiwic3RhcnRzV2l0aCIsInNsYXNoVHJpZ2dlciIsInNsaWNlIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsImZvY3VzIiwiY2xlYXIiLCJzZXRQbGFpblRleHQiLCJzZXJpYWxpemUiLCJpbnNlcnRTbGFzaFRyaWdnZXIiLCJpbnNlcnRNZW50aW9uIiwiaW5zZXJ0U2xhc2hDb21tYW5kIiwiaW5zZXJ0U2tpbGxUcmlnZ2VyIiwiaGFzaFRyaWdnZXIiLCJzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoIiwic3luY1NraWxsVHJpZ2dlciIsImhhc1Zpc3VhbE11bHRpbGluZSIsImdldEVkaXRvckNsaWVudFJlY3QiLCJvbkNoYW5nZSIsImV2ZW50IiwidGFyZ2V0Iiwic2VuZEJ1dHRvbiIsImdldEFsbEJ5Um9sZSIsImZpbmQiLCJidXR0b24iLCJnZXRBdHRyaWJ1dGUiLCJkZXNjcmliZSIsImJlZm9yZUVhY2giLCJtb2NrUmV0dXJuVmFsdWUiLCJpdCIsIm9uU2VuZE1lc3NhZ2UiLCJleHBlY3QiLCJnZXRCeVBsYWNlaG9sZGVyVGV4dCIsInRvQmVJblRoZURvY3VtZW50IiwidG9CZURpc2FibGVkIiwiY2hhbmdlIiwiZ2V0QnlMYWJlbFRleHQiLCJjbGljayIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwidG9IYXZlVmFsdWUiLCJub3QiLCJ0b0hhdmVCZWVuQ2FsbGVkIiwib25TdG9wR2VuZXJhdGlvbiIsImlzV3JpdGluZyIsImdldEJ5Um9sZSIsImdldEJ5VGV4dCIsIm1vY2tDbGVhciIsImxhYmVsIiwiX3JlbmRlcldpdGhQcm92aWRlcnMiLCJpc1N0cmVhbWluZyIsImNvbnRhaW5lciIsInF1ZXJ5U2VsZWN0b3IiLCJ0b0JlVHJ1dGh5IiwiYWdlbnQiLCJvcmNoZXN0cmF0b3JIb21lQ29tcG9zZXIiLCJxdWVyeUJ5Um9sZSIsImtleURvd24iLCJrZXkiLCJ0b2dnbGVEZWVwU2VhcmNoIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwidG9nZ2xlV2ViU2VhcmNoIiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJvbkZpbGVBdHRhY2giLCJmaWxlSW5wdXQiLCJkb2N1bWVudCIsImZpbGUiLCJGaWxlIiwiZmlsZXMiLCJvYmplY3RDb250YWluaW5nIiwidG9IYXZlVGV4dENvbnRlbnQiLCJlbnRpdHkiLCJ1bmRlZmluZWQiLCJpc0F1dG9BcHByb3ZlQWN0aXZlIiwiX3NjcmVlbiRnZXRCeUxhYmVsVGV4Iiwid3JhcHBlciIsImNsb3Nlc3QiLCJkcmFnVGFyZ2V0IiwicGFyZW50RWxlbWVudCIsIkVycm9yIiwiZHJhZ0VudGVyIiwiZGF0YVRyYW5zZmVyIiwidHlwZXMiLCJpdGVtcyIsImtpbmQiLCJvbkRlbGV0ZUF0dGFjaG1lbnQiLCJhdHRhY2htZW50cyIsInNpemUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hdG9tcy9NQUlBSW5wdXQvTUFJQUlucHV0LnNwZWMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGZpcmVFdmVudCwgcmVuZGVyV2l0aFByb3ZpZGVycywgc2NyZWVuIH0gZnJvbSAnLi4vLi4vLi4vdGVzdC90ZXN0LXV0aWxzJ1xuaW1wb3J0IHsgR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlciB9IGZyb20gJy4uLy4uLy4uL3Rlc3QvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBNQUlBSW5wdXQgfSBmcm9tICcuL01BSUFJbnB1dCdcblxuY29uc3QgaW5zZXJ0U2tpbGxNZW50aW9uID0gamVzdC5mbigpXG5jb25zdCBpbnNlcnRNZW50aW9uVHJpZ2dlciA9IGplc3QuZm4oKVxuXG5qZXN0Lm1vY2soJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50JywgKCkgPT4gKHtcbiAgRVZFTlRTOiB7XG4gICAgYWlDaGF0UGx1c09wZW46ICdBSV9DSEFUX1BMVVNfT1BFTicsXG4gICAgYWlDaGF0UXVpY2tBY3Rpb25PcGVuOiAnQUlfQ0hBVF9RVUlDS19BQ1RJT05fT1BFTicsXG4gICAgYWlDaGF0U2tpbGxPcGVuOiAnQUlfQ0hBVF9TS0lMTF9PUEVOJyxcbiAgICBhaUNoYXRTa2lsbFNlbGVjdDogJ0FJX0NIQVRfU0tJTExfU0VMRUNUJyxcbiAgICBhaUNoYXRTa2lsbFJlbW92ZTogJ0FJX0NIQVRfU0tJTExfUkVNT1ZFJyxcbiAgfSxcbiAgdXNlRXZlbnQ6ICgpID0+IGplc3QuZm4oKSxcbn0pKVxuXG5qZXN0Lm1vY2soJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInLCAoKSA9PiAoe1xuICBDT1JVc2VyUm9sZToge1xuICAgIENMRVZFTDogMSxcbiAgICBESVJFQ1RPUjogMixcbiAgICBQUk9KRUNUX01BTkFHRVI6IDMsXG4gICAgQ09MTEFCT1JBVE9SOiA0LFxuICAgIEZSRUVMQU5DRVI6IDUsXG4gICAgQ0xJRU5UOiA2LFxuICB9LFxuICB1c2VVc2VyOiAoKSA9PiAoeyBpZDogOTksIHJvbGVfaWQ6IDMgfSksXG59KSlcblxuY29uc3QgbW9ja0NhbkFjY2Vzc1RvU2tpbGxzID0gamVzdC5mbigoKSA9PiB0cnVlKVxuXG5qZXN0Lm1vY2soJy4uLy4uLy4uL2NvbnN0YW50cy9wZXJtaXNzaW9ucycsICgpID0+ICh7XG4gIGNhbkFjY2Vzc1RvU2tpbGxzOiAoLi4uYXJnczogdW5rbm93bltdKSA9PiBtb2NrQ2FuQWNjZXNzVG9Ta2lsbHMoLi4uYXJncyksXG4gIGlzU2tpbGxzUGlsb3RDb21wYW55OiAoKSA9PiB0cnVlLFxufSkpXG5cbmplc3QubW9jaygnLi4vLi4vLi4vaG9va3MvdXNlU2tpbGxzQ2F0YWxvZycsICgpID0+ICh7XG4gIHVzZVNraWxsc0NhdGFsb2c6ICgpID0+ICh7XG4gICAgc2tpbGxzOiBbeyBpZDogJ3NrMScsIG5hbWU6ICdSZXN1bWlyJywgZGVzY3JpcHRpb246ICdEZXNjJywgY29udGVudDogJ1Jlc3VtZScgfV0sXG4gICAgbG9hZGluZzogZmFsc2UsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGZldGNoU2tpbGxzOiBqZXN0LmZuKCksXG4gIH0pLFxufSkpXG5cbmNvbnN0IHNsYXNoQ29tbWFuZHNTdGF0ZSA9IHtcbiAgY29tbWFuZHM6IFt7IGlkOiAnY21kLTEnLCB0aXRsZTogJ1Jlc3VtaXIgYnJpZWYnLCBkZXNjcmlwdGlvbjogJ1Jlc3VtZScgfV0sXG59XG5cbmplc3QubW9jaygnLi4vLi4vLi4vaG9va3MvdXNlU2xhc2hDb21tYW5kcycsICgpID0+ICh7XG4gIHVzZVNsYXNoQ29tbWFuZHM6ICgpID0+IHNsYXNoQ29tbWFuZHNTdGF0ZSxcbn0pKVxuXG5jb25zdCBtZW50aW9uUG9wb3ZlclN0YXRlID0ge1xuICBwb3BvdmVyT3BlbjogZmFsc2UsXG4gIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZzogamVzdC5mbigpLFxuICBoYW5kbGVUcmlnZ2VyOiBqZXN0LmZuKCksXG4gIGhhbmRsZUtleURvd246IGplc3QuZm4oKCkgPT4gZmFsc2UpLFxuICBwb3BvdmVyTm9kZTogbnVsbCBhcyBSZWFjdC5SZWFjdE5vZGUsXG4gIGNsb3NlOiBqZXN0LmZuKCksXG59XG5cbmplc3QubW9jaygnLi4vLi4vLi4vaG9va3MvdXNlTWVudGlvblBvcG92ZXInLCAoKSA9PiAoe1xuICB1c2VNZW50aW9uUG9wb3ZlcjogKCkgPT4gbWVudGlvblBvcG92ZXJTdGF0ZSxcbn0pKVxuXG5qZXN0Lm1vY2soJy4uLy4uLy4uL2hvb2tzL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnLCAoKSA9PiAoe1xuICB1c2VNYWlhVGFza1BhbmVsWkluZGV4OiAoKSA9PiAxMzAwLFxufSkpXG5cbmplc3QubW9jaygnLi4vLi4vb3JnYW5pc21zL01vZGFsRmlsZUV4Y2VlZHMnLCAoKSA9PiAoe1xuICBNb2RhbEZpbGVFeGNlZWRzOiAoKSA9PiBudWxsLFxufSkpXG5cbmplc3QubW9jaygnLi4vU2xhc2hDb21tYW5kRHJvcGRvd24nLCAoKSA9PiAoe1xuICBTbGFzaENvbW1hbmREcm9wZG93bjogKHtcbiAgICBjb21tYW5kcyxcbiAgICBvblNlbGVjdCxcbiAgfToge1xuICAgIGNvbW1hbmRzOiBBcnJheTx7IGlkOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfT5cbiAgICBvblNlbGVjdDogKGNvbW1hbmQ6IHsgaWQ6IHN0cmluZzsgdGl0bGU6IHN0cmluZyB9KSA9PiB2b2lkXG4gIH0pID0+IChcbiAgICA8ZGl2IHJvbGU9XCJsaXN0Ym94XCIgYXJpYS1sYWJlbD1cInNsYXNoLWNvbW1hbmRzXCI+XG4gICAgICB7Y29tbWFuZHMubWFwKGNvbW1hbmQgPT4gKFxuICAgICAgICA8YnV0dG9uIGtleT17Y29tbWFuZC5pZH0gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9eygpID0+IG9uU2VsZWN0KGNvbW1hbmQpfT5cbiAgICAgICAgICB7Y29tbWFuZC50aXRsZX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICApKX1cbiAgICA8L2Rpdj5cbiAgKSxcbn0pKVxuXG5qZXN0Lm1vY2soJy4uL0NvbnRleHRNZW50aW9uRWRpdG9yJywgKCkgPT4ge1xuICBjb25zdCBSZWFjdEFjdHVhbCA9IGplc3QucmVxdWlyZUFjdHVhbCgncmVhY3QnKSBhcyB0eXBlb2YgaW1wb3J0KCdyZWFjdCcpXG4gIHJldHVybiB7XG4gICAgQ29udGV4dE1lbnRpb25FZGl0b3I6IFJlYWN0QWN0dWFsLmZvcndhcmRSZWYoXG4gICAgICAoXG4gICAgICAgIHtcbiAgICAgICAgICBvbklucHV0LFxuICAgICAgICAgIG9uS2V5RG93bixcbiAgICAgICAgICBwbGFjZWhvbGRlcixcbiAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgfToge1xuICAgICAgICAgIG9uSW5wdXQ/OiAoc3RhdGU6IHtcbiAgICAgICAgICAgIHRleHQ6IHN0cmluZ1xuICAgICAgICAgICAgbWVudGlvbnM6IHVua25vd25bXVxuICAgICAgICAgICAgc2xhc2hDb21tYW5kczogdW5rbm93bltdXG4gICAgICAgICAgICB0cmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZzsgYXRSdW5MZW5ndGg6IG51bWJlciB9XG4gICAgICAgICAgfSkgPT4gdm9pZFxuICAgICAgICAgIG9uS2V5RG93bj86IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZFxuICAgICAgICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nXG4gICAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuXG4gICAgICAgIH0sXG4gICAgICAgIHJlZjoge1xuICAgICAgICAgIGZvY3VzOiAoKSA9PiB2b2lkXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHZvaWRcbiAgICAgICAgICBzZXRQbGFpblRleHQ6ICh0ZXh0OiBzdHJpbmcpID0+IHZvaWRcbiAgICAgICAgICBzZXJpYWxpemU6ICgpID0+IHsgdGV4dDogc3RyaW5nOyBtZW50aW9uczogdW5rbm93bltdOyBzbGFzaENvbW1hbmRzOiB1bmtub3duW10gfVxuICAgICAgICAgIGluc2VydE1lbnRpb25UcmlnZ2VyOiAoKSA9PiB2b2lkXG4gICAgICAgIH0gfCBudWxsXG4gICAgICApID0+IHtcbiAgICAgICAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSBSZWFjdEFjdHVhbC51c2VTdGF0ZSgnJylcbiAgICAgICAgY29uc3QgZW1pdCA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBvbklucHV0Py4oe1xuICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgIG1lbnRpb25zOiBbXSxcbiAgICAgICAgICAgIHNsYXNoQ29tbWFuZHM6IFtdLFxuICAgICAgICAgICAgdHJpZ2dlcjogeyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGF0UnVuTGVuZ3RoOiAwIH0sXG4gICAgICAgICAgICAuLi4odGV4dC5zdGFydHNXaXRoKCcvJykgPyB7IHNsYXNoVHJpZ2dlcjogeyBhY3RpdmU6IHRydWUsIHF1ZXJ5OiB0ZXh0LnNsaWNlKDEpIH0gfSA6IHt9KSxcbiAgICAgICAgICB9IGFzIG5ldmVyKVxuICAgICAgICB9XG5cbiAgICAgICAgUmVhY3RBY3R1YWwudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+ICh7XG4gICAgICAgICAgZm9jdXM6IGplc3QuZm4oKSxcbiAgICAgICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICAgICAgc2V0VmFsdWUoJycpXG4gICAgICAgICAgICBlbWl0KCcnKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2V0UGxhaW5UZXh0OiAodGV4dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBzZXRWYWx1ZSh0ZXh0KVxuICAgICAgICAgICAgZW1pdCh0ZXh0KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VyaWFsaXplOiAoKSA9PiAoeyB0ZXh0OiB2YWx1ZSwgbWVudGlvbnM6IFtdLCBzbGFzaENvbW1hbmRzOiBbXSB9KSxcbiAgICAgICAgICBpbnNlcnRNZW50aW9uVHJpZ2dlcixcbiAgICAgICAgICBpbnNlcnRTbGFzaFRyaWdnZXI6IGplc3QuZm4oKSxcbiAgICAgICAgICBpbnNlcnRNZW50aW9uOiBqZXN0LmZuKCksXG4gICAgICAgICAgaW5zZXJ0U2xhc2hDb21tYW5kOiBqZXN0LmZuKCksXG4gICAgICAgICAgaW5zZXJ0U2tpbGxUcmlnZ2VyOiAoKSA9PiB7XG4gICAgICAgICAgICBvbklucHV0Py4oe1xuICAgICAgICAgICAgICB0ZXh0OiAnIycsXG4gICAgICAgICAgICAgIG1lbnRpb25zOiBbXSxcbiAgICAgICAgICAgICAgc2xhc2hDb21tYW5kczogW10sXG4gICAgICAgICAgICAgIHRyaWdnZXI6IHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCB9LFxuICAgICAgICAgICAgICBoYXNoVHJpZ2dlcjogeyBhY3RpdmU6IHRydWUsIHF1ZXJ5OiAnJyB9LFxuICAgICAgICAgICAgfSBhcyBuZXZlcilcbiAgICAgICAgICB9LFxuICAgICAgICAgIGluc2VydFNraWxsTWVudGlvbixcbiAgICAgICAgICBzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoOiBqZXN0LmZuKCksXG4gICAgICAgICAgc3luY1NraWxsVHJpZ2dlcjogamVzdC5mbigpLFxuICAgICAgICAgIGhhc1Zpc3VhbE11bHRpbGluZTogKCkgPT4gZmFsc2UsXG4gICAgICAgICAgZ2V0RWRpdG9yQ2xpZW50UmVjdDogKCkgPT4gbnVsbCxcbiAgICAgICAgfSkpXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJtYWlhLWVkaXRvclwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgICBvbkNoYW5nZT17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICBzZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpXG4gICAgICAgICAgICAgIGVtaXQoZXZlbnQudGFyZ2V0LnZhbHVlKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT4gb25LZXlEb3duPy4oZXZlbnQgYXMgdW5rbm93biBhcyBLZXlib2FyZEV2ZW50KX1cbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICB9XG4gICAgKSxcbiAgfVxufSlcblxuY29uc3Qgc2VuZEJ1dHRvbiA9ICgpID0+XG4gIHNjcmVlblxuICAgIC5nZXRBbGxCeVJvbGUoJ2J1dHRvbicpXG4gICAgLmZpbmQoYnV0dG9uID0+ICFidXR0b24uZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykgJiYgIWJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ2FyaWEtaGFzcG9wdXAnKSlcblxuZGVzY3JpYmUoJ01BSUFJbnB1dCcsICgpID0+IHtcbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgbW9ja0NhbkFjY2Vzc1RvU2tpbGxzLm1vY2tSZXR1cm5WYWx1ZSh0cnVlKVxuICAgIG1lbnRpb25Qb3BvdmVyU3RhdGUucG9wb3Zlck9wZW4gPSBmYWxzZVxuICAgIG1lbnRpb25Qb3BvdmVyU3RhdGUucG9wb3Zlck5vZGUgPSBudWxsXG4gICAgbWVudGlvblBvcG92ZXJTdGF0ZS5oYW5kbGVLZXlEb3duLm1vY2tSZXR1cm5WYWx1ZShmYWxzZSlcbiAgfSlcblxuICBpdCgna2VlcHMgc2VuZCBkaXNhYmxlZCB3aXRob3V0IHRleHQnLCAoKSA9PiB7XG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gcGxhY2Vob2xkZXI9XCJFc2NyaWLDrVwiIC8+XG4gICAgICA8L0dsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgKVxuXG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVBsYWNlaG9sZGVyVGV4dCgnRXNjcmliw60nKSkudG9CZUluVGhlRG9jdW1lbnQoKVxuICAgIGV4cGVjdChzZW5kQnV0dG9uKCkpLnRvQmVEaXNhYmxlZCgpXG4gIH0pXG5cbiAgaXQoJ3NlbmRzIHRoZSB0eXBlZCBtZXNzYWdlIGFuZCBjbGVhcnMgdGhlIGVkaXRvcicsICgpID0+IHtcbiAgICBjb25zdCBvblNlbmRNZXNzYWdlID0gamVzdC5mbigpXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e29uU2VuZE1lc3NhZ2V9IC8+XG4gICAgICA8L0dsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgKVxuXG4gICAgZmlyZUV2ZW50LmNoYW5nZShzY3JlZW4uZ2V0QnlMYWJlbFRleHQoJ21haWEtZWRpdG9yJyksIHsgdGFyZ2V0OiB7IHZhbHVlOiAnSG9sYSBkcmFmdCcgfSB9KVxuICAgIGZpcmVFdmVudC5jbGljayhzZW5kQnV0dG9uKCkgYXMgSFRNTEJ1dHRvbkVsZW1lbnQpXG5cbiAgICBleHBlY3Qob25TZW5kTWVzc2FnZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ0hvbGEgZHJhZnQnLCBbXSwgW10pXG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeUxhYmVsVGV4dCgnbWFpYS1lZGl0b3InKSkudG9IYXZlVmFsdWUoJycpXG4gIH0pXG5cbiAgaXQoJ2RvZXMgbm90IHNlbmQgd2hlbiBkaXNhYmxlZCcsICgpID0+IHtcbiAgICBjb25zdCBvblNlbmRNZXNzYWdlID0gamVzdC5mbigpXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e29uU2VuZE1lc3NhZ2V9IGRpc2FibGVkIC8+XG4gICAgICA8L0dsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgKVxuXG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeUxhYmVsVGV4dCgnbWFpYS1lZGl0b3InKSkudG9CZURpc2FibGVkKClcbiAgICBleHBlY3Qoc2VuZEJ1dHRvbigpKS50b0JlRGlzYWJsZWQoKVxuICAgIGZpcmVFdmVudC5jbGljayhzZW5kQnV0dG9uKCkgYXMgSFRNTEJ1dHRvbkVsZW1lbnQpXG4gICAgZXhwZWN0KG9uU2VuZE1lc3NhZ2UpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKClcbiAgfSlcblxuICBpdCgnc2hvd3Mgc3RvcCB3aGlsZSB3cml0aW5nJywgKCkgPT4ge1xuICAgIGNvbnN0IG9uU3RvcEdlbmVyYXRpb24gPSBqZXN0LmZuKClcbiAgICByZW5kZXJXaXRoUHJvdmlkZXJzKFxuICAgICAgPEdsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgICAgIDxNQUlBSW5wdXQgb25TZW5kTWVzc2FnZT17amVzdC5mbigpfSBpc1dyaXRpbmcgb25TdG9wR2VuZXJhdGlvbj17b25TdG9wR2VuZXJhdGlvbn0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBmaXJlRXZlbnQuY2xpY2soc2VuZEJ1dHRvbigpIGFzIEhUTUxCdXR0b25FbGVtZW50KVxuICAgIGV4cGVjdChvblN0b3BHZW5lcmF0aW9uKS50b0hhdmVCZWVuQ2FsbGVkKClcbiAgfSlcblxuICBpdCgnb3BlbnMgdGhlIHBsdXMgbWVudScsICgpID0+IHtcbiAgICByZW5kZXJXaXRoUHJvdmlkZXJzKFxuICAgICAgPEdsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgICAgIDxNQUlBSW5wdXQgb25TZW5kTWVzc2FnZT17amVzdC5mbigpfSAvPlxuICAgICAgPC9HbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgIClcblxuICAgIGZpcmVFdmVudC5jbGljayhzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6ICdjaGF0Lm9wZW5QbHVzTWVudUFyaWEnIH0pKVxuXG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ2NoYXQucGx1c01lbnVBdHRhY2gnKSkudG9CZUluVGhlRG9jdW1lbnQoKVxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdjaGF0LnNlYXJjaFdlYicpKS50b0JlSW5UaGVEb2N1bWVudCgpXG4gIH0pXG5cbiAgaXQoJ29wZW5zIHRoZSBza2lsbHMgY2F0YWxvZyBhbmQgc2VsZWN0cyBhIHNraWxsJywgKCkgPT4ge1xuICAgIGluc2VydFNraWxsTWVudGlvbi5tb2NrQ2xlYXIoKVxuXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBmaXJlRXZlbnQuY2xpY2soc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnbXlTa2lsbHMuZHJvcGRvd25CdXR0b24nIH0pKVxuXG4gICAgZmlyZUV2ZW50LmNsaWNrKHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogLyNSZXN1bWlyLyB9KSlcbiAgICBleHBlY3QoaW5zZXJ0U2tpbGxNZW50aW9uKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7IGlkOiAnc2sxJywgdHlwZTogJ3NraWxsJywgbGFiZWw6ICcjUmVzdW1pcicgfSlcbiAgfSlcblxuICBpdCgna2VlcHMgc2VuZCBkaXNhYmxlZCBmb3Igd2hpdGVzcGFjZS1vbmx5IHRleHQnLCAoKSA9PiB7XG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBmaXJlRXZlbnQuY2hhbmdlKHNjcmVlbi5nZXRCeUxhYmVsVGV4dCgnbWFpYS1lZGl0b3InKSwgeyB0YXJnZXQ6IHsgdmFsdWU6ICcgICAnIH0gfSlcbiAgICBleHBlY3Qoc2VuZEJ1dHRvbigpKS50b0JlRGlzYWJsZWQoKVxuICB9KVxuXG4gIGl0KCdtYXJrcyB0aGUgZWRpdG9yIGFzIHN0cmVhbWluZyBmb3IgYXNzaXN0aXZlIHN0eWxpbmcnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICAgICAgPE1BSUFJbnB1dCBvblNlbmRNZXNzYWdlPXtqZXN0LmZuKCl9IGlzU3RyZWFtaW5nIC8+XG4gICAgICA8L0dsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgKVxuXG4gICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdbZGF0YS1tYWlhLXN0cmVhbWluZz1cInRydWVcIl0nKSkudG9CZVRydXRoeSgpXG4gIH0pXG5cbiAgaXQoJ3Nob3dzIHRoZSBtZW50aW9uIGJ1dHRvbiBvbiBvcmNoZXN0cmF0b3IgaG9tZSBiZWZvcmUgdGhlIGFnZW50IGlzIGxvYWRlZCcsICgpID0+IHtcbiAgICByZW5kZXJXaXRoUHJvdmlkZXJzKFxuICAgICAgPEdsb2JhbENvbnRleHRUZXN0UHJvdmlkZXIgdmFsdWU9e3sgYWdlbnQ6IG51bGwgfX0+XG4gICAgICAgIDxNQUlBSW5wdXQgb25TZW5kTWVzc2FnZT17amVzdC5mbigpfSBvcmNoZXN0cmF0b3JIb21lQ29tcG9zZXIgLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnY2hhdC5vcGVuTWVudGlvbkFyaWEnIH0pKS50b0JlSW5UaGVEb2N1bWVudCgpXG4gIH0pXG5cbiAgaXQoJ2hpZGVzIHRoZSBza2lsbHMgYnV0dG9uIHdoZW4gTUFJQV9TS0lMTFNfQUNDRVNTIGlzIG5vdCBncmFudGVkJywgKCkgPT4ge1xuICAgIG1vY2tDYW5BY2Nlc3NUb1NraWxscy5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpXG5cbiAgICByZW5kZXJXaXRoUHJvdmlkZXJzKFxuICAgICAgPEdsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgICAgIDxNQUlBSW5wdXQgb25TZW5kTWVzc2FnZT17amVzdC5mbigpfSAvPlxuICAgICAgPC9HbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgIClcblxuICAgIGV4cGVjdChzY3JlZW4ucXVlcnlCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogJ215U2tpbGxzLmRyb3Bkb3duQnV0dG9uJyB9KSkubm90LnRvQmVJblRoZURvY3VtZW50KClcbiAgfSlcblxuICBpdCgnc2VuZHMgb24gRW50ZXIgd2l0aG91dCBzaGlmdCcsICgpID0+IHtcbiAgICBjb25zdCBvblNlbmRNZXNzYWdlID0gamVzdC5mbigpXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e29uU2VuZE1lc3NhZ2V9IC8+XG4gICAgICA8L0dsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgKVxuXG4gICAgZmlyZUV2ZW50LmNoYW5nZShzY3JlZW4uZ2V0QnlMYWJlbFRleHQoJ21haWEtZWRpdG9yJyksIHsgdGFyZ2V0OiB7IHZhbHVlOiAnRW52aWFyIGNvbiBFbnRlcicgfSB9KVxuICAgIGZpcmVFdmVudC5rZXlEb3duKHNjcmVlbi5nZXRCeUxhYmVsVGV4dCgnbWFpYS1lZGl0b3InKSwgeyBrZXk6ICdFbnRlcicgfSlcblxuICAgIGV4cGVjdChvblNlbmRNZXNzYWdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnRW52aWFyIGNvbiBFbnRlcicsIFtdLCBbXSlcbiAgfSlcblxuICBpdCgndG9nZ2xlcyBkZWVwIHNlYXJjaCBmcm9tIHRoZSBwbHVzIG1lbnUnLCAoKSA9PiB7XG4gICAgY29uc3QgdG9nZ2xlRGVlcFNlYXJjaCA9IGplc3QuZm4oKVxuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlciB2YWx1ZT17eyB0b2dnbGVEZWVwU2VhcmNoIH19PlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBmaXJlRXZlbnQuY2xpY2soc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnY2hhdC5vcGVuUGx1c01lbnVBcmlhJyB9KSlcbiAgICBmaXJlRXZlbnQuY2xpY2soc2NyZWVuLmdldEJ5VGV4dCgnY2hhdC5wbHVzTWVudURlZXBJbnZlc3RpZ2F0aW9uJykpXG5cbiAgICBleHBlY3QodG9nZ2xlRGVlcFNlYXJjaCkudG9IYXZlQmVlbkNhbGxlZCgpXG4gIH0pXG5cbiAgaXQoJ3Nob3dzIHRoZSBhY3RpdmUgZGVlcCBzZWFyY2ggY2hpcCB3aGVuIGVuYWJsZWQnLCAoKSA9PiB7XG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyIHZhbHVlPXt7IGlzRGVlcFNlYXJjaEFjdGl2ZTogdHJ1ZSB9fT5cbiAgICAgICAgPE1BSUFJbnB1dCBvblNlbmRNZXNzYWdlPXtqZXN0LmZuKCl9IC8+XG4gICAgICA8L0dsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgKVxuXG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ2NoYXQucGx1c01lbnVEZWVwSW52ZXN0aWdhdGlvbicpKS50b0JlSW5UaGVEb2N1bWVudCgpXG4gIH0pXG5cbiAgaXQoJ3RvZ2dsZXMgd2ViIHNlYXJjaCBmcm9tIHRoZSBwbHVzIG1lbnUnLCAoKSA9PiB7XG4gICAgY29uc3QgdG9nZ2xlV2ViU2VhcmNoID0gamVzdC5mbigpXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyIHZhbHVlPXt7IHRvZ2dsZVdlYlNlYXJjaCB9fT5cbiAgICAgICAgPE1BSUFJbnB1dCBvblNlbmRNZXNzYWdlPXtqZXN0LmZuKCl9IC8+XG4gICAgICA8L0dsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgKVxuXG4gICAgZmlyZUV2ZW50LmNsaWNrKHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogJ2NoYXQub3BlblBsdXNNZW51QXJpYScgfSkpXG4gICAgZmlyZUV2ZW50LmNsaWNrKHNjcmVlbi5nZXRCeVRleHQoJ2NoYXQuc2VhcmNoV2ViJykpXG5cbiAgICBleHBlY3QodG9nZ2xlV2ViU2VhcmNoKS50b0hhdmVCZWVuQ2FsbGVkKClcbiAgfSlcblxuICBpdCgnc2hvd3MgdGhlIGFjdGl2ZSB3ZWIgc2VhcmNoIGNoaXAgd2hlbiBlbmFibGVkJywgKCkgPT4ge1xuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlciB2YWx1ZT17eyBpc1dlYlNlYXJjaEFjdGl2ZTogdHJ1ZSB9fT5cbiAgICAgICAgPE1BSUFJbnB1dCBvblNlbmRNZXNzYWdlPXtqZXN0LmZuKCl9IC8+XG4gICAgICA8L0dsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgKVxuXG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ2NoYXQuc2VhcmNoV2ViJykpLnRvQmVJblRoZURvY3VtZW50KClcbiAgfSlcblxuICBpdCgnb3BlbnMgdGhlIG1lbnRpb24gdHJpZ2dlciBmcm9tIHRoZSB0b29sYmFyIGJ1dHRvbicsICgpID0+IHtcbiAgICBpbnNlcnRNZW50aW9uVHJpZ2dlci5tb2NrQ2xlYXIoKVxuXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBmaXJlRXZlbnQuY2xpY2soc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnY2hhdC5vcGVuTWVudGlvbkFyaWEnIH0pKVxuICAgIGV4cGVjdChpbnNlcnRNZW50aW9uVHJpZ2dlcikudG9IYXZlQmVlbkNhbGxlZCgpXG4gIH0pXG5cbiAgaXQoJ2ZvcndhcmRzIHN1cHBvcnRlZCBmaWxlcyB0aHJvdWdoIG9uRmlsZUF0dGFjaCcsICgpID0+IHtcbiAgICBjb25zdCBvbkZpbGVBdHRhY2ggPSBqZXN0LmZuKClcbiAgICByZW5kZXJXaXRoUHJvdmlkZXJzKFxuICAgICAgPEdsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgICAgIDxNQUlBSW5wdXQgb25TZW5kTWVzc2FnZT17amVzdC5mbigpfSBvbkZpbGVBdHRhY2g9e29uRmlsZUF0dGFjaH0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBmaXJlRXZlbnQuY2xpY2soc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnY2hhdC5vcGVuUGx1c01lbnVBcmlhJyB9KSlcbiAgICBmaXJlRXZlbnQuY2xpY2soc2NyZWVuLmdldEJ5VGV4dCgnY2hhdC5wbHVzTWVudUF0dGFjaCcpKVxuXG4gICAgY29uc3QgZmlsZUlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cImZpbGVcIl0nKSBhcyBIVE1MSW5wdXRFbGVtZW50XG4gICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFsnY29udGVudCddLCAnYnJpZWYucGRmJywgeyB0eXBlOiAnYXBwbGljYXRpb24vcGRmJyB9KVxuICAgIGZpcmVFdmVudC5jaGFuZ2UoZmlsZUlucHV0LCB7IHRhcmdldDogeyBmaWxlczogW2ZpbGVdIH0gfSlcblxuICAgIGV4cGVjdChvbkZpbGVBdHRhY2gpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGV4cGVjdC5vYmplY3RDb250YWluaW5nKHsgbmFtZTogJ2JyaWVmLnBkZicgfSkpXG4gIH0pXG5cbiAgaXQoJ3JlbmRlcnMgdGhlIG1lbnRpb24gcG9wb3ZlciB3aGVuIGl0IGlzIG9wZW4nLCAoKSA9PiB7XG4gICAgbWVudGlvblBvcG92ZXJTdGF0ZS5wb3BvdmVyT3BlbiA9IHRydWVcbiAgICBtZW50aW9uUG9wb3ZlclN0YXRlLnBvcG92ZXJOb2RlID0gPGRpdiByb2xlPVwibGlzdGJveFwiPm1lbnRpb24tcG9wb3ZlcjwvZGl2PlxuXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5Um9sZSgnbGlzdGJveCcpKS50b0hhdmVUZXh0Q29udGVudCgnbWVudGlvbi1wb3BvdmVyJylcbiAgfSlcblxuICBpdCgnZGVsZWdhdGVzIGtleWRvd24gdG8gdGhlIG1lbnRpb24gcG9wb3ZlciBiZWZvcmUgc2VuZGluZycsICgpID0+IHtcbiAgICBjb25zdCBvblNlbmRNZXNzYWdlID0gamVzdC5mbigpXG4gICAgbWVudGlvblBvcG92ZXJTdGF0ZS5oYW5kbGVLZXlEb3duLm1vY2tSZXR1cm5WYWx1ZSh0cnVlKVxuXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e29uU2VuZE1lc3NhZ2V9IC8+XG4gICAgICA8L0dsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgKVxuXG4gICAgZmlyZUV2ZW50LmNoYW5nZShzY3JlZW4uZ2V0QnlMYWJlbFRleHQoJ21haWEtZWRpdG9yJyksIHsgdGFyZ2V0OiB7IHZhbHVlOiAnSG9sYScgfSB9KVxuICAgIGZpcmVFdmVudC5rZXlEb3duKHNjcmVlbi5nZXRCeUxhYmVsVGV4dCgnbWFpYS1lZGl0b3InKSwgeyBrZXk6ICdFbnRlcicgfSlcblxuICAgIGV4cGVjdChtZW50aW9uUG9wb3ZlclN0YXRlLmhhbmRsZUtleURvd24pLnRvSGF2ZUJlZW5DYWxsZWQoKVxuICAgIGV4cGVjdChvblNlbmRNZXNzYWdlKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpXG4gIH0pXG5cbiAgaXQoJ29wZW5zIHRoZSBzbGFzaCBjb21tYW5kIG1lbnUgd2hlbiB0eXBpbmcgYSBzbGFzaCBjb21tYW5kJywgKCkgPT4ge1xuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlciB2YWx1ZT17eyBhZ2VudDogeyBpZDogJzEnLCBuYW1lOiAnTUFJQScsIHR5cGU6ICdvcmNoZXN0cmF0b3InLCBlbnRpdHk6ICdnbG9iYWwnIH0gfX0+XG4gICAgICAgIDxNQUlBSW5wdXQgb25TZW5kTWVzc2FnZT17amVzdC5mbigpfSAvPlxuICAgICAgPC9HbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgIClcblxuICAgIGZpcmVFdmVudC5jaGFuZ2Uoc2NyZWVuLmdldEJ5TGFiZWxUZXh0KCdtYWlhLWVkaXRvcicpLCB7IHRhcmdldDogeyB2YWx1ZTogJy9yZXMnIH0gfSlcblxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlSb2xlKCdsaXN0Ym94JywgeyBuYW1lOiAnc2xhc2gtY29tbWFuZHMnIH0pKS50b0JlSW5UaGVEb2N1bWVudCgpXG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogJ1Jlc3VtaXIgYnJpZWYnIH0pKS50b0JlSW5UaGVEb2N1bWVudCgpXG4gIH0pXG5cbiAgaXQoJ3NlbmRzIGEgc2xhc2ggY29tbWFuZCBpbW1lZGlhdGVseSB3aGVuIHRoZSBlZGl0b3IgaXMgZW1wdHknLCAoKSA9PiB7XG4gICAgY29uc3Qgb25TZW5kTWVzc2FnZSA9IGplc3QuZm4oKVxuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlciB2YWx1ZT17eyBhZ2VudDogeyBpZDogJzEnLCBuYW1lOiAnTUFJQScsIHR5cGU6ICdvcmNoZXN0cmF0b3InLCBlbnRpdHk6ICdnbG9iYWwnIH0gfX0+XG4gICAgICAgIDxNQUlBSW5wdXQgb25TZW5kTWVzc2FnZT17b25TZW5kTWVzc2FnZX0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBmaXJlRXZlbnQuY2hhbmdlKHNjcmVlbi5nZXRCeUxhYmVsVGV4dCgnbWFpYS1lZGl0b3InKSwgeyB0YXJnZXQ6IHsgdmFsdWU6ICcvcmVzJyB9IH0pXG4gICAgZmlyZUV2ZW50LmNsaWNrKHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogJ1Jlc3VtaXIgYnJpZWYnIH0pKVxuXG4gICAgZXhwZWN0KG9uU2VuZE1lc3NhZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdSZXN1bWlyIGJyaWVmJywgW10sIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgJ2NtZC0xJylcbiAgfSlcblxuICBpdCgnc2hvd3MgdGhlIGF1dG8gYXBwcm92ZSBjaGlwIHdoZW4gZW5hYmxlZCBpbiBjb250ZXh0JywgKCkgPT4ge1xuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlciB2YWx1ZT17eyBpc0F1dG9BcHByb3ZlQWN0aXZlOiB0cnVlIH19PlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnY2hhdC5hdXRvQXBwcm92ZUNoaXAnKSkudG9CZUluVGhlRG9jdW1lbnQoKVxuICB9KVxuXG4gIGl0KCdzaG93cyB0aGUgZmlsZSBkcm9wIG92ZXJsYXkgd2hpbGUgZHJhZ2dpbmcgZmlsZXMnLCAoKSA9PiB7XG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBjb25zdCB3cmFwcGVyID0gc2NyZWVuLmdldEJ5TGFiZWxUZXh0KCdtYWlhLWVkaXRvcicpLmNsb3Nlc3QoJ1tkYXRhLW1haWEtaW5wdXQtcm9vdF0nKSBhcyBIVE1MRWxlbWVudFxuICAgIGNvbnN0IGRyYWdUYXJnZXQgPSB3cmFwcGVyID8/IHNjcmVlbi5nZXRCeUxhYmVsVGV4dCgnbWFpYS1lZGl0b3InKS5wYXJlbnRFbGVtZW50Py5wYXJlbnRFbGVtZW50XG4gICAgaWYgKCFkcmFnVGFyZ2V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RyYWcgdGFyZ2V0IG5vdCBmb3VuZCcpXG4gICAgfVxuXG4gICAgZmlyZUV2ZW50LmRyYWdFbnRlcihkcmFnVGFyZ2V0LCB7XG4gICAgICBkYXRhVHJhbnNmZXI6IHsgdHlwZXM6IFsnRmlsZXMnXSwgaXRlbXM6IFt7IGtpbmQ6ICdmaWxlJyB9XSB9LFxuICAgIH0pXG5cbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnY2hhdC5kcm9wRmlsZXNIZXJlJykpLnRvQmVJblRoZURvY3VtZW50KClcbiAgfSlcblxuICBpdCgncmVtb3ZlcyBhbiBhdHRhY2htZW50IGNoaXAgdGhyb3VnaCBvbkRlbGV0ZUF0dGFjaG1lbnQnLCAoKSA9PiB7XG4gICAgY29uc3Qgb25EZWxldGVBdHRhY2htZW50ID0gamVzdC5mbigpXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0XG4gICAgICAgICAgb25TZW5kTWVzc2FnZT17amVzdC5mbigpfVxuICAgICAgICAgIG9uRGVsZXRlQXR0YWNobWVudD17b25EZWxldGVBdHRhY2htZW50fVxuICAgICAgICAgIGF0dGFjaG1lbnRzPXtbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnZjEnLFxuICAgICAgICAgICAgICBuYW1lOiAnYnJpZWYucGRmJyxcbiAgICAgICAgICAgICAgdHlwZTogJ3BkZicsXG4gICAgICAgICAgICAgIHNpemU6IDEyMCxcbiAgICAgICAgICAgICAgZmlsZTogbmV3IEZpbGUoW10sICdicmllZi5wZGYnLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnIH0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdfVxuICAgICAgICAvPlxuICAgICAgPC9HbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgIClcblxuICAgIGZpcmVFdmVudC5jbGljayhzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6ICdjaGF0LnJlbW92ZUF0dGFjaG1lbnRBcmlhJyB9KSlcblxuICAgIGV4cGVjdChvbkRlbGV0ZUF0dGFjaG1lbnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdmMScpXG4gIH0pXG5cbiAgaXQoJ2VuYWJsZXMgc2VuZCB3aGVuIGF0dGFjaG1lbnRzIGFyZSBwcm92aWRlZCBieSB0aGUgcGFyZW50JywgKCkgPT4ge1xuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICAgICAgPE1BSUFJbnB1dFxuICAgICAgICAgIG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX1cbiAgICAgICAgICBhdHRhY2htZW50cz17W1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ2YxJyxcbiAgICAgICAgICAgICAgbmFtZTogJ2JyaWVmLnBkZicsXG4gICAgICAgICAgICAgIHR5cGU6ICdwZGYnLFxuICAgICAgICAgICAgICBzaXplOiAxMjAsXG4gICAgICAgICAgICAgIGZpbGU6IG5ldyBGaWxlKFtdLCAnYnJpZWYucGRmJywgeyB0eXBlOiAnYXBwbGljYXRpb24vcGRmJyB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXX1cbiAgICAgICAgLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnYnJpZWYucGRmJykpLnRvQmVJblRoZURvY3VtZW50KClcbiAgICBleHBlY3Qoc2VuZEJ1dHRvbigpKS5ub3QudG9CZURpc2FibGVkKClcbiAgfSlcbn0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPQSxLQUFLLE1BQU0sT0FBTztBQUN6QixTQUFTQyxTQUFTLEVBQUVDLG1CQUFtQixFQUFFQyxNQUFNLFFBQVEsMEJBQTBCO0FBQ2pGLFNBQVNDLHlCQUF5QixRQUFRLDhCQUE4QjtBQUN4RSxTQUFTQyxTQUFTLFFBQVEsYUFBYTtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQTtBQUV2QyxJQUFNQyxrQkFBa0IsR0FBR0MsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztBQUNwQyxJQUFNQyxvQkFBb0IsR0FBR0YsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztBQUV0Q0QsSUFBSSxDQUFDRyxJQUFJLENBQUMseUJBQXlCLEVBQUU7RUFBQSxPQUFPO0lBQzFDQyxNQUFNLEVBQUU7TUFDTkMsY0FBYyxFQUFFLG1CQUFtQjtNQUNuQ0MscUJBQXFCLEVBQUUsMkJBQTJCO01BQ2xEQyxlQUFlLEVBQUUsb0JBQW9CO01BQ3JDQyxpQkFBaUIsRUFBRSxzQkFBc0I7TUFDekNDLGlCQUFpQixFQUFFO0lBQ3JCLENBQUM7SUFDREMsUUFBUSxFQUFFLFNBQVZBLFFBQVFBLENBQUE7TUFBQSxPQUFRVixJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO0lBQUE7RUFDM0IsQ0FBQztBQUFBLENBQUMsQ0FBQztBQUVIRCxJQUFJLENBQUNHLElBQUksQ0FBQywyQkFBMkIsRUFBRTtFQUFBLE9BQU87SUFDNUNRLFdBQVcsRUFBRTtNQUNYQyxNQUFNLEVBQUUsQ0FBQztNQUNUQyxRQUFRLEVBQUUsQ0FBQztNQUNYQyxlQUFlLEVBQUUsQ0FBQztNQUNsQkMsWUFBWSxFQUFFLENBQUM7TUFDZkMsVUFBVSxFQUFFLENBQUM7TUFDYkMsTUFBTSxFQUFFO0lBQ1YsQ0FBQztJQUNEQyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTtNQUFBLE9BQVM7UUFBRUMsRUFBRSxFQUFFLEVBQUU7UUFBRUMsT0FBTyxFQUFFO01BQUUsQ0FBQztJQUFBO0VBQ3hDLENBQUM7QUFBQSxDQUFDLENBQUM7QUFFSCxJQUFNQyxxQkFBcUIsR0FBR3JCLElBQUksQ0FBQ0MsRUFBRSxDQUFDO0VBQUEsT0FBTSxJQUFJO0FBQUEsRUFBQztBQUVqREQsSUFBSSxDQUFDRyxJQUFJLENBQUMsZ0NBQWdDLEVBQUU7RUFBQSxPQUFPO0lBQ2pEbUIsaUJBQWlCLEVBQUUsU0FBbkJBLGlCQUFpQkEsQ0FBQTtNQUFBLE9BQTBCRCxxQkFBcUIsQ0FBQUUsS0FBQSxTQUFBQyxTQUFRLENBQUM7SUFBQTtJQUN6RUMsb0JBQW9CLEVBQUUsU0FBdEJBLG9CQUFvQkEsQ0FBQTtNQUFBLE9BQVEsSUFBSTtJQUFBO0VBQ2xDLENBQUM7QUFBQSxDQUFDLENBQUM7QUFFSHpCLElBQUksQ0FBQ0csSUFBSSxDQUFDLGlDQUFpQyxFQUFFO0VBQUEsT0FBTztJQUNsRHVCLGdCQUFnQixFQUFFLFNBQWxCQSxnQkFBZ0JBLENBQUE7TUFBQSxPQUFTO1FBQ3ZCQyxNQUFNLEVBQUUsQ0FBQztVQUFFUixFQUFFLEVBQUUsS0FBSztVQUFFUyxJQUFJLEVBQUUsU0FBUztVQUFFQyxXQUFXLEVBQUUsTUFBTTtVQUFFQyxPQUFPLEVBQUU7UUFBUyxDQUFDLENBQUM7UUFDaEZDLE9BQU8sRUFBRSxLQUFLO1FBQ2RDLEtBQUssRUFBRSxLQUFLO1FBQ1pDLFdBQVcsRUFBRWpDLElBQUksQ0FBQ0MsRUFBRSxDQUFDO01BQ3ZCLENBQUM7SUFBQTtFQUNILENBQUM7QUFBQSxDQUFDLENBQUM7QUFFSCxJQUFNaUMsa0JBQWtCLEdBQUc7RUFDekJDLFFBQVEsRUFBRSxDQUFDO0lBQUVoQixFQUFFLEVBQUUsT0FBTztJQUFFaUIsS0FBSyxFQUFFLGVBQWU7SUFBRVAsV0FBVyxFQUFFO0VBQVMsQ0FBQztBQUMzRSxDQUFDO0FBRUQ3QixJQUFJLENBQUNHLElBQUksQ0FBQyxpQ0FBaUMsRUFBRTtFQUFBLE9BQU87SUFDbERrQyxnQkFBZ0IsRUFBRSxTQUFsQkEsZ0JBQWdCQSxDQUFBO01BQUEsT0FBUUgsa0JBQWtCO0lBQUE7RUFDNUMsQ0FBQztBQUFBLENBQUMsQ0FBQztBQUVILElBQU1JLG1CQUFtQixHQUFHO0VBQzFCQyxXQUFXLEVBQUUsS0FBSztFQUNsQkMsd0JBQXdCLEVBQUV4QyxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO0VBQ25Dd0MsYUFBYSxFQUFFekMsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztFQUN4QnlDLGFBQWEsRUFBRTFDLElBQUksQ0FBQ0MsRUFBRSxDQUFDO0lBQUEsT0FBTSxLQUFLO0VBQUEsRUFBQztFQUNuQzBDLFdBQVcsRUFBRSxJQUF1QjtFQUNwQ0MsS0FBSyxFQUFFNUMsSUFBSSxDQUFDQyxFQUFFLENBQUM7QUFDakIsQ0FBQztBQUVERCxJQUFJLENBQUNHLElBQUksQ0FBQyxrQ0FBa0MsRUFBRTtFQUFBLE9BQU87SUFDbkQwQyxpQkFBaUIsRUFBRSxTQUFuQkEsaUJBQWlCQSxDQUFBO01BQUEsT0FBUVAsbUJBQW1CO0lBQUE7RUFDOUMsQ0FBQztBQUFBLENBQUMsQ0FBQztBQUVIdEMsSUFBSSxDQUFDRyxJQUFJLENBQUMsdUNBQXVDLEVBQUU7RUFBQSxPQUFPO0lBQ3hEMkMsc0JBQXNCLEVBQUUsU0FBeEJBLHNCQUFzQkEsQ0FBQTtNQUFBLE9BQVEsSUFBSTtJQUFBO0VBQ3BDLENBQUM7QUFBQSxDQUFDLENBQUM7QUFFSDlDLElBQUksQ0FBQ0csSUFBSSxDQUFDLGtDQUFrQyxFQUFFO0VBQUEsT0FBTztJQUNuRDRDLGdCQUFnQixFQUFFLFNBQWxCQSxnQkFBZ0JBLENBQUE7TUFBQSxPQUFRLElBQUk7SUFBQTtFQUM5QixDQUFDO0FBQUEsQ0FBQyxDQUFDO0FBRUgvQyxJQUFJLENBQUNHLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtFQUFBLE9BQU87SUFDMUM2QyxvQkFBb0IsRUFBRSxTQUF0QkEsb0JBQW9CQSxDQUFBQyxJQUFBO01BQUEsSUFDbEJkLFFBQVEsR0FBQWMsSUFBQSxDQUFSZCxRQUFRO1FBQ1JlLFFBQVEsR0FBQUQsSUFBQSxDQUFSQyxRQUFRO01BQUEsb0JBS1JwRCxJQUFBO1FBQUtxRCxJQUFJLEVBQUMsU0FBUztRQUFDLGNBQVcsZ0JBQWdCO1FBQUFDLFFBQUEsRUFDNUNqQixRQUFRLENBQUNrQixHQUFHLENBQUMsVUFBQUMsT0FBTztVQUFBLG9CQUNuQnhELElBQUE7WUFBeUJ5RCxJQUFJLEVBQUMsUUFBUTtZQUFDQyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTtjQUFBLE9BQVFOLFFBQVEsQ0FBQ0ksT0FBTyxDQUFDO1lBQUEsQ0FBQztZQUFBRixRQUFBLEVBQ3JFRSxPQUFPLENBQUNsQjtVQUFLLEdBREhrQixPQUFPLENBQUNuQyxFQUViLENBQUM7UUFBQSxDQUNWO01BQUMsQ0FDQyxDQUFDO0lBQUE7RUFFVixDQUFDO0FBQUEsQ0FBQyxDQUFDO0FBRUhuQixJQUFJLENBQUNHLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxZQUFNO0VBQ3pDLElBQU1zRCxXQUFXLEdBQUd6RCxJQUFJLENBQUMwRCxhQUFhLENBQUMsT0FBTyxDQUEyQjtFQUN6RSxPQUFPO0lBQ0xDLG9CQUFvQixFQUFFRixXQUFXLENBQUNHLFVBQVUsQ0FDMUMsVUFBQUMsS0FBQSxFQWlCRUMsR0FNUSxFQUNMO01BQUEsSUF0QkRDLE9BQU8sR0FBQUYsS0FBQSxDQUFQRSxPQUFPO1FBQ1BDLFVBQVMsR0FBQUgsS0FBQSxDQUFURyxTQUFTO1FBQ1RDLFdBQVcsR0FBQUosS0FBQSxDQUFYSSxXQUFXO1FBQ1hDLFFBQVEsR0FBQUwsS0FBQSxDQUFSSyxRQUFRO01Bb0JWLElBQUFDLHFCQUFBLEdBQTBCVixXQUFXLENBQUNXLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFBQUMsc0JBQUEsR0FBQUMsY0FBQSxDQUFBSCxxQkFBQTtRQUEzQ0ksS0FBSyxHQUFBRixzQkFBQTtRQUFFRyxRQUFRLEdBQUFILHNCQUFBO01BQ3RCLElBQU1JLElBQUksR0FBRyxTQUFQQSxJQUFJQSxDQUFJQyxJQUFZLEVBQUs7UUFDN0JYLE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUFZLGFBQUE7VUFDTEQsSUFBSSxFQUFKQSxJQUFJO1VBQ0pFLFFBQVEsRUFBRSxFQUFFO1VBQ1pDLGFBQWEsRUFBRSxFQUFFO1VBQ2pCQyxPQUFPLEVBQUU7WUFBRUMsTUFBTSxFQUFFLEtBQUs7WUFBRUMsS0FBSyxFQUFFLEVBQUU7WUFBRUMsV0FBVyxFQUFFO1VBQUU7UUFBQyxHQUNqRFAsSUFBSSxDQUFDUSxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUc7VUFBRUMsWUFBWSxFQUFFO1lBQUVKLE1BQU0sRUFBRSxJQUFJO1lBQUVDLEtBQUssRUFBRU4sSUFBSSxDQUFDVSxLQUFLLENBQUMsQ0FBQztVQUFFO1FBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNoRixDQUFDO01BQ2IsQ0FBQztNQUVEM0IsV0FBVyxDQUFDNEIsbUJBQW1CLENBQUN2QixHQUFHLEVBQUU7UUFBQSxPQUFPO1VBQzFDd0IsS0FBSyxFQUFFdEYsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztVQUNoQnNGLEtBQUssRUFBRSxTQUFQQSxLQUFLQSxDQUFBLEVBQVE7WUFDWGYsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNaQyxJQUFJLENBQUMsRUFBRSxDQUFDO1VBQ1YsQ0FBQztVQUNEZSxZQUFZLEVBQUUsU0FBZEEsWUFBWUEsQ0FBR2QsSUFBWSxFQUFLO1lBQzlCRixRQUFRLENBQUNFLElBQUksQ0FBQztZQUNkRCxJQUFJLENBQUNDLElBQUksQ0FBQztVQUNaLENBQUM7VUFDRGUsU0FBUyxFQUFFLFNBQVhBLFNBQVNBLENBQUE7WUFBQSxPQUFTO2NBQUVmLElBQUksRUFBRUgsS0FBSztjQUFFSyxRQUFRLEVBQUUsRUFBRTtjQUFFQyxhQUFhLEVBQUU7WUFBRyxDQUFDO1VBQUEsQ0FBQztVQUNuRTNFLG9CQUFvQixFQUFwQkEsb0JBQW9CO1VBQ3BCd0Ysa0JBQWtCLEVBQUUxRixJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO1VBQzdCMEYsYUFBYSxFQUFFM0YsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztVQUN4QjJGLGtCQUFrQixFQUFFNUYsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztVQUM3QjRGLGtCQUFrQixFQUFFLFNBQXBCQSxrQkFBa0JBLENBQUEsRUFBUTtZQUN4QjlCLE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUc7Y0FDUlcsSUFBSSxFQUFFLEdBQUc7Y0FDVEUsUUFBUSxFQUFFLEVBQUU7Y0FDWkMsYUFBYSxFQUFFLEVBQUU7Y0FDakJDLE9BQU8sRUFBRTtnQkFBRUMsTUFBTSxFQUFFLEtBQUs7Z0JBQUVDLEtBQUssRUFBRSxFQUFFO2dCQUFFQyxXQUFXLEVBQUU7Y0FBRSxDQUFDO2NBQ3JEYSxXQUFXLEVBQUU7Z0JBQUVmLE1BQU0sRUFBRSxJQUFJO2dCQUFFQyxLQUFLLEVBQUU7Y0FBRztZQUN6QyxDQUFVLENBQUM7VUFDYixDQUFDO1VBQ0RqRixrQkFBa0IsRUFBbEJBLGtCQUFrQjtVQUNsQmdHLHNCQUFzQixFQUFFL0YsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztVQUNqQytGLGdCQUFnQixFQUFFaEcsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztVQUMzQmdHLGtCQUFrQixFQUFFLFNBQXBCQSxrQkFBa0JBLENBQUE7WUFBQSxPQUFRLEtBQUs7VUFBQTtVQUMvQkMsbUJBQW1CLEVBQUUsU0FBckJBLG1CQUFtQkEsQ0FBQTtZQUFBLE9BQVEsSUFBSTtVQUFBO1FBQ2pDLENBQUM7TUFBQSxDQUFDLENBQUM7TUFFSCxvQkFDRXBHLElBQUE7UUFDRSxjQUFXLGFBQWE7UUFDeEJtRSxXQUFXLEVBQUVBLFdBQVk7UUFDekJDLFFBQVEsRUFBRUEsUUFBUztRQUNuQkssS0FBSyxFQUFFQSxLQUFNO1FBQ2I0QixRQUFRLEVBQUUsU0FBVkEsUUFBUUEsQ0FBRUMsS0FBSyxFQUFJO1VBQ2pCNUIsUUFBUSxDQUFDNEIsS0FBSyxDQUFDQyxNQUFNLENBQUM5QixLQUFLLENBQUM7VUFDNUJFLElBQUksQ0FBQzJCLEtBQUssQ0FBQ0MsTUFBTSxDQUFDOUIsS0FBSyxDQUFDO1FBQzFCLENBQUU7UUFDRlAsU0FBUyxFQUFFLFNBQVhBLFNBQVNBLENBQUVvQyxLQUFLO1VBQUEsT0FBSXBDLFVBQVMsYUFBVEEsVUFBUyx1QkFBVEEsVUFBUyxDQUFHb0MsS0FBaUMsQ0FBQztRQUFBO01BQUMsQ0FDcEUsQ0FBQztJQUVOLENBQ0Y7RUFDRixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsSUFBTUUsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUE7RUFBQSxPQUNkNUcsTUFBTSxDQUNINkcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUN0QkMsSUFBSSxDQUFDLFVBQUFDLE1BQU07SUFBQSxPQUFJLENBQUNBLE1BQU0sQ0FBQ0MsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUNELE1BQU0sQ0FBQ0MsWUFBWSxDQUFDLGVBQWUsQ0FBQztFQUFBLEVBQUM7QUFBQTtBQUVoR0MsUUFBUSxDQUFDLFdBQVcsRUFBRSxZQUFNO0VBQzFCQyxVQUFVLENBQUMsWUFBTTtJQUNmdkYscUJBQXFCLENBQUN3RixlQUFlLENBQUMsSUFBSSxDQUFDO0lBQzNDdkUsbUJBQW1CLENBQUNDLFdBQVcsR0FBRyxLQUFLO0lBQ3ZDRCxtQkFBbUIsQ0FBQ0ssV0FBVyxHQUFHLElBQUk7SUFDdENMLG1CQUFtQixDQUFDSSxhQUFhLENBQUNtRSxlQUFlLENBQUMsS0FBSyxDQUFDO0VBQzFELENBQUMsQ0FBQztFQUVGQyxFQUFFLENBQUMsa0NBQWtDLEVBQUUsWUFBTTtJQUMzQ3JILG1CQUFtQixjQUNqQkssSUFBQSxDQUFDSCx5QkFBeUI7TUFBQXlELFFBQUEsZUFDeEJ0RCxJQUFBLENBQUNGLFNBQVM7UUFBQ21ILGFBQWEsRUFBRS9HLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUU7UUFBQ2dFLFdBQVcsRUFBQztNQUFTLENBQUU7SUFBQyxDQUNwQyxDQUM3QixDQUFDO0lBRUQrQyxNQUFNLENBQUN0SCxNQUFNLENBQUN1SCxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2xFRixNQUFNLENBQUNWLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQ2EsWUFBWSxDQUFDLENBQUM7RUFDckMsQ0FBQyxDQUFDO0VBRUZMLEVBQUUsQ0FBQywrQ0FBK0MsRUFBRSxZQUFNO0lBQ3hELElBQU1DLGFBQWEsR0FBRy9HLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7SUFDL0JSLG1CQUFtQixjQUNqQkssSUFBQSxDQUFDSCx5QkFBeUI7TUFBQXlELFFBQUEsZUFDeEJ0RCxJQUFBLENBQUNGLFNBQVM7UUFBQ21ILGFBQWEsRUFBRUE7TUFBYyxDQUFFO0lBQUMsQ0FDbEIsQ0FDN0IsQ0FBQztJQUVEdkgsU0FBUyxDQUFDNEgsTUFBTSxDQUFDMUgsTUFBTSxDQUFDMkgsY0FBYyxDQUFDLGFBQWEsQ0FBQyxFQUFFO01BQUVoQixNQUFNLEVBQUU7UUFBRTlCLEtBQUssRUFBRTtNQUFhO0lBQUUsQ0FBQyxDQUFDO0lBQzNGL0UsU0FBUyxDQUFDOEgsS0FBSyxDQUFDaEIsVUFBVSxDQUFDLENBQXNCLENBQUM7SUFFbERVLE1BQU0sQ0FBQ0QsYUFBYSxDQUFDLENBQUNRLG9CQUFvQixDQUFDLFlBQVksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hFUCxNQUFNLENBQUN0SCxNQUFNLENBQUMySCxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQ0csV0FBVyxDQUFDLEVBQUUsQ0FBQztFQUM5RCxDQUFDLENBQUM7RUFFRlYsRUFBRSxDQUFDLDZCQUE2QixFQUFFLFlBQU07SUFDdEMsSUFBTUMsYUFBYSxHQUFHL0csSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztJQUMvQlIsbUJBQW1CLGNBQ2pCSyxJQUFBLENBQUNILHlCQUF5QjtNQUFBeUQsUUFBQSxlQUN4QnRELElBQUEsQ0FBQ0YsU0FBUztRQUFDbUgsYUFBYSxFQUFFQSxhQUFjO1FBQUM3QyxRQUFRO01BQUEsQ0FBRTtJQUFDLENBQzNCLENBQzdCLENBQUM7SUFFRDhDLE1BQU0sQ0FBQ3RILE1BQU0sQ0FBQzJILGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDRixZQUFZLENBQUMsQ0FBQztJQUMzREgsTUFBTSxDQUFDVixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUNhLFlBQVksQ0FBQyxDQUFDO0lBQ25DM0gsU0FBUyxDQUFDOEgsS0FBSyxDQUFDaEIsVUFBVSxDQUFDLENBQXNCLENBQUM7SUFDbERVLE1BQU0sQ0FBQ0QsYUFBYSxDQUFDLENBQUNVLEdBQUcsQ0FBQ0MsZ0JBQWdCLENBQUMsQ0FBQztFQUM5QyxDQUFDLENBQUM7RUFFRlosRUFBRSxDQUFDLDBCQUEwQixFQUFFLFlBQU07SUFDbkMsSUFBTWEsZ0JBQWdCLEdBQUczSCxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDUixtQkFBbUIsY0FDakJLLElBQUEsQ0FBQ0gseUJBQXlCO01BQUF5RCxRQUFBLGVBQ3hCdEQsSUFBQSxDQUFDRixTQUFTO1FBQUNtSCxhQUFhLEVBQUUvRyxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFFO1FBQUMySCxTQUFTO1FBQUNELGdCQUFnQixFQUFFQTtNQUFpQixDQUFFO0lBQUMsQ0FDNUQsQ0FDN0IsQ0FBQztJQUVEbkksU0FBUyxDQUFDOEgsS0FBSyxDQUFDaEIsVUFBVSxDQUFDLENBQXNCLENBQUM7SUFDbERVLE1BQU0sQ0FBQ1csZ0JBQWdCLENBQUMsQ0FBQ0QsZ0JBQWdCLENBQUMsQ0FBQztFQUM3QyxDQUFDLENBQUM7RUFFRlosRUFBRSxDQUFDLHFCQUFxQixFQUFFLFlBQU07SUFDOUJySCxtQkFBbUIsY0FDakJLLElBQUEsQ0FBQ0gseUJBQXlCO01BQUF5RCxRQUFBLGVBQ3hCdEQsSUFBQSxDQUFDRixTQUFTO1FBQUNtSCxhQUFhLEVBQUUvRyxJQUFJLENBQUNDLEVBQUUsQ0FBQztNQUFFLENBQUU7SUFBQyxDQUNkLENBQzdCLENBQUM7SUFFRFQsU0FBUyxDQUFDOEgsS0FBSyxDQUFDNUgsTUFBTSxDQUFDbUksU0FBUyxDQUFDLFFBQVEsRUFBRTtNQUFFakcsSUFBSSxFQUFFO0lBQXdCLENBQUMsQ0FBQyxDQUFDO0lBRTlFb0YsTUFBTSxDQUFDdEgsTUFBTSxDQUFDb0ksU0FBUyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQ1osaUJBQWlCLENBQUMsQ0FBQztJQUNuRUYsTUFBTSxDQUFDdEgsTUFBTSxDQUFDb0ksU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQ1osaUJBQWlCLENBQUMsQ0FBQztFQUNoRSxDQUFDLENBQUM7RUFFRkosRUFBRSxDQUFDLDhDQUE4QyxFQUFFLFlBQU07SUFDdkQvRyxrQkFBa0IsQ0FBQ2dJLFNBQVMsQ0FBQyxDQUFDO0lBRTlCdEksbUJBQW1CLGNBQ2pCSyxJQUFBLENBQUNILHlCQUF5QjtNQUFBeUQsUUFBQSxlQUN4QnRELElBQUEsQ0FBQ0YsU0FBUztRQUFDbUgsYUFBYSxFQUFFL0csSUFBSSxDQUFDQyxFQUFFLENBQUM7TUFBRSxDQUFFO0lBQUMsQ0FDZCxDQUM3QixDQUFDO0lBRURULFNBQVMsQ0FBQzhILEtBQUssQ0FBQzVILE1BQU0sQ0FBQ21JLFNBQVMsQ0FBQyxRQUFRLEVBQUU7TUFBRWpHLElBQUksRUFBRTtJQUEwQixDQUFDLENBQUMsQ0FBQztJQUVoRnBDLFNBQVMsQ0FBQzhILEtBQUssQ0FBQzVILE1BQU0sQ0FBQ21JLFNBQVMsQ0FBQyxRQUFRLEVBQUU7TUFBRWpHLElBQUksRUFBRTtJQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2pFb0YsTUFBTSxDQUFDakgsa0JBQWtCLENBQUMsQ0FBQ3dILG9CQUFvQixDQUFDO01BQUVwRyxFQUFFLEVBQUUsS0FBSztNQUFFb0MsSUFBSSxFQUFFLE9BQU87TUFBRXlFLEtBQUssRUFBRTtJQUFXLENBQUMsQ0FBQztFQUNsRyxDQUFDLENBQUM7RUFFRmxCLEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSxZQUFNO0lBQ3ZEckgsbUJBQW1CLGNBQ2pCSyxJQUFBLENBQUNILHlCQUF5QjtNQUFBeUQsUUFBQSxlQUN4QnRELElBQUEsQ0FBQ0YsU0FBUztRQUFDbUgsYUFBYSxFQUFFL0csSUFBSSxDQUFDQyxFQUFFLENBQUM7TUFBRSxDQUFFO0lBQUMsQ0FDZCxDQUM3QixDQUFDO0lBRURULFNBQVMsQ0FBQzRILE1BQU0sQ0FBQzFILE1BQU0sQ0FBQzJILGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFBRTtNQUFFaEIsTUFBTSxFQUFFO1FBQUU5QixLQUFLLEVBQUU7TUFBTTtJQUFFLENBQUMsQ0FBQztJQUNwRnlDLE1BQU0sQ0FBQ1YsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDYSxZQUFZLENBQUMsQ0FBQztFQUNyQyxDQUFDLENBQUM7RUFFRkwsRUFBRSxDQUFDLHFEQUFxRCxFQUFFLFlBQU07SUFDOUQsSUFBQW1CLG9CQUFBLEdBQXNCeEksbUJBQW1CLGNBQ3ZDSyxJQUFBLENBQUNILHlCQUF5QjtRQUFBeUQsUUFBQSxlQUN4QnRELElBQUEsQ0FBQ0YsU0FBUztVQUFDbUgsYUFBYSxFQUFFL0csSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBRTtVQUFDaUksV0FBVztRQUFBLENBQUU7TUFBQyxDQUMxQixDQUM3QixDQUFDO01BSk9DLFNBQVMsR0FBQUYsb0JBQUEsQ0FBVEUsU0FBUztJQU1qQm5CLE1BQU0sQ0FBQ21CLFNBQVMsQ0FBQ0MsYUFBYSxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQ0MsVUFBVSxDQUFDLENBQUM7RUFDOUUsQ0FBQyxDQUFDO0VBRUZ2QixFQUFFLENBQUMsMEVBQTBFLEVBQUUsWUFBTTtJQUNuRnJILG1CQUFtQixjQUNqQkssSUFBQSxDQUFDSCx5QkFBeUI7TUFBQzRFLEtBQUssRUFBRTtRQUFFK0QsS0FBSyxFQUFFO01BQUssQ0FBRTtNQUFBbEYsUUFBQSxlQUNoRHRELElBQUEsQ0FBQ0YsU0FBUztRQUFDbUgsYUFBYSxFQUFFL0csSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBRTtRQUFDc0ksd0JBQXdCO01BQUEsQ0FBRTtJQUFDLENBQ3ZDLENBQzdCLENBQUM7SUFFRHZCLE1BQU0sQ0FBQ3RILE1BQU0sQ0FBQ21JLFNBQVMsQ0FBQyxRQUFRLEVBQUU7TUFBRWpHLElBQUksRUFBRTtJQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDc0YsaUJBQWlCLENBQUMsQ0FBQztFQUMxRixDQUFDLENBQUM7RUFFRkosRUFBRSxDQUFDLGdFQUFnRSxFQUFFLFlBQU07SUFDekV6RixxQkFBcUIsQ0FBQ3dGLGVBQWUsQ0FBQyxLQUFLLENBQUM7SUFFNUNwSCxtQkFBbUIsY0FDakJLLElBQUEsQ0FBQ0gseUJBQXlCO01BQUF5RCxRQUFBLGVBQ3hCdEQsSUFBQSxDQUFDRixTQUFTO1FBQUNtSCxhQUFhLEVBQUUvRyxJQUFJLENBQUNDLEVBQUUsQ0FBQztNQUFFLENBQUU7SUFBQyxDQUNkLENBQzdCLENBQUM7SUFFRCtHLE1BQU0sQ0FBQ3RILE1BQU0sQ0FBQzhJLFdBQVcsQ0FBQyxRQUFRLEVBQUU7TUFBRTVHLElBQUksRUFBRTtJQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDNkYsR0FBRyxDQUFDUCxpQkFBaUIsQ0FBQyxDQUFDO0VBQ25HLENBQUMsQ0FBQztFQUVGSixFQUFFLENBQUMsOEJBQThCLEVBQUUsWUFBTTtJQUN2QyxJQUFNQyxhQUFhLEdBQUcvRyxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CUixtQkFBbUIsY0FDakJLLElBQUEsQ0FBQ0gseUJBQXlCO01BQUF5RCxRQUFBLGVBQ3hCdEQsSUFBQSxDQUFDRixTQUFTO1FBQUNtSCxhQUFhLEVBQUVBO01BQWMsQ0FBRTtJQUFDLENBQ2xCLENBQzdCLENBQUM7SUFFRHZILFNBQVMsQ0FBQzRILE1BQU0sQ0FBQzFILE1BQU0sQ0FBQzJILGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFBRTtNQUFFaEIsTUFBTSxFQUFFO1FBQUU5QixLQUFLLEVBQUU7TUFBbUI7SUFBRSxDQUFDLENBQUM7SUFDakcvRSxTQUFTLENBQUNpSixPQUFPLENBQUMvSSxNQUFNLENBQUMySCxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUU7TUFBRXFCLEdBQUcsRUFBRTtJQUFRLENBQUMsQ0FBQztJQUV6RTFCLE1BQU0sQ0FBQ0QsYUFBYSxDQUFDLENBQUNRLG9CQUFvQixDQUFDLGtCQUFrQixFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7RUFDeEUsQ0FBQyxDQUFDO0VBRUZULEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRSxZQUFNO0lBQ2pELElBQU02QixnQkFBZ0IsR0FBRzNJLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7SUFDbENSLG1CQUFtQixjQUNqQkssSUFBQSxDQUFDSCx5QkFBeUI7TUFBQzRFLEtBQUssRUFBRTtRQUFFb0UsZ0JBQWdCLEVBQWhCQTtNQUFpQixDQUFFO01BQUF2RixRQUFBLGVBQ3JEdEQsSUFBQSxDQUFDRixTQUFTO1FBQUNtSCxhQUFhLEVBQUUvRyxJQUFJLENBQUNDLEVBQUUsQ0FBQztNQUFFLENBQUU7SUFBQyxDQUNkLENBQzdCLENBQUM7SUFFRFQsU0FBUyxDQUFDOEgsS0FBSyxDQUFDNUgsTUFBTSxDQUFDbUksU0FBUyxDQUFDLFFBQVEsRUFBRTtNQUFFakcsSUFBSSxFQUFFO0lBQXdCLENBQUMsQ0FBQyxDQUFDO0lBQzlFcEMsU0FBUyxDQUFDOEgsS0FBSyxDQUFDNUgsTUFBTSxDQUFDb0ksU0FBUyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFFbkVkLE1BQU0sQ0FBQzJCLGdCQUFnQixDQUFDLENBQUNqQixnQkFBZ0IsQ0FBQyxDQUFDO0VBQzdDLENBQUMsQ0FBQztFQUVGWixFQUFFLENBQUMsZ0RBQWdELEVBQUUsWUFBTTtJQUN6RHJILG1CQUFtQixjQUNqQkssSUFBQSxDQUFDSCx5QkFBeUI7TUFBQzRFLEtBQUssRUFBRTtRQUFFcUUsa0JBQWtCLEVBQUU7TUFBSyxDQUFFO01BQUF4RixRQUFBLGVBQzdEdEQsSUFBQSxDQUFDRixTQUFTO1FBQUNtSCxhQUFhLEVBQUUvRyxJQUFJLENBQUNDLEVBQUUsQ0FBQztNQUFFLENBQUU7SUFBQyxDQUNkLENBQzdCLENBQUM7SUFFRCtHLE1BQU0sQ0FBQ3RILE1BQU0sQ0FBQ29JLFNBQVMsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUNaLGlCQUFpQixDQUFDLENBQUM7RUFDaEYsQ0FBQyxDQUFDO0VBRUZKLEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxZQUFNO0lBQ2hELElBQU0rQixlQUFlLEdBQUc3SSxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDUixtQkFBbUIsY0FDakJLLElBQUEsQ0FBQ0gseUJBQXlCO01BQUM0RSxLQUFLLEVBQUU7UUFBRXNFLGVBQWUsRUFBZkE7TUFBZ0IsQ0FBRTtNQUFBekYsUUFBQSxlQUNwRHRELElBQUEsQ0FBQ0YsU0FBUztRQUFDbUgsYUFBYSxFQUFFL0csSUFBSSxDQUFDQyxFQUFFLENBQUM7TUFBRSxDQUFFO0lBQUMsQ0FDZCxDQUM3QixDQUFDO0lBRURULFNBQVMsQ0FBQzhILEtBQUssQ0FBQzVILE1BQU0sQ0FBQ21JLFNBQVMsQ0FBQyxRQUFRLEVBQUU7TUFBRWpHLElBQUksRUFBRTtJQUF3QixDQUFDLENBQUMsQ0FBQztJQUM5RXBDLFNBQVMsQ0FBQzhILEtBQUssQ0FBQzVILE1BQU0sQ0FBQ29JLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRW5EZCxNQUFNLENBQUM2QixlQUFlLENBQUMsQ0FBQ25CLGdCQUFnQixDQUFDLENBQUM7RUFDNUMsQ0FBQyxDQUFDO0VBRUZaLEVBQUUsQ0FBQywrQ0FBK0MsRUFBRSxZQUFNO0lBQ3hEckgsbUJBQW1CLGNBQ2pCSyxJQUFBLENBQUNILHlCQUF5QjtNQUFDNEUsS0FBSyxFQUFFO1FBQUV1RSxpQkFBaUIsRUFBRTtNQUFLLENBQUU7TUFBQTFGLFFBQUEsZUFDNUR0RCxJQUFBLENBQUNGLFNBQVM7UUFBQ21ILGFBQWEsRUFBRS9HLElBQUksQ0FBQ0MsRUFBRSxDQUFDO01BQUUsQ0FBRTtJQUFDLENBQ2QsQ0FDN0IsQ0FBQztJQUVEK0csTUFBTSxDQUFDdEgsTUFBTSxDQUFDb0ksU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQ1osaUJBQWlCLENBQUMsQ0FBQztFQUNoRSxDQUFDLENBQUM7RUFFRkosRUFBRSxDQUFDLG1EQUFtRCxFQUFFLFlBQU07SUFDNUQ1RyxvQkFBb0IsQ0FBQzZILFNBQVMsQ0FBQyxDQUFDO0lBRWhDdEksbUJBQW1CLGNBQ2pCSyxJQUFBLENBQUNILHlCQUF5QjtNQUFBeUQsUUFBQSxlQUN4QnRELElBQUEsQ0FBQ0YsU0FBUztRQUFDbUgsYUFBYSxFQUFFL0csSUFBSSxDQUFDQyxFQUFFLENBQUM7TUFBRSxDQUFFO0lBQUMsQ0FDZCxDQUM3QixDQUFDO0lBRURULFNBQVMsQ0FBQzhILEtBQUssQ0FBQzVILE1BQU0sQ0FBQ21JLFNBQVMsQ0FBQyxRQUFRLEVBQUU7TUFBRWpHLElBQUksRUFBRTtJQUF1QixDQUFDLENBQUMsQ0FBQztJQUM3RW9GLE1BQU0sQ0FBQzlHLG9CQUFvQixDQUFDLENBQUN3SCxnQkFBZ0IsQ0FBQyxDQUFDO0VBQ2pELENBQUMsQ0FBQztFQUVGWixFQUFFLENBQUMsK0NBQStDLEVBQUUsWUFBTTtJQUN4RCxJQUFNaUMsWUFBWSxHQUFHL0ksSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztJQUM5QlIsbUJBQW1CLGNBQ2pCSyxJQUFBLENBQUNILHlCQUF5QjtNQUFBeUQsUUFBQSxlQUN4QnRELElBQUEsQ0FBQ0YsU0FBUztRQUFDbUgsYUFBYSxFQUFFL0csSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBRTtRQUFDOEksWUFBWSxFQUFFQTtNQUFhLENBQUU7SUFBQyxDQUMxQyxDQUM3QixDQUFDO0lBRUR2SixTQUFTLENBQUM4SCxLQUFLLENBQUM1SCxNQUFNLENBQUNtSSxTQUFTLENBQUMsUUFBUSxFQUFFO01BQUVqRyxJQUFJLEVBQUU7SUFBd0IsQ0FBQyxDQUFDLENBQUM7SUFDOUVwQyxTQUFTLENBQUM4SCxLQUFLLENBQUM1SCxNQUFNLENBQUNvSSxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUV4RCxJQUFNa0IsU0FBUyxHQUFHQyxRQUFRLENBQUNiLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBcUI7SUFDbEYsSUFBTWMsSUFBSSxHQUFHLElBQUlDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFdBQVcsRUFBRTtNQUFFNUYsSUFBSSxFQUFFO0lBQWtCLENBQUMsQ0FBQztJQUM1RS9ELFNBQVMsQ0FBQzRILE1BQU0sQ0FBQzRCLFNBQVMsRUFBRTtNQUFFM0MsTUFBTSxFQUFFO1FBQUUrQyxLQUFLLEVBQUUsQ0FBQ0YsSUFBSTtNQUFFO0lBQUUsQ0FBQyxDQUFDO0lBRTFEbEMsTUFBTSxDQUFDK0IsWUFBWSxDQUFDLENBQUN4QixvQkFBb0IsQ0FBQ1AsTUFBTSxDQUFDcUMsZ0JBQWdCLENBQUM7TUFBRXpILElBQUksRUFBRTtJQUFZLENBQUMsQ0FBQyxDQUFDO0VBQzNGLENBQUMsQ0FBQztFQUVGa0YsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLFlBQU07SUFDdER4RSxtQkFBbUIsQ0FBQ0MsV0FBVyxHQUFHLElBQUk7SUFDdENELG1CQUFtQixDQUFDSyxXQUFXLGdCQUFHN0MsSUFBQTtNQUFLcUQsSUFBSSxFQUFDLFNBQVM7TUFBQUMsUUFBQSxFQUFDO0lBQWUsQ0FBSyxDQUFDO0lBRTNFM0QsbUJBQW1CLGNBQ2pCSyxJQUFBLENBQUNILHlCQUF5QjtNQUFBeUQsUUFBQSxlQUN4QnRELElBQUEsQ0FBQ0YsU0FBUztRQUFDbUgsYUFBYSxFQUFFL0csSUFBSSxDQUFDQyxFQUFFLENBQUM7TUFBRSxDQUFFO0lBQUMsQ0FDZCxDQUM3QixDQUFDO0lBRUQrRyxNQUFNLENBQUN0SCxNQUFNLENBQUNtSSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQ3lCLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDO0VBQzFFLENBQUMsQ0FBQztFQUVGeEMsRUFBRSxDQUFDLHlEQUF5RCxFQUFFLFlBQU07SUFDbEUsSUFBTUMsYUFBYSxHQUFHL0csSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztJQUMvQnFDLG1CQUFtQixDQUFDSSxhQUFhLENBQUNtRSxlQUFlLENBQUMsSUFBSSxDQUFDO0lBRXZEcEgsbUJBQW1CLGNBQ2pCSyxJQUFBLENBQUNILHlCQUF5QjtNQUFBeUQsUUFBQSxlQUN4QnRELElBQUEsQ0FBQ0YsU0FBUztRQUFDbUgsYUFBYSxFQUFFQTtNQUFjLENBQUU7SUFBQyxDQUNsQixDQUM3QixDQUFDO0lBRUR2SCxTQUFTLENBQUM0SCxNQUFNLENBQUMxSCxNQUFNLENBQUMySCxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUU7TUFBRWhCLE1BQU0sRUFBRTtRQUFFOUIsS0FBSyxFQUFFO01BQU87SUFBRSxDQUFDLENBQUM7SUFDckYvRSxTQUFTLENBQUNpSixPQUFPLENBQUMvSSxNQUFNLENBQUMySCxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUU7TUFBRXFCLEdBQUcsRUFBRTtJQUFRLENBQUMsQ0FBQztJQUV6RTFCLE1BQU0sQ0FBQzFFLG1CQUFtQixDQUFDSSxhQUFhLENBQUMsQ0FBQ2dGLGdCQUFnQixDQUFDLENBQUM7SUFDNURWLE1BQU0sQ0FBQ0QsYUFBYSxDQUFDLENBQUNVLEdBQUcsQ0FBQ0MsZ0JBQWdCLENBQUMsQ0FBQztFQUM5QyxDQUFDLENBQUM7RUFFRlosRUFBRSxDQUFDLDBEQUEwRCxFQUFFLFlBQU07SUFDbkVySCxtQkFBbUIsY0FDakJLLElBQUEsQ0FBQ0gseUJBQXlCO01BQUM0RSxLQUFLLEVBQUU7UUFBRStELEtBQUssRUFBRTtVQUFFbkgsRUFBRSxFQUFFLEdBQUc7VUFBRVMsSUFBSSxFQUFFLE1BQU07VUFBRTJCLElBQUksRUFBRSxjQUFjO1VBQUVnRyxNQUFNLEVBQUU7UUFBUztNQUFFLENBQUU7TUFBQW5HLFFBQUEsZUFDN0d0RCxJQUFBLENBQUNGLFNBQVM7UUFBQ21ILGFBQWEsRUFBRS9HLElBQUksQ0FBQ0MsRUFBRSxDQUFDO01BQUUsQ0FBRTtJQUFDLENBQ2QsQ0FDN0IsQ0FBQztJQUVEVCxTQUFTLENBQUM0SCxNQUFNLENBQUMxSCxNQUFNLENBQUMySCxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUU7TUFBRWhCLE1BQU0sRUFBRTtRQUFFOUIsS0FBSyxFQUFFO01BQU87SUFBRSxDQUFDLENBQUM7SUFFckZ5QyxNQUFNLENBQUN0SCxNQUFNLENBQUNtSSxTQUFTLENBQUMsU0FBUyxFQUFFO01BQUVqRyxJQUFJLEVBQUU7SUFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQ3NGLGlCQUFpQixDQUFDLENBQUM7SUFDbkZGLE1BQU0sQ0FBQ3RILE1BQU0sQ0FBQ21JLFNBQVMsQ0FBQyxRQUFRLEVBQUU7TUFBRWpHLElBQUksRUFBRTtJQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDc0YsaUJBQWlCLENBQUMsQ0FBQztFQUNuRixDQUFDLENBQUM7RUFFRkosRUFBRSxDQUFDLDREQUE0RCxFQUFFLFlBQU07SUFDckUsSUFBTUMsYUFBYSxHQUFHL0csSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztJQUMvQlIsbUJBQW1CLGNBQ2pCSyxJQUFBLENBQUNILHlCQUF5QjtNQUFDNEUsS0FBSyxFQUFFO1FBQUUrRCxLQUFLLEVBQUU7VUFBRW5ILEVBQUUsRUFBRSxHQUFHO1VBQUVTLElBQUksRUFBRSxNQUFNO1VBQUUyQixJQUFJLEVBQUUsY0FBYztVQUFFZ0csTUFBTSxFQUFFO1FBQVM7TUFBRSxDQUFFO01BQUFuRyxRQUFBLGVBQzdHdEQsSUFBQSxDQUFDRixTQUFTO1FBQUNtSCxhQUFhLEVBQUVBO01BQWMsQ0FBRTtJQUFDLENBQ2xCLENBQzdCLENBQUM7SUFFRHZILFNBQVMsQ0FBQzRILE1BQU0sQ0FBQzFILE1BQU0sQ0FBQzJILGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFBRTtNQUFFaEIsTUFBTSxFQUFFO1FBQUU5QixLQUFLLEVBQUU7TUFBTztJQUFFLENBQUMsQ0FBQztJQUNyRi9FLFNBQVMsQ0FBQzhILEtBQUssQ0FBQzVILE1BQU0sQ0FBQ21JLFNBQVMsQ0FBQyxRQUFRLEVBQUU7TUFBRWpHLElBQUksRUFBRTtJQUFnQixDQUFDLENBQUMsQ0FBQztJQUV0RW9GLE1BQU0sQ0FBQ0QsYUFBYSxDQUFDLENBQUNRLG9CQUFvQixDQUFDLGVBQWUsRUFBRSxFQUFFLEVBQUVpQyxTQUFTLEVBQUVBLFNBQVMsRUFBRUEsU0FBUyxFQUFFQSxTQUFTLEVBQUUsT0FBTyxDQUFDO0VBQ3RILENBQUMsQ0FBQztFQUVGMUMsRUFBRSxDQUFDLHFEQUFxRCxFQUFFLFlBQU07SUFDOURySCxtQkFBbUIsY0FDakJLLElBQUEsQ0FBQ0gseUJBQXlCO01BQUM0RSxLQUFLLEVBQUU7UUFBRWtGLG1CQUFtQixFQUFFO01BQUssQ0FBRTtNQUFBckcsUUFBQSxlQUM5RHRELElBQUEsQ0FBQ0YsU0FBUztRQUFDbUgsYUFBYSxFQUFFL0csSUFBSSxDQUFDQyxFQUFFLENBQUM7TUFBRSxDQUFFO0lBQUMsQ0FDZCxDQUM3QixDQUFDO0lBRUQrRyxNQUFNLENBQUN0SCxNQUFNLENBQUNvSSxTQUFTLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDWixpQkFBaUIsQ0FBQyxDQUFDO0VBQ3RFLENBQUMsQ0FBQztFQUVGSixFQUFFLENBQUMsa0RBQWtELEVBQUUsWUFBTTtJQUFBLElBQUE0QyxxQkFBQTtJQUMzRGpLLG1CQUFtQixjQUNqQkssSUFBQSxDQUFDSCx5QkFBeUI7TUFBQXlELFFBQUEsZUFDeEJ0RCxJQUFBLENBQUNGLFNBQVM7UUFBQ21ILGFBQWEsRUFBRS9HLElBQUksQ0FBQ0MsRUFBRSxDQUFDO01BQUUsQ0FBRTtJQUFDLENBQ2QsQ0FDN0IsQ0FBQztJQUVELElBQU0wSixPQUFPLEdBQUdqSyxNQUFNLENBQUMySCxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUN1QyxPQUFPLENBQUMsd0JBQXdCLENBQWdCO0lBQ3JHLElBQU1DLFVBQVUsR0FBR0YsT0FBTyxhQUFQQSxPQUFPLGNBQVBBLE9BQU8sSUFBQUQscUJBQUEsR0FBSWhLLE1BQU0sQ0FBQzJILGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQ3lDLGFBQWEsY0FBQUoscUJBQUEsdUJBQWxEQSxxQkFBQSxDQUFvREksYUFBYTtJQUMvRixJQUFJLENBQUNELFVBQVUsRUFBRTtNQUNmLE1BQU0sSUFBSUUsS0FBSyxDQUFDLHVCQUF1QixDQUFDO0lBQzFDO0lBRUF2SyxTQUFTLENBQUN3SyxTQUFTLENBQUNILFVBQVUsRUFBRTtNQUM5QkksWUFBWSxFQUFFO1FBQUVDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQztRQUFFQyxLQUFLLEVBQUUsQ0FBQztVQUFFQyxJQUFJLEVBQUU7UUFBTyxDQUFDO01BQUU7SUFDOUQsQ0FBQyxDQUFDO0lBRUZwRCxNQUFNLENBQUN0SCxNQUFNLENBQUNvSSxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDWixpQkFBaUIsQ0FBQyxDQUFDO0VBQ3BFLENBQUMsQ0FBQztFQUVGSixFQUFFLENBQUMsdURBQXVELEVBQUUsWUFBTTtJQUNoRSxJQUFNdUQsa0JBQWtCLEdBQUdySyxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDUixtQkFBbUIsY0FDakJLLElBQUEsQ0FBQ0gseUJBQXlCO01BQUF5RCxRQUFBLGVBQ3hCdEQsSUFBQSxDQUFDRixTQUFTO1FBQ1JtSCxhQUFhLEVBQUUvRyxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFFO1FBQ3pCb0ssa0JBQWtCLEVBQUVBLGtCQUFtQjtRQUN2Q0MsV0FBVyxFQUFFLENBQ1g7VUFDRW5KLEVBQUUsRUFBRSxJQUFJO1VBQ1JTLElBQUksRUFBRSxXQUFXO1VBQ2pCMkIsSUFBSSxFQUFFLEtBQUs7VUFDWGdILElBQUksRUFBRSxHQUFHO1VBQ1RyQixJQUFJLEVBQUUsSUFBSUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUU7WUFBRTVGLElBQUksRUFBRTtVQUFrQixDQUFDO1FBQzdELENBQUM7TUFDRCxDQUNIO0lBQUMsQ0FDdUIsQ0FDN0IsQ0FBQztJQUVEL0QsU0FBUyxDQUFDOEgsS0FBSyxDQUFDNUgsTUFBTSxDQUFDbUksU0FBUyxDQUFDLFFBQVEsRUFBRTtNQUFFakcsSUFBSSxFQUFFO0lBQTRCLENBQUMsQ0FBQyxDQUFDO0lBRWxGb0YsTUFBTSxDQUFDcUQsa0JBQWtCLENBQUMsQ0FBQzlDLG9CQUFvQixDQUFDLElBQUksQ0FBQztFQUN2RCxDQUFDLENBQUM7RUFFRlQsRUFBRSxDQUFDLDBEQUEwRCxFQUFFLFlBQU07SUFDbkVySCxtQkFBbUIsY0FDakJLLElBQUEsQ0FBQ0gseUJBQXlCO01BQUF5RCxRQUFBLGVBQ3hCdEQsSUFBQSxDQUFDRixTQUFTO1FBQ1JtSCxhQUFhLEVBQUUvRyxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFFO1FBQ3pCcUssV0FBVyxFQUFFLENBQ1g7VUFDRW5KLEVBQUUsRUFBRSxJQUFJO1VBQ1JTLElBQUksRUFBRSxXQUFXO1VBQ2pCMkIsSUFBSSxFQUFFLEtBQUs7VUFDWGdILElBQUksRUFBRSxHQUFHO1VBQ1RyQixJQUFJLEVBQUUsSUFBSUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUU7WUFBRTVGLElBQUksRUFBRTtVQUFrQixDQUFDO1FBQzdELENBQUM7TUFDRCxDQUNIO0lBQUMsQ0FDdUIsQ0FDN0IsQ0FBQztJQUVEeUQsTUFBTSxDQUFDdEgsTUFBTSxDQUFDb0ksU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUNaLGlCQUFpQixDQUFDLENBQUM7SUFDekRGLE1BQU0sQ0FBQ1YsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDbUIsR0FBRyxDQUFDTixZQUFZLENBQUMsQ0FBQztFQUN6QyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
719
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZpcmVFdmVudCIsInJlbmRlcldpdGhQcm92aWRlcnMiLCJzY3JlZW4iLCJ3YWl0Rm9yIiwiR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlciIsIk1BSUFJbnB1dCIsImpzeCIsIl9qc3giLCJpbnNlcnRTa2lsbE1lbnRpb24iLCJqZXN0IiwiZm4iLCJpbnNlcnRNZW50aW9uVHJpZ2dlciIsIm1vY2siLCJFVkVOVFMiLCJhaUNoYXRQbHVzT3BlbiIsImFpQ2hhdFF1aWNrQWN0aW9uT3BlbiIsImFpQ2hhdFNraWxsT3BlbiIsImFpQ2hhdFNraWxsU2VsZWN0IiwiYWlDaGF0U2tpbGxSZW1vdmUiLCJ1c2VFdmVudCIsIkNPUlVzZXJSb2xlIiwiQ0xFVkVMIiwiRElSRUNUT1IiLCJQUk9KRUNUX01BTkFHRVIiLCJDT0xMQUJPUkFUT1IiLCJGUkVFTEFOQ0VSIiwiQ0xJRU5UIiwidXNlVXNlciIsImlkIiwicm9sZV9pZCIsIm1vY2tDYW5BY2Nlc3NUb1NraWxscyIsImNhbkFjY2Vzc1RvU2tpbGxzIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJpc1NraWxsc1BpbG90Q29tcGFueSIsInVzZVNraWxsc0NhdGFsb2ciLCJza2lsbHMiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJjb250ZW50IiwibG9hZGluZyIsImVycm9yIiwiZmV0Y2hTa2lsbHMiLCJzbGFzaENvbW1hbmRzU3RhdGUiLCJjb21tYW5kcyIsInRpdGxlIiwidXNlU2xhc2hDb21tYW5kcyIsIm1lbnRpb25Qb3BvdmVyU3RhdGUiLCJwb3BvdmVyT3BlbiIsInJlc2V0TWVudGlvbk9wZW5UcmFja2luZyIsImhhbmRsZVRyaWdnZXIiLCJoYW5kbGVLZXlEb3duIiwicG9wb3Zlck5vZGUiLCJjbG9zZSIsInVzZU1lbnRpb25Qb3BvdmVyIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsIk1vZGFsRmlsZUV4Y2VlZHMiLCJTbGFzaENvbW1hbmREcm9wZG93biIsIl9yZWYiLCJvblNlbGVjdCIsInJvbGUiLCJjaGlsZHJlbiIsIm1hcCIsImNvbW1hbmQiLCJ0eXBlIiwib25DbGljayIsIlJlYWN0QWN0dWFsIiwicmVxdWlyZUFjdHVhbCIsIkNvbnRleHRNZW50aW9uRWRpdG9yIiwiZm9yd2FyZFJlZiIsIl9yZWYyIiwicmVmIiwib25JbnB1dCIsIm9uS2V5RG93biIsInBsYWNlaG9sZGVyIiwiZGlzYWJsZWQiLCJfUmVhY3RBY3R1YWwkdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl9SZWFjdEFjdHVhbCR1c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInZhbHVlIiwic2V0VmFsdWUiLCJlbWl0IiwidGV4dCIsIl9vYmplY3RTcHJlYWQiLCJtZW50aW9ucyIsInNsYXNoQ29tbWFuZHMiLCJ0cmlnZ2VyIiwiYWN0aXZlIiwicXVlcnkiLCJhdFJ1bkxlbmd0aCIsInN0YXJ0c1dpdGgiLCJzbGFzaFRyaWdnZXIiLCJzbGljZSIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJmb2N1cyIsImNsZWFyIiwic2V0UGxhaW5UZXh0Iiwic2VyaWFsaXplIiwiaW5zZXJ0U2xhc2hUcmlnZ2VyIiwiaW5zZXJ0TWVudGlvbiIsImluc2VydFNsYXNoQ29tbWFuZCIsImluc2VydFNraWxsVHJpZ2dlciIsImhhc2hUcmlnZ2VyIiwic3luY1RyaWdnZXJBdFJ1bkxlbmd0aCIsInN5bmNTa2lsbFRyaWdnZXIiLCJoYXNWaXN1YWxNdWx0aWxpbmUiLCJnZXRFZGl0b3JDbGllbnRSZWN0Iiwib25DaGFuZ2UiLCJldmVudCIsInRhcmdldCIsInNlbmRCdXR0b24iLCJnZXRBbGxCeVJvbGUiLCJmaW5kIiwiYnV0dG9uIiwiZ2V0QXR0cmlidXRlIiwiZGVzY3JpYmUiLCJiZWZvcmVFYWNoIiwibW9ja1JldHVyblZhbHVlIiwiaXQiLCJvblNlbmRNZXNzYWdlIiwiZXhwZWN0IiwiZ2V0QnlQbGFjZWhvbGRlclRleHQiLCJ0b0JlSW5UaGVEb2N1bWVudCIsInRvQmVEaXNhYmxlZCIsImNoYW5nZSIsImdldEJ5TGFiZWxUZXh0IiwiY2xpY2siLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsInRvSGF2ZVZhbHVlIiwibm90IiwidG9IYXZlQmVlbkNhbGxlZCIsIm9uU3RvcEdlbmVyYXRpb24iLCJpc1dyaXRpbmciLCJnZXRCeVJvbGUiLCJnZXRCeVRleHQiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInBsdXNCdXR0b24iLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIm1vdXNlRG93biIsImRvY3VtZW50IiwiYm9keSIsInF1ZXJ5QnlUZXh0Iiwic3RvcCIsIm1vY2tDbGVhciIsInF1ZXJ5QnlSb2xlIiwidG9IYXZlQmVlbkNhbGxlZFRpbWVzIiwiYWdlbnQiLCJlbnRpdHkiLCJsYWJlbCIsIl9yZW5kZXJXaXRoUHJvdmlkZXJzIiwiaXNTdHJlYW1pbmciLCJjb250YWluZXIiLCJxdWVyeVNlbGVjdG9yIiwidG9CZVRydXRoeSIsIm9yY2hlc3RyYXRvckhvbWVDb21wb3NlciIsImtleURvd24iLCJrZXkiLCJ0b2dnbGVEZWVwU2VhcmNoIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwidG9nZ2xlV2ViU2VhcmNoIiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJvbkZpbGVBdHRhY2giLCJmaWxlSW5wdXQiLCJmaWxlIiwiRmlsZSIsImZpbGVzIiwib2JqZWN0Q29udGFpbmluZyIsInRvSGF2ZVRleHRDb250ZW50IiwidW5kZWZpbmVkIiwiaXNBdXRvQXBwcm92ZUFjdGl2ZSIsIl9zY3JlZW4kZ2V0QnlMYWJlbFRleCIsIndyYXBwZXIiLCJjbG9zZXN0IiwiZHJhZ1RhcmdldCIsInBhcmVudEVsZW1lbnQiLCJFcnJvciIsImRyYWdFbnRlciIsImRhdGFUcmFuc2ZlciIsInR5cGVzIiwiaXRlbXMiLCJraW5kIiwib25EZWxldGVBdHRhY2htZW50IiwiYXR0YWNobWVudHMiLCJzaXplIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvTUFJQUlucHV0L01BSUFJbnB1dC5zcGVjLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBmaXJlRXZlbnQsIHJlbmRlcldpdGhQcm92aWRlcnMsIHNjcmVlbiwgd2FpdEZvciB9IGZyb20gJy4uLy4uLy4uL3Rlc3QvdGVzdC11dGlscydcbmltcG9ydCB7IEdsb2JhbENvbnRleHRUZXN0UHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi90ZXN0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgTUFJQUlucHV0IH0gZnJvbSAnLi9NQUlBSW5wdXQnXG5cbmNvbnN0IGluc2VydFNraWxsTWVudGlvbiA9IGplc3QuZm4oKVxuY29uc3QgaW5zZXJ0TWVudGlvblRyaWdnZXIgPSBqZXN0LmZuKClcblxuamVzdC5tb2NrKCcuLi8uLi8uLi9ob29rcy91c2VFdmVudCcsICgpID0+ICh7XG4gIEVWRU5UUzoge1xuICAgIGFpQ2hhdFBsdXNPcGVuOiAnQUlfQ0hBVF9QTFVTX09QRU4nLFxuICAgIGFpQ2hhdFF1aWNrQWN0aW9uT3BlbjogJ0FJX0NIQVRfUVVJQ0tfQUNUSU9OX09QRU4nLFxuICAgIGFpQ2hhdFNraWxsT3BlbjogJ0FJX0NIQVRfU0tJTExfT1BFTicsXG4gICAgYWlDaGF0U2tpbGxTZWxlY3Q6ICdBSV9DSEFUX1NLSUxMX1NFTEVDVCcsXG4gICAgYWlDaGF0U2tpbGxSZW1vdmU6ICdBSV9DSEFUX1NLSUxMX1JFTU9WRScsXG4gIH0sXG4gIHVzZUV2ZW50OiAoKSA9PiBqZXN0LmZuKCksXG59KSlcblxuamVzdC5tb2NrKCcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJywgKCkgPT4gKHtcbiAgQ09SVXNlclJvbGU6IHtcbiAgICBDTEVWRUw6IDEsXG4gICAgRElSRUNUT1I6IDIsXG4gICAgUFJPSkVDVF9NQU5BR0VSOiAzLFxuICAgIENPTExBQk9SQVRPUjogNCxcbiAgICBGUkVFTEFOQ0VSOiA1LFxuICAgIENMSUVOVDogNixcbiAgfSxcbiAgdXNlVXNlcjogKCkgPT4gKHsgaWQ6IDk5LCByb2xlX2lkOiAzIH0pLFxufSkpXG5cbmNvbnN0IG1vY2tDYW5BY2Nlc3NUb1NraWxscyA9IGplc3QuZm4oKCkgPT4gdHJ1ZSlcblxuamVzdC5tb2NrKCcuLi8uLi8uLi9jb25zdGFudHMvcGVybWlzc2lvbnMnLCAoKSA9PiAoe1xuICBjYW5BY2Nlc3NUb1NraWxsczogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gbW9ja0NhbkFjY2Vzc1RvU2tpbGxzKC4uLmFyZ3MpLFxuICBpc1NraWxsc1BpbG90Q29tcGFueTogKCkgPT4gdHJ1ZSxcbn0pKVxuXG5qZXN0Lm1vY2soJy4uLy4uLy4uL2hvb2tzL3VzZVNraWxsc0NhdGFsb2cnLCAoKSA9PiAoe1xuICB1c2VTa2lsbHNDYXRhbG9nOiAoKSA9PiAoe1xuICAgIHNraWxsczogW3sgaWQ6ICdzazEnLCBuYW1lOiAnUmVzdW1pcicsIGRlc2NyaXB0aW9uOiAnRGVzYycsIGNvbnRlbnQ6ICdSZXN1bWUnIH1dLFxuICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBmZXRjaFNraWxsczogamVzdC5mbigpLFxuICB9KSxcbn0pKVxuXG5jb25zdCBzbGFzaENvbW1hbmRzU3RhdGUgPSB7XG4gIGNvbW1hbmRzOiBbeyBpZDogJ2NtZC0xJywgdGl0bGU6ICdSZXN1bWlyIGJyaWVmJywgZGVzY3JpcHRpb246ICdSZXN1bWUnIH1dLFxufVxuXG5qZXN0Lm1vY2soJy4uLy4uLy4uL2hvb2tzL3VzZVNsYXNoQ29tbWFuZHMnLCAoKSA9PiAoe1xuICB1c2VTbGFzaENvbW1hbmRzOiAoKSA9PiBzbGFzaENvbW1hbmRzU3RhdGUsXG59KSlcblxuY29uc3QgbWVudGlvblBvcG92ZXJTdGF0ZSA9IHtcbiAgcG9wb3Zlck9wZW46IGZhbHNlLFxuICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmc6IGplc3QuZm4oKSxcbiAgaGFuZGxlVHJpZ2dlcjogamVzdC5mbigpLFxuICBoYW5kbGVLZXlEb3duOiBqZXN0LmZuKCgpID0+IGZhbHNlKSxcbiAgcG9wb3Zlck5vZGU6IG51bGwgYXMgUmVhY3QuUmVhY3ROb2RlLFxuICBjbG9zZTogamVzdC5mbigpLFxufVxuXG5qZXN0Lm1vY2soJy4uLy4uLy4uL2hvb2tzL3VzZU1lbnRpb25Qb3BvdmVyJywgKCkgPT4gKHtcbiAgdXNlTWVudGlvblBvcG92ZXI6ICgpID0+IG1lbnRpb25Qb3BvdmVyU3RhdGUsXG59KSlcblxuamVzdC5tb2NrKCcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4JywgKCkgPT4gKHtcbiAgdXNlTWFpYVRhc2tQYW5lbFpJbmRleDogKCkgPT4gMTMwMCxcbn0pKVxuXG5qZXN0Lm1vY2soJy4uLy4uL29yZ2FuaXNtcy9Nb2RhbEZpbGVFeGNlZWRzJywgKCkgPT4gKHtcbiAgTW9kYWxGaWxlRXhjZWVkczogKCkgPT4gbnVsbCxcbn0pKVxuXG5qZXN0Lm1vY2soJy4uL1NsYXNoQ29tbWFuZERyb3Bkb3duJywgKCkgPT4gKHtcbiAgU2xhc2hDb21tYW5kRHJvcGRvd246ICh7XG4gICAgY29tbWFuZHMsXG4gICAgb25TZWxlY3QsXG4gIH06IHtcbiAgICBjb21tYW5kczogQXJyYXk8eyBpZDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH0+XG4gICAgb25TZWxlY3Q6IChjb21tYW5kOiB7IGlkOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfSkgPT4gdm9pZFxuICB9KSA9PiAoXG4gICAgPGRpdiByb2xlPVwibGlzdGJveFwiIGFyaWEtbGFiZWw9XCJzbGFzaC1jb21tYW5kc1wiPlxuICAgICAge2NvbW1hbmRzLm1hcChjb21tYW5kID0+IChcbiAgICAgICAgPGJ1dHRvbiBrZXk9e2NvbW1hbmQuaWR9IHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKSA9PiBvblNlbGVjdChjb21tYW5kKX0+XG4gICAgICAgICAge2NvbW1hbmQudGl0bGV9XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgKSl9XG4gICAgPC9kaXY+XG4gICksXG59KSlcblxuamVzdC5tb2NrKCcuLi9Db250ZXh0TWVudGlvbkVkaXRvcicsICgpID0+IHtcbiAgY29uc3QgUmVhY3RBY3R1YWwgPSBqZXN0LnJlcXVpcmVBY3R1YWwoJ3JlYWN0JykgYXMgdHlwZW9mIGltcG9ydCgncmVhY3QnKVxuICByZXR1cm4ge1xuICAgIENvbnRleHRNZW50aW9uRWRpdG9yOiBSZWFjdEFjdHVhbC5mb3J3YXJkUmVmKFxuICAgICAgKFxuICAgICAgICB7XG4gICAgICAgICAgb25JbnB1dCxcbiAgICAgICAgICBvbktleURvd24sXG4gICAgICAgICAgcGxhY2Vob2xkZXIsXG4gICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIH06IHtcbiAgICAgICAgICBvbklucHV0PzogKHN0YXRlOiB7XG4gICAgICAgICAgICB0ZXh0OiBzdHJpbmdcbiAgICAgICAgICAgIG1lbnRpb25zOiB1bmtub3duW11cbiAgICAgICAgICAgIHNsYXNoQ29tbWFuZHM6IHVua25vd25bXVxuICAgICAgICAgICAgdHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmc7IGF0UnVuTGVuZ3RoOiBudW1iZXIgfVxuICAgICAgICAgIH0pID0+IHZvaWRcbiAgICAgICAgICBvbktleURvd24/OiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHZvaWRcbiAgICAgICAgICBwbGFjZWhvbGRlcj86IHN0cmluZ1xuICAgICAgICAgIGRpc2FibGVkPzogYm9vbGVhblxuICAgICAgICB9LFxuICAgICAgICByZWY6IHtcbiAgICAgICAgICBmb2N1czogKCkgPT4gdm9pZFxuICAgICAgICAgIGNsZWFyOiAoKSA9PiB2b2lkXG4gICAgICAgICAgc2V0UGxhaW5UZXh0OiAodGV4dDogc3RyaW5nKSA9PiB2b2lkXG4gICAgICAgICAgc2VyaWFsaXplOiAoKSA9PiB7IHRleHQ6IHN0cmluZzsgbWVudGlvbnM6IHVua25vd25bXTsgc2xhc2hDb21tYW5kczogdW5rbm93bltdIH1cbiAgICAgICAgICBpbnNlcnRNZW50aW9uVHJpZ2dlcjogKCkgPT4gdm9pZFxuICAgICAgICB9IHwgbnVsbFxuICAgICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gUmVhY3RBY3R1YWwudXNlU3RhdGUoJycpXG4gICAgICAgIGNvbnN0IGVtaXQgPSAodGV4dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgb25JbnB1dD8uKHtcbiAgICAgICAgICAgIHRleHQsXG4gICAgICAgICAgICBtZW50aW9uczogW10sXG4gICAgICAgICAgICBzbGFzaENvbW1hbmRzOiBbXSxcbiAgICAgICAgICAgIHRyaWdnZXI6IHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCB9LFxuICAgICAgICAgICAgLi4uKHRleHQuc3RhcnRzV2l0aCgnLycpID8geyBzbGFzaFRyaWdnZXI6IHsgYWN0aXZlOiB0cnVlLCBxdWVyeTogdGV4dC5zbGljZSgxKSB9IH0gOiB7fSksXG4gICAgICAgICAgfSBhcyBuZXZlcilcbiAgICAgICAgfVxuXG4gICAgICAgIFJlYWN0QWN0dWFsLnVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoe1xuICAgICAgICAgIGZvY3VzOiBqZXN0LmZuKCksXG4gICAgICAgICAgY2xlYXI6ICgpID0+IHtcbiAgICAgICAgICAgIHNldFZhbHVlKCcnKVxuICAgICAgICAgICAgZW1pdCgnJylcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNldFBsYWluVGV4dDogKHRleHQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgc2V0VmFsdWUodGV4dClcbiAgICAgICAgICAgIGVtaXQodGV4dClcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlcmlhbGl6ZTogKCkgPT4gKHsgdGV4dDogdmFsdWUsIG1lbnRpb25zOiBbXSwgc2xhc2hDb21tYW5kczogW10gfSksXG4gICAgICAgICAgaW5zZXJ0TWVudGlvblRyaWdnZXIsXG4gICAgICAgICAgaW5zZXJ0U2xhc2hUcmlnZ2VyOiBqZXN0LmZuKCksXG4gICAgICAgICAgaW5zZXJ0TWVudGlvbjogamVzdC5mbigpLFxuICAgICAgICAgIGluc2VydFNsYXNoQ29tbWFuZDogamVzdC5mbigpLFxuICAgICAgICAgIGluc2VydFNraWxsVHJpZ2dlcjogKCkgPT4ge1xuICAgICAgICAgICAgb25JbnB1dD8uKHtcbiAgICAgICAgICAgICAgdGV4dDogJyMnLFxuICAgICAgICAgICAgICBtZW50aW9uczogW10sXG4gICAgICAgICAgICAgIHNsYXNoQ29tbWFuZHM6IFtdLFxuICAgICAgICAgICAgICB0cmlnZ2VyOiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAgfSxcbiAgICAgICAgICAgICAgaGFzaFRyaWdnZXI6IHsgYWN0aXZlOiB0cnVlLCBxdWVyeTogJycgfSxcbiAgICAgICAgICAgIH0gYXMgbmV2ZXIpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbnNlcnRTa2lsbE1lbnRpb24sXG4gICAgICAgICAgc3luY1RyaWdnZXJBdFJ1bkxlbmd0aDogamVzdC5mbigpLFxuICAgICAgICAgIHN5bmNTa2lsbFRyaWdnZXI6IGplc3QuZm4oKSxcbiAgICAgICAgICBoYXNWaXN1YWxNdWx0aWxpbmU6ICgpID0+IGZhbHNlLFxuICAgICAgICAgIGdldEVkaXRvckNsaWVudFJlY3Q6ICgpID0+IG51bGwsXG4gICAgICAgIH0pKVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwibWFpYS1lZGl0b3JcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgc2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKVxuICAgICAgICAgICAgICBlbWl0KGV2ZW50LnRhcmdldC52YWx1ZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+IG9uS2V5RG93bj8uKGV2ZW50IGFzIHVua25vd24gYXMgS2V5Ym9hcmRFdmVudCl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKVxuICAgICAgfVxuICAgICksXG4gIH1cbn0pXG5cbmNvbnN0IHNlbmRCdXR0b24gPSAoKSA9PlxuICBzY3JlZW5cbiAgICAuZ2V0QWxsQnlSb2xlKCdidXR0b24nKVxuICAgIC5maW5kKGJ1dHRvbiA9PiAhYnV0dG9uLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpICYmICFidXR0b24uZ2V0QXR0cmlidXRlKCdhcmlhLWhhc3BvcHVwJykpXG5cbmRlc2NyaWJlKCdNQUlBSW5wdXQnLCAoKSA9PiB7XG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG1vY2tDYW5BY2Nlc3NUb1NraWxscy5tb2NrUmV0dXJuVmFsdWUodHJ1ZSlcbiAgICBtZW50aW9uUG9wb3ZlclN0YXRlLnBvcG92ZXJPcGVuID0gZmFsc2VcbiAgICBtZW50aW9uUG9wb3ZlclN0YXRlLnBvcG92ZXJOb2RlID0gbnVsbFxuICAgIG1lbnRpb25Qb3BvdmVyU3RhdGUuaGFuZGxlS2V5RG93bi5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpXG4gIH0pXG5cbiAgaXQoJ2tlZXBzIHNlbmQgZGlzYWJsZWQgd2l0aG91dCB0ZXh0JywgKCkgPT4ge1xuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICAgICAgPE1BSUFJbnB1dCBvblNlbmRNZXNzYWdlPXtqZXN0LmZuKCl9IHBsYWNlaG9sZGVyPVwiRXNjcmliw61cIiAvPlxuICAgICAgPC9HbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgIClcblxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlQbGFjZWhvbGRlclRleHQoJ0VzY3JpYsOtJykpLnRvQmVJblRoZURvY3VtZW50KClcbiAgICBleHBlY3Qoc2VuZEJ1dHRvbigpKS50b0JlRGlzYWJsZWQoKVxuICB9KVxuXG4gIGl0KCdzZW5kcyB0aGUgdHlwZWQgbWVzc2FnZSBhbmQgY2xlYXJzIHRoZSBlZGl0b3InLCAoKSA9PiB7XG4gICAgY29uc3Qgb25TZW5kTWVzc2FnZSA9IGplc3QuZm4oKVxuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICAgICAgPE1BSUFJbnB1dCBvblNlbmRNZXNzYWdlPXtvblNlbmRNZXNzYWdlfSAvPlxuICAgICAgPC9HbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgIClcblxuICAgIGZpcmVFdmVudC5jaGFuZ2Uoc2NyZWVuLmdldEJ5TGFiZWxUZXh0KCdtYWlhLWVkaXRvcicpLCB7IHRhcmdldDogeyB2YWx1ZTogJ0hvbGEgZHJhZnQnIH0gfSlcbiAgICBmaXJlRXZlbnQuY2xpY2soc2VuZEJ1dHRvbigpIGFzIEhUTUxCdXR0b25FbGVtZW50KVxuXG4gICAgZXhwZWN0KG9uU2VuZE1lc3NhZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdIb2xhIGRyYWZ0JywgW10sIFtdKVxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlMYWJlbFRleHQoJ21haWEtZWRpdG9yJykpLnRvSGF2ZVZhbHVlKCcnKVxuICB9KVxuXG4gIGl0KCdkb2VzIG5vdCBzZW5kIHdoZW4gZGlzYWJsZWQnLCAoKSA9PiB7XG4gICAgY29uc3Qgb25TZW5kTWVzc2FnZSA9IGplc3QuZm4oKVxuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICAgICAgPE1BSUFJbnB1dCBvblNlbmRNZXNzYWdlPXtvblNlbmRNZXNzYWdlfSBkaXNhYmxlZCAvPlxuICAgICAgPC9HbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgIClcblxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlMYWJlbFRleHQoJ21haWEtZWRpdG9yJykpLnRvQmVEaXNhYmxlZCgpXG4gICAgZXhwZWN0KHNlbmRCdXR0b24oKSkudG9CZURpc2FibGVkKClcbiAgICBmaXJlRXZlbnQuY2xpY2soc2VuZEJ1dHRvbigpIGFzIEhUTUxCdXR0b25FbGVtZW50KVxuICAgIGV4cGVjdChvblNlbmRNZXNzYWdlKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpXG4gIH0pXG5cbiAgaXQoJ3Nob3dzIHN0b3Agd2hpbGUgd3JpdGluZycsICgpID0+IHtcbiAgICBjb25zdCBvblN0b3BHZW5lcmF0aW9uID0gamVzdC5mbigpXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gaXNXcml0aW5nIG9uU3RvcEdlbmVyYXRpb249e29uU3RvcEdlbmVyYXRpb259IC8+XG4gICAgICA8L0dsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgKVxuXG4gICAgZmlyZUV2ZW50LmNsaWNrKHNlbmRCdXR0b24oKSBhcyBIVE1MQnV0dG9uRWxlbWVudClcbiAgICBleHBlY3Qob25TdG9wR2VuZXJhdGlvbikudG9IYXZlQmVlbkNhbGxlZCgpXG4gIH0pXG5cbiAgaXQoJ29wZW5zIHRoZSBwbHVzIG1lbnUnLCAoKSA9PiB7XG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBmaXJlRXZlbnQuY2xpY2soc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnY2hhdC5vcGVuUGx1c01lbnVBcmlhJyB9KSlcblxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdjaGF0LnBsdXNNZW51QXR0YWNoJykpLnRvQmVJblRoZURvY3VtZW50KClcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnY2hhdC5zZWFyY2hXZWInKSkudG9CZUluVGhlRG9jdW1lbnQoKVxuICB9KVxuXG4gIGl0KCdrZWVwcyB0aGUgcGx1cyBtZW51IG9wZW4gb24gaW5zaWRlIGNsaWNrcyBhbmQgY2xvc2VzIGl0IG9uIG91dHNpZGUgY2xpY2tzJywgYXN5bmMgKCkgPT4ge1xuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICAgICAgPE1BSUFJbnB1dCBvblNlbmRNZXNzYWdlPXtqZXN0LmZuKCl9IC8+XG4gICAgICA8L0dsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgKVxuXG4gICAgY29uc3QgcGx1c0J1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogJ2NoYXQub3BlblBsdXNNZW51QXJpYScgfSlcbiAgICBmaXJlRXZlbnQuY2xpY2socGx1c0J1dHRvbilcbiAgICBmaXJlRXZlbnQubW91c2VEb3duKHNjcmVlbi5nZXRCeVRleHQoJ2NoYXQuc2VhcmNoV2ViJykpXG4gICAgZmlyZUV2ZW50Lm1vdXNlRG93bihwbHVzQnV0dG9uKVxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdjaGF0LnBsdXNNZW51QXR0YWNoJykpLnRvQmVJblRoZURvY3VtZW50KClcblxuICAgIGZpcmVFdmVudC5tb3VzZURvd24oZG9jdW1lbnQuYm9keSlcbiAgICBhd2FpdCB3YWl0Rm9yKCgpID0+IGV4cGVjdChzY3JlZW4ucXVlcnlCeVRleHQoJ2NoYXQucGx1c01lbnVBdHRhY2gnKSkubm90LnRvQmVJblRoZURvY3VtZW50KCkpXG4gIH0pXG5cbiAgaXQoJ2Nsb3NlcyB0aGUgc2tpbGxzIGNhdGFsb2cgYW5kIHRoZSBtZW50aW9uIHBvcG92ZXIgd2hlbiBvcGVuaW5nIHRoZSBwbHVzIG1lbnUnLCAoKSA9PiB7XG4gICAgbWVudGlvblBvcG92ZXJTdGF0ZS5jbG9zZS5tb2NrQ2xlYXIoKVxuXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBmaXJlRXZlbnQuY2xpY2soc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnbXlTa2lsbHMuZHJvcGRvd25CdXR0b24nIH0pKVxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC8jUmVzdW1pci8gfSkpLnRvQmVJblRoZURvY3VtZW50KClcblxuICAgIGZpcmVFdmVudC5jbGljayhzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6ICdjaGF0Lm9wZW5QbHVzTWVudUFyaWEnIH0pKVxuXG4gICAgZXhwZWN0KHNjcmVlbi5xdWVyeUJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAvI1Jlc3VtaXIvIH0pKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKVxuICAgIGV4cGVjdChtZW50aW9uUG9wb3ZlclN0YXRlLmNsb3NlKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSlcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnY2hhdC5wbHVzTWVudUF0dGFjaCcpKS50b0JlSW5UaGVEb2N1bWVudCgpXG4gIH0pXG5cbiAgaXQoJ2Nsb3NlcyB0aGUgc2xhc2ggY29tbWFuZCBtZW51IHdoZW4gb3BlbmluZyB0aGUgcGx1cyBtZW51JywgKCkgPT4ge1xuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlciB2YWx1ZT17eyBhZ2VudDogeyBpZDogJzEnLCBuYW1lOiAnTUFJQScsIHR5cGU6ICdvcmNoZXN0cmF0b3InLCBlbnRpdHk6ICdnbG9iYWwnIH0gfX0+XG4gICAgICAgIDxNQUlBSW5wdXQgb25TZW5kTWVzc2FnZT17amVzdC5mbigpfSAvPlxuICAgICAgPC9HbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgIClcblxuICAgIGZpcmVFdmVudC5jaGFuZ2Uoc2NyZWVuLmdldEJ5TGFiZWxUZXh0KCdtYWlhLWVkaXRvcicpLCB7IHRhcmdldDogeyB2YWx1ZTogJy9yZXMnIH0gfSlcbiAgICBmaXJlRXZlbnQuY2xpY2soc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnY2hhdC5vcGVuUGx1c01lbnVBcmlhJyB9KSlcblxuICAgIGV4cGVjdChzY3JlZW4ucXVlcnlCeVJvbGUoJ2xpc3Rib3gnLCB7IG5hbWU6ICdzbGFzaC1jb21tYW5kcycgfSkpLm5vdC50b0JlSW5UaGVEb2N1bWVudCgpXG4gIH0pXG5cbiAgaXQoJ29wZW5zIHRoZSBza2lsbHMgY2F0YWxvZyBhbmQgc2VsZWN0cyBhIHNraWxsJywgKCkgPT4ge1xuICAgIGluc2VydFNraWxsTWVudGlvbi5tb2NrQ2xlYXIoKVxuXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBmaXJlRXZlbnQuY2xpY2soc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnbXlTa2lsbHMuZHJvcGRvd25CdXR0b24nIH0pKVxuXG4gICAgZmlyZUV2ZW50LmNsaWNrKHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogLyNSZXN1bWlyLyB9KSlcbiAgICBleHBlY3QoaW5zZXJ0U2tpbGxNZW50aW9uKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7IGlkOiAnc2sxJywgdHlwZTogJ3NraWxsJywgbGFiZWw6ICcjUmVzdW1pcicgfSlcbiAgfSlcblxuICBpdCgna2VlcHMgc2VuZCBkaXNhYmxlZCBmb3Igd2hpdGVzcGFjZS1vbmx5IHRleHQnLCAoKSA9PiB7XG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBmaXJlRXZlbnQuY2hhbmdlKHNjcmVlbi5nZXRCeUxhYmVsVGV4dCgnbWFpYS1lZGl0b3InKSwgeyB0YXJnZXQ6IHsgdmFsdWU6ICcgICAnIH0gfSlcbiAgICBleHBlY3Qoc2VuZEJ1dHRvbigpKS50b0JlRGlzYWJsZWQoKVxuICB9KVxuXG4gIGl0KCdtYXJrcyB0aGUgZWRpdG9yIGFzIHN0cmVhbWluZyBmb3IgYXNzaXN0aXZlIHN0eWxpbmcnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICAgICAgPE1BSUFJbnB1dCBvblNlbmRNZXNzYWdlPXtqZXN0LmZuKCl9IGlzU3RyZWFtaW5nIC8+XG4gICAgICA8L0dsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgKVxuXG4gICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdbZGF0YS1tYWlhLXN0cmVhbWluZz1cInRydWVcIl0nKSkudG9CZVRydXRoeSgpXG4gIH0pXG5cbiAgaXQoJ3Nob3dzIHRoZSBtZW50aW9uIGJ1dHRvbiBvbiBvcmNoZXN0cmF0b3IgaG9tZSBiZWZvcmUgdGhlIGFnZW50IGlzIGxvYWRlZCcsICgpID0+IHtcbiAgICByZW5kZXJXaXRoUHJvdmlkZXJzKFxuICAgICAgPEdsb2JhbENvbnRleHRUZXN0UHJvdmlkZXIgdmFsdWU9e3sgYWdlbnQ6IG51bGwgfX0+XG4gICAgICAgIDxNQUlBSW5wdXQgb25TZW5kTWVzc2FnZT17amVzdC5mbigpfSBvcmNoZXN0cmF0b3JIb21lQ29tcG9zZXIgLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnY2hhdC5vcGVuTWVudGlvbkFyaWEnIH0pKS50b0JlSW5UaGVEb2N1bWVudCgpXG4gIH0pXG5cbiAgaXQoJ2hpZGVzIHRoZSBza2lsbHMgYnV0dG9uIHdoZW4gTUFJQV9TS0lMTFNfQUNDRVNTIGlzIG5vdCBncmFudGVkJywgKCkgPT4ge1xuICAgIG1vY2tDYW5BY2Nlc3NUb1NraWxscy5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpXG5cbiAgICByZW5kZXJXaXRoUHJvdmlkZXJzKFxuICAgICAgPEdsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgICAgIDxNQUlBSW5wdXQgb25TZW5kTWVzc2FnZT17amVzdC5mbigpfSAvPlxuICAgICAgPC9HbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgIClcblxuICAgIGV4cGVjdChzY3JlZW4ucXVlcnlCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogJ215U2tpbGxzLmRyb3Bkb3duQnV0dG9uJyB9KSkubm90LnRvQmVJblRoZURvY3VtZW50KClcbiAgfSlcblxuICBpdCgnc2VuZHMgb24gRW50ZXIgd2l0aG91dCBzaGlmdCcsICgpID0+IHtcbiAgICBjb25zdCBvblNlbmRNZXNzYWdlID0gamVzdC5mbigpXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e29uU2VuZE1lc3NhZ2V9IC8+XG4gICAgICA8L0dsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgKVxuXG4gICAgZmlyZUV2ZW50LmNoYW5nZShzY3JlZW4uZ2V0QnlMYWJlbFRleHQoJ21haWEtZWRpdG9yJyksIHsgdGFyZ2V0OiB7IHZhbHVlOiAnRW52aWFyIGNvbiBFbnRlcicgfSB9KVxuICAgIGZpcmVFdmVudC5rZXlEb3duKHNjcmVlbi5nZXRCeUxhYmVsVGV4dCgnbWFpYS1lZGl0b3InKSwgeyBrZXk6ICdFbnRlcicgfSlcblxuICAgIGV4cGVjdChvblNlbmRNZXNzYWdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnRW52aWFyIGNvbiBFbnRlcicsIFtdLCBbXSlcbiAgfSlcblxuICBpdCgndG9nZ2xlcyBkZWVwIHNlYXJjaCBmcm9tIHRoZSBwbHVzIG1lbnUnLCAoKSA9PiB7XG4gICAgY29uc3QgdG9nZ2xlRGVlcFNlYXJjaCA9IGplc3QuZm4oKVxuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlciB2YWx1ZT17eyB0b2dnbGVEZWVwU2VhcmNoIH19PlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBmaXJlRXZlbnQuY2xpY2soc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnY2hhdC5vcGVuUGx1c01lbnVBcmlhJyB9KSlcbiAgICBmaXJlRXZlbnQuY2xpY2soc2NyZWVuLmdldEJ5VGV4dCgnY2hhdC5wbHVzTWVudURlZXBJbnZlc3RpZ2F0aW9uJykpXG5cbiAgICBleHBlY3QodG9nZ2xlRGVlcFNlYXJjaCkudG9IYXZlQmVlbkNhbGxlZCgpXG4gIH0pXG5cbiAgaXQoJ3Nob3dzIHRoZSBhY3RpdmUgZGVlcCBzZWFyY2ggY2hpcCB3aGVuIGVuYWJsZWQnLCAoKSA9PiB7XG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyIHZhbHVlPXt7IGlzRGVlcFNlYXJjaEFjdGl2ZTogdHJ1ZSB9fT5cbiAgICAgICAgPE1BSUFJbnB1dCBvblNlbmRNZXNzYWdlPXtqZXN0LmZuKCl9IC8+XG4gICAgICA8L0dsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgKVxuXG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ2NoYXQucGx1c01lbnVEZWVwSW52ZXN0aWdhdGlvbicpKS50b0JlSW5UaGVEb2N1bWVudCgpXG4gIH0pXG5cbiAgaXQoJ3RvZ2dsZXMgd2ViIHNlYXJjaCBmcm9tIHRoZSBwbHVzIG1lbnUnLCAoKSA9PiB7XG4gICAgY29uc3QgdG9nZ2xlV2ViU2VhcmNoID0gamVzdC5mbigpXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyIHZhbHVlPXt7IHRvZ2dsZVdlYlNlYXJjaCB9fT5cbiAgICAgICAgPE1BSUFJbnB1dCBvblNlbmRNZXNzYWdlPXtqZXN0LmZuKCl9IC8+XG4gICAgICA8L0dsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgKVxuXG4gICAgZmlyZUV2ZW50LmNsaWNrKHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogJ2NoYXQub3BlblBsdXNNZW51QXJpYScgfSkpXG4gICAgZmlyZUV2ZW50LmNsaWNrKHNjcmVlbi5nZXRCeVRleHQoJ2NoYXQuc2VhcmNoV2ViJykpXG5cbiAgICBleHBlY3QodG9nZ2xlV2ViU2VhcmNoKS50b0hhdmVCZWVuQ2FsbGVkKClcbiAgfSlcblxuICBpdCgnc2hvd3MgdGhlIGFjdGl2ZSB3ZWIgc2VhcmNoIGNoaXAgd2hlbiBlbmFibGVkJywgKCkgPT4ge1xuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlciB2YWx1ZT17eyBpc1dlYlNlYXJjaEFjdGl2ZTogdHJ1ZSB9fT5cbiAgICAgICAgPE1BSUFJbnB1dCBvblNlbmRNZXNzYWdlPXtqZXN0LmZuKCl9IC8+XG4gICAgICA8L0dsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgKVxuXG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ2NoYXQuc2VhcmNoV2ViJykpLnRvQmVJblRoZURvY3VtZW50KClcbiAgfSlcblxuICBpdCgnb3BlbnMgdGhlIG1lbnRpb24gdHJpZ2dlciBmcm9tIHRoZSB0b29sYmFyIGJ1dHRvbicsICgpID0+IHtcbiAgICBpbnNlcnRNZW50aW9uVHJpZ2dlci5tb2NrQ2xlYXIoKVxuXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBmaXJlRXZlbnQuY2xpY2soc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnY2hhdC5vcGVuTWVudGlvbkFyaWEnIH0pKVxuICAgIGV4cGVjdChpbnNlcnRNZW50aW9uVHJpZ2dlcikudG9IYXZlQmVlbkNhbGxlZCgpXG4gIH0pXG5cbiAgaXQoJ2ZvcndhcmRzIHN1cHBvcnRlZCBmaWxlcyB0aHJvdWdoIG9uRmlsZUF0dGFjaCcsICgpID0+IHtcbiAgICBjb25zdCBvbkZpbGVBdHRhY2ggPSBqZXN0LmZuKClcbiAgICByZW5kZXJXaXRoUHJvdmlkZXJzKFxuICAgICAgPEdsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgICAgIDxNQUlBSW5wdXQgb25TZW5kTWVzc2FnZT17amVzdC5mbigpfSBvbkZpbGVBdHRhY2g9e29uRmlsZUF0dGFjaH0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBmaXJlRXZlbnQuY2xpY2soc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnY2hhdC5vcGVuUGx1c01lbnVBcmlhJyB9KSlcbiAgICBmaXJlRXZlbnQuY2xpY2soc2NyZWVuLmdldEJ5VGV4dCgnY2hhdC5wbHVzTWVudUF0dGFjaCcpKVxuXG4gICAgY29uc3QgZmlsZUlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cImZpbGVcIl0nKSBhcyBIVE1MSW5wdXRFbGVtZW50XG4gICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFsnY29udGVudCddLCAnYnJpZWYucGRmJywgeyB0eXBlOiAnYXBwbGljYXRpb24vcGRmJyB9KVxuICAgIGZpcmVFdmVudC5jaGFuZ2UoZmlsZUlucHV0LCB7IHRhcmdldDogeyBmaWxlczogW2ZpbGVdIH0gfSlcblxuICAgIGV4cGVjdChvbkZpbGVBdHRhY2gpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGV4cGVjdC5vYmplY3RDb250YWluaW5nKHsgbmFtZTogJ2JyaWVmLnBkZicgfSkpXG4gIH0pXG5cbiAgaXQoJ3JlbmRlcnMgdGhlIG1lbnRpb24gcG9wb3ZlciB3aGVuIGl0IGlzIG9wZW4nLCAoKSA9PiB7XG4gICAgbWVudGlvblBvcG92ZXJTdGF0ZS5wb3BvdmVyT3BlbiA9IHRydWVcbiAgICBtZW50aW9uUG9wb3ZlclN0YXRlLnBvcG92ZXJOb2RlID0gPGRpdiByb2xlPVwibGlzdGJveFwiPm1lbnRpb24tcG9wb3ZlcjwvZGl2PlxuXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5Um9sZSgnbGlzdGJveCcpKS50b0hhdmVUZXh0Q29udGVudCgnbWVudGlvbi1wb3BvdmVyJylcbiAgfSlcblxuICBpdCgnZGVsZWdhdGVzIGtleWRvd24gdG8gdGhlIG1lbnRpb24gcG9wb3ZlciBiZWZvcmUgc2VuZGluZycsICgpID0+IHtcbiAgICBjb25zdCBvblNlbmRNZXNzYWdlID0gamVzdC5mbigpXG4gICAgbWVudGlvblBvcG92ZXJTdGF0ZS5oYW5kbGVLZXlEb3duLm1vY2tSZXR1cm5WYWx1ZSh0cnVlKVxuXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e29uU2VuZE1lc3NhZ2V9IC8+XG4gICAgICA8L0dsb2JhbENvbnRleHRUZXN0UHJvdmlkZXI+XG4gICAgKVxuXG4gICAgZmlyZUV2ZW50LmNoYW5nZShzY3JlZW4uZ2V0QnlMYWJlbFRleHQoJ21haWEtZWRpdG9yJyksIHsgdGFyZ2V0OiB7IHZhbHVlOiAnSG9sYScgfSB9KVxuICAgIGZpcmVFdmVudC5rZXlEb3duKHNjcmVlbi5nZXRCeUxhYmVsVGV4dCgnbWFpYS1lZGl0b3InKSwgeyBrZXk6ICdFbnRlcicgfSlcblxuICAgIGV4cGVjdChtZW50aW9uUG9wb3ZlclN0YXRlLmhhbmRsZUtleURvd24pLnRvSGF2ZUJlZW5DYWxsZWQoKVxuICAgIGV4cGVjdChvblNlbmRNZXNzYWdlKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpXG4gIH0pXG5cbiAgaXQoJ29wZW5zIHRoZSBzbGFzaCBjb21tYW5kIG1lbnUgd2hlbiB0eXBpbmcgYSBzbGFzaCBjb21tYW5kJywgKCkgPT4ge1xuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlciB2YWx1ZT17eyBhZ2VudDogeyBpZDogJzEnLCBuYW1lOiAnTUFJQScsIHR5cGU6ICdvcmNoZXN0cmF0b3InLCBlbnRpdHk6ICdnbG9iYWwnIH0gfX0+XG4gICAgICAgIDxNQUlBSW5wdXQgb25TZW5kTWVzc2FnZT17amVzdC5mbigpfSAvPlxuICAgICAgPC9HbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgIClcblxuICAgIGZpcmVFdmVudC5jaGFuZ2Uoc2NyZWVuLmdldEJ5TGFiZWxUZXh0KCdtYWlhLWVkaXRvcicpLCB7IHRhcmdldDogeyB2YWx1ZTogJy9yZXMnIH0gfSlcblxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlSb2xlKCdsaXN0Ym94JywgeyBuYW1lOiAnc2xhc2gtY29tbWFuZHMnIH0pKS50b0JlSW5UaGVEb2N1bWVudCgpXG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogJ1Jlc3VtaXIgYnJpZWYnIH0pKS50b0JlSW5UaGVEb2N1bWVudCgpXG4gIH0pXG5cbiAgaXQoJ3NlbmRzIGEgc2xhc2ggY29tbWFuZCBpbW1lZGlhdGVseSB3aGVuIHRoZSBlZGl0b3IgaXMgZW1wdHknLCAoKSA9PiB7XG4gICAgY29uc3Qgb25TZW5kTWVzc2FnZSA9IGplc3QuZm4oKVxuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlciB2YWx1ZT17eyBhZ2VudDogeyBpZDogJzEnLCBuYW1lOiAnTUFJQScsIHR5cGU6ICdvcmNoZXN0cmF0b3InLCBlbnRpdHk6ICdnbG9iYWwnIH0gfX0+XG4gICAgICAgIDxNQUlBSW5wdXQgb25TZW5kTWVzc2FnZT17b25TZW5kTWVzc2FnZX0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBmaXJlRXZlbnQuY2hhbmdlKHNjcmVlbi5nZXRCeUxhYmVsVGV4dCgnbWFpYS1lZGl0b3InKSwgeyB0YXJnZXQ6IHsgdmFsdWU6ICcvcmVzJyB9IH0pXG4gICAgZmlyZUV2ZW50LmNsaWNrKHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogJ1Jlc3VtaXIgYnJpZWYnIH0pKVxuXG4gICAgZXhwZWN0KG9uU2VuZE1lc3NhZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdSZXN1bWlyIGJyaWVmJywgW10sIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgJ2NtZC0xJylcbiAgfSlcblxuICBpdCgnc2hvd3MgdGhlIGF1dG8gYXBwcm92ZSBjaGlwIHdoZW4gZW5hYmxlZCBpbiBjb250ZXh0JywgKCkgPT4ge1xuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlciB2YWx1ZT17eyBpc0F1dG9BcHByb3ZlQWN0aXZlOiB0cnVlIH19PlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnY2hhdC5hdXRvQXBwcm92ZUNoaXAnKSkudG9CZUluVGhlRG9jdW1lbnQoKVxuICB9KVxuXG4gIGl0KCdzaG93cyB0aGUgZmlsZSBkcm9wIG92ZXJsYXkgd2hpbGUgZHJhZ2dpbmcgZmlsZXMnLCAoKSA9PiB7XG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0IG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBjb25zdCB3cmFwcGVyID0gc2NyZWVuLmdldEJ5TGFiZWxUZXh0KCdtYWlhLWVkaXRvcicpLmNsb3Nlc3QoJ1tkYXRhLW1haWEtaW5wdXQtcm9vdF0nKSBhcyBIVE1MRWxlbWVudFxuICAgIGNvbnN0IGRyYWdUYXJnZXQgPSB3cmFwcGVyID8/IHNjcmVlbi5nZXRCeUxhYmVsVGV4dCgnbWFpYS1lZGl0b3InKS5wYXJlbnRFbGVtZW50Py5wYXJlbnRFbGVtZW50XG4gICAgaWYgKCFkcmFnVGFyZ2V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RyYWcgdGFyZ2V0IG5vdCBmb3VuZCcpXG4gICAgfVxuXG4gICAgZmlyZUV2ZW50LmRyYWdFbnRlcihkcmFnVGFyZ2V0LCB7XG4gICAgICBkYXRhVHJhbnNmZXI6IHsgdHlwZXM6IFsnRmlsZXMnXSwgaXRlbXM6IFt7IGtpbmQ6ICdmaWxlJyB9XSB9LFxuICAgIH0pXG5cbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnY2hhdC5kcm9wRmlsZXNIZXJlJykpLnRvQmVJblRoZURvY3VtZW50KClcbiAgfSlcblxuICBpdCgncmVtb3ZlcyBhbiBhdHRhY2htZW50IGNoaXAgdGhyb3VnaCBvbkRlbGV0ZUF0dGFjaG1lbnQnLCAoKSA9PiB7XG4gICAgY29uc3Qgb25EZWxldGVBdHRhY2htZW50ID0gamVzdC5mbigpXG4gICAgcmVuZGVyV2l0aFByb3ZpZGVycyhcbiAgICAgIDxHbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgICAgICA8TUFJQUlucHV0XG4gICAgICAgICAgb25TZW5kTWVzc2FnZT17amVzdC5mbigpfVxuICAgICAgICAgIG9uRGVsZXRlQXR0YWNobWVudD17b25EZWxldGVBdHRhY2htZW50fVxuICAgICAgICAgIGF0dGFjaG1lbnRzPXtbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnZjEnLFxuICAgICAgICAgICAgICBuYW1lOiAnYnJpZWYucGRmJyxcbiAgICAgICAgICAgICAgdHlwZTogJ3BkZicsXG4gICAgICAgICAgICAgIHNpemU6IDEyMCxcbiAgICAgICAgICAgICAgZmlsZTogbmV3IEZpbGUoW10sICdicmllZi5wZGYnLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnIH0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdfVxuICAgICAgICAvPlxuICAgICAgPC9HbG9iYWxDb250ZXh0VGVzdFByb3ZpZGVyPlxuICAgIClcblxuICAgIGZpcmVFdmVudC5jbGljayhzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6ICdjaGF0LnJlbW92ZUF0dGFjaG1lbnRBcmlhJyB9KSlcblxuICAgIGV4cGVjdChvbkRlbGV0ZUF0dGFjaG1lbnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdmMScpXG4gIH0pXG5cbiAgaXQoJ2VuYWJsZXMgc2VuZCB3aGVuIGF0dGFjaG1lbnRzIGFyZSBwcm92aWRlZCBieSB0aGUgcGFyZW50JywgKCkgPT4ge1xuICAgIHJlbmRlcldpdGhQcm92aWRlcnMoXG4gICAgICA8R2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICAgICAgPE1BSUFJbnB1dFxuICAgICAgICAgIG9uU2VuZE1lc3NhZ2U9e2plc3QuZm4oKX1cbiAgICAgICAgICBhdHRhY2htZW50cz17W1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ2YxJyxcbiAgICAgICAgICAgICAgbmFtZTogJ2JyaWVmLnBkZicsXG4gICAgICAgICAgICAgIHR5cGU6ICdwZGYnLFxuICAgICAgICAgICAgICBzaXplOiAxMjAsXG4gICAgICAgICAgICAgIGZpbGU6IG5ldyBGaWxlKFtdLCAnYnJpZWYucGRmJywgeyB0eXBlOiAnYXBwbGljYXRpb24vcGRmJyB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXX1cbiAgICAgICAgLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dFRlc3RQcm92aWRlcj5cbiAgICApXG5cbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnYnJpZWYucGRmJykpLnRvQmVJblRoZURvY3VtZW50KClcbiAgICBleHBlY3Qoc2VuZEJ1dHRvbigpKS5ub3QudG9CZURpc2FibGVkKClcbiAgfSlcbn0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU9BLEtBQUssTUFBTSxPQUFPO0FBQ3pCLFNBQVNDLFNBQVMsRUFBRUMsbUJBQW1CLEVBQUVDLE1BQU0sRUFBRUMsT0FBTyxRQUFRLDBCQUEwQjtBQUMxRixTQUFTQyx5QkFBeUIsUUFBUSw4QkFBOEI7QUFDeEUsU0FBU0MsU0FBUyxRQUFRLGFBQWE7QUFBQSxTQUFBQyxHQUFBLElBQUFDLElBQUE7QUFFdkMsSUFBTUMsa0JBQWtCLEdBQUdDLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7QUFDcEMsSUFBTUMsb0JBQW9CLEdBQUdGLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7QUFFdENELElBQUksQ0FBQ0csSUFBSSxDQUFDLHlCQUF5QixFQUFFO0VBQUEsT0FBTztJ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
|
|
@@ -14,6 +14,8 @@ import { useUser } from '../../../context/cor-user';
|
|
|
14
14
|
import { useResizeListener } from '../../../hooks/useResize';
|
|
15
15
|
import { EVENTS, useEvent } from '../../../hooks/useEvent';
|
|
16
16
|
import { SECTIONS } from '../../../constants/config';
|
|
17
|
+
import { resolveAiChatBackDestination } from '../../molecules/ChatAIModal/ChatAIModal.helpers';
|
|
18
|
+
import { options } from '../../molecules/ChatAIModal/constants';
|
|
17
19
|
import { isMaiaCloneAgentsRoleBlocked } from '../../../constants/maiaTaskPanelAccess';
|
|
18
20
|
import { SCPageHeader, SCPageHeaderStart } from './ChatAIPageHeader.styles';
|
|
19
21
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
@@ -89,28 +91,25 @@ export var ChatAIPageHeader = function ChatAIPageHeader(_ref) {
|
|
|
89
91
|
document.removeEventListener('mousedown', handleClickOutside);
|
|
90
92
|
};
|
|
91
93
|
}, [isExpanded]);
|
|
92
|
-
|
|
93
|
-
if (!
|
|
94
|
-
var
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
(_agentsRef$current3 = agentsRef.current) === null || _agentsRef$current3 === void 0 || _agentsRef$current3.removeEventListener('scroll', handleScroll);
|
|
112
|
-
};
|
|
113
|
-
}, [isExpanded, loadMoreAgents, hasMore, loadingMore]);
|
|
94
|
+
var handleAgentsScroll = function handleAgentsScroll() {
|
|
95
|
+
if (!agentsRef.current || !loadMoreAgents || !hasMore || loadingMore) return;
|
|
96
|
+
var _agentsRef$current = agentsRef.current,
|
|
97
|
+
scrollTop = _agentsRef$current.scrollTop,
|
|
98
|
+
scrollHeight = _agentsRef$current.scrollHeight,
|
|
99
|
+
clientHeight = _agentsRef$current.clientHeight;
|
|
100
|
+
if (scrollHeight - scrollTop - clientHeight < 50) {
|
|
101
|
+
loadMoreAgents();
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
// El evento va en el click y no en handleResetChat, que tambien corre al cambiar de agente.
|
|
106
|
+
// El boton solo se muestra fuera de la home, asi que siempre vuelve del chat.
|
|
107
|
+
var handleBack = useCallback(function () {
|
|
108
|
+
amplitudEvent(EVENTS.aiChatBack, {
|
|
109
|
+
to: resolveAiChatBackDestination(section, selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.type, options.chat, options.home)
|
|
110
|
+
});
|
|
111
|
+
handleResetChat();
|
|
112
|
+
}, [amplitudEvent, handleResetChat, section, selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.type]);
|
|
114
113
|
var handleSelectAgent = useCallback(function (nextAgent) {
|
|
115
114
|
selectAgent(nextAgent);
|
|
116
115
|
amplitudEvent(EVENTS.aiChatAgentSelect, {
|
|
@@ -194,6 +193,7 @@ export var ChatAIPageHeader = function ChatAIPageHeader(_ref) {
|
|
|
194
193
|
hasMore: hasMore,
|
|
195
194
|
agentsCount: agentsForSelector.length,
|
|
196
195
|
ref: agentsRef,
|
|
196
|
+
onScroll: handleAgentsScroll,
|
|
197
197
|
children: [agentsForSelector.map(function (item, index) {
|
|
198
198
|
if (item !== null && item !== void 0 && item.is_deleted || item !== null && item !== void 0 && item.has_not_permissions || item !== null && item !== void 0 && item.has_not_access || (item === null || item === void 0 ? void 0 : item.type) === 'clone' || isMaiaAgent(item) || (item === null || item === void 0 ? void 0 : item.type) === 'custom' && !window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS) {
|
|
199
199
|
return null;
|
|
@@ -241,7 +241,7 @@ export var ChatAIPageHeader = function ChatAIPageHeader(_ref) {
|
|
|
241
241
|
}) : null
|
|
242
242
|
}), showBack ? /*#__PURE__*/_jsxs(SCCAIMHBackButton, {
|
|
243
243
|
type: "button",
|
|
244
|
-
onClick:
|
|
244
|
+
onClick: handleBack,
|
|
245
245
|
children: [/*#__PURE__*/_jsx(ChevronLeft, {
|
|
246
246
|
width: 14,
|
|
247
247
|
height: 14,
|
|
@@ -250,4 +250,4 @@ export var ChatAIPageHeader = function ChatAIPageHeader(_ref) {
|
|
|
250
250
|
}) : null]
|
|
251
251
|
});
|
|
252
252
|
};
|
|
253
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZVRyYW5zbGF0aW9uIiwiQ2hldnJvbkRvd24iLCJDaGV2cm9uTGVmdCIsIlBsdXMiLCJUb29sdGlwIiwiTG9hZGVyIiwiTUFJQUljb24iLCJDaGF0QUlBZ2VudE9wdGlvbiIsIlNDQ0FJTUhBZGRBZ2VudCIsIlNDQ0FJTUhBZ2VudHNMaXN0IiwiU0NDQUlNSEJhY2tCdXR0b24iLCJTQ0NBSU1IRGl2aWRlciIsIlNDQ0FJTUhMb2FkZXJXcmFwcGVyIiwiU0NDQUlNSFBsdXNJY29uV3JhcHBlciIsIlNDQ0FJTUhTZWxlY3RlZEFnZW50IiwiU0NDQUlNSFNlbGVjdGVkQWdlbnRUZXh0IiwiU0NDQUlNSFdyYXBwZXIiLCJTQ0NBSU1IV3JhcHBlckljb24iLCJTQ0NBSU1IV3JhcHBlck1vZGFsIiwiU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnQiLCJTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudFRpdGxlIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVVzZXIiLCJ1c2VSZXNpemVMaXN0ZW5lciIsIkVWRU5UUyIsInVzZUV2ZW50IiwiU0VDVElPTlMiLCJpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkIiwiU0NQYWdlSGVhZGVyIiwiU0NQYWdlSGVhZGVyU3RhcnQiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJDaGF0QUlQYWdlSGVhZGVyIiwiX3JlZiIsIl9sb2NhbEFnZW50cyRuYW1lIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJfcmVmJG92ZXJsYXkiLCJvdmVybGF5IiwiX3JlZiRzaG93QmFjayIsInNob3dCYWNrIiwiX3JlZiRhZ2VudHMiLCJhZ2VudHMiLCJfcmVmJGxvYWRpbmciLCJsb2FkaW5nIiwiX3JlZiRsb2FkaW5nTW9yZSIsImxvYWRpbmdNb3JlIiwiX3JlZiRoYXNNb3JlIiwiaGFzTW9yZSIsImxvYWRNb3JlQWdlbnRzIiwic29ydEFnZW50c0xpc3QiLCJoYW5kbGVSZXNldENoYXQiLCJvbkFnZW50VXBkYXRlIiwiX3VzZVRyYW5zbGF0aW9uIiwiYWJtQWdlbnQiLCJjaGF0QUkiLCJ0IiwidXNlciIsImFtcGxpdHVkRXZlbnQiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdGVkQWdlbnQiLCJhZ2VudCIsInNlbGVjdEFnZW50Iiwic2V0UHJvamVjdCIsInNldENsaWVudCIsInNldFRhc2siLCJzZWN0aW9uIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJ0ZXh0UmVmQWdlbnQiLCJkcm9wZG93blJlZiIsImFnZW50c1JlZiIsIl91c2VSZXNpemVMaXN0ZW5lciIsIm5hbWUiLCJzaG93VG9vbHRpcEFnZW50Iiwic2hvd1Rvb2x0aXAiLCJpc01haWFBZ2VudCIsImFnZW50SXRlbSIsInR5cGUiLCJhZ2VudHNGb3JTZWxlY3RvciIsImZpbHRlciIsImVudGl0eSIsImxvY2FsQWdlbnRzIiwiX3JlZjIiLCJpc19kZWxldGVkIiwiaGFzX25vdF9wZXJtaXNzaW9ucyIsImhhc19ub3RfYWNjZXNzIiwiaXNfZnJvbV9jb252ZXJzYXRpb24iLCJpc19sZWdhY3lfY29udGV4dCIsImZyb21MaXN0IiwiZmluZCIsIml0ZW0iLCJpZCIsInNlbGVjdG9ySWNvbiIsImVtb2ppIiwic2VsZWN0b3JMYWJlbCIsImNsb25lQWdlbnRzUm9sZUJsb2NrZWQiLCJ1c2VyUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsInVuZGVmaW5lZCIsImhhbmRsZUNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwidGFyZ2V0IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZVNjcm9sbCIsIl9hZ2VudHNSZWYkY3VycmVudCIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsInRpbWVvdXRJZCIsInNldFRpbWVvdXQiLCJfYWdlbnRzUmVmJGN1cnJlbnQyIiwiX2FnZW50c1JlZiRjdXJyZW50MyIsImNsZWFyVGltZW91dCIsImhhbmRsZVNlbGVjdEFnZW50IiwibmV4dEFnZW50IiwiYWlDaGF0QWdlbnRTZWxlY3QiLCJhZ2VudF90eXBlIiwiaGFuZGxlRXhwYW5kIiwiYWlDaGF0T3BlbkFnZW50U2VsZWN0IiwicHJldiIsInNob3dDdXN0b21BZ2VudHNUaXRsZSIsInNvbWUiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwic2hvdWxkUmVuZGVyU2VsZWN0b3IiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MiLCIkb3ZlcmxheSIsImNoaWxkcmVuIiwicmVmIiwib25DbGljayIsImxlbmd0aCIsInRpdGxlIiwic3R5bGUiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImdhcCIsInBsYWNlbWVudCIsImlzQWdlbnREZWxldGVkIiwid2lkdGgiLCJoZWlnaHQiLCJjb2xvciIsIm1hcCIsIm1haWFBZ2VudCIsImluZGV4IiwiaXNTZWxlY3RlZCIsImlzTWFpYSIsIm9uRmF2b3JpdGVUb2dnbGUiLCJjb25jYXQiLCJjb21wYW55IiwiYWdlbnRzQ291bnQiLCJzaXplIiwiY3JlYXRlIiwib3Blbk1vZGFsIiwib3B0aW9uIiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiZGV0YWlsIiwiYWdlbnRWYWx1ZXMiLCJ2YWx1ZXMiLCJpc0VkaXRpbmciLCJpc09wZW4iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9vcmdhbmlzbXMvQ2hhdEFJUGFnZS9DaGF0QUlQYWdlSGVhZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBDaGV2cm9uRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25Eb3duJ1xuaW1wb3J0IHsgQ2hldnJvbkxlZnQgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DaGV2cm9uTGVmdCdcbmltcG9ydCB7IFBsdXMgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9QbHVzJ1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuaW1wb3J0IHsgTUFJQUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IENoYXRBSUFnZW50T3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL0NoYXRBSU1vZGFsL2NvbXBvbmVudHMvQ2hhdEFpQWdlbnRPcHRpb25zL0NoYXRBaUFnZW50T3B0aW9ucydcbmltcG9ydCB7XG4gIFNDQ0FJTUhBZGRBZ2VudCxcbiAgU0NDQUlNSEFnZW50c0xpc3QsXG4gIFNDQ0FJTUhCYWNrQnV0dG9uLFxuICBTQ0NBSU1IRGl2aWRlcixcbiAgU0NDQUlNSExvYWRlcldyYXBwZXIsXG4gIFNDQ0FJTUhQbHVzSWNvbldyYXBwZXIsXG4gIFNDQ0FJTUhTZWxlY3RlZEFnZW50LFxuICBTQ0NBSU1IU2VsZWN0ZWRBZ2VudFRleHQsXG4gIFNDQ0FJTUhXcmFwcGVyLFxuICBTQ0NBSU1IV3JhcHBlckljb24sXG4gIFNDQ0FJTUhXcmFwcGVyTW9kYWwsXG4gIFNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50LFxuICBTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudFRpdGxlLFxufSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvY29tcG9uZW50cy9DaGF0QWlNb2RhbEhlYWRlci9DaGF0QWlNb2RhbEhlYWRlci5zdHlsZXMnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlUmVzaXplTGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VSZXNpemUnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyBpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL21haWFUYXNrUGFuZWxBY2Nlc3MnXG5pbXBvcnQgdHlwZSB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBTQ1BhZ2VIZWFkZXIsIFNDUGFnZUhlYWRlclN0YXJ0IH0gZnJvbSAnLi9DaGF0QUlQYWdlSGVhZGVyLnN0eWxlcydcblxuaW50ZXJmYWNlIENoYXRBSVBhZ2VIZWFkZXJQcm9wcyB7XG4gIG92ZXJsYXk/OiBib29sZWFuXG4gIHNob3dCYWNrPzogYm9vbGVhblxuICBhZ2VudHM/OiBBZ2VudFtdXG4gIGxvYWRpbmc/OiBib29sZWFuXG4gIGxvYWRpbmdNb3JlPzogYm9vbGVhblxuICBoYXNNb3JlPzogYm9vbGVhblxuICBsb2FkTW9yZUFnZW50cz86ICgpID0+IHZvaWRcbiAgc29ydEFnZW50c0xpc3Q/OiAoKSA9PiB2b2lkXG4gIGhhbmRsZVJlc2V0Q2hhdDogKCkgPT4gdm9pZFxuICBvbkFnZW50VXBkYXRlPzogKHVwZGF0ZWRBZ2VudDogQWdlbnQpID0+IHZvaWRcbn1cblxuZXhwb3J0IGNvbnN0IENoYXRBSVBhZ2VIZWFkZXIgPSAoe1xuICBvdmVybGF5ID0gZmFsc2UsXG4gIHNob3dCYWNrID0gZmFsc2UsXG4gIGFnZW50cyA9IFtdLFxuICBsb2FkaW5nID0gZmFsc2UsXG4gIGxvYWRpbmdNb3JlID0gZmFsc2UsXG4gIGhhc01vcmUgPSBmYWxzZSxcbiAgbG9hZE1vcmVBZ2VudHMsXG4gIHNvcnRBZ2VudHNMaXN0LFxuICBoYW5kbGVSZXNldENoYXQsXG4gIG9uQWdlbnRVcGRhdGUsXG59OiBDaGF0QUlQYWdlSGVhZGVyUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuYWJtQWdlbnQsIFNFQ1RJT05TLmNoYXRBSV0pXG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgYW1wbGl0dWRFdmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBhZ2VudDogc2VsZWN0ZWRBZ2VudCwgc2VsZWN0QWdlbnQsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFzaywgc2VjdGlvbiB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB0ZXh0UmVmQWdlbnQgPSB1c2VSZWY8SFRNTFNwYW5FbGVtZW50PihudWxsKVxuICBjb25zdCBkcm9wZG93blJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgYWdlbnRzUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB7IHNob3dUb29sdGlwOiBzaG93VG9vbHRpcEFnZW50IH0gPSB1c2VSZXNpemVMaXN0ZW5lcih0ZXh0UmVmQWdlbnQsIFtzZWxlY3RlZEFnZW50Py5uYW1lXSlcblxuICBjb25zdCBpc01haWFBZ2VudCA9IHVzZUNhbGxiYWNrKChhZ2VudEl0ZW06IEFnZW50KSA9PiBhZ2VudEl0ZW0udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicsIFtdKVxuICBjb25zdCBhZ2VudHNGb3JTZWxlY3RvciA9IHVzZU1lbW8oXG4gICAgKCkgPT4gYWdlbnRzLmZpbHRlcihhZ2VudEl0ZW0gPT4gaXNNYWlhQWdlbnQoYWdlbnRJdGVtKSB8fCBhZ2VudEl0ZW0uZW50aXR5ICE9PSAnZ2xvYmFsJyksXG4gICAgW2FnZW50cywgaXNNYWlhQWdlbnRdXG4gIClcblxuICBjb25zdCBsb2NhbEFnZW50cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHNlbGVjdGVkQWdlbnQ/LmlzX2RlbGV0ZWQgfHxcbiAgICAgIHNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHxcbiAgICAgIHNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfYWNjZXNzIHx8XG4gICAgICBzZWxlY3RlZEFnZW50Py5pc19mcm9tX2NvbnZlcnNhdGlvbiB8fFxuICAgICAgc2VsZWN0ZWRBZ2VudD8uaXNfbGVnYWN5X2NvbnRleHRcbiAgICApIHtcbiAgICAgIHJldHVybiBzZWxlY3RlZEFnZW50XG4gICAgfVxuICAgIGNvbnN0IGZyb21MaXN0ID0gYWdlbnRzLmZpbmQoXG4gICAgICBpdGVtID0+ICFpdGVtLmlzX2RlbGV0ZWQgJiYgIWl0ZW0uaGFzX25vdF9wZXJtaXNzaW9ucyAmJiAhaXRlbS5oYXNfbm90X2FjY2VzcyAmJiBpdGVtLmlkID09PSBzZWxlY3RlZEFnZW50Py5pZFxuICAgIClcbiAgICByZXR1cm4gZnJvbUxpc3QgPz8gc2VsZWN0ZWRBZ2VudCA/PyBudWxsXG4gIH0sIFthZ2VudHMsIHNlbGVjdGVkQWdlbnRdKVxuXG4gIGNvbnN0IHNlbGVjdG9ySWNvbiA9XG4gICAgbG9jYWxBZ2VudHM/LnR5cGUgPT09ICdjdXN0b20nICYmICFsb2NhbEFnZW50cz8uaXNfbGVnYWN5X2NvbnRleHQgPyBsb2NhbEFnZW50cz8uZW1vamkgOiA8TUFJQUljb24gLz5cbiAgY29uc3Qgc2VsZWN0b3JMYWJlbCA9IGxvY2FsQWdlbnRzPy5uYW1lID8/ICcnXG4gIGNvbnN0IGNsb25lQWdlbnRzUm9sZUJsb2NrZWQgPSBpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkKHVzZXIsIHNlY3Rpb24pXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNFeHBhbmRlZCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoZHJvcGRvd25SZWYuY3VycmVudCAmJiAhZHJvcGRvd25SZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgc2V0SXNFeHBhbmRlZChmYWxzZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG4gIH0sIFtpc0V4cGFuZGVkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNFeHBhbmRlZCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgaWYgKCFhZ2VudHNSZWYuY3VycmVudCB8fCAhbG9hZE1vcmVBZ2VudHMgfHwgIWhhc01vcmUgfHwgbG9hZGluZ01vcmUpIHJldHVyblxuICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBhZ2VudHNSZWYuY3VycmVudFxuICAgICAgaWYgKHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodCA8IDUwKSB7XG4gICAgICAgIGxvYWRNb3JlQWdlbnRzKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGFnZW50c1JlZi5jdXJyZW50Py5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgfSwgMTAwKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpXG4gICAgICBhZ2VudHNSZWYuY3VycmVudD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgIH1cbiAgfSwgW2lzRXhwYW5kZWQsIGxvYWRNb3JlQWdlbnRzLCBoYXNNb3JlLCBsb2FkaW5nTW9yZV0pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0QWdlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAobmV4dEFnZW50OiBBZ2VudCkgPT4ge1xuICAgICAgc2VsZWN0QWdlbnQobmV4dEFnZW50KVxuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0QWdlbnRTZWxlY3QsIHsgYWdlbnRfdHlwZTogbmV4dEFnZW50Py50eXBlIH0pXG4gICAgICBzZXRJc0V4cGFuZGVkKGZhbHNlKVxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldFRhc2sobnVsbClcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBoYW5kbGVSZXNldENoYXQoKVxuICAgICAgfSwgMTAwKVxuICAgIH0sXG4gICAgW3NlbGVjdEFnZW50LCBhbXBsaXR1ZEV2ZW50LCBoYW5kbGVSZXNldENoYXQsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFza11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUV4cGFuZCA9ICgpID0+IHtcbiAgICBpZiAoIWlzRXhwYW5kZWQpIHtcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdE9wZW5BZ2VudFNlbGVjdClcbiAgICAgIHNvcnRBZ2VudHNMaXN0Py4oKVxuICAgIH1cbiAgICBzZXRJc0V4cGFuZGVkKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICBjb25zdCBzaG93Q3VzdG9tQWdlbnRzVGl0bGUgPVxuICAgIGFnZW50c0ZvclNlbGVjdG9yLnNvbWUoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICdjdXN0b20nKSAmJiAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG5cbiAgY29uc3Qgc2hvdWxkUmVuZGVyU2VsZWN0b3IgPVxuICAgICFsb2FkaW5nICYmXG4gICAgISFzZWxlY3RlZEFnZW50ICYmXG4gICAgKCEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgfHwgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTKVxuXG4gIHJldHVybiAoXG4gICAgPFNDUGFnZUhlYWRlciAkb3ZlcmxheT17b3ZlcmxheX0+XG4gICAgICA8U0NQYWdlSGVhZGVyU3RhcnQ+XG4gICAgICAgIHtzaG91bGRSZW5kZXJTZWxlY3RvciA/IChcbiAgICAgICAgICA8U0NDQUlNSFdyYXBwZXIgcmVmPXtkcm9wZG93blJlZn0gb25DbGljaz17YWdlbnRzLmxlbmd0aCA/IGhhbmRsZUV4cGFuZCA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICA8U0NDQUlNSFNlbGVjdGVkQWdlbnQ+XG4gICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgc2hvd1Rvb2x0aXBBZ2VudCA/IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZ2FwOiAnNHB4JyB9fT5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0b3JJY29ufSB7c2VsZWN0b3JMYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PXtpc0V4cGFuZGVkID8gJ2xlZnQnIDogJ3RvcCd9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U0NDQUlNSFNlbGVjdGVkQWdlbnRUZXh0XG4gICAgICAgICAgICAgICAgICByZWY9e3RleHRSZWZBZ2VudH1cbiAgICAgICAgICAgICAgICAgIGlzQWdlbnREZWxldGVkPXtcbiAgICAgICAgICAgICAgICAgICAgISFzZWxlY3RlZEFnZW50Py5pc19kZWxldGVkIHx8XG4gICAgICAgICAgICAgICAgICAgICEhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyB8fFxuICAgICAgICAgICAgICAgICAgICAhIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfYWNjZXNzIHx8XG4gICAgICAgICAgICAgICAgICAgICEhc2VsZWN0ZWRBZ2VudD8uaXNfbGVnYWN5X2NvbnRleHRcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6ICc0cHgnIH19PlxuICAgICAgICAgICAgICAgICAgICB7c2VsZWN0b3JJY29ufSB7c2VsZWN0b3JMYWJlbH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L1NDQ0FJTUhTZWxlY3RlZEFnZW50VGV4dD5cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgPC9TQ0NBSU1IU2VsZWN0ZWRBZ2VudD5cbiAgICAgICAgICAgIDxTQ0NBSU1IV3JhcHBlckljb24+XG4gICAgICAgICAgICAgIDxDaGV2cm9uRG93biB3aWR0aD17MTR9IGhlaWdodD17MTR9IGNvbG9yPVwiIzIwMjAxRlwiIC8+XG4gICAgICAgICAgICA8L1NDQ0FJTUhXcmFwcGVySWNvbj5cbiAgICAgICAgICAgIHtpc0V4cGFuZGVkID8gKFxuICAgICAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbD5cbiAgICAgICAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICB7d2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCA/IChcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICB7YWdlbnRzRm9yU2VsZWN0b3IuZmlsdGVyKGlzTWFpYUFnZW50KS5tYXAoKG1haWFBZ2VudCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxDaGF0QUlBZ2VudE9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2BhZ2VudC0ke21haWFBZ2VudC5pZH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudD17bWFpYUFnZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEFnZW50PXtoYW5kbGVTZWxlY3RBZ2VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c2VsZWN0ZWRBZ2VudD8uaWQgPT09IG1haWFBZ2VudC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNNYWlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmF2b3JpdGVUb2dnbGU9e29uQWdlbnRVcGRhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAge3Nob3dDdXN0b21BZ2VudHNUaXRsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnRUaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdhZ2VudHMnKX0gYnkge3VzZXIuY29tcGFueX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQ0FJTUhEaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICA8U0NDQUlNSEFnZW50c0xpc3QgaGFzTW9yZT17aGFzTW9yZX0gYWdlbnRzQ291bnQ9e2FnZW50c0ZvclNlbGVjdG9yLmxlbmd0aH0gcmVmPXthZ2VudHNSZWZ9PlxuICAgICAgICAgICAgICAgICAgICB7YWdlbnRzRm9yU2VsZWN0b3IubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmlzX2RlbGV0ZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lmhhc19ub3RfYWNjZXNzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50eXBlID09PSAnY2xvbmUnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBpc01haWFBZ2VudChpdGVtKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW0/LnR5cGUgPT09ICdjdXN0b20nICYmICF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUylcbiAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2hhdEFJQWdlbnRPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgYWdlbnQtJHtpdGVtLmlkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50PXtpdGVtfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEFnZW50PXtoYW5kbGVTZWxlY3RBZ2VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c2VsZWN0ZWRBZ2VudD8uaWQgPT09IGl0ZW0uaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmF2b3JpdGVUb2dnbGU9e29uQWdlbnRVcGRhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRXhwYW5kZWQ9e3NldElzRXhwYW5kZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgIHtsb2FkaW5nTW9yZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSExvYWRlcldyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TG9hZGVyIHNpemU9XCJzbWFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0NBSU1ITG9hZGVyV3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICA8L1NDQ0FJTUhBZ2VudHNMaXN0PlxuICAgICAgICAgICAgICAgICAge3VzZXJQZXJtaXNzaW9ucz8uY3JlYXRlICYmIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTID8gKFxuICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSEFkZEFnZW50XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNFeHBhbmRlZChmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLm9wZW5Nb2RhbCwgeyBvcHRpb246ICdjcmVhdGVfYWdlbnQnIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1hZ2VudC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnRWYWx1ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNPcGVuOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSFBsdXNJY29uV3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzIGNvbG9yPVwid2hpdGVcIiB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0NBSU1IUGx1c0ljb25XcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgICAgIHt0KCdjcmVhdGVBZ2VudCcpfVxuICAgICAgICAgICAgICAgICAgICA8L1NDQ0FJTUhBZGRBZ2VudD5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvU0NDQUlNSFdyYXBwZXJNb2RhbD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvU0NDQUlNSFdyYXBwZXI+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TQ1BhZ2VIZWFkZXJTdGFydD5cbiAgICAgIHtzaG93QmFjayA/IChcbiAgICAgICAgPFNDQ0FJTUhCYWNrQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVSZXNldENoYXR9PlxuICAgICAgICAgIDxDaGV2cm9uTGVmdCB3aWR0aD17MTR9IGhlaWdodD17MTR9IGNvbG9yPVwiIzM0MzQzM1wiIC8+XG4gICAgICAgICAge3QoJ2JhY2snKX1cbiAgICAgICAgPC9TQ0NBSU1IQmFja0J1dHRvbj5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvU0NQYWdlSGVhZGVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ3pFLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLFdBQVcsUUFBUSw4Q0FBOEM7QUFDMUUsU0FBU0MsV0FBVyxRQUFRLDhDQUE4QztBQUMxRSxTQUFTQyxJQUFJLFFBQVEsdUNBQXVDO0FBQzVELFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FB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
|
|
253
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZVRyYW5zbGF0aW9uIiwiQ2hldnJvbkRvd24iLCJDaGV2cm9uTGVmdCIsIlBsdXMiLCJUb29sdGlwIiwiTG9hZGVyIiwiTUFJQUljb24iLCJDaGF0QUlBZ2VudE9wdGlvbiIsIlNDQ0FJTUhBZGRBZ2VudCIsIlNDQ0FJTUhBZ2VudHNMaXN0IiwiU0NDQUlNSEJhY2tCdXR0b24iLCJTQ0NBSU1IRGl2aWRlciIsIlNDQ0FJTUhMb2FkZXJXcmFwcGVyIiwiU0NDQUlNSFBsdXNJY29uV3JhcHBlciIsIlNDQ0FJTUhTZWxlY3RlZEFnZW50IiwiU0NDQUlNSFNlbGVjdGVkQWdlbnRUZXh0IiwiU0NDQUlNSFdyYXBwZXIiLCJTQ0NBSU1IV3JhcHBlckljb24iLCJTQ0NBSU1IV3JhcHBlck1vZGFsIiwiU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnQiLCJTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudFRpdGxlIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVVzZXIiLCJ1c2VSZXNpemVMaXN0ZW5lciIsIkVWRU5UUyIsInVzZUV2ZW50IiwiU0VDVElPTlMiLCJyZXNvbHZlQWlDaGF0QmFja0Rlc3RpbmF0aW9uIiwib3B0aW9ucyIsImlzTWFpYUNsb25lQWdlbnRzUm9sZUJsb2NrZWQiLCJTQ1BhZ2VIZWFkZXIiLCJTQ1BhZ2VIZWFkZXJTdGFydCIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIkNoYXRBSVBhZ2VIZWFkZXIiLCJfcmVmIiwiX2xvY2FsQWdlbnRzJG5hbWUiLCJfdXNlciRwZXJtaXNzaW9ucyIsIl9yZWYkb3ZlcmxheSIsIm92ZXJsYXkiLCJfcmVmJHNob3dCYWNrIiwic2hvd0JhY2siLCJfcmVmJGFnZW50cyIsImFnZW50cyIsIl9yZWYkbG9hZGluZyIsImxvYWRpbmciLCJfcmVmJGxvYWRpbmdNb3JlIiwibG9hZGluZ01vcmUiLCJfcmVmJGhhc01vcmUiLCJoYXNNb3JlIiwibG9hZE1vcmVBZ2VudHMiLCJzb3J0QWdlbnRzTGlzdCIsImhhbmRsZVJlc2V0Q2hhdCIsIm9uQWdlbnRVcGRhdGUiLCJfdXNlVHJhbnNsYXRpb24iLCJhYm1BZ2VudCIsImNoYXRBSSIsInQiLCJ1c2VyIiwiYW1wbGl0dWRFdmVudCIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0ZWRBZ2VudCIsImFnZW50Iiwic2VsZWN0QWdlbnQiLCJzZXRQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0VGFzayIsInNlY3Rpb24iLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpc0V4cGFuZGVkIiwic2V0SXNFeHBhbmRlZCIsInRleHRSZWZBZ2VudCIsImRyb3Bkb3duUmVmIiwiYWdlbnRzUmVmIiwiX3VzZVJlc2l6ZUxpc3RlbmVyIiwibmFtZSIsInNob3dUb29sdGlwQWdlbnQiLCJzaG93VG9vbHRpcCIsImlzTWFpYUFnZW50IiwiYWdlbnRJdGVtIiwidHlwZSIsImFnZW50c0ZvclNlbGVjdG9yIiwiZmlsdGVyIiwiZW50aXR5IiwibG9jYWxBZ2VudHMiLCJfcmVmMiIsImlzX2RlbGV0ZWQiLCJoYXNfbm90X3Blcm1pc3Npb25zIiwiaGFzX25vdF9hY2Nlc3MiLCJpc19mcm9tX2NvbnZlcnNhdGlvbiIsImlzX2xlZ2FjeV9jb250ZXh0IiwiZnJvbUxpc3QiLCJmaW5kIiwiaXRlbSIsImlkIiwic2VsZWN0b3JJY29uIiwiZW1vamkiLCJzZWxlY3RvckxhYmVsIiwiY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwidW5kZWZpbmVkIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwiZXZlbnQiLCJjdXJyZW50IiwiY29udGFpbnMiLCJ0YXJnZXQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlQWdlbnRzU2Nyb2xsIiwiX2FnZW50c1JlZiRjdXJyZW50Iiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiaGFuZGxlQmFjayIsImFpQ2hhdEJhY2siLCJ0byIsImNoYXQiLCJob21lIiwiaGFuZGxlU2VsZWN0QWdlbnQiLCJuZXh0QWdlbnQiLCJhaUNoYXRBZ2VudFNlbGVjdCIsImFnZW50X3R5cGUiLCJzZXRUaW1lb3V0IiwiaGFuZGxlRXhwYW5kIiwiYWlDaGF0T3BlbkFnZW50U2VsZWN0IiwicHJldiIsInNob3dDdXN0b21BZ2VudHNUaXRsZSIsInNvbWUiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwic2hvdWxkUmVuZGVyU2VsZWN0b3IiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MiLCIkb3ZlcmxheSIsImNoaWxkcmVuIiwicmVmIiwib25DbGljayIsImxlbmd0aCIsInRpdGxlIiwic3R5bGUiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImdhcCIsInBsYWNlbWVudCIsImlzQWdlbnREZWxldGVkIiwid2lkdGgiLCJoZWlnaHQiLCJjb2xvciIsIm1hcCIsIm1haWFBZ2VudCIsImluZGV4IiwiaXNTZWxlY3RlZCIsImlzTWFpYSIsIm9uRmF2b3JpdGVUb2dnbGUiLCJjb25jYXQiLCJjb21wYW55IiwiYWdlbnRzQ291bnQiLCJvblNjcm9sbCIsInNpemUiLCJjcmVhdGUiLCJvcGVuTW9kYWwiLCJvcHRpb24iLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJhZ2VudFZhbHVlcyIsInZhbHVlcyIsImlzRWRpdGluZyIsImlzT3BlbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL29yZ2FuaXNtcy9DaGF0QUlQYWdlL0NoYXRBSVBhZ2VIZWFkZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IENoZXZyb25Eb3duIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hldnJvbkRvd24nXG5pbXBvcnQgeyBDaGV2cm9uTGVmdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25MZWZ0J1xuaW1wb3J0IHsgUGx1cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BsdXMnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBNQUlBSWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgQ2hhdEFJQWdlbnRPcHRpb24gfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvY29tcG9uZW50cy9DaGF0QWlBZ2VudE9wdGlvbnMvQ2hhdEFpQWdlbnRPcHRpb25zJ1xuaW1wb3J0IHtcbiAgU0NDQUlNSEFkZEFnZW50LFxuICBTQ0NBSU1IQWdlbnRzTGlzdCxcbiAgU0NDQUlNSEJhY2tCdXR0b24sXG4gIFNDQ0FJTUhEaXZpZGVyLFxuICBTQ0NBSU1ITG9hZGVyV3JhcHBlcixcbiAgU0NDQUlNSFBsdXNJY29uV3JhcHBlcixcbiAgU0NDQUlNSFNlbGVjdGVkQWdlbnQsXG4gIFNDQ0FJTUhTZWxlY3RlZEFnZW50VGV4dCxcbiAgU0NDQUlNSFdyYXBwZXIsXG4gIFNDQ0FJTUhXcmFwcGVySWNvbixcbiAgU0NDQUlNSFdyYXBwZXJNb2RhbCxcbiAgU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnQsXG4gIFNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGUsXG59IGZyb20gJy4uLy4uL21vbGVjdWxlcy9DaGF0QUlNb2RhbC9jb21wb25lbnRzL0NoYXRBaU1vZGFsSGVhZGVyL0NoYXRBaU1vZGFsSGVhZGVyLnN0eWxlcydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VSZXNpemVMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVJlc2l6ZSdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IHJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24gfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvQ2hhdEFJTW9kYWwuaGVscGVycydcbmltcG9ydCB7IG9wdGlvbnMgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvY29uc3RhbnRzJ1xuaW1wb3J0IHsgaXNNYWlhQ2xvbmVBZ2VudHNSb2xlQmxvY2tlZCB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9tYWlhVGFza1BhbmVsQWNjZXNzJ1xuaW1wb3J0IHR5cGUgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgU0NQYWdlSGVhZGVyLCBTQ1BhZ2VIZWFkZXJTdGFydCB9IGZyb20gJy4vQ2hhdEFJUGFnZUhlYWRlci5zdHlsZXMnXG5cbmludGVyZmFjZSBDaGF0QUlQYWdlSGVhZGVyUHJvcHMge1xuICBvdmVybGF5PzogYm9vbGVhblxuICBzaG93QmFjaz86IGJvb2xlYW5cbiAgYWdlbnRzPzogQWdlbnRbXVxuICBsb2FkaW5nPzogYm9vbGVhblxuICBsb2FkaW5nTW9yZT86IGJvb2xlYW5cbiAgaGFzTW9yZT86IGJvb2xlYW5cbiAgbG9hZE1vcmVBZ2VudHM/OiAoKSA9PiB2b2lkXG4gIHNvcnRBZ2VudHNMaXN0PzogKCkgPT4gdm9pZFxuICBoYW5kbGVSZXNldENoYXQ6ICgpID0+IHZvaWRcbiAgb25BZ2VudFVwZGF0ZT86ICh1cGRhdGVkQWdlbnQ6IEFnZW50KSA9PiB2b2lkXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlQYWdlSGVhZGVyID0gKHtcbiAgb3ZlcmxheSA9IGZhbHNlLFxuICBzaG93QmFjayA9IGZhbHNlLFxuICBhZ2VudHMgPSBbXSxcbiAgbG9hZGluZyA9IGZhbHNlLFxuICBsb2FkaW5nTW9yZSA9IGZhbHNlLFxuICBoYXNNb3JlID0gZmFsc2UsXG4gIGxvYWRNb3JlQWdlbnRzLFxuICBzb3J0QWdlbnRzTGlzdCxcbiAgaGFuZGxlUmVzZXRDaGF0LFxuICBvbkFnZW50VXBkYXRlLFxufTogQ2hhdEFJUGFnZUhlYWRlclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oW1NFQ1RJT05TLmFibUFnZW50LCBTRUNUSU9OUy5jaGF0QUldKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IGFtcGxpdHVkRXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgYWdlbnQ6IHNlbGVjdGVkQWdlbnQsIHNlbGVjdEFnZW50LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIHNldFRhc2ssIHNlY3Rpb24gfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgdGV4dFJlZkFnZW50ID0gdXNlUmVmPEhUTUxTcGFuRWxlbWVudD4obnVsbClcbiAgY29uc3QgZHJvcGRvd25SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGFnZW50c1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgeyBzaG93VG9vbHRpcDogc2hvd1Rvb2x0aXBBZ2VudCB9ID0gdXNlUmVzaXplTGlzdGVuZXIodGV4dFJlZkFnZW50LCBbc2VsZWN0ZWRBZ2VudD8ubmFtZV0pXG5cbiAgY29uc3QgaXNNYWlhQWdlbnQgPSB1c2VDYWxsYmFjaygoYWdlbnRJdGVtOiBBZ2VudCkgPT4gYWdlbnRJdGVtLnR5cGUgPT09ICdvcmNoZXN0cmF0b3InLCBbXSlcbiAgY29uc3QgYWdlbnRzRm9yU2VsZWN0b3IgPSB1c2VNZW1vKFxuICAgICgpID0+IGFnZW50cy5maWx0ZXIoYWdlbnRJdGVtID0+IGlzTWFpYUFnZW50KGFnZW50SXRlbSkgfHwgYWdlbnRJdGVtLmVudGl0eSAhPT0gJ2dsb2JhbCcpLFxuICAgIFthZ2VudHMsIGlzTWFpYUFnZW50XVxuICApXG5cbiAgY29uc3QgbG9jYWxBZ2VudHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICBzZWxlY3RlZEFnZW50Py5pc19kZWxldGVkIHx8XG4gICAgICBzZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zIHx8XG4gICAgICBzZWxlY3RlZEFnZW50Py5oYXNfbm90X2FjY2VzcyB8fFxuICAgICAgc2VsZWN0ZWRBZ2VudD8uaXNfZnJvbV9jb252ZXJzYXRpb24gfHxcbiAgICAgIHNlbGVjdGVkQWdlbnQ/LmlzX2xlZ2FjeV9jb250ZXh0XG4gICAgKSB7XG4gICAgICByZXR1cm4gc2VsZWN0ZWRBZ2VudFxuICAgIH1cbiAgICBjb25zdCBmcm9tTGlzdCA9IGFnZW50cy5maW5kKFxuICAgICAgaXRlbSA9PiAhaXRlbS5pc19kZWxldGVkICYmICFpdGVtLmhhc19ub3RfcGVybWlzc2lvbnMgJiYgIWl0ZW0uaGFzX25vdF9hY2Nlc3MgJiYgaXRlbS5pZCA9PT0gc2VsZWN0ZWRBZ2VudD8uaWRcbiAgICApXG4gICAgcmV0dXJuIGZyb21MaXN0ID8/IHNlbGVjdGVkQWdlbnQgPz8gbnVsbFxuICB9LCBbYWdlbnRzLCBzZWxlY3RlZEFnZW50XSlcblxuICBjb25zdCBzZWxlY3Rvckljb24gPVxuICAgIGxvY2FsQWdlbnRzPy50eXBlID09PSAnY3VzdG9tJyAmJiAhbG9jYWxBZ2VudHM/LmlzX2xlZ2FjeV9jb250ZXh0ID8gbG9jYWxBZ2VudHM/LmVtb2ppIDogPE1BSUFJY29uIC8+XG4gIGNvbnN0IHNlbGVjdG9yTGFiZWwgPSBsb2NhbEFnZW50cz8ubmFtZSA/PyAnJ1xuICBjb25zdCBjbG9uZUFnZW50c1JvbGVCbG9ja2VkID0gaXNNYWlhQ2xvbmVBZ2VudHNSb2xlQmxvY2tlZCh1c2VyLCBzZWN0aW9uKVxuICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRXhwYW5kZWQpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKGRyb3Bkb3duUmVmLmN1cnJlbnQgJiYgIWRyb3Bkb3duUmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICAgIHNldElzRXhwYW5kZWQoZmFsc2UpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgfVxuICB9LCBbaXNFeHBhbmRlZF0pXG5cbiAgY29uc3QgaGFuZGxlQWdlbnRzU2Nyb2xsID0gKCkgPT4ge1xuICAgIGlmICghYWdlbnRzUmVmLmN1cnJlbnQgfHwgIWxvYWRNb3JlQWdlbnRzIHx8ICFoYXNNb3JlIHx8IGxvYWRpbmdNb3JlKSByZXR1cm5cbiAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGFnZW50c1JlZi5jdXJyZW50XG4gICAgaWYgKHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodCA8IDUwKSB7XG4gICAgICBsb2FkTW9yZUFnZW50cygpXG4gICAgfVxuICB9XG5cbiAgLy8gRWwgZXZlbnRvIHZhIGVuIGVsIGNsaWNrIHkgbm8gZW4gaGFuZGxlUmVzZXRDaGF0LCBxdWUgdGFtYmllbiBjb3JyZSBhbCBjYW1iaWFyIGRlIGFnZW50ZS5cbiAgLy8gRWwgYm90b24gc29sbyBzZSBtdWVzdHJhIGZ1ZXJhIGRlIGxhIGhvbWUsIGFzaSBxdWUgc2llbXByZSB2dWVsdmUgZGVsIGNoYXQuXG4gIGNvbnN0IGhhbmRsZUJhY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0QmFjaywge1xuICAgICAgdG86IHJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24oc2VjdGlvbiwgc2VsZWN0ZWRBZ2VudD8udHlwZSwgb3B0aW9ucy5jaGF0LCBvcHRpb25zLmhvbWUpLFxuICAgIH0pXG4gICAgaGFuZGxlUmVzZXRDaGF0KClcbiAgfSwgW2FtcGxpdHVkRXZlbnQsIGhhbmRsZVJlc2V0Q2hhdCwgc2VjdGlvbiwgc2VsZWN0ZWRBZ2VudD8udHlwZV0pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0QWdlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAobmV4dEFnZW50OiBBZ2VudCkgPT4ge1xuICAgICAgc2VsZWN0QWdlbnQobmV4dEFnZW50KVxuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0QWdlbnRTZWxlY3QsIHsgYWdlbnRfdHlwZTogbmV4dEFnZW50Py50eXBlIH0pXG4gICAgICBzZXRJc0V4cGFuZGVkKGZhbHNlKVxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldFRhc2sobnVsbClcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBoYW5kbGVSZXNldENoYXQoKVxuICAgICAgfSwgMTAwKVxuICAgIH0sXG4gICAgW3NlbGVjdEFnZW50LCBhbXBsaXR1ZEV2ZW50LCBoYW5kbGVSZXNldENoYXQsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFza11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUV4cGFuZCA9ICgpID0+IHtcbiAgICBpZiAoIWlzRXhwYW5kZWQpIHtcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdE9wZW5BZ2VudFNlbGVjdClcbiAgICAgIHNvcnRBZ2VudHNMaXN0Py4oKVxuICAgIH1cbiAgICBzZXRJc0V4cGFuZGVkKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICBjb25zdCBzaG93Q3VzdG9tQWdlbnRzVGl0bGUgPVxuICAgIGFnZW50c0ZvclNlbGVjdG9yLnNvbWUoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICdjdXN0b20nKSAmJiAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG5cbiAgY29uc3Qgc2hvdWxkUmVuZGVyU2VsZWN0b3IgPVxuICAgICFsb2FkaW5nICYmXG4gICAgISFzZWxlY3RlZEFnZW50ICYmXG4gICAgKCEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgfHwgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTKVxuXG4gIHJldHVybiAoXG4gICAgPFNDUGFnZUhlYWRlciAkb3ZlcmxheT17b3ZlcmxheX0+XG4gICAgICA8U0NQYWdlSGVhZGVyU3RhcnQ+XG4gICAgICAgIHtzaG91bGRSZW5kZXJTZWxlY3RvciA/IChcbiAgICAgICAgICA8U0NDQUlNSFdyYXBwZXIgcmVmPXtkcm9wZG93blJlZn0gb25DbGljaz17YWdlbnRzLmxlbmd0aCA/IGhhbmRsZUV4cGFuZCA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICA8U0NDQUlNSFNlbGVjdGVkQWdlbnQ+XG4gICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgc2hvd1Rvb2x0aXBBZ2VudCA/IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZ2FwOiAnNHB4JyB9fT5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0b3JJY29ufSB7c2VsZWN0b3JMYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PXtpc0V4cGFuZGVkID8gJ2xlZnQnIDogJ3RvcCd9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U0NDQUlNSFNlbGVjdGVkQWdlbnRUZXh0XG4gICAgICAgICAgICAgICAgICByZWY9e3RleHRSZWZBZ2VudH1cbiAgICAgICAgICAgICAgICAgIGlzQWdlbnREZWxldGVkPXtcbiAgICAgICAgICAgICAgICAgICAgISFzZWxlY3RlZEFnZW50Py5pc19kZWxldGVkIHx8XG4gICAgICAgICAgICAgICAgICAgICEhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyB8fFxuICAgICAgICAgICAgICAgICAgICAhIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfYWNjZXNzIHx8XG4gICAgICAgICAgICAgICAgICAgICEhc2VsZWN0ZWRBZ2VudD8uaXNfbGVnYWN5X2NvbnRleHRcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6ICc0cHgnIH19PlxuICAgICAgICAgICAgICAgICAgICB7c2VsZWN0b3JJY29ufSB7c2VsZWN0b3JMYWJlbH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L1NDQ0FJTUhTZWxlY3RlZEFnZW50VGV4dD5cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgPC9TQ0NBSU1IU2VsZWN0ZWRBZ2VudD5cbiAgICAgICAgICAgIDxTQ0NBSU1IV3JhcHBlckljb24+XG4gICAgICAgICAgICAgIDxDaGV2cm9uRG93biB3aWR0aD17MTR9IGhlaWdodD17MTR9IGNvbG9yPVwiIzIwMjAxRlwiIC8+XG4gICAgICAgICAgICA8L1NDQ0FJTUhXcmFwcGVySWNvbj5cbiAgICAgICAgICAgIHtpc0V4cGFuZGVkID8gKFxuICAgICAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbD5cbiAgICAgICAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICB7d2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCA/IChcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICB7YWdlbnRzRm9yU2VsZWN0b3IuZmlsdGVyKGlzTWFpYUFnZW50KS5tYXAoKG1haWFBZ2VudCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxDaGF0QUlBZ2VudE9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2BhZ2VudC0ke21haWFBZ2VudC5pZH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudD17bWFpYUFnZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEFnZW50PXtoYW5kbGVTZWxlY3RBZ2VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c2VsZWN0ZWRBZ2VudD8uaWQgPT09IG1haWFBZ2VudC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNNYWlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmF2b3JpdGVUb2dnbGU9e29uQWdlbnRVcGRhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAge3Nob3dDdXN0b21BZ2VudHNUaXRsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnRUaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdhZ2VudHMnKX0gYnkge3VzZXIuY29tcGFueX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQ0FJTUhEaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICA8U0NDQUlNSEFnZW50c0xpc3RcbiAgICAgICAgICAgICAgICAgICAgaGFzTW9yZT17aGFzTW9yZX1cbiAgICAgICAgICAgICAgICAgICAgYWdlbnRzQ291bnQ9e2FnZW50c0ZvclNlbGVjdG9yLmxlbmd0aH1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXthZ2VudHNSZWZ9XG4gICAgICAgICAgICAgICAgICAgIG9uU2Nyb2xsPXtoYW5kbGVBZ2VudHNTY3JvbGx9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHthZ2VudHNGb3JTZWxlY3Rvci5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uaXNfZGVsZXRlZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uaGFzX25vdF9wZXJtaXNzaW9ucyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uaGFzX25vdF9hY2Nlc3MgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnR5cGUgPT09ICdjbG9uZScgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTWFpYUFnZW50KGl0ZW0pIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoaXRlbT8udHlwZSA9PT0gJ2N1c3RvbScgJiYgIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKVxuICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxDaGF0QUlBZ2VudE9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2BhZ2VudC0ke2l0ZW0uaWR9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnQ9e2l0ZW19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0QWdlbnQ9e2hhbmRsZVNlbGVjdEFnZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzZWxlY3RlZEFnZW50Py5pZCA9PT0gaXRlbS5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25GYXZvcml0ZVRvZ2dsZT17b25BZ2VudFVwZGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNFeHBhbmRlZD17c2V0SXNFeHBhbmRlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAge2xvYWRpbmdNb3JlID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0NBSU1ITG9hZGVyV3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxMb2FkZXIgc2l6ZT1cInNtYWxsXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQ0FJTUhMb2FkZXJXcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgIDwvU0NDQUlNSEFnZW50c0xpc3Q+XG4gICAgICAgICAgICAgICAgICB7dXNlclBlcm1pc3Npb25zPy5jcmVhdGUgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxTQ0NBSU1IQWRkQWdlbnRcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJc0V4cGFuZGVkKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMub3Blbk1vZGFsLCB7IG9wdGlvbjogJ2NyZWF0ZV9hZ2VudCcgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnYWJtLWFnZW50LW1vZGFsLXNldC12YWx1ZXMnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudFZhbHVlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0VkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc09wZW46IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0NBSU1IUGx1c0ljb25XcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXMgY29sb3I9XCJ3aGl0ZVwiIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQ0FJTUhQbHVzSWNvbldyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgICAge3QoJ2NyZWF0ZUFnZW50Jyl9XG4gICAgICAgICAgICAgICAgICAgIDwvU0NDQUlNSEFkZEFnZW50PlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9TQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudD5cbiAgICAgICAgICAgICAgPC9TQ0NBSU1IV3JhcHBlck1vZGFsPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9TQ0NBSU1IV3JhcHBlcj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L1NDUGFnZUhlYWRlclN0YXJ0PlxuICAgICAge3Nob3dCYWNrID8gKFxuICAgICAgICA8U0NDQUlNSEJhY2tCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUJhY2t9PlxuICAgICAgICAgIDxDaGV2cm9uTGVmdCB3aWR0aD17MTR9IGhlaWdodD17MTR9IGNvbG9yPVwiIzM0MzQzM1wiIC8+XG4gICAgICAgICAge3QoJ2JhY2snKX1cbiAgICAgICAgPC9TQ0NBSU1IQmFja0J1dHRvbj5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvU0NQYWdlSGVhZGVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ3pFLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLFdBQVcsUUFBUSw4Q0FBOEM7QUFDMUUsU0FBU0MsV0FBVyxRQUFRLDhDQUE4QztBQUMxRSxTQUFTQyxJQUFJLFFBQVEsdUNBQXVDO0FBQzVELFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsTUFBTSxRQUFRLG9CQUFvQjtBQUMzQyxTQUFTQyxRQUFRLFFBQVEsbUJBQW1CO0FBQzVDLFNBQVNDLGlCQUFpQixRQUFRLDhFQUE4RTtBQUNoSCxTQUNFQyxlQUFlLEVBQ2ZDLGlCQUFpQixFQUNqQkMsaUJBQWlCLEVBQ2pCQyxjQUFjLEVBQ2RDLG9CQUFvQixFQUNwQkMsc0JBQXNCLEVBQ3RCQyxvQkFBb0IsRUFDcEJDLHdCQUF3QixFQUN4QkMsY0FBYyxFQUNkQyxrQkFBa0IsRUFDbEJDLG1CQUFtQixFQUNuQkMsMEJBQTBCLEVBQzFCQywrQkFBK0IsUUFDMUIsbUZBQW1GO0FBQzFGLFNBQVNDLGdCQUFnQixRQUFRLGlDQUFpQztBQUNsRSxTQUFTQyxPQUFPLFFBQVEsMkJBQTJCO0FBQ25ELFNBQVNDLGlCQUFpQixRQUFRLDBCQUEwQjtBQUM1RCxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSx5QkFBeUI7QUFDMUQsU0FBU0MsUUFBUSxRQUFRLDJCQUEyQjtBQUNwRCxTQUFTQyw0QkFBNEIsUUFBUSxpREFBaUQ7QUFDOUYsU0FBU0MsT0FBTyxRQUFRLHVDQUF1QztBQUMvRCxT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
|