@comet/cms-admin 9.0.0-beta.3 → 9.0.0-beta.4
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/blocks/PixelImageBlock.d.ts.map +1 -1
- package/lib/blocks/PixelImageBlock.fragment.d.ts +2 -0
- package/lib/blocks/PixelImageBlock.fragment.d.ts.map +1 -0
- package/lib/blocks/PixelImageBlock.fragment.generated.d.ts +20 -0
- package/lib/blocks/PixelImageBlock.fragment.generated.d.ts.map +1 -0
- package/lib/blocks/PixelImageBlock.fragment.generated.js +5 -0
- package/lib/blocks/PixelImageBlock.fragment.js +4 -0
- package/lib/blocks/PixelImageBlock.js +3 -2
- package/lib/blocks/__stories__/RichTextBlock.stories.js +53 -0
- package/lib/blocks/createLinkBlock.d.ts.map +1 -1
- package/lib/blocks/createLinkBlock.js +50 -1
- package/lib/blocks/createRichTextBlock.d.ts.map +1 -1
- package/lib/blocks/createRichTextBlock.js +56 -20
- package/lib/blocks/createSeoBlock.d.ts.map +1 -1
- package/lib/blocks/createSeoBlock.js +6 -4
- package/lib/blocks/createTextLinkBlock.d.ts.map +1 -1
- package/lib/blocks/createTextLinkBlock.js +36 -1
- package/lib/blocks/factories/createBlocksBlock.d.ts.map +1 -1
- package/lib/blocks/factories/createBlocksBlock.js +70 -13
- package/lib/blocks/factories/createColumnsBlock.d.ts.map +1 -1
- package/lib/blocks/factories/createColumnsBlock.js +56 -6
- package/lib/blocks/factories/createListBlock.d.ts.map +1 -1
- package/lib/blocks/factories/createListBlock.js +56 -6
- package/lib/blocks/factories/createOneOfBlock.d.ts.map +1 -1
- package/lib/blocks/factories/createOneOfBlock.js +62 -5
- package/lib/blocks/factories/createOptionalBlock.d.ts.map +1 -1
- package/lib/blocks/factories/createOptionalBlock.js +38 -1
- package/lib/blocks/helpers/composeBlocks/composeBlocks.d.ts.map +1 -1
- package/lib/blocks/helpers/composeBlocks/composeBlocks.js +52 -16
- package/lib/blocks/helpers/composeBlocks/createCompositeBlockField.d.ts +2 -1
- package/lib/blocks/helpers/composeBlocks/createCompositeBlockField.d.ts.map +1 -1
- package/lib/blocks/helpers/composeBlocks/createCompositeBlockField.js +4 -2
- package/lib/blocks/helpers/composeBlocks/createSettingsBlock.d.ts +2 -1
- package/lib/blocks/helpers/composeBlocks/createSettingsBlock.d.ts.map +1 -1
- package/lib/blocks/helpers/composeBlocks/createSettingsBlock.js +5 -1
- package/lib/blocks/helpers/createBlockSkeleton.js +15 -1
- package/lib/blocks/helpers/createCompositeBlockTextField.d.ts +2 -1
- package/lib/blocks/helpers/createCompositeBlockTextField.d.ts.map +1 -1
- package/lib/blocks/helpers/createCompositeBlockTextField.js +20 -2
- package/lib/blocks/tipTap/BlockStyleContext.d.ts +3 -0
- package/lib/blocks/tipTap/BlockStyleContext.d.ts.map +1 -0
- package/lib/blocks/tipTap/BlockStyleContext.js +2 -0
- package/lib/blocks/tipTap/InlineStyleContext.d.ts +3 -0
- package/lib/blocks/tipTap/InlineStyleContext.d.ts.map +1 -0
- package/lib/blocks/tipTap/InlineStyleContext.js +2 -0
- package/lib/blocks/tipTap/TipTapLinkDialog.d.ts +10 -0
- package/lib/blocks/tipTap/TipTapLinkDialog.d.ts.map +1 -0
- package/lib/blocks/tipTap/TipTapLinkDialog.js +105 -0
- package/lib/blocks/tipTap/TipTapToolbar.d.ts +12 -0
- package/lib/blocks/tipTap/TipTapToolbar.d.ts.map +1 -0
- package/lib/blocks/tipTap/TipTapToolbar.js +611 -0
- package/lib/blocks/tipTap/__stories__/TipTapRichTextBlock.stories.js +1566 -0
- package/lib/blocks/tipTap/createTipTapRichTextBlock.d.ts +56 -0
- package/lib/blocks/tipTap/createTipTapRichTextBlock.d.ts.map +1 -0
- package/lib/blocks/tipTap/createTipTapRichTextBlock.js +418 -0
- package/lib/blocks/tipTap/extensions/BlockStyleHeading.d.ts +2 -0
- package/lib/blocks/tipTap/extensions/BlockStyleHeading.d.ts.map +1 -0
- package/lib/blocks/tipTap/extensions/BlockStyleHeading.js +57 -0
- package/lib/blocks/tipTap/extensions/BlockStyleParagraph.d.ts +2 -0
- package/lib/blocks/tipTap/extensions/BlockStyleParagraph.d.ts.map +1 -0
- package/lib/blocks/tipTap/extensions/BlockStyleParagraph.js +56 -0
- package/lib/blocks/tipTap/extensions/CmsLink.d.ts +13 -0
- package/lib/blocks/tipTap/extensions/CmsLink.d.ts.map +1 -0
- package/lib/blocks/tipTap/extensions/CmsLink.js +42 -0
- package/lib/blocks/tipTap/extensions/InlineStyleMark.d.ts +13 -0
- package/lib/blocks/tipTap/extensions/InlineStyleMark.d.ts.map +1 -0
- package/lib/blocks/tipTap/extensions/InlineStyleMark.js +71 -0
- package/lib/blocks/tipTap/extensions/NonBreakingSpace.d.ts +10 -0
- package/lib/blocks/tipTap/extensions/NonBreakingSpace.d.ts.map +1 -0
- package/lib/blocks/tipTap/extensions/NonBreakingSpace.js +57 -0
- package/lib/blocks/tipTap/extensions/SoftHyphen.d.ts +10 -0
- package/lib/blocks/tipTap/extensions/SoftHyphen.d.ts.map +1 -0
- package/lib/blocks/tipTap/extensions/SoftHyphen.js +51 -0
- package/lib/blocks/tipTap/listLevelMaxHelpers.d.ts +6 -0
- package/lib/blocks/tipTap/listLevelMaxHelpers.d.ts.map +1 -0
- package/lib/blocks/tipTap/listLevelMaxHelpers.js +108 -0
- package/lib/blocks/types.d.ts +7 -0
- package/lib/blocks/types.d.ts.map +1 -1
- package/lib/config/CometConfigContext.d.ts +2 -1
- package/lib/config/CometConfigContext.d.ts.map +1 -1
- package/lib/config/CometConfigContext.js +9 -5
- package/lib/contentScope/__stories__/ContentScopeProvider.stories.js +85 -0
- package/lib/contentScope/__stories__/ContentScopeSelect.stories.js +655 -0
- package/lib/contentScope/noContentScopeFallback/__stories__/NoContentScopeFallback.stories.js +7 -0
- package/lib/dam/DamTable.d.ts +5 -1
- package/lib/dam/DamTable.d.ts.map +1 -1
- package/lib/dam/DamTable.js +5 -1
- package/lib/dam/DataGrid/FolderDataGrid.d.ts +1 -1
- package/lib/dam/DataGrid/FolderDataGrid.d.ts.map +1 -1
- package/lib/dam/DataGrid/FolderDataGrid.js +52 -43
- package/lib/dam/DataGrid/selection/DamSelectionContext.d.ts +7 -4
- package/lib/dam/DataGrid/selection/DamSelectionContext.d.ts.map +1 -1
- package/lib/dam/DataGrid/selection/DamSelectionContext.js +11 -3
- package/lib/form/file/FileField.d.ts +15 -12
- package/lib/form/file/FileField.d.ts.map +1 -1
- package/lib/form/file/FileField.gql.d.ts +2 -0
- package/lib/form/file/FileField.gql.d.ts.map +1 -1
- package/lib/form/file/FileField.gql.generated.d.ts +40 -0
- package/lib/form/file/FileField.gql.generated.d.ts.map +1 -1
- package/lib/form/file/FileField.gql.generated.js +2 -1
- package/lib/form/file/FileField.gql.js +6 -3
- package/lib/form/file/FileField.js +170 -86
- package/lib/form/file/FileFieldMenu.d.ts +17 -0
- package/lib/form/file/FileFieldMenu.d.ts.map +1 -0
- package/lib/form/file/FileFieldMenu.js +91 -0
- package/lib/form/file/FileFieldRow.d.ts +12 -0
- package/lib/form/file/FileFieldRow.d.ts.map +1 -0
- package/lib/form/file/FileFieldRow.js +96 -0
- package/lib/form/file/chooseFile/BaseChooseDamFileDialog.d.ts +20 -0
- package/lib/form/file/chooseFile/BaseChooseDamFileDialog.d.ts.map +1 -0
- package/lib/form/file/chooseFile/BaseChooseDamFileDialog.js +106 -0
- package/lib/form/file/chooseFile/ChooseDamFileDialog.d.ts.map +1 -1
- package/lib/form/file/chooseFile/ChooseDamFileDialog.js +34 -89
- package/lib/form/file/chooseFile/ChooseDamFilesDialog.d.ts +9 -0
- package/lib/form/file/chooseFile/ChooseDamFilesDialog.d.ts.map +1 -0
- package/lib/form/file/chooseFile/ChooseDamFilesDialog.js +117 -0
- package/lib/graphql.generated.d.ts +12 -1
- package/lib/graphql.generated.d.ts.map +1 -1
- package/lib/index.d.ts +8 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +5 -0
- package/lib/pages/createEditPageNode.d.ts.map +1 -1
- package/lib/pages/createEditPageNode.js +1 -12
- package/lib/pages/createUsePage.d.ts +1 -0
- package/lib/pages/createUsePage.d.ts.map +1 -1
- package/lib/pages/createUsePage.js +135 -6
- package/lib/pages/pageTree/PageActions.d.ts.map +1 -1
- package/lib/pages/pageTree/PageActions.js +21 -3
- package/lib/pages/pageTree/findAvailableSlug.d.ts +11 -0
- package/lib/pages/pageTree/findAvailableSlug.d.ts.map +1 -0
- package/lib/pages/pageTree/findAvailableSlug.generated.d.ts +16 -0
- package/lib/pages/pageTree/findAvailableSlug.generated.d.ts.map +1 -0
- package/lib/pages/pageTree/findAvailableSlug.generated.js +5 -0
- package/lib/pages/pageTree/findAvailableSlug.js +62 -0
- package/lib/pages/pageTree/transformToSlug.d.ts +2 -0
- package/lib/pages/pageTree/transformToSlug.d.ts.map +1 -0
- package/lib/pages/pageTree/transformToSlug.js +12 -0
- package/lib/pages/pageTree/useCopyPastePages/sendPages.d.ts.map +1 -1
- package/lib/pages/pageTree/useCopyPastePages/sendPages.generated.d.ts +0 -10
- package/lib/pages/pageTree/useCopyPastePages/sendPages.generated.d.ts.map +1 -1
- package/lib/pages/pageTree/useCopyPastePages/sendPages.generated.js +0 -1
- package/lib/pages/pageTree/useCopyPastePages/sendPages.js +19 -40
- package/lib/pages/pageTree/useCopyPastePages.d.ts.map +1 -1
- package/lib/pages/pageTree/useCopyPastePages.js +1 -1
- package/lib/pages/pageTree/{useCopyPastePages/ProgressDialog.d.ts → useProgressDialog.d.ts} +1 -1
- package/lib/pages/pageTree/useProgressDialog.d.ts.map +1 -0
- package/lib/pages/pageTree/useTranslatePagesAction.d.ts +16 -0
- package/lib/pages/pageTree/useTranslatePagesAction.d.ts.map +1 -0
- package/lib/pages/pageTree/useTranslatePagesAction.generated.d.ts +20 -0
- package/lib/pages/pageTree/useTranslatePagesAction.generated.d.ts.map +1 -0
- package/lib/pages/pageTree/useTranslatePagesAction.generated.js +5 -0
- package/lib/pages/pageTree/useTranslatePagesAction.js +339 -0
- package/lib/pages/pagesPage/PagesPageActionToolbar.d.ts.map +1 -1
- package/lib/pages/pagesPage/PagesPageActionToolbar.js +29 -2
- package/lib/pages/pagesPage/PagesPageActionToolbar.sc.d.ts +2 -2
- package/lib/translation/AzureAiTranslatorProvider.d.ts +1 -1
- package/lib/translation/AzureAiTranslatorProvider.d.ts.map +1 -1
- package/lib/translation/AzureAiTranslatorProvider.generated.d.ts +8 -0
- package/lib/translation/AzureAiTranslatorProvider.generated.d.ts.map +1 -1
- package/lib/translation/AzureAiTranslatorProvider.generated.js +2 -1
- package/lib/translation/AzureAiTranslatorProvider.js +31 -2
- package/lib/translation/TranslatableInterface.d.ts +4 -0
- package/lib/translation/TranslatableInterface.d.ts.map +1 -0
- package/lib/translation/TranslatableInterface.js +1 -0
- package/lib/translation/TranslateContentMenuItem.d.ts +7 -0
- package/lib/translation/TranslateContentMenuItem.d.ts.map +1 -0
- package/lib/translation/TranslateContentMenuItem.js +99 -0
- package/lib/translation/createDocumentTranslationMethods.d.ts +4 -0
- package/lib/translation/createDocumentTranslationMethods.d.ts.map +1 -0
- package/lib/translation/createDocumentTranslationMethods.js +62 -0
- package/lib/validation/validateJson.d.ts +2 -0
- package/lib/validation/validateJson.d.ts.map +1 -0
- package/lib/validation/validateJson.js +15 -0
- package/package.json +32 -23
- package/lib/dashboard/__stories__/DateTime.stories.d.ts +0 -7
- package/lib/dashboard/__stories__/DateTime.stories.d.ts.map +0 -1
- package/lib/pages/pageTree/useCopyPastePages/ProgressDialog.d.ts.map +0 -1
- /package/lib/pages/pageTree/{useCopyPastePages/ProgressDialog.js → useProgressDialog.js} +0 -0
|
@@ -562,7 +562,57 @@ export function createListBlock(_ref, override) {
|
|
|
562
562
|
return [].concat(_toConsumableArray(content), _toConsumableArray((_block$extractTextCon = (_block$extractTextCon2 = block.extractTextContents) === null || _block$extractTextCon2 === void 0 ? void 0 : _block$extractTextCon2.call(block, child.props, options)) !== null && _block$extractTextCon !== void 0 ? _block$extractTextCon : []));
|
|
563
563
|
}, []);
|
|
564
564
|
return content;
|
|
565
|
-
}
|
|
565
|
+
},
|
|
566
|
+
translateContent: function () {
|
|
567
|
+
var _translateContent = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(state, translate) {
|
|
568
|
+
var translatedBlocks;
|
|
569
|
+
return _regenerator().w(function (_context5) {
|
|
570
|
+
while (1) switch (_context5.n) {
|
|
571
|
+
case 0:
|
|
572
|
+
_context5.n = 1;
|
|
573
|
+
return Promise.all(state.blocks.map(/*#__PURE__*/function () {
|
|
574
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(child) {
|
|
575
|
+
var translatedProps, _t7;
|
|
576
|
+
return _regenerator().w(function (_context4) {
|
|
577
|
+
while (1) switch (_context4.n) {
|
|
578
|
+
case 0:
|
|
579
|
+
if (!block.translateContent) {
|
|
580
|
+
_context4.n = 2;
|
|
581
|
+
break;
|
|
582
|
+
}
|
|
583
|
+
_context4.n = 1;
|
|
584
|
+
return block.translateContent(child.props, translate);
|
|
585
|
+
case 1:
|
|
586
|
+
_t7 = _context4.v;
|
|
587
|
+
_context4.n = 3;
|
|
588
|
+
break;
|
|
589
|
+
case 2:
|
|
590
|
+
_t7 = child.props;
|
|
591
|
+
case 3:
|
|
592
|
+
translatedProps = _t7;
|
|
593
|
+
return _context4.a(2, _objectSpread(_objectSpread({}, child), {}, {
|
|
594
|
+
props: translatedProps
|
|
595
|
+
}));
|
|
596
|
+
}
|
|
597
|
+
}, _callee4);
|
|
598
|
+
}));
|
|
599
|
+
return function (_x7) {
|
|
600
|
+
return _ref6.apply(this, arguments);
|
|
601
|
+
};
|
|
602
|
+
}()));
|
|
603
|
+
case 1:
|
|
604
|
+
translatedBlocks = _context5.v;
|
|
605
|
+
return _context5.a(2, _objectSpread(_objectSpread({}, state), {}, {
|
|
606
|
+
blocks: translatedBlocks
|
|
607
|
+
}));
|
|
608
|
+
}
|
|
609
|
+
}, _callee5);
|
|
610
|
+
}));
|
|
611
|
+
function translateContent(_x5, _x6) {
|
|
612
|
+
return _translateContent.apply(this, arguments);
|
|
613
|
+
}
|
|
614
|
+
return translateContent;
|
|
615
|
+
}()
|
|
566
616
|
});
|
|
567
617
|
if (override) {
|
|
568
618
|
return override(BlockListBlock);
|
|
@@ -579,7 +629,7 @@ var BlockListHeader = /*#__PURE__*/styled("div", process.env.NODE_ENV === "produ
|
|
|
579
629
|
styles: "display:flex;justify-content:space-between;align-items:center"
|
|
580
630
|
} : {
|
|
581
631
|
name: "1066lcq",
|
|
582
|
-
styles: "display:flex;justify-content:space-between;align-items:center/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaWpCcUMiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB0eXBlIHsgRnVuY3Rpb25Db21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdHlwZSBNZXNzYWdlRGVzY3JpcHRvciB9IGZyb20gXCJyZWFjdC1pbnRsXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXIgfSBmcm9tIFwiLi4vY29tbW9uL0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyXCI7XG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja1ByZXZpZXdDb250ZW50IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1ByZXZpZXdDb250ZW50XCI7XG5pbXBvcnQgeyBCbG9ja1JvdyB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tSb3dcIjtcbmltcG9ydCB7IGNyZWF0ZUJsb2NrU2tlbGV0b24gfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVCbG9ja1NrZWxldG9uXCI7XG5pbXBvcnQgeyBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSG92ZXJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9Ib3ZlclByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7IFNlbGVjdFByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL1NlbGVjdFByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgQmxvY2tEZXBlbmRlbmN5LCBCbG9ja0ludGVyZmFjZSwgQmxvY2tTdGF0ZSwgUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IHBhcmFsbGVsQXN5bmNFdmVyeSB9IGZyb20gXCIuLi91dGlscy9wYXJhbGxlbEFzeW5jRXZlcnlcIjtcbmltcG9ydCB7IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50IH0gZnJvbSBcIi4vbGlzdEJsb2NrL2NyZWF0ZVVzZUFkbWluQ29tcG9uZW50XCI7XG5cbi8vIFVzaW5nIHt9IGluc3RlYWQgb2YgUmVjb3JkPHN0cmluZywgbmV2ZXI+IGJlY2F1c2UgbmV2ZXIgYW5kIHVua25vd24gYXJlIGluY29tcGF0aWJsZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbnR5cGUgRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzID0ge307XG5cbmV4cG9ydCB0eXBlIExpc3RCbG9ja0l0ZW08VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgcHJvcHM6IEJsb2NrU3RhdGU8VD47XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgc2xpZGVJbjogYm9vbGVhbjtcbn0gJiBBZGRpdGlvbmFsSXRlbUZpZWxkcztcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tTdGF0ZTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+IHtcbiAgICBibG9ja3M6IExpc3RCbG9ja0l0ZW08VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPFZhbHVlID0gdW5rbm93bj4ge1xuICAgIGRlZmF1bHRWYWx1ZTogVmFsdWU7XG59XG5cbmludGVyZmFjZSBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtc05hbWU/OiBSZWFjdE5vZGU7XG4gICAgYmxvY2s6IFQ7XG4gICAgbWluVmlzaWJsZUJsb2Nrcz86IG51bWJlcjtcbiAgICBtYXhWaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnk/OiBib29sZWFuO1xuICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzPzoge1xuICAgICAgICBbS2V5IGluIGtleW9mIEFkZGl0aW9uYWxJdGVtRmllbGRzXTogTGlzdEJsb2NrQWRkaXRpb25hbEl0ZW1GaWVsZDxBZGRpdGlvbmFsSXRlbUZpZWxkc1tLZXldPjtcbiAgICB9O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcz86IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgICAgICAgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz47XG4gICAgICAgIG9uQ2hhbmdlOiAoaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4pID0+IHZvaWQ7XG4gICAgICAgIG9uTWVudUNsb3NlOiAoKSA9PiB2b2lkO1xuICAgIH0+O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudD86IEZ1bmN0aW9uQ29tcG9uZW50PHsgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4gfT47XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+KFxuICAgIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYmxvY2ssXG4gICAgICAgIGRpc3BsYXlOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLm5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cIkxpc3RcIiAvPixcbiAgICAgICAgaXRlbU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2suaXRlbU5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2NrXCIgLz4sXG4gICAgICAgIGl0ZW1zTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtc05hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2Nrc1wiIC8+LFxuICAgICAgICBtaW5WaXNpYmxlQmxvY2tzLFxuICAgICAgICBtYXhWaXNpYmxlQmxvY2tzLFxuICAgICAgICBjcmVhdGVEZWZhdWx0TGlzdEVudHJ5LFxuICAgICAgICBhZGRpdGlvbmFsSXRlbUZpZWxkcyxcbiAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRlbnQsXG4gICAgICAgIHRhZ3MsXG4gICAgfTogQ3JlYXRlTGlzdEJsb2NrT3B0aW9uczxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgb3ZlcnJpZGU/OiAoXG4gICAgICAgIGJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICAgICAgPixcbiAgICApID0+IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+Pixcbik6IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+PiB7XG4gICAgY29uc3QgdXNlQWRtaW5Db21wb25lbnQgPSBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudCh7IGJsb2NrLCBtYXhWaXNpYmxlQmxvY2tzLCBhZGRpdGlvbmFsSXRlbUZpZWxkcyB9KTtcbiAgICBpZiAobWluVmlzaWJsZUJsb2NrcyAmJiBtYXhWaXNpYmxlQmxvY2tzICYmIG1pblZpc2libGVCbG9ja3MgPiBtYXhWaXNpYmxlQmxvY2tzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGdldERlZmF1bHRMaXN0RW50cnkgPSAoKSA9PiAoe1xuICAgICAgICBrZXk6IHV1aWQoKSxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgcHJvcHM6IGJsb2NrLmRlZmF1bHRWYWx1ZXMoKSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgIC4uLihPYmplY3QuZW50cmllcyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgKGZpZWxkcywgW2ZpZWxkLCB7IGRlZmF1bHRWYWx1ZSB9XSkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBkZWZhdWx0VmFsdWUgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBCbG9ja0xpc3RCbG9jazogQmxvY2tJbnRlcmZhY2U8XG4gICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+XG4gICAgPiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBibG9jay50YWdzLFxuXG4gICAgICAgIGRlZmF1bHRWYWx1ZXM6ICgpID0+ICh7XG4gICAgICAgICAgICBibG9ja3M6XG4gICAgICAgICAgICAgICAgbWluVmlzaWJsZUJsb2NrcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgID8gQXJyYXkuZnJvbSh7IGxlbmd0aDogbWluVmlzaWJsZUJsb2NrcyB9LCBnZXREZWZhdWx0TGlzdEVudHJ5KVxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZURlZmF1bHRMaXN0RW50cnlcbiAgICAgICAgICAgICAgICAgICAgICA/IFtnZXREZWZhdWx0TGlzdEVudHJ5KCldXG4gICAgICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgY2F0ZWdvcnk6IGJsb2NrLmNhdGVnb3J5LFxuXG4gICAgICAgIGlucHV0MlN0YXRlOiAoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgICAgICAgYmxvY2tzOiBpbnB1dC5ibG9ja3MubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suaW5wdXQyU3RhdGUoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZSgoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksIHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBzdGF0ZTJPdXRwdXQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suc3RhdGUyT3V0cHV0KGNoaWxkLnByb3BzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKE9iamVjdC5rZXlzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIG91dHB1dDJTdGF0ZTogYXN5bmMgKG91dHB1dCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IFtdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBhd2FpdCBibG9jay5vdXRwdXQyU3RhdGUoY2hpbGQucHJvcHMsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQcmV2aWV3U3RhdGU6IChzdGF0ZSwgcHJldmlld0N0eCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZCkgPT4gKHByZXZpZXdDdHguc2hvd1Zpc2libGVPbmx5ID8gY2hpbGQudmlzaWJsZSA6IHRydWUpKSAvLyBkZXBlbmRpbmcgb24gY29udGV4dCBzaG93IGFsbCBibG9ja3Mgb3Igb25seSB2aXNpYmxlIGJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0N0eC5wYXJlbnRVcmxTdWJSb3V0ZSA/PyBwcmV2aWV3Q3R4LnBhcmVudFVybH0vJHtjaGlsZC5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGJsb2NrLmNyZWF0ZVByZXZpZXdTdGF0ZShjaGlsZC5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2aWV3Q3R4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmxTdWJSb3V0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmw6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBibG9ja0FkbWluUm91dGUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0N0eC5wYXJlbnRVcmwgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGlzVmFsaWQ6IGFzeW5jIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tWYWxpZGl0eVJlc3VsdCA9IGF3YWl0IHBhcmFsbGVsQXN5bmNFdmVyeShzdGF0ZS5ibG9ja3MsIGFzeW5jIChjKSA9PiBibG9jay5pc1ZhbGlkKGMucHJvcHMpKTtcbiAgICAgICAgICAgIHJldHVybiBibG9ja1ZhbGlkaXR5UmVzdWx0ICYmIChtaW5WaXNpYmxlQmxvY2tzID8gbWluVmlzaWJsZUJsb2NrcyA8PSBzdGF0ZS5ibG9ja3MuZmlsdGVyKChibG9jaykgPT4gYmxvY2sudmlzaWJsZSkubGVuZ3RoIDogdHJ1ZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2hpbGRCbG9ja0NvdW50OiAoc3RhdGUpID0+IHN0YXRlLmJsb2Nrcy5sZW5ndGgsXG5cbiAgICAgICAgYW5jaG9yczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGFuY2hvcnMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oYmxvY2suYW5jaG9ycz8uKGNoaWxkLnByb3BzKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlcGVuZGVuY2llczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWREZXBlbmRlbmNpZXMgPSBzdGF0ZS5ibG9ja3MucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uZGVwZW5kZW5jaWVzLCAuLi4oYmxvY2suZGVwZW5kZW5jaWVzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHsgLi4ub3V0cHV0LCBibG9ja3M6IFtdIH07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygb3V0cHV0LmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIG5ld091dHB1dC5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2sucmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0KGNoaWxkLnByb3BzLCByZXBsYWNlbWVudHMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3T3V0cHV0O1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlZmluZXNPd25QYWRkaW5nOiB0cnVlLFxuXG4gICAgICAgIEFkbWluQ29tcG9uZW50OiAoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGNhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZyxcbiAgICAgICAgICAgICAgICBjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbixcbiAgICAgICAgICAgICAgICB0b3RhbFZpc2libGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICB0b2dnbGVWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyxcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1pc3NpbmcgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZ2VuZXJpYyBpbiBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudFxuICAgICAgICAgICAgfSA9IHVzZUFkbWluQ29tcG9uZW50KHsgc3RhdGUsIHVwZGF0ZVN0YXRlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxTZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2ggZGlzYWJsZUZvcmNlUHJvbXB0Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJ0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoc3RhY2tBcGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50UGFwZXIgZGlzYWJsZVBhZGRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkQ291bnQgPT09IHN0YXRlLmJsb2Nrcy5sZW5ndGggJiYgc2VsZWN0ZWRDb3VudCA+IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlPXtzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50ICE9PSBzdGF0ZS5ibG9ja3MubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5tYXAoKGRhdGEsIGJsb2NrSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNNaW5WaXNpYmxlQmxvY2tzTWV0ID0gISFtaW5WaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtaW5WaXNpYmxlQmxvY2tzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhbWF4VmlzaWJsZUJsb2NrcyAmJiB0b3RhbFZpc2libGVCbG9ja3MgPj0gbWF4VmlzaWJsZUJsb2NrcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5Ub2dnbGVWaXNpYmlsaXR5ID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCA/IGRhdGEudmlzaWJsZSA6IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvd01heEJsb2Nrc0FsbG93ZWRNZXNzYWdlID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCAmJiAhZGF0YS52aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghIW1pblZpc2libGVCbG9ja3MgJiYgIWlzTWluVmlzaWJsZUJsb2Nrc01ldCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW5WaXNpYmxlQmxvY2tzID09PSB0b3RhbFZpc2libGVCbG9ja3MgJiYgZGF0YS52aXNpYmxlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2RhdGEua2V5fSBjb21wb25lbnRTbHVnPXtgJHtkYXRhLmtleX0vZWRpdGB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17ZGF0YS5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tQcmV2aWV3Q29udGVudCBibG9jaz17YmxvY2t9IHN0YXRlPXtkYXRhLnByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17YmxvY2tJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZW50Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgZGF0YS5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MoW2RhdGEua2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gWy4uLnByZXZTdGF0ZS5ibG9ja3NdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVG9Nb3ZlID0gYmxvY2tzLnNwbGljZShmcm9tLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3Muc3BsaWNlKHRvLCAwLCBibG9ja1RvTW92ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucHJldlN0YXRlLCBibG9ja3MgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWF4VmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNYXguIHZpc2libGUgYmxvY2tzIGFsbG93ZWQ6IHttYXhWaXNpYmxlQmxvY2tzfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IG1heFZpc2libGVCbG9ja3MgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm1pblZpc2libGVCbG9ja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTWluLiB2aXNpYmxlIGJsb2NrcyByZXF1aXJlZDoge21pblZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWluVmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBjb21wb25lbnQ9XCJzcGFuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjYW5Ub2dnbGVWaXNpYmlsaXR5ICYmIHRvZ2dsZVZpc2libGUoZGF0YS5rZXkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshY2FuVG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RhdGEudmlzaWJsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VmlzaWJsZSBjb2xvcj1cInN1Y2Nlc3NcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW52aXNpYmxlIGNvbG9yPVwiYWN0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkZE5ld0Jsb2NrPXsoYmVmb3JlSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNsaXBib2FyZENvbnRlbnQoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYmxvY2submFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZGF0YS52aXNpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogZGF0YS5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEZpZWxkczogT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRhdGFbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhc3RlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlQmxvY2soYmxvY2tJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17ZGF0YS5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RlZENsaWNrPXsoc2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGRhdGEsIHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZEZuPXsoKSA9PiBibG9jay5pc1ZhbGlkKGRhdGEucHJvcHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtkYXRhLnNsaWRlSW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVCb3R0b21JbnNlcnRCZXR3ZWVuQnV0dG9uPXtibG9ja0luZGV4ID49IHN0YXRlLmJsb2Nrcy5sZW5ndGggLSAxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWVudUl0ZW1zPXsob25NZW51Q2xvc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPXtkYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHVwZGF0ZWRJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldmlvdXNTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3M6IHByZXZpb3VzU3RhdGUuYmxvY2tzLm1hcCgoYmxvY2spID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmtleSA9PT0gZGF0YS5rZXkgPyB1cGRhdGVkSXRlbSA6IGJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxDb250ZW50PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCA/IDxBZGRpdGlvbmFsSXRlbUNvbnRlbnQgaXRlbT17ZGF0YX0gLz4gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QuYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEljb249ezxBZGQgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiQWRkIHtpdGVtTmFtZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2Jsb2NrLmRpc3BsYXlOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGl0ZW1JZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RhdGUuYmxvY2tzLmZpbmQoKGMpID0+IGMua2V5ID09PSBpdGVtSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwibWFpblwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8YmxvY2suQWRtaW5Db21wb25lbnQgc3RhdGU9e21hdGNoLnByb3BzfSB1cGRhdGVTdGF0ZT17Y3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4oaXRlbUlkKX0gLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgIHtjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2d9XG4gICAgICAgICAgICAgICAgPC9TZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY3R4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5ub0Jsb2Nrc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8ge2l0ZW1zTmFtZX1cIiB2YWx1ZXM9e3sgaXRlbXNOYW1lIH19IC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPFByZXZpZXdDb250ZW50W10+KChwcmV2LCBuZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFByZXZpZXdDb250ZW50ID0gYmxvY2sucHJldmlld0NvbnRlbnQobmV4dC5wcm9wcywgY3R4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLm5leHRQcmV2aWV3Q29udGVudF07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmVEZXBlbmRlbmN5UGF0aDogKHN0YXRlLCBqc29uUGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEvXmJsb2Nrcy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxpc3RCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmJsb2Nrc1tudW1dO1xuXG4gICAgICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBibG9jay5yZXNvbHZlRGVwZW5kZW5jeVBhdGgoYmxvY2tJdGVtLnByb3BzLCBwYXRoQXJyLnNsaWNlKDMpLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtibG9ja0l0ZW0ua2V5fS9lZGl0LyR7Y2hpbGRQYXRofWA7XG4gICAgICAgIH0sXG4gICAgICAgIGV4dHJhY3RUZXh0Q29udGVudHM6IChzdGF0ZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPSBvcHRpb25zPy5pbmNsdWRlSW52aXNpYmxlQ29udGVudCA/PyBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8c3RyaW5nW10+KChjb250ZW50LCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGQudmlzaWJsZSAmJiAhaW5jbHVkZUludmlzaWJsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5jb250ZW50LCAuLi4oYmxvY2suZXh0cmFjdFRleHRDb250ZW50cz8uKGNoaWxkLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKEJsb2NrTGlzdEJsb2NrKTtcbiAgICB9XG4gICAgcmV0dXJuIEJsb2NrTGlzdEJsb2NrO1xufVxuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBwYWRkaW5nOiAxMnB4IDA7XG5gO1xuXG5jb25zdCBTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsID0gc3R5bGVkKEZvcm1Db250cm9sTGFiZWwpYFxuICAgIHBhZGRpbmc6IDE1cHggMTBweCAxNXB4IDdweDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uQ29udGVudCA9IHN0eWxlZChcInNwYW5cIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDA7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkljb24gPSBzdHlsZWQoQWRkKWBcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuYDtcbiJdfQ== */",
|
|
632
|
+
styles: "display:flex;justify-content:space-between;align-items:center/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMGpCcUMiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB0eXBlIHsgRnVuY3Rpb25Db21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdHlwZSBNZXNzYWdlRGVzY3JpcHRvciB9IGZyb20gXCJyZWFjdC1pbnRsXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXIgfSBmcm9tIFwiLi4vY29tbW9uL0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyXCI7XG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja1ByZXZpZXdDb250ZW50IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1ByZXZpZXdDb250ZW50XCI7XG5pbXBvcnQgeyBCbG9ja1JvdyB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tSb3dcIjtcbmltcG9ydCB7IGNyZWF0ZUJsb2NrU2tlbGV0b24gfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVCbG9ja1NrZWxldG9uXCI7XG5pbXBvcnQgeyBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSG92ZXJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9Ib3ZlclByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7IFNlbGVjdFByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL1NlbGVjdFByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgQmxvY2tEZXBlbmRlbmN5LCBCbG9ja0ludGVyZmFjZSwgQmxvY2tTdGF0ZSwgUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IHBhcmFsbGVsQXN5bmNFdmVyeSB9IGZyb20gXCIuLi91dGlscy9wYXJhbGxlbEFzeW5jRXZlcnlcIjtcbmltcG9ydCB7IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50IH0gZnJvbSBcIi4vbGlzdEJsb2NrL2NyZWF0ZVVzZUFkbWluQ29tcG9uZW50XCI7XG5cbi8vIFVzaW5nIHt9IGluc3RlYWQgb2YgUmVjb3JkPHN0cmluZywgbmV2ZXI+IGJlY2F1c2UgbmV2ZXIgYW5kIHVua25vd24gYXJlIGluY29tcGF0aWJsZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbnR5cGUgRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzID0ge307XG5cbmV4cG9ydCB0eXBlIExpc3RCbG9ja0l0ZW08VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgcHJvcHM6IEJsb2NrU3RhdGU8VD47XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgc2xpZGVJbjogYm9vbGVhbjtcbn0gJiBBZGRpdGlvbmFsSXRlbUZpZWxkcztcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tTdGF0ZTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+IHtcbiAgICBibG9ja3M6IExpc3RCbG9ja0l0ZW08VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPFZhbHVlID0gdW5rbm93bj4ge1xuICAgIGRlZmF1bHRWYWx1ZTogVmFsdWU7XG59XG5cbmludGVyZmFjZSBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtc05hbWU/OiBSZWFjdE5vZGU7XG4gICAgYmxvY2s6IFQ7XG4gICAgbWluVmlzaWJsZUJsb2Nrcz86IG51bWJlcjtcbiAgICBtYXhWaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnk/OiBib29sZWFuO1xuICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzPzoge1xuICAgICAgICBbS2V5IGluIGtleW9mIEFkZGl0aW9uYWxJdGVtRmllbGRzXTogTGlzdEJsb2NrQWRkaXRpb25hbEl0ZW1GaWVsZDxBZGRpdGlvbmFsSXRlbUZpZWxkc1tLZXldPjtcbiAgICB9O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcz86IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgICAgICAgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz47XG4gICAgICAgIG9uQ2hhbmdlOiAoaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4pID0+IHZvaWQ7XG4gICAgICAgIG9uTWVudUNsb3NlOiAoKSA9PiB2b2lkO1xuICAgIH0+O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudD86IEZ1bmN0aW9uQ29tcG9uZW50PHsgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4gfT47XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+KFxuICAgIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYmxvY2ssXG4gICAgICAgIGRpc3BsYXlOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLm5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cIkxpc3RcIiAvPixcbiAgICAgICAgaXRlbU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2suaXRlbU5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2NrXCIgLz4sXG4gICAgICAgIGl0ZW1zTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtc05hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2Nrc1wiIC8+LFxuICAgICAgICBtaW5WaXNpYmxlQmxvY2tzLFxuICAgICAgICBtYXhWaXNpYmxlQmxvY2tzLFxuICAgICAgICBjcmVhdGVEZWZhdWx0TGlzdEVudHJ5LFxuICAgICAgICBhZGRpdGlvbmFsSXRlbUZpZWxkcyxcbiAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRlbnQsXG4gICAgICAgIHRhZ3MsXG4gICAgfTogQ3JlYXRlTGlzdEJsb2NrT3B0aW9uczxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgb3ZlcnJpZGU/OiAoXG4gICAgICAgIGJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICAgICAgPixcbiAgICApID0+IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+Pixcbik6IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+PiB7XG4gICAgY29uc3QgdXNlQWRtaW5Db21wb25lbnQgPSBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudCh7IGJsb2NrLCBtYXhWaXNpYmxlQmxvY2tzLCBhZGRpdGlvbmFsSXRlbUZpZWxkcyB9KTtcbiAgICBpZiAobWluVmlzaWJsZUJsb2NrcyAmJiBtYXhWaXNpYmxlQmxvY2tzICYmIG1pblZpc2libGVCbG9ja3MgPiBtYXhWaXNpYmxlQmxvY2tzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGdldERlZmF1bHRMaXN0RW50cnkgPSAoKSA9PiAoe1xuICAgICAgICBrZXk6IHV1aWQoKSxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgcHJvcHM6IGJsb2NrLmRlZmF1bHRWYWx1ZXMoKSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgIC4uLihPYmplY3QuZW50cmllcyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgKGZpZWxkcywgW2ZpZWxkLCB7IGRlZmF1bHRWYWx1ZSB9XSkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBkZWZhdWx0VmFsdWUgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBCbG9ja0xpc3RCbG9jazogQmxvY2tJbnRlcmZhY2U8XG4gICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+XG4gICAgPiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBibG9jay50YWdzLFxuXG4gICAgICAgIGRlZmF1bHRWYWx1ZXM6ICgpID0+ICh7XG4gICAgICAgICAgICBibG9ja3M6XG4gICAgICAgICAgICAgICAgbWluVmlzaWJsZUJsb2NrcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgID8gQXJyYXkuZnJvbSh7IGxlbmd0aDogbWluVmlzaWJsZUJsb2NrcyB9LCBnZXREZWZhdWx0TGlzdEVudHJ5KVxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZURlZmF1bHRMaXN0RW50cnlcbiAgICAgICAgICAgICAgICAgICAgICA/IFtnZXREZWZhdWx0TGlzdEVudHJ5KCldXG4gICAgICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgY2F0ZWdvcnk6IGJsb2NrLmNhdGVnb3J5LFxuXG4gICAgICAgIGlucHV0MlN0YXRlOiAoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgICAgICAgYmxvY2tzOiBpbnB1dC5ibG9ja3MubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suaW5wdXQyU3RhdGUoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZSgoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksIHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBzdGF0ZTJPdXRwdXQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suc3RhdGUyT3V0cHV0KGNoaWxkLnByb3BzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKE9iamVjdC5rZXlzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIG91dHB1dDJTdGF0ZTogYXN5bmMgKG91dHB1dCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IFtdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBhd2FpdCBibG9jay5vdXRwdXQyU3RhdGUoY2hpbGQucHJvcHMsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQcmV2aWV3U3RhdGU6IChzdGF0ZSwgcHJldmlld0N0eCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZCkgPT4gKHByZXZpZXdDdHguc2hvd1Zpc2libGVPbmx5ID8gY2hpbGQudmlzaWJsZSA6IHRydWUpKSAvLyBkZXBlbmRpbmcgb24gY29udGV4dCBzaG93IGFsbCBibG9ja3Mgb3Igb25seSB2aXNpYmxlIGJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0N0eC5wYXJlbnRVcmxTdWJSb3V0ZSA/PyBwcmV2aWV3Q3R4LnBhcmVudFVybH0vJHtjaGlsZC5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGJsb2NrLmNyZWF0ZVByZXZpZXdTdGF0ZShjaGlsZC5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2aWV3Q3R4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmxTdWJSb3V0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmw6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBibG9ja0FkbWluUm91dGUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0N0eC5wYXJlbnRVcmwgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGlzVmFsaWQ6IGFzeW5jIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tWYWxpZGl0eVJlc3VsdCA9IGF3YWl0IHBhcmFsbGVsQXN5bmNFdmVyeShzdGF0ZS5ibG9ja3MsIGFzeW5jIChjKSA9PiBibG9jay5pc1ZhbGlkKGMucHJvcHMpKTtcbiAgICAgICAgICAgIHJldHVybiBibG9ja1ZhbGlkaXR5UmVzdWx0ICYmIChtaW5WaXNpYmxlQmxvY2tzID8gbWluVmlzaWJsZUJsb2NrcyA8PSBzdGF0ZS5ibG9ja3MuZmlsdGVyKChibG9jaykgPT4gYmxvY2sudmlzaWJsZSkubGVuZ3RoIDogdHJ1ZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2hpbGRCbG9ja0NvdW50OiAoc3RhdGUpID0+IHN0YXRlLmJsb2Nrcy5sZW5ndGgsXG5cbiAgICAgICAgYW5jaG9yczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGFuY2hvcnMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oYmxvY2suYW5jaG9ycz8uKGNoaWxkLnByb3BzKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlcGVuZGVuY2llczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWREZXBlbmRlbmNpZXMgPSBzdGF0ZS5ibG9ja3MucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uZGVwZW5kZW5jaWVzLCAuLi4oYmxvY2suZGVwZW5kZW5jaWVzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHsgLi4ub3V0cHV0LCBibG9ja3M6IFtdIH07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygb3V0cHV0LmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIG5ld091dHB1dC5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2sucmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0KGNoaWxkLnByb3BzLCByZXBsYWNlbWVudHMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3T3V0cHV0O1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlZmluZXNPd25QYWRkaW5nOiB0cnVlLFxuXG4gICAgICAgIEFkbWluQ29tcG9uZW50OiAoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGNhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZyxcbiAgICAgICAgICAgICAgICBjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbixcbiAgICAgICAgICAgICAgICB0b3RhbFZpc2libGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICB0b2dnbGVWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyxcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1pc3NpbmcgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZ2VuZXJpYyBpbiBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudFxuICAgICAgICAgICAgfSA9IHVzZUFkbWluQ29tcG9uZW50KHsgc3RhdGUsIHVwZGF0ZVN0YXRlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxTZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2ggZGlzYWJsZUZvcmNlUHJvbXB0Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJ0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoc3RhY2tBcGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50UGFwZXIgZGlzYWJsZVBhZGRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkQ291bnQgPT09IHN0YXRlLmJsb2Nrcy5sZW5ndGggJiYgc2VsZWN0ZWRDb3VudCA+IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlPXtzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50ICE9PSBzdGF0ZS5ibG9ja3MubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5tYXAoKGRhdGEsIGJsb2NrSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNNaW5WaXNpYmxlQmxvY2tzTWV0ID0gISFtaW5WaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtaW5WaXNpYmxlQmxvY2tzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhbWF4VmlzaWJsZUJsb2NrcyAmJiB0b3RhbFZpc2libGVCbG9ja3MgPj0gbWF4VmlzaWJsZUJsb2NrcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5Ub2dnbGVWaXNpYmlsaXR5ID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCA/IGRhdGEudmlzaWJsZSA6IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvd01heEJsb2Nrc0FsbG93ZWRNZXNzYWdlID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCAmJiAhZGF0YS52aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghIW1pblZpc2libGVCbG9ja3MgJiYgIWlzTWluVmlzaWJsZUJsb2Nrc01ldCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW5WaXNpYmxlQmxvY2tzID09PSB0b3RhbFZpc2libGVCbG9ja3MgJiYgZGF0YS52aXNpYmxlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2RhdGEua2V5fSBjb21wb25lbnRTbHVnPXtgJHtkYXRhLmtleX0vZWRpdGB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17ZGF0YS5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tQcmV2aWV3Q29udGVudCBibG9jaz17YmxvY2t9IHN0YXRlPXtkYXRhLnByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17YmxvY2tJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZW50Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgZGF0YS5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MoW2RhdGEua2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gWy4uLnByZXZTdGF0ZS5ibG9ja3NdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVG9Nb3ZlID0gYmxvY2tzLnNwbGljZShmcm9tLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3Muc3BsaWNlKHRvLCAwLCBibG9ja1RvTW92ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucHJldlN0YXRlLCBibG9ja3MgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWF4VmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNYXguIHZpc2libGUgYmxvY2tzIGFsbG93ZWQ6IHttYXhWaXNpYmxlQmxvY2tzfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IG1heFZpc2libGVCbG9ja3MgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm1pblZpc2libGVCbG9ja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTWluLiB2aXNpYmxlIGJsb2NrcyByZXF1aXJlZDoge21pblZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWluVmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBjb21wb25lbnQ9XCJzcGFuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjYW5Ub2dnbGVWaXNpYmlsaXR5ICYmIHRvZ2dsZVZpc2libGUoZGF0YS5rZXkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshY2FuVG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RhdGEudmlzaWJsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VmlzaWJsZSBjb2xvcj1cInN1Y2Nlc3NcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW52aXNpYmxlIGNvbG9yPVwiYWN0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkZE5ld0Jsb2NrPXsoYmVmb3JlSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNsaXBib2FyZENvbnRlbnQoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYmxvY2submFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZGF0YS52aXNpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogZGF0YS5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEZpZWxkczogT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRhdGFbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhc3RlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlQmxvY2soYmxvY2tJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17ZGF0YS5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RlZENsaWNrPXsoc2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGRhdGEsIHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZEZuPXsoKSA9PiBibG9jay5pc1ZhbGlkKGRhdGEucHJvcHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtkYXRhLnNsaWRlSW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVCb3R0b21JbnNlcnRCZXR3ZWVuQnV0dG9uPXtibG9ja0luZGV4ID49IHN0YXRlLmJsb2Nrcy5sZW5ndGggLSAxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWVudUl0ZW1zPXsob25NZW51Q2xvc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPXtkYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHVwZGF0ZWRJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldmlvdXNTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3M6IHByZXZpb3VzU3RhdGUuYmxvY2tzLm1hcCgoYmxvY2spID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmtleSA9PT0gZGF0YS5rZXkgPyB1cGRhdGVkSXRlbSA6IGJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxDb250ZW50PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCA/IDxBZGRpdGlvbmFsSXRlbUNvbnRlbnQgaXRlbT17ZGF0YX0gLz4gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QuYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEljb249ezxBZGQgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiQWRkIHtpdGVtTmFtZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2Jsb2NrLmRpc3BsYXlOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGl0ZW1JZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RhdGUuYmxvY2tzLmZpbmQoKGMpID0+IGMua2V5ID09PSBpdGVtSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwibWFpblwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8YmxvY2suQWRtaW5Db21wb25lbnQgc3RhdGU9e21hdGNoLnByb3BzfSB1cGRhdGVTdGF0ZT17Y3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4oaXRlbUlkKX0gLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgIHtjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2d9XG4gICAgICAgICAgICAgICAgPC9TZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY3R4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5ub0Jsb2Nrc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8ge2l0ZW1zTmFtZX1cIiB2YWx1ZXM9e3sgaXRlbXNOYW1lIH19IC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPFByZXZpZXdDb250ZW50W10+KChwcmV2LCBuZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFByZXZpZXdDb250ZW50ID0gYmxvY2sucHJldmlld0NvbnRlbnQobmV4dC5wcm9wcywgY3R4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLm5leHRQcmV2aWV3Q29udGVudF07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmVEZXBlbmRlbmN5UGF0aDogKHN0YXRlLCBqc29uUGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEvXmJsb2Nrcy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxpc3RCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmJsb2Nrc1tudW1dO1xuXG4gICAgICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBibG9jay5yZXNvbHZlRGVwZW5kZW5jeVBhdGgoYmxvY2tJdGVtLnByb3BzLCBwYXRoQXJyLnNsaWNlKDMpLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtibG9ja0l0ZW0ua2V5fS9lZGl0LyR7Y2hpbGRQYXRofWA7XG4gICAgICAgIH0sXG4gICAgICAgIGV4dHJhY3RUZXh0Q29udGVudHM6IChzdGF0ZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPSBvcHRpb25zPy5pbmNsdWRlSW52aXNpYmxlQ29udGVudCA/PyBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8c3RyaW5nW10+KChjb250ZW50LCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGQudmlzaWJsZSAmJiAhaW5jbHVkZUludmlzaWJsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5jb250ZW50LCAuLi4oYmxvY2suZXh0cmFjdFRleHRDb250ZW50cz8uKGNoaWxkLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zbGF0ZUNvbnRlbnQ6IGFzeW5jIChzdGF0ZSwgdHJhbnNsYXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkQmxvY2tzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLm1hcChhc3luYyAoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRlZFByb3BzID0gYmxvY2sudHJhbnNsYXRlQ29udGVudCA/IGF3YWl0IGJsb2NrLnRyYW5zbGF0ZUNvbnRlbnQoY2hpbGQucHJvcHMsIHRyYW5zbGF0ZSkgOiBjaGlsZC5wcm9wcztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uY2hpbGQsIHByb3BzOiB0cmFuc2xhdGVkUHJvcHMgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYmxvY2tzOiB0cmFuc2xhdGVkQmxvY2tzIH07XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKEJsb2NrTGlzdEJsb2NrKTtcbiAgICB9XG4gICAgcmV0dXJuIEJsb2NrTGlzdEJsb2NrO1xufVxuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBwYWRkaW5nOiAxMnB4IDA7XG5gO1xuXG5jb25zdCBTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsID0gc3R5bGVkKEZvcm1Db250cm9sTGFiZWwpYFxuICAgIHBhZGRpbmc6IDE1cHggMTBweCAxNXB4IDdweDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uQ29udGVudCA9IHN0eWxlZChcInNwYW5cIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDA7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkljb24gPSBzdHlsZWQoQWRkKWBcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuYDtcbiJdfQ== */",
|
|
583
633
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
584
634
|
});
|
|
585
635
|
var BlockListHeaderActionContainer = /*#__PURE__*/styled("div", process.env.NODE_ENV === "production" ? {
|
|
@@ -592,7 +642,7 @@ var BlockListHeaderActionContainer = /*#__PURE__*/styled("div", process.env.NODE
|
|
|
592
642
|
styles: "padding:12px 0"
|
|
593
643
|
} : {
|
|
594
644
|
name: "14o5m2r",
|
|
595
|
-
styles: "padding:12px 0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdWpCb0QiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB0eXBlIHsgRnVuY3Rpb25Db21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdHlwZSBNZXNzYWdlRGVzY3JpcHRvciB9IGZyb20gXCJyZWFjdC1pbnRsXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXIgfSBmcm9tIFwiLi4vY29tbW9uL0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyXCI7XG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja1ByZXZpZXdDb250ZW50IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1ByZXZpZXdDb250ZW50XCI7XG5pbXBvcnQgeyBCbG9ja1JvdyB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tSb3dcIjtcbmltcG9ydCB7IGNyZWF0ZUJsb2NrU2tlbGV0b24gfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVCbG9ja1NrZWxldG9uXCI7XG5pbXBvcnQgeyBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSG92ZXJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9Ib3ZlclByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7IFNlbGVjdFByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL1NlbGVjdFByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgQmxvY2tEZXBlbmRlbmN5LCBCbG9ja0ludGVyZmFjZSwgQmxvY2tTdGF0ZSwgUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IHBhcmFsbGVsQXN5bmNFdmVyeSB9IGZyb20gXCIuLi91dGlscy9wYXJhbGxlbEFzeW5jRXZlcnlcIjtcbmltcG9ydCB7IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50IH0gZnJvbSBcIi4vbGlzdEJsb2NrL2NyZWF0ZVVzZUFkbWluQ29tcG9uZW50XCI7XG5cbi8vIFVzaW5nIHt9IGluc3RlYWQgb2YgUmVjb3JkPHN0cmluZywgbmV2ZXI+IGJlY2F1c2UgbmV2ZXIgYW5kIHVua25vd24gYXJlIGluY29tcGF0aWJsZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbnR5cGUgRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzID0ge307XG5cbmV4cG9ydCB0eXBlIExpc3RCbG9ja0l0ZW08VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgcHJvcHM6IEJsb2NrU3RhdGU8VD47XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgc2xpZGVJbjogYm9vbGVhbjtcbn0gJiBBZGRpdGlvbmFsSXRlbUZpZWxkcztcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tTdGF0ZTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+IHtcbiAgICBibG9ja3M6IExpc3RCbG9ja0l0ZW08VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPFZhbHVlID0gdW5rbm93bj4ge1xuICAgIGRlZmF1bHRWYWx1ZTogVmFsdWU7XG59XG5cbmludGVyZmFjZSBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtc05hbWU/OiBSZWFjdE5vZGU7XG4gICAgYmxvY2s6IFQ7XG4gICAgbWluVmlzaWJsZUJsb2Nrcz86IG51bWJlcjtcbiAgICBtYXhWaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnk/OiBib29sZWFuO1xuICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzPzoge1xuICAgICAgICBbS2V5IGluIGtleW9mIEFkZGl0aW9uYWxJdGVtRmllbGRzXTogTGlzdEJsb2NrQWRkaXRpb25hbEl0ZW1GaWVsZDxBZGRpdGlvbmFsSXRlbUZpZWxkc1tLZXldPjtcbiAgICB9O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcz86IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgICAgICAgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz47XG4gICAgICAgIG9uQ2hhbmdlOiAoaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4pID0+IHZvaWQ7XG4gICAgICAgIG9uTWVudUNsb3NlOiAoKSA9PiB2b2lkO1xuICAgIH0+O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudD86IEZ1bmN0aW9uQ29tcG9uZW50PHsgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4gfT47XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+KFxuICAgIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYmxvY2ssXG4gICAgICAgIGRpc3BsYXlOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLm5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cIkxpc3RcIiAvPixcbiAgICAgICAgaXRlbU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2suaXRlbU5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2NrXCIgLz4sXG4gICAgICAgIGl0ZW1zTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtc05hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2Nrc1wiIC8+LFxuICAgICAgICBtaW5WaXNpYmxlQmxvY2tzLFxuICAgICAgICBtYXhWaXNpYmxlQmxvY2tzLFxuICAgICAgICBjcmVhdGVEZWZhdWx0TGlzdEVudHJ5LFxuICAgICAgICBhZGRpdGlvbmFsSXRlbUZpZWxkcyxcbiAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRlbnQsXG4gICAgICAgIHRhZ3MsXG4gICAgfTogQ3JlYXRlTGlzdEJsb2NrT3B0aW9uczxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgb3ZlcnJpZGU/OiAoXG4gICAgICAgIGJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICAgICAgPixcbiAgICApID0+IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+Pixcbik6IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+PiB7XG4gICAgY29uc3QgdXNlQWRtaW5Db21wb25lbnQgPSBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudCh7IGJsb2NrLCBtYXhWaXNpYmxlQmxvY2tzLCBhZGRpdGlvbmFsSXRlbUZpZWxkcyB9KTtcbiAgICBpZiAobWluVmlzaWJsZUJsb2NrcyAmJiBtYXhWaXNpYmxlQmxvY2tzICYmIG1pblZpc2libGVCbG9ja3MgPiBtYXhWaXNpYmxlQmxvY2tzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGdldERlZmF1bHRMaXN0RW50cnkgPSAoKSA9PiAoe1xuICAgICAgICBrZXk6IHV1aWQoKSxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgcHJvcHM6IGJsb2NrLmRlZmF1bHRWYWx1ZXMoKSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgIC4uLihPYmplY3QuZW50cmllcyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgKGZpZWxkcywgW2ZpZWxkLCB7IGRlZmF1bHRWYWx1ZSB9XSkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBkZWZhdWx0VmFsdWUgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBCbG9ja0xpc3RCbG9jazogQmxvY2tJbnRlcmZhY2U8XG4gICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+XG4gICAgPiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBibG9jay50YWdzLFxuXG4gICAgICAgIGRlZmF1bHRWYWx1ZXM6ICgpID0+ICh7XG4gICAgICAgICAgICBibG9ja3M6XG4gICAgICAgICAgICAgICAgbWluVmlzaWJsZUJsb2NrcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgID8gQXJyYXkuZnJvbSh7IGxlbmd0aDogbWluVmlzaWJsZUJsb2NrcyB9LCBnZXREZWZhdWx0TGlzdEVudHJ5KVxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZURlZmF1bHRMaXN0RW50cnlcbiAgICAgICAgICAgICAgICAgICAgICA/IFtnZXREZWZhdWx0TGlzdEVudHJ5KCldXG4gICAgICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgY2F0ZWdvcnk6IGJsb2NrLmNhdGVnb3J5LFxuXG4gICAgICAgIGlucHV0MlN0YXRlOiAoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgICAgICAgYmxvY2tzOiBpbnB1dC5ibG9ja3MubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suaW5wdXQyU3RhdGUoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZSgoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksIHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBzdGF0ZTJPdXRwdXQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suc3RhdGUyT3V0cHV0KGNoaWxkLnByb3BzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKE9iamVjdC5rZXlzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIG91dHB1dDJTdGF0ZTogYXN5bmMgKG91dHB1dCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IFtdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBhd2FpdCBibG9jay5vdXRwdXQyU3RhdGUoY2hpbGQucHJvcHMsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQcmV2aWV3U3RhdGU6IChzdGF0ZSwgcHJldmlld0N0eCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZCkgPT4gKHByZXZpZXdDdHguc2hvd1Zpc2libGVPbmx5ID8gY2hpbGQudmlzaWJsZSA6IHRydWUpKSAvLyBkZXBlbmRpbmcgb24gY29udGV4dCBzaG93IGFsbCBibG9ja3Mgb3Igb25seSB2aXNpYmxlIGJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0N0eC5wYXJlbnRVcmxTdWJSb3V0ZSA/PyBwcmV2aWV3Q3R4LnBhcmVudFVybH0vJHtjaGlsZC5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGJsb2NrLmNyZWF0ZVByZXZpZXdTdGF0ZShjaGlsZC5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2aWV3Q3R4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmxTdWJSb3V0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmw6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBibG9ja0FkbWluUm91dGUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0N0eC5wYXJlbnRVcmwgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGlzVmFsaWQ6IGFzeW5jIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tWYWxpZGl0eVJlc3VsdCA9IGF3YWl0IHBhcmFsbGVsQXN5bmNFdmVyeShzdGF0ZS5ibG9ja3MsIGFzeW5jIChjKSA9PiBibG9jay5pc1ZhbGlkKGMucHJvcHMpKTtcbiAgICAgICAgICAgIHJldHVybiBibG9ja1ZhbGlkaXR5UmVzdWx0ICYmIChtaW5WaXNpYmxlQmxvY2tzID8gbWluVmlzaWJsZUJsb2NrcyA8PSBzdGF0ZS5ibG9ja3MuZmlsdGVyKChibG9jaykgPT4gYmxvY2sudmlzaWJsZSkubGVuZ3RoIDogdHJ1ZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2hpbGRCbG9ja0NvdW50OiAoc3RhdGUpID0+IHN0YXRlLmJsb2Nrcy5sZW5ndGgsXG5cbiAgICAgICAgYW5jaG9yczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGFuY2hvcnMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oYmxvY2suYW5jaG9ycz8uKGNoaWxkLnByb3BzKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlcGVuZGVuY2llczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWREZXBlbmRlbmNpZXMgPSBzdGF0ZS5ibG9ja3MucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uZGVwZW5kZW5jaWVzLCAuLi4oYmxvY2suZGVwZW5kZW5jaWVzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHsgLi4ub3V0cHV0LCBibG9ja3M6IFtdIH07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygb3V0cHV0LmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIG5ld091dHB1dC5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2sucmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0KGNoaWxkLnByb3BzLCByZXBsYWNlbWVudHMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3T3V0cHV0O1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlZmluZXNPd25QYWRkaW5nOiB0cnVlLFxuXG4gICAgICAgIEFkbWluQ29tcG9uZW50OiAoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGNhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZyxcbiAgICAgICAgICAgICAgICBjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbixcbiAgICAgICAgICAgICAgICB0b3RhbFZpc2libGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICB0b2dnbGVWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyxcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1pc3NpbmcgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZ2VuZXJpYyBpbiBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudFxuICAgICAgICAgICAgfSA9IHVzZUFkbWluQ29tcG9uZW50KHsgc3RhdGUsIHVwZGF0ZVN0YXRlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxTZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2ggZGlzYWJsZUZvcmNlUHJvbXB0Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJ0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoc3RhY2tBcGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50UGFwZXIgZGlzYWJsZVBhZGRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkQ291bnQgPT09IHN0YXRlLmJsb2Nrcy5sZW5ndGggJiYgc2VsZWN0ZWRDb3VudCA+IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlPXtzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50ICE9PSBzdGF0ZS5ibG9ja3MubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5tYXAoKGRhdGEsIGJsb2NrSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNNaW5WaXNpYmxlQmxvY2tzTWV0ID0gISFtaW5WaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtaW5WaXNpYmxlQmxvY2tzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhbWF4VmlzaWJsZUJsb2NrcyAmJiB0b3RhbFZpc2libGVCbG9ja3MgPj0gbWF4VmlzaWJsZUJsb2NrcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5Ub2dnbGVWaXNpYmlsaXR5ID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCA/IGRhdGEudmlzaWJsZSA6IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvd01heEJsb2Nrc0FsbG93ZWRNZXNzYWdlID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCAmJiAhZGF0YS52aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghIW1pblZpc2libGVCbG9ja3MgJiYgIWlzTWluVmlzaWJsZUJsb2Nrc01ldCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW5WaXNpYmxlQmxvY2tzID09PSB0b3RhbFZpc2libGVCbG9ja3MgJiYgZGF0YS52aXNpYmxlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2RhdGEua2V5fSBjb21wb25lbnRTbHVnPXtgJHtkYXRhLmtleX0vZWRpdGB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17ZGF0YS5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tQcmV2aWV3Q29udGVudCBibG9jaz17YmxvY2t9IHN0YXRlPXtkYXRhLnByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17YmxvY2tJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZW50Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgZGF0YS5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MoW2RhdGEua2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gWy4uLnByZXZTdGF0ZS5ibG9ja3NdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVG9Nb3ZlID0gYmxvY2tzLnNwbGljZShmcm9tLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3Muc3BsaWNlKHRvLCAwLCBibG9ja1RvTW92ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucHJldlN0YXRlLCBibG9ja3MgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWF4VmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNYXguIHZpc2libGUgYmxvY2tzIGFsbG93ZWQ6IHttYXhWaXNpYmxlQmxvY2tzfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IG1heFZpc2libGVCbG9ja3MgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm1pblZpc2libGVCbG9ja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTWluLiB2aXNpYmxlIGJsb2NrcyByZXF1aXJlZDoge21pblZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWluVmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBjb21wb25lbnQ9XCJzcGFuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjYW5Ub2dnbGVWaXNpYmlsaXR5ICYmIHRvZ2dsZVZpc2libGUoZGF0YS5rZXkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshY2FuVG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RhdGEudmlzaWJsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VmlzaWJsZSBjb2xvcj1cInN1Y2Nlc3NcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW52aXNpYmxlIGNvbG9yPVwiYWN0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkZE5ld0Jsb2NrPXsoYmVmb3JlSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNsaXBib2FyZENvbnRlbnQoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYmxvY2submFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZGF0YS52aXNpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogZGF0YS5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEZpZWxkczogT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRhdGFbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhc3RlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlQmxvY2soYmxvY2tJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17ZGF0YS5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RlZENsaWNrPXsoc2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGRhdGEsIHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZEZuPXsoKSA9PiBibG9jay5pc1ZhbGlkKGRhdGEucHJvcHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtkYXRhLnNsaWRlSW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVCb3R0b21JbnNlcnRCZXR3ZWVuQnV0dG9uPXtibG9ja0luZGV4ID49IHN0YXRlLmJsb2Nrcy5sZW5ndGggLSAxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWVudUl0ZW1zPXsob25NZW51Q2xvc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPXtkYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHVwZGF0ZWRJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldmlvdXNTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3M6IHByZXZpb3VzU3RhdGUuYmxvY2tzLm1hcCgoYmxvY2spID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmtleSA9PT0gZGF0YS5rZXkgPyB1cGRhdGVkSXRlbSA6IGJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxDb250ZW50PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCA/IDxBZGRpdGlvbmFsSXRlbUNvbnRlbnQgaXRlbT17ZGF0YX0gLz4gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QuYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEljb249ezxBZGQgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiQWRkIHtpdGVtTmFtZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2Jsb2NrLmRpc3BsYXlOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGl0ZW1JZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RhdGUuYmxvY2tzLmZpbmQoKGMpID0+IGMua2V5ID09PSBpdGVtSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwibWFpblwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8YmxvY2suQWRtaW5Db21wb25lbnQgc3RhdGU9e21hdGNoLnByb3BzfSB1cGRhdGVTdGF0ZT17Y3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4oaXRlbUlkKX0gLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgIHtjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2d9XG4gICAgICAgICAgICAgICAgPC9TZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY3R4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5ub0Jsb2Nrc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8ge2l0ZW1zTmFtZX1cIiB2YWx1ZXM9e3sgaXRlbXNOYW1lIH19IC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPFByZXZpZXdDb250ZW50W10+KChwcmV2LCBuZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFByZXZpZXdDb250ZW50ID0gYmxvY2sucHJldmlld0NvbnRlbnQobmV4dC5wcm9wcywgY3R4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLm5leHRQcmV2aWV3Q29udGVudF07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmVEZXBlbmRlbmN5UGF0aDogKHN0YXRlLCBqc29uUGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEvXmJsb2Nrcy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxpc3RCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmJsb2Nrc1tudW1dO1xuXG4gICAgICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBibG9jay5yZXNvbHZlRGVwZW5kZW5jeVBhdGgoYmxvY2tJdGVtLnByb3BzLCBwYXRoQXJyLnNsaWNlKDMpLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtibG9ja0l0ZW0ua2V5fS9lZGl0LyR7Y2hpbGRQYXRofWA7XG4gICAgICAgIH0sXG4gICAgICAgIGV4dHJhY3RUZXh0Q29udGVudHM6IChzdGF0ZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPSBvcHRpb25zPy5pbmNsdWRlSW52aXNpYmxlQ29udGVudCA/PyBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8c3RyaW5nW10+KChjb250ZW50LCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGQudmlzaWJsZSAmJiAhaW5jbHVkZUludmlzaWJsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5jb250ZW50LCAuLi4oYmxvY2suZXh0cmFjdFRleHRDb250ZW50cz8uKGNoaWxkLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKEJsb2NrTGlzdEJsb2NrKTtcbiAgICB9XG4gICAgcmV0dXJuIEJsb2NrTGlzdEJsb2NrO1xufVxuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBwYWRkaW5nOiAxMnB4IDA7XG5gO1xuXG5jb25zdCBTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsID0gc3R5bGVkKEZvcm1Db250cm9sTGFiZWwpYFxuICAgIHBhZGRpbmc6IDE1cHggMTBweCAxNXB4IDdweDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uQ29udGVudCA9IHN0eWxlZChcInNwYW5cIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDA7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkljb24gPSBzdHlsZWQoQWRkKWBcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuYDtcbiJdfQ== */",
|
|
645
|
+
styles: "padding:12px 0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ2tCb0QiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB0eXBlIHsgRnVuY3Rpb25Db21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdHlwZSBNZXNzYWdlRGVzY3JpcHRvciB9IGZyb20gXCJyZWFjdC1pbnRsXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXIgfSBmcm9tIFwiLi4vY29tbW9uL0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyXCI7XG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja1ByZXZpZXdDb250ZW50IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1ByZXZpZXdDb250ZW50XCI7XG5pbXBvcnQgeyBCbG9ja1JvdyB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tSb3dcIjtcbmltcG9ydCB7IGNyZWF0ZUJsb2NrU2tlbGV0b24gfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVCbG9ja1NrZWxldG9uXCI7XG5pbXBvcnQgeyBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSG92ZXJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9Ib3ZlclByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7IFNlbGVjdFByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL1NlbGVjdFByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgQmxvY2tEZXBlbmRlbmN5LCBCbG9ja0ludGVyZmFjZSwgQmxvY2tTdGF0ZSwgUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IHBhcmFsbGVsQXN5bmNFdmVyeSB9IGZyb20gXCIuLi91dGlscy9wYXJhbGxlbEFzeW5jRXZlcnlcIjtcbmltcG9ydCB7IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50IH0gZnJvbSBcIi4vbGlzdEJsb2NrL2NyZWF0ZVVzZUFkbWluQ29tcG9uZW50XCI7XG5cbi8vIFVzaW5nIHt9IGluc3RlYWQgb2YgUmVjb3JkPHN0cmluZywgbmV2ZXI+IGJlY2F1c2UgbmV2ZXIgYW5kIHVua25vd24gYXJlIGluY29tcGF0aWJsZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbnR5cGUgRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzID0ge307XG5cbmV4cG9ydCB0eXBlIExpc3RCbG9ja0l0ZW08VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgcHJvcHM6IEJsb2NrU3RhdGU8VD47XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgc2xpZGVJbjogYm9vbGVhbjtcbn0gJiBBZGRpdGlvbmFsSXRlbUZpZWxkcztcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tTdGF0ZTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+IHtcbiAgICBibG9ja3M6IExpc3RCbG9ja0l0ZW08VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPFZhbHVlID0gdW5rbm93bj4ge1xuICAgIGRlZmF1bHRWYWx1ZTogVmFsdWU7XG59XG5cbmludGVyZmFjZSBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtc05hbWU/OiBSZWFjdE5vZGU7XG4gICAgYmxvY2s6IFQ7XG4gICAgbWluVmlzaWJsZUJsb2Nrcz86IG51bWJlcjtcbiAgICBtYXhWaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnk/OiBib29sZWFuO1xuICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzPzoge1xuICAgICAgICBbS2V5IGluIGtleW9mIEFkZGl0aW9uYWxJdGVtRmllbGRzXTogTGlzdEJsb2NrQWRkaXRpb25hbEl0ZW1GaWVsZDxBZGRpdGlvbmFsSXRlbUZpZWxkc1tLZXldPjtcbiAgICB9O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcz86IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgICAgICAgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz47XG4gICAgICAgIG9uQ2hhbmdlOiAoaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4pID0+IHZvaWQ7XG4gICAgICAgIG9uTWVudUNsb3NlOiAoKSA9PiB2b2lkO1xuICAgIH0+O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudD86IEZ1bmN0aW9uQ29tcG9uZW50PHsgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4gfT47XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+KFxuICAgIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYmxvY2ssXG4gICAgICAgIGRpc3BsYXlOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLm5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cIkxpc3RcIiAvPixcbiAgICAgICAgaXRlbU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2suaXRlbU5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2NrXCIgLz4sXG4gICAgICAgIGl0ZW1zTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtc05hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2Nrc1wiIC8+LFxuICAgICAgICBtaW5WaXNpYmxlQmxvY2tzLFxuICAgICAgICBtYXhWaXNpYmxlQmxvY2tzLFxuICAgICAgICBjcmVhdGVEZWZhdWx0TGlzdEVudHJ5LFxuICAgICAgICBhZGRpdGlvbmFsSXRlbUZpZWxkcyxcbiAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRlbnQsXG4gICAgICAgIHRhZ3MsXG4gICAgfTogQ3JlYXRlTGlzdEJsb2NrT3B0aW9uczxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgb3ZlcnJpZGU/OiAoXG4gICAgICAgIGJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICAgICAgPixcbiAgICApID0+IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+Pixcbik6IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+PiB7XG4gICAgY29uc3QgdXNlQWRtaW5Db21wb25lbnQgPSBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudCh7IGJsb2NrLCBtYXhWaXNpYmxlQmxvY2tzLCBhZGRpdGlvbmFsSXRlbUZpZWxkcyB9KTtcbiAgICBpZiAobWluVmlzaWJsZUJsb2NrcyAmJiBtYXhWaXNpYmxlQmxvY2tzICYmIG1pblZpc2libGVCbG9ja3MgPiBtYXhWaXNpYmxlQmxvY2tzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGdldERlZmF1bHRMaXN0RW50cnkgPSAoKSA9PiAoe1xuICAgICAgICBrZXk6IHV1aWQoKSxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgcHJvcHM6IGJsb2NrLmRlZmF1bHRWYWx1ZXMoKSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgIC4uLihPYmplY3QuZW50cmllcyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgKGZpZWxkcywgW2ZpZWxkLCB7IGRlZmF1bHRWYWx1ZSB9XSkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBkZWZhdWx0VmFsdWUgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBCbG9ja0xpc3RCbG9jazogQmxvY2tJbnRlcmZhY2U8XG4gICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+XG4gICAgPiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBibG9jay50YWdzLFxuXG4gICAgICAgIGRlZmF1bHRWYWx1ZXM6ICgpID0+ICh7XG4gICAgICAgICAgICBibG9ja3M6XG4gICAgICAgICAgICAgICAgbWluVmlzaWJsZUJsb2NrcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgID8gQXJyYXkuZnJvbSh7IGxlbmd0aDogbWluVmlzaWJsZUJsb2NrcyB9LCBnZXREZWZhdWx0TGlzdEVudHJ5KVxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZURlZmF1bHRMaXN0RW50cnlcbiAgICAgICAgICAgICAgICAgICAgICA/IFtnZXREZWZhdWx0TGlzdEVudHJ5KCldXG4gICAgICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgY2F0ZWdvcnk6IGJsb2NrLmNhdGVnb3J5LFxuXG4gICAgICAgIGlucHV0MlN0YXRlOiAoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgICAgICAgYmxvY2tzOiBpbnB1dC5ibG9ja3MubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suaW5wdXQyU3RhdGUoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZSgoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksIHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBzdGF0ZTJPdXRwdXQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suc3RhdGUyT3V0cHV0KGNoaWxkLnByb3BzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKE9iamVjdC5rZXlzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIG91dHB1dDJTdGF0ZTogYXN5bmMgKG91dHB1dCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IFtdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBhd2FpdCBibG9jay5vdXRwdXQyU3RhdGUoY2hpbGQucHJvcHMsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQcmV2aWV3U3RhdGU6IChzdGF0ZSwgcHJldmlld0N0eCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZCkgPT4gKHByZXZpZXdDdHguc2hvd1Zpc2libGVPbmx5ID8gY2hpbGQudmlzaWJsZSA6IHRydWUpKSAvLyBkZXBlbmRpbmcgb24gY29udGV4dCBzaG93IGFsbCBibG9ja3Mgb3Igb25seSB2aXNpYmxlIGJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0N0eC5wYXJlbnRVcmxTdWJSb3V0ZSA/PyBwcmV2aWV3Q3R4LnBhcmVudFVybH0vJHtjaGlsZC5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGJsb2NrLmNyZWF0ZVByZXZpZXdTdGF0ZShjaGlsZC5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2aWV3Q3R4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmxTdWJSb3V0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmw6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBibG9ja0FkbWluUm91dGUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0N0eC5wYXJlbnRVcmwgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGlzVmFsaWQ6IGFzeW5jIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tWYWxpZGl0eVJlc3VsdCA9IGF3YWl0IHBhcmFsbGVsQXN5bmNFdmVyeShzdGF0ZS5ibG9ja3MsIGFzeW5jIChjKSA9PiBibG9jay5pc1ZhbGlkKGMucHJvcHMpKTtcbiAgICAgICAgICAgIHJldHVybiBibG9ja1ZhbGlkaXR5UmVzdWx0ICYmIChtaW5WaXNpYmxlQmxvY2tzID8gbWluVmlzaWJsZUJsb2NrcyA8PSBzdGF0ZS5ibG9ja3MuZmlsdGVyKChibG9jaykgPT4gYmxvY2sudmlzaWJsZSkubGVuZ3RoIDogdHJ1ZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2hpbGRCbG9ja0NvdW50OiAoc3RhdGUpID0+IHN0YXRlLmJsb2Nrcy5sZW5ndGgsXG5cbiAgICAgICAgYW5jaG9yczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGFuY2hvcnMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oYmxvY2suYW5jaG9ycz8uKGNoaWxkLnByb3BzKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlcGVuZGVuY2llczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWREZXBlbmRlbmNpZXMgPSBzdGF0ZS5ibG9ja3MucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uZGVwZW5kZW5jaWVzLCAuLi4oYmxvY2suZGVwZW5kZW5jaWVzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHsgLi4ub3V0cHV0LCBibG9ja3M6IFtdIH07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygb3V0cHV0LmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIG5ld091dHB1dC5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2sucmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0KGNoaWxkLnByb3BzLCByZXBsYWNlbWVudHMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3T3V0cHV0O1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlZmluZXNPd25QYWRkaW5nOiB0cnVlLFxuXG4gICAgICAgIEFkbWluQ29tcG9uZW50OiAoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGNhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZyxcbiAgICAgICAgICAgICAgICBjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbixcbiAgICAgICAgICAgICAgICB0b3RhbFZpc2libGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICB0b2dnbGVWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyxcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1pc3NpbmcgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZ2VuZXJpYyBpbiBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudFxuICAgICAgICAgICAgfSA9IHVzZUFkbWluQ29tcG9uZW50KHsgc3RhdGUsIHVwZGF0ZVN0YXRlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxTZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2ggZGlzYWJsZUZvcmNlUHJvbXB0Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJ0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoc3RhY2tBcGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50UGFwZXIgZGlzYWJsZVBhZGRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkQ291bnQgPT09IHN0YXRlLmJsb2Nrcy5sZW5ndGggJiYgc2VsZWN0ZWRDb3VudCA+IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlPXtzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50ICE9PSBzdGF0ZS5ibG9ja3MubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5tYXAoKGRhdGEsIGJsb2NrSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNNaW5WaXNpYmxlQmxvY2tzTWV0ID0gISFtaW5WaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtaW5WaXNpYmxlQmxvY2tzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhbWF4VmlzaWJsZUJsb2NrcyAmJiB0b3RhbFZpc2libGVCbG9ja3MgPj0gbWF4VmlzaWJsZUJsb2NrcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5Ub2dnbGVWaXNpYmlsaXR5ID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCA/IGRhdGEudmlzaWJsZSA6IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvd01heEJsb2Nrc0FsbG93ZWRNZXNzYWdlID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCAmJiAhZGF0YS52aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghIW1pblZpc2libGVCbG9ja3MgJiYgIWlzTWluVmlzaWJsZUJsb2Nrc01ldCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW5WaXNpYmxlQmxvY2tzID09PSB0b3RhbFZpc2libGVCbG9ja3MgJiYgZGF0YS52aXNpYmxlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2RhdGEua2V5fSBjb21wb25lbnRTbHVnPXtgJHtkYXRhLmtleX0vZWRpdGB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17ZGF0YS5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tQcmV2aWV3Q29udGVudCBibG9jaz17YmxvY2t9IHN0YXRlPXtkYXRhLnByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17YmxvY2tJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZW50Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgZGF0YS5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MoW2RhdGEua2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gWy4uLnByZXZTdGF0ZS5ibG9ja3NdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVG9Nb3ZlID0gYmxvY2tzLnNwbGljZShmcm9tLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3Muc3BsaWNlKHRvLCAwLCBibG9ja1RvTW92ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucHJldlN0YXRlLCBibG9ja3MgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWF4VmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNYXguIHZpc2libGUgYmxvY2tzIGFsbG93ZWQ6IHttYXhWaXNpYmxlQmxvY2tzfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IG1heFZpc2libGVCbG9ja3MgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm1pblZpc2libGVCbG9ja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTWluLiB2aXNpYmxlIGJsb2NrcyByZXF1aXJlZDoge21pblZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWluVmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBjb21wb25lbnQ9XCJzcGFuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjYW5Ub2dnbGVWaXNpYmlsaXR5ICYmIHRvZ2dsZVZpc2libGUoZGF0YS5rZXkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshY2FuVG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RhdGEudmlzaWJsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VmlzaWJsZSBjb2xvcj1cInN1Y2Nlc3NcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW52aXNpYmxlIGNvbG9yPVwiYWN0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkZE5ld0Jsb2NrPXsoYmVmb3JlSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNsaXBib2FyZENvbnRlbnQoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYmxvY2submFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZGF0YS52aXNpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogZGF0YS5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEZpZWxkczogT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRhdGFbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhc3RlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlQmxvY2soYmxvY2tJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17ZGF0YS5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RlZENsaWNrPXsoc2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGRhdGEsIHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZEZuPXsoKSA9PiBibG9jay5pc1ZhbGlkKGRhdGEucHJvcHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtkYXRhLnNsaWRlSW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVCb3R0b21JbnNlcnRCZXR3ZWVuQnV0dG9uPXtibG9ja0luZGV4ID49IHN0YXRlLmJsb2Nrcy5sZW5ndGggLSAxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWVudUl0ZW1zPXsob25NZW51Q2xvc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPXtkYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHVwZGF0ZWRJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldmlvdXNTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3M6IHByZXZpb3VzU3RhdGUuYmxvY2tzLm1hcCgoYmxvY2spID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmtleSA9PT0gZGF0YS5rZXkgPyB1cGRhdGVkSXRlbSA6IGJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxDb250ZW50PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCA/IDxBZGRpdGlvbmFsSXRlbUNvbnRlbnQgaXRlbT17ZGF0YX0gLz4gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QuYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEljb249ezxBZGQgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiQWRkIHtpdGVtTmFtZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2Jsb2NrLmRpc3BsYXlOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGl0ZW1JZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RhdGUuYmxvY2tzLmZpbmQoKGMpID0+IGMua2V5ID09PSBpdGVtSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwibWFpblwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8YmxvY2suQWRtaW5Db21wb25lbnQgc3RhdGU9e21hdGNoLnByb3BzfSB1cGRhdGVTdGF0ZT17Y3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4oaXRlbUlkKX0gLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgIHtjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2d9XG4gICAgICAgICAgICAgICAgPC9TZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY3R4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5ub0Jsb2Nrc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8ge2l0ZW1zTmFtZX1cIiB2YWx1ZXM9e3sgaXRlbXNOYW1lIH19IC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPFByZXZpZXdDb250ZW50W10+KChwcmV2LCBuZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFByZXZpZXdDb250ZW50ID0gYmxvY2sucHJldmlld0NvbnRlbnQobmV4dC5wcm9wcywgY3R4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLm5leHRQcmV2aWV3Q29udGVudF07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmVEZXBlbmRlbmN5UGF0aDogKHN0YXRlLCBqc29uUGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEvXmJsb2Nrcy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxpc3RCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmJsb2Nrc1tudW1dO1xuXG4gICAgICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBibG9jay5yZXNvbHZlRGVwZW5kZW5jeVBhdGgoYmxvY2tJdGVtLnByb3BzLCBwYXRoQXJyLnNsaWNlKDMpLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtibG9ja0l0ZW0ua2V5fS9lZGl0LyR7Y2hpbGRQYXRofWA7XG4gICAgICAgIH0sXG4gICAgICAgIGV4dHJhY3RUZXh0Q29udGVudHM6IChzdGF0ZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPSBvcHRpb25zPy5pbmNsdWRlSW52aXNpYmxlQ29udGVudCA/PyBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8c3RyaW5nW10+KChjb250ZW50LCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGQudmlzaWJsZSAmJiAhaW5jbHVkZUludmlzaWJsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5jb250ZW50LCAuLi4oYmxvY2suZXh0cmFjdFRleHRDb250ZW50cz8uKGNoaWxkLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zbGF0ZUNvbnRlbnQ6IGFzeW5jIChzdGF0ZSwgdHJhbnNsYXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkQmxvY2tzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLm1hcChhc3luYyAoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRlZFByb3BzID0gYmxvY2sudHJhbnNsYXRlQ29udGVudCA/IGF3YWl0IGJsb2NrLnRyYW5zbGF0ZUNvbnRlbnQoY2hpbGQucHJvcHMsIHRyYW5zbGF0ZSkgOiBjaGlsZC5wcm9wcztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uY2hpbGQsIHByb3BzOiB0cmFuc2xhdGVkUHJvcHMgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYmxvY2tzOiB0cmFuc2xhdGVkQmxvY2tzIH07XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKEJsb2NrTGlzdEJsb2NrKTtcbiAgICB9XG4gICAgcmV0dXJuIEJsb2NrTGlzdEJsb2NrO1xufVxuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBwYWRkaW5nOiAxMnB4IDA7XG5gO1xuXG5jb25zdCBTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsID0gc3R5bGVkKEZvcm1Db250cm9sTGFiZWwpYFxuICAgIHBhZGRpbmc6IDE1cHggMTBweCAxNXB4IDdweDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uQ29udGVudCA9IHN0eWxlZChcInNwYW5cIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDA7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkljb24gPSBzdHlsZWQoQWRkKWBcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuYDtcbiJdfQ== */",
|
|
596
646
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
597
647
|
});
|
|
598
648
|
var SelectAllFromControlLabel = /*#__PURE__*/styled(FormControlLabel, process.env.NODE_ENV === "production" ? {
|
|
@@ -605,7 +655,7 @@ var SelectAllFromControlLabel = /*#__PURE__*/styled(FormControlLabel, process.en
|
|
|
605
655
|
styles: "padding:15px 10px 15px 7px"
|
|
606
656
|
} : {
|
|
607
657
|
name: "gqnhuy",
|
|
608
|
-
styles: "padding:15px 10px 15px 7px/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMmpCMEQiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB0eXBlIHsgRnVuY3Rpb25Db21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdHlwZSBNZXNzYWdlRGVzY3JpcHRvciB9IGZyb20gXCJyZWFjdC1pbnRsXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXIgfSBmcm9tIFwiLi4vY29tbW9uL0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyXCI7XG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja1ByZXZpZXdDb250ZW50IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1ByZXZpZXdDb250ZW50XCI7XG5pbXBvcnQgeyBCbG9ja1JvdyB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tSb3dcIjtcbmltcG9ydCB7IGNyZWF0ZUJsb2NrU2tlbGV0b24gfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVCbG9ja1NrZWxldG9uXCI7XG5pbXBvcnQgeyBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSG92ZXJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9Ib3ZlclByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7IFNlbGVjdFByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL1NlbGVjdFByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgQmxvY2tEZXBlbmRlbmN5LCBCbG9ja0ludGVyZmFjZSwgQmxvY2tTdGF0ZSwgUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IHBhcmFsbGVsQXN5bmNFdmVyeSB9IGZyb20gXCIuLi91dGlscy9wYXJhbGxlbEFzeW5jRXZlcnlcIjtcbmltcG9ydCB7IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50IH0gZnJvbSBcIi4vbGlzdEJsb2NrL2NyZWF0ZVVzZUFkbWluQ29tcG9uZW50XCI7XG5cbi8vIFVzaW5nIHt9IGluc3RlYWQgb2YgUmVjb3JkPHN0cmluZywgbmV2ZXI+IGJlY2F1c2UgbmV2ZXIgYW5kIHVua25vd24gYXJlIGluY29tcGF0aWJsZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbnR5cGUgRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzID0ge307XG5cbmV4cG9ydCB0eXBlIExpc3RCbG9ja0l0ZW08VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgcHJvcHM6IEJsb2NrU3RhdGU8VD47XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgc2xpZGVJbjogYm9vbGVhbjtcbn0gJiBBZGRpdGlvbmFsSXRlbUZpZWxkcztcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tTdGF0ZTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+IHtcbiAgICBibG9ja3M6IExpc3RCbG9ja0l0ZW08VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPFZhbHVlID0gdW5rbm93bj4ge1xuICAgIGRlZmF1bHRWYWx1ZTogVmFsdWU7XG59XG5cbmludGVyZmFjZSBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtc05hbWU/OiBSZWFjdE5vZGU7XG4gICAgYmxvY2s6IFQ7XG4gICAgbWluVmlzaWJsZUJsb2Nrcz86IG51bWJlcjtcbiAgICBtYXhWaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnk/OiBib29sZWFuO1xuICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzPzoge1xuICAgICAgICBbS2V5IGluIGtleW9mIEFkZGl0aW9uYWxJdGVtRmllbGRzXTogTGlzdEJsb2NrQWRkaXRpb25hbEl0ZW1GaWVsZDxBZGRpdGlvbmFsSXRlbUZpZWxkc1tLZXldPjtcbiAgICB9O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcz86IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgICAgICAgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz47XG4gICAgICAgIG9uQ2hhbmdlOiAoaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4pID0+IHZvaWQ7XG4gICAgICAgIG9uTWVudUNsb3NlOiAoKSA9PiB2b2lkO1xuICAgIH0+O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudD86IEZ1bmN0aW9uQ29tcG9uZW50PHsgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4gfT47XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+KFxuICAgIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYmxvY2ssXG4gICAgICAgIGRpc3BsYXlOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLm5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cIkxpc3RcIiAvPixcbiAgICAgICAgaXRlbU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2suaXRlbU5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2NrXCIgLz4sXG4gICAgICAgIGl0ZW1zTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtc05hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2Nrc1wiIC8+LFxuICAgICAgICBtaW5WaXNpYmxlQmxvY2tzLFxuICAgICAgICBtYXhWaXNpYmxlQmxvY2tzLFxuICAgICAgICBjcmVhdGVEZWZhdWx0TGlzdEVudHJ5LFxuICAgICAgICBhZGRpdGlvbmFsSXRlbUZpZWxkcyxcbiAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRlbnQsXG4gICAgICAgIHRhZ3MsXG4gICAgfTogQ3JlYXRlTGlzdEJsb2NrT3B0aW9uczxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgb3ZlcnJpZGU/OiAoXG4gICAgICAgIGJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICAgICAgPixcbiAgICApID0+IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+Pixcbik6IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+PiB7XG4gICAgY29uc3QgdXNlQWRtaW5Db21wb25lbnQgPSBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudCh7IGJsb2NrLCBtYXhWaXNpYmxlQmxvY2tzLCBhZGRpdGlvbmFsSXRlbUZpZWxkcyB9KTtcbiAgICBpZiAobWluVmlzaWJsZUJsb2NrcyAmJiBtYXhWaXNpYmxlQmxvY2tzICYmIG1pblZpc2libGVCbG9ja3MgPiBtYXhWaXNpYmxlQmxvY2tzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGdldERlZmF1bHRMaXN0RW50cnkgPSAoKSA9PiAoe1xuICAgICAgICBrZXk6IHV1aWQoKSxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgcHJvcHM6IGJsb2NrLmRlZmF1bHRWYWx1ZXMoKSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgIC4uLihPYmplY3QuZW50cmllcyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgKGZpZWxkcywgW2ZpZWxkLCB7IGRlZmF1bHRWYWx1ZSB9XSkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBkZWZhdWx0VmFsdWUgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBCbG9ja0xpc3RCbG9jazogQmxvY2tJbnRlcmZhY2U8XG4gICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+XG4gICAgPiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBibG9jay50YWdzLFxuXG4gICAgICAgIGRlZmF1bHRWYWx1ZXM6ICgpID0+ICh7XG4gICAgICAgICAgICBibG9ja3M6XG4gICAgICAgICAgICAgICAgbWluVmlzaWJsZUJsb2NrcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgID8gQXJyYXkuZnJvbSh7IGxlbmd0aDogbWluVmlzaWJsZUJsb2NrcyB9LCBnZXREZWZhdWx0TGlzdEVudHJ5KVxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZURlZmF1bHRMaXN0RW50cnlcbiAgICAgICAgICAgICAgICAgICAgICA/IFtnZXREZWZhdWx0TGlzdEVudHJ5KCldXG4gICAgICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgY2F0ZWdvcnk6IGJsb2NrLmNhdGVnb3J5LFxuXG4gICAgICAgIGlucHV0MlN0YXRlOiAoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgICAgICAgYmxvY2tzOiBpbnB1dC5ibG9ja3MubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suaW5wdXQyU3RhdGUoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZSgoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksIHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBzdGF0ZTJPdXRwdXQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suc3RhdGUyT3V0cHV0KGNoaWxkLnByb3BzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKE9iamVjdC5rZXlzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIG91dHB1dDJTdGF0ZTogYXN5bmMgKG91dHB1dCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IFtdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBhd2FpdCBibG9jay5vdXRwdXQyU3RhdGUoY2hpbGQucHJvcHMsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQcmV2aWV3U3RhdGU6IChzdGF0ZSwgcHJldmlld0N0eCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZCkgPT4gKHByZXZpZXdDdHguc2hvd1Zpc2libGVPbmx5ID8gY2hpbGQudmlzaWJsZSA6IHRydWUpKSAvLyBkZXBlbmRpbmcgb24gY29udGV4dCBzaG93IGFsbCBibG9ja3Mgb3Igb25seSB2aXNpYmxlIGJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0N0eC5wYXJlbnRVcmxTdWJSb3V0ZSA/PyBwcmV2aWV3Q3R4LnBhcmVudFVybH0vJHtjaGlsZC5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGJsb2NrLmNyZWF0ZVByZXZpZXdTdGF0ZShjaGlsZC5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2aWV3Q3R4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmxTdWJSb3V0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmw6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBibG9ja0FkbWluUm91dGUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0N0eC5wYXJlbnRVcmwgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGlzVmFsaWQ6IGFzeW5jIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tWYWxpZGl0eVJlc3VsdCA9IGF3YWl0IHBhcmFsbGVsQXN5bmNFdmVyeShzdGF0ZS5ibG9ja3MsIGFzeW5jIChjKSA9PiBibG9jay5pc1ZhbGlkKGMucHJvcHMpKTtcbiAgICAgICAgICAgIHJldHVybiBibG9ja1ZhbGlkaXR5UmVzdWx0ICYmIChtaW5WaXNpYmxlQmxvY2tzID8gbWluVmlzaWJsZUJsb2NrcyA8PSBzdGF0ZS5ibG9ja3MuZmlsdGVyKChibG9jaykgPT4gYmxvY2sudmlzaWJsZSkubGVuZ3RoIDogdHJ1ZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2hpbGRCbG9ja0NvdW50OiAoc3RhdGUpID0+IHN0YXRlLmJsb2Nrcy5sZW5ndGgsXG5cbiAgICAgICAgYW5jaG9yczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGFuY2hvcnMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oYmxvY2suYW5jaG9ycz8uKGNoaWxkLnByb3BzKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlcGVuZGVuY2llczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWREZXBlbmRlbmNpZXMgPSBzdGF0ZS5ibG9ja3MucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uZGVwZW5kZW5jaWVzLCAuLi4oYmxvY2suZGVwZW5kZW5jaWVzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHsgLi4ub3V0cHV0LCBibG9ja3M6IFtdIH07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygb3V0cHV0LmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIG5ld091dHB1dC5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2sucmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0KGNoaWxkLnByb3BzLCByZXBsYWNlbWVudHMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3T3V0cHV0O1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlZmluZXNPd25QYWRkaW5nOiB0cnVlLFxuXG4gICAgICAgIEFkbWluQ29tcG9uZW50OiAoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGNhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZyxcbiAgICAgICAgICAgICAgICBjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbixcbiAgICAgICAgICAgICAgICB0b3RhbFZpc2libGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICB0b2dnbGVWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyxcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1pc3NpbmcgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZ2VuZXJpYyBpbiBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudFxuICAgICAgICAgICAgfSA9IHVzZUFkbWluQ29tcG9uZW50KHsgc3RhdGUsIHVwZGF0ZVN0YXRlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxTZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2ggZGlzYWJsZUZvcmNlUHJvbXB0Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJ0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoc3RhY2tBcGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50UGFwZXIgZGlzYWJsZVBhZGRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkQ291bnQgPT09IHN0YXRlLmJsb2Nrcy5sZW5ndGggJiYgc2VsZWN0ZWRDb3VudCA+IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlPXtzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50ICE9PSBzdGF0ZS5ibG9ja3MubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5tYXAoKGRhdGEsIGJsb2NrSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNNaW5WaXNpYmxlQmxvY2tzTWV0ID0gISFtaW5WaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtaW5WaXNpYmxlQmxvY2tzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhbWF4VmlzaWJsZUJsb2NrcyAmJiB0b3RhbFZpc2libGVCbG9ja3MgPj0gbWF4VmlzaWJsZUJsb2NrcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5Ub2dnbGVWaXNpYmlsaXR5ID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCA/IGRhdGEudmlzaWJsZSA6IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvd01heEJsb2Nrc0FsbG93ZWRNZXNzYWdlID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCAmJiAhZGF0YS52aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghIW1pblZpc2libGVCbG9ja3MgJiYgIWlzTWluVmlzaWJsZUJsb2Nrc01ldCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW5WaXNpYmxlQmxvY2tzID09PSB0b3RhbFZpc2libGVCbG9ja3MgJiYgZGF0YS52aXNpYmxlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2RhdGEua2V5fSBjb21wb25lbnRTbHVnPXtgJHtkYXRhLmtleX0vZWRpdGB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17ZGF0YS5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tQcmV2aWV3Q29udGVudCBibG9jaz17YmxvY2t9IHN0YXRlPXtkYXRhLnByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17YmxvY2tJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZW50Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgZGF0YS5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MoW2RhdGEua2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gWy4uLnByZXZTdGF0ZS5ibG9ja3NdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVG9Nb3ZlID0gYmxvY2tzLnNwbGljZShmcm9tLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3Muc3BsaWNlKHRvLCAwLCBibG9ja1RvTW92ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucHJldlN0YXRlLCBibG9ja3MgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWF4VmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNYXguIHZpc2libGUgYmxvY2tzIGFsbG93ZWQ6IHttYXhWaXNpYmxlQmxvY2tzfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IG1heFZpc2libGVCbG9ja3MgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm1pblZpc2libGVCbG9ja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTWluLiB2aXNpYmxlIGJsb2NrcyByZXF1aXJlZDoge21pblZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWluVmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBjb21wb25lbnQ9XCJzcGFuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjYW5Ub2dnbGVWaXNpYmlsaXR5ICYmIHRvZ2dsZVZpc2libGUoZGF0YS5rZXkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshY2FuVG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RhdGEudmlzaWJsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VmlzaWJsZSBjb2xvcj1cInN1Y2Nlc3NcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW52aXNpYmxlIGNvbG9yPVwiYWN0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkZE5ld0Jsb2NrPXsoYmVmb3JlSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNsaXBib2FyZENvbnRlbnQoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYmxvY2submFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZGF0YS52aXNpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogZGF0YS5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEZpZWxkczogT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRhdGFbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhc3RlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlQmxvY2soYmxvY2tJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17ZGF0YS5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RlZENsaWNrPXsoc2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGRhdGEsIHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZEZuPXsoKSA9PiBibG9jay5pc1ZhbGlkKGRhdGEucHJvcHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtkYXRhLnNsaWRlSW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVCb3R0b21JbnNlcnRCZXR3ZWVuQnV0dG9uPXtibG9ja0luZGV4ID49IHN0YXRlLmJsb2Nrcy5sZW5ndGggLSAxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWVudUl0ZW1zPXsob25NZW51Q2xvc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPXtkYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHVwZGF0ZWRJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldmlvdXNTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3M6IHByZXZpb3VzU3RhdGUuYmxvY2tzLm1hcCgoYmxvY2spID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmtleSA9PT0gZGF0YS5rZXkgPyB1cGRhdGVkSXRlbSA6IGJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxDb250ZW50PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCA/IDxBZGRpdGlvbmFsSXRlbUNvbnRlbnQgaXRlbT17ZGF0YX0gLz4gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QuYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEljb249ezxBZGQgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiQWRkIHtpdGVtTmFtZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2Jsb2NrLmRpc3BsYXlOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGl0ZW1JZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RhdGUuYmxvY2tzLmZpbmQoKGMpID0+IGMua2V5ID09PSBpdGVtSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwibWFpblwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8YmxvY2suQWRtaW5Db21wb25lbnQgc3RhdGU9e21hdGNoLnByb3BzfSB1cGRhdGVTdGF0ZT17Y3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4oaXRlbUlkKX0gLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgIHtjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2d9XG4gICAgICAgICAgICAgICAgPC9TZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY3R4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5ub0Jsb2Nrc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8ge2l0ZW1zTmFtZX1cIiB2YWx1ZXM9e3sgaXRlbXNOYW1lIH19IC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPFByZXZpZXdDb250ZW50W10+KChwcmV2LCBuZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFByZXZpZXdDb250ZW50ID0gYmxvY2sucHJldmlld0NvbnRlbnQobmV4dC5wcm9wcywgY3R4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLm5leHRQcmV2aWV3Q29udGVudF07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmVEZXBlbmRlbmN5UGF0aDogKHN0YXRlLCBqc29uUGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEvXmJsb2Nrcy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxpc3RCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmJsb2Nrc1tudW1dO1xuXG4gICAgICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBibG9jay5yZXNvbHZlRGVwZW5kZW5jeVBhdGgoYmxvY2tJdGVtLnByb3BzLCBwYXRoQXJyLnNsaWNlKDMpLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtibG9ja0l0ZW0ua2V5fS9lZGl0LyR7Y2hpbGRQYXRofWA7XG4gICAgICAgIH0sXG4gICAgICAgIGV4dHJhY3RUZXh0Q29udGVudHM6IChzdGF0ZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPSBvcHRpb25zPy5pbmNsdWRlSW52aXNpYmxlQ29udGVudCA/PyBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8c3RyaW5nW10+KChjb250ZW50LCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGQudmlzaWJsZSAmJiAhaW5jbHVkZUludmlzaWJsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5jb250ZW50LCAuLi4oYmxvY2suZXh0cmFjdFRleHRDb250ZW50cz8uKGNoaWxkLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKEJsb2NrTGlzdEJsb2NrKTtcbiAgICB9XG4gICAgcmV0dXJuIEJsb2NrTGlzdEJsb2NrO1xufVxuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBwYWRkaW5nOiAxMnB4IDA7XG5gO1xuXG5jb25zdCBTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsID0gc3R5bGVkKEZvcm1Db250cm9sTGFiZWwpYFxuICAgIHBhZGRpbmc6IDE1cHggMTBweCAxNXB4IDdweDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uQ29udGVudCA9IHN0eWxlZChcInNwYW5cIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDA7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkljb24gPSBzdHlsZWQoQWRkKWBcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuYDtcbiJdfQ== */",
|
|
658
|
+
styles: "padding:15px 10px 15px 7px/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb2tCMEQiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB0eXBlIHsgRnVuY3Rpb25Db21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdHlwZSBNZXNzYWdlRGVzY3JpcHRvciB9IGZyb20gXCJyZWFjdC1pbnRsXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXIgfSBmcm9tIFwiLi4vY29tbW9uL0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyXCI7XG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja1ByZXZpZXdDb250ZW50IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1ByZXZpZXdDb250ZW50XCI7XG5pbXBvcnQgeyBCbG9ja1JvdyB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tSb3dcIjtcbmltcG9ydCB7IGNyZWF0ZUJsb2NrU2tlbGV0b24gfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVCbG9ja1NrZWxldG9uXCI7XG5pbXBvcnQgeyBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSG92ZXJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9Ib3ZlclByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7IFNlbGVjdFByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL1NlbGVjdFByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgQmxvY2tEZXBlbmRlbmN5LCBCbG9ja0ludGVyZmFjZSwgQmxvY2tTdGF0ZSwgUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IHBhcmFsbGVsQXN5bmNFdmVyeSB9IGZyb20gXCIuLi91dGlscy9wYXJhbGxlbEFzeW5jRXZlcnlcIjtcbmltcG9ydCB7IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50IH0gZnJvbSBcIi4vbGlzdEJsb2NrL2NyZWF0ZVVzZUFkbWluQ29tcG9uZW50XCI7XG5cbi8vIFVzaW5nIHt9IGluc3RlYWQgb2YgUmVjb3JkPHN0cmluZywgbmV2ZXI+IGJlY2F1c2UgbmV2ZXIgYW5kIHVua25vd24gYXJlIGluY29tcGF0aWJsZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbnR5cGUgRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzID0ge307XG5cbmV4cG9ydCB0eXBlIExpc3RCbG9ja0l0ZW08VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgcHJvcHM6IEJsb2NrU3RhdGU8VD47XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgc2xpZGVJbjogYm9vbGVhbjtcbn0gJiBBZGRpdGlvbmFsSXRlbUZpZWxkcztcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tTdGF0ZTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+IHtcbiAgICBibG9ja3M6IExpc3RCbG9ja0l0ZW08VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPFZhbHVlID0gdW5rbm93bj4ge1xuICAgIGRlZmF1bHRWYWx1ZTogVmFsdWU7XG59XG5cbmludGVyZmFjZSBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtc05hbWU/OiBSZWFjdE5vZGU7XG4gICAgYmxvY2s6IFQ7XG4gICAgbWluVmlzaWJsZUJsb2Nrcz86IG51bWJlcjtcbiAgICBtYXhWaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnk/OiBib29sZWFuO1xuICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzPzoge1xuICAgICAgICBbS2V5IGluIGtleW9mIEFkZGl0aW9uYWxJdGVtRmllbGRzXTogTGlzdEJsb2NrQWRkaXRpb25hbEl0ZW1GaWVsZDxBZGRpdGlvbmFsSXRlbUZpZWxkc1tLZXldPjtcbiAgICB9O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcz86IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgICAgICAgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz47XG4gICAgICAgIG9uQ2hhbmdlOiAoaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4pID0+IHZvaWQ7XG4gICAgICAgIG9uTWVudUNsb3NlOiAoKSA9PiB2b2lkO1xuICAgIH0+O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudD86IEZ1bmN0aW9uQ29tcG9uZW50PHsgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4gfT47XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+KFxuICAgIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYmxvY2ssXG4gICAgICAgIGRpc3BsYXlOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLm5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cIkxpc3RcIiAvPixcbiAgICAgICAgaXRlbU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2suaXRlbU5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2NrXCIgLz4sXG4gICAgICAgIGl0ZW1zTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtc05hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2Nrc1wiIC8+LFxuICAgICAgICBtaW5WaXNpYmxlQmxvY2tzLFxuICAgICAgICBtYXhWaXNpYmxlQmxvY2tzLFxuICAgICAgICBjcmVhdGVEZWZhdWx0TGlzdEVudHJ5LFxuICAgICAgICBhZGRpdGlvbmFsSXRlbUZpZWxkcyxcbiAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRlbnQsXG4gICAgICAgIHRhZ3MsXG4gICAgfTogQ3JlYXRlTGlzdEJsb2NrT3B0aW9uczxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgb3ZlcnJpZGU/OiAoXG4gICAgICAgIGJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICAgICAgPixcbiAgICApID0+IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+Pixcbik6IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+PiB7XG4gICAgY29uc3QgdXNlQWRtaW5Db21wb25lbnQgPSBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudCh7IGJsb2NrLCBtYXhWaXNpYmxlQmxvY2tzLCBhZGRpdGlvbmFsSXRlbUZpZWxkcyB9KTtcbiAgICBpZiAobWluVmlzaWJsZUJsb2NrcyAmJiBtYXhWaXNpYmxlQmxvY2tzICYmIG1pblZpc2libGVCbG9ja3MgPiBtYXhWaXNpYmxlQmxvY2tzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGdldERlZmF1bHRMaXN0RW50cnkgPSAoKSA9PiAoe1xuICAgICAgICBrZXk6IHV1aWQoKSxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgcHJvcHM6IGJsb2NrLmRlZmF1bHRWYWx1ZXMoKSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgIC4uLihPYmplY3QuZW50cmllcyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgKGZpZWxkcywgW2ZpZWxkLCB7IGRlZmF1bHRWYWx1ZSB9XSkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBkZWZhdWx0VmFsdWUgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBCbG9ja0xpc3RCbG9jazogQmxvY2tJbnRlcmZhY2U8XG4gICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+XG4gICAgPiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBibG9jay50YWdzLFxuXG4gICAgICAgIGRlZmF1bHRWYWx1ZXM6ICgpID0+ICh7XG4gICAgICAgICAgICBibG9ja3M6XG4gICAgICAgICAgICAgICAgbWluVmlzaWJsZUJsb2NrcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgID8gQXJyYXkuZnJvbSh7IGxlbmd0aDogbWluVmlzaWJsZUJsb2NrcyB9LCBnZXREZWZhdWx0TGlzdEVudHJ5KVxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZURlZmF1bHRMaXN0RW50cnlcbiAgICAgICAgICAgICAgICAgICAgICA/IFtnZXREZWZhdWx0TGlzdEVudHJ5KCldXG4gICAgICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgY2F0ZWdvcnk6IGJsb2NrLmNhdGVnb3J5LFxuXG4gICAgICAgIGlucHV0MlN0YXRlOiAoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgICAgICAgYmxvY2tzOiBpbnB1dC5ibG9ja3MubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suaW5wdXQyU3RhdGUoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZSgoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksIHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBzdGF0ZTJPdXRwdXQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suc3RhdGUyT3V0cHV0KGNoaWxkLnByb3BzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKE9iamVjdC5rZXlzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIG91dHB1dDJTdGF0ZTogYXN5bmMgKG91dHB1dCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IFtdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBhd2FpdCBibG9jay5vdXRwdXQyU3RhdGUoY2hpbGQucHJvcHMsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQcmV2aWV3U3RhdGU6IChzdGF0ZSwgcHJldmlld0N0eCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZCkgPT4gKHByZXZpZXdDdHguc2hvd1Zpc2libGVPbmx5ID8gY2hpbGQudmlzaWJsZSA6IHRydWUpKSAvLyBkZXBlbmRpbmcgb24gY29udGV4dCBzaG93IGFsbCBibG9ja3Mgb3Igb25seSB2aXNpYmxlIGJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0N0eC5wYXJlbnRVcmxTdWJSb3V0ZSA/PyBwcmV2aWV3Q3R4LnBhcmVudFVybH0vJHtjaGlsZC5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGJsb2NrLmNyZWF0ZVByZXZpZXdTdGF0ZShjaGlsZC5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2aWV3Q3R4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmxTdWJSb3V0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmw6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBibG9ja0FkbWluUm91dGUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0N0eC5wYXJlbnRVcmwgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGlzVmFsaWQ6IGFzeW5jIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tWYWxpZGl0eVJlc3VsdCA9IGF3YWl0IHBhcmFsbGVsQXN5bmNFdmVyeShzdGF0ZS5ibG9ja3MsIGFzeW5jIChjKSA9PiBibG9jay5pc1ZhbGlkKGMucHJvcHMpKTtcbiAgICAgICAgICAgIHJldHVybiBibG9ja1ZhbGlkaXR5UmVzdWx0ICYmIChtaW5WaXNpYmxlQmxvY2tzID8gbWluVmlzaWJsZUJsb2NrcyA8PSBzdGF0ZS5ibG9ja3MuZmlsdGVyKChibG9jaykgPT4gYmxvY2sudmlzaWJsZSkubGVuZ3RoIDogdHJ1ZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2hpbGRCbG9ja0NvdW50OiAoc3RhdGUpID0+IHN0YXRlLmJsb2Nrcy5sZW5ndGgsXG5cbiAgICAgICAgYW5jaG9yczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGFuY2hvcnMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oYmxvY2suYW5jaG9ycz8uKGNoaWxkLnByb3BzKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlcGVuZGVuY2llczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWREZXBlbmRlbmNpZXMgPSBzdGF0ZS5ibG9ja3MucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uZGVwZW5kZW5jaWVzLCAuLi4oYmxvY2suZGVwZW5kZW5jaWVzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHsgLi4ub3V0cHV0LCBibG9ja3M6IFtdIH07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygb3V0cHV0LmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIG5ld091dHB1dC5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2sucmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0KGNoaWxkLnByb3BzLCByZXBsYWNlbWVudHMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3T3V0cHV0O1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlZmluZXNPd25QYWRkaW5nOiB0cnVlLFxuXG4gICAgICAgIEFkbWluQ29tcG9uZW50OiAoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGNhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZyxcbiAgICAgICAgICAgICAgICBjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbixcbiAgICAgICAgICAgICAgICB0b3RhbFZpc2libGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICB0b2dnbGVWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyxcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1pc3NpbmcgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZ2VuZXJpYyBpbiBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudFxuICAgICAgICAgICAgfSA9IHVzZUFkbWluQ29tcG9uZW50KHsgc3RhdGUsIHVwZGF0ZVN0YXRlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxTZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2ggZGlzYWJsZUZvcmNlUHJvbXB0Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJ0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoc3RhY2tBcGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50UGFwZXIgZGlzYWJsZVBhZGRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkQ291bnQgPT09IHN0YXRlLmJsb2Nrcy5sZW5ndGggJiYgc2VsZWN0ZWRDb3VudCA+IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlPXtzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50ICE9PSBzdGF0ZS5ibG9ja3MubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5tYXAoKGRhdGEsIGJsb2NrSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNNaW5WaXNpYmxlQmxvY2tzTWV0ID0gISFtaW5WaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtaW5WaXNpYmxlQmxvY2tzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhbWF4VmlzaWJsZUJsb2NrcyAmJiB0b3RhbFZpc2libGVCbG9ja3MgPj0gbWF4VmlzaWJsZUJsb2NrcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5Ub2dnbGVWaXNpYmlsaXR5ID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCA/IGRhdGEudmlzaWJsZSA6IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvd01heEJsb2Nrc0FsbG93ZWRNZXNzYWdlID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCAmJiAhZGF0YS52aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghIW1pblZpc2libGVCbG9ja3MgJiYgIWlzTWluVmlzaWJsZUJsb2Nrc01ldCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW5WaXNpYmxlQmxvY2tzID09PSB0b3RhbFZpc2libGVCbG9ja3MgJiYgZGF0YS52aXNpYmxlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2RhdGEua2V5fSBjb21wb25lbnRTbHVnPXtgJHtkYXRhLmtleX0vZWRpdGB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17ZGF0YS5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tQcmV2aWV3Q29udGVudCBibG9jaz17YmxvY2t9IHN0YXRlPXtkYXRhLnByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17YmxvY2tJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZW50Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgZGF0YS5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MoW2RhdGEua2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gWy4uLnByZXZTdGF0ZS5ibG9ja3NdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVG9Nb3ZlID0gYmxvY2tzLnNwbGljZShmcm9tLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3Muc3BsaWNlKHRvLCAwLCBibG9ja1RvTW92ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucHJldlN0YXRlLCBibG9ja3MgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWF4VmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNYXguIHZpc2libGUgYmxvY2tzIGFsbG93ZWQ6IHttYXhWaXNpYmxlQmxvY2tzfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IG1heFZpc2libGVCbG9ja3MgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm1pblZpc2libGVCbG9ja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTWluLiB2aXNpYmxlIGJsb2NrcyByZXF1aXJlZDoge21pblZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWluVmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBjb21wb25lbnQ9XCJzcGFuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjYW5Ub2dnbGVWaXNpYmlsaXR5ICYmIHRvZ2dsZVZpc2libGUoZGF0YS5rZXkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshY2FuVG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RhdGEudmlzaWJsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VmlzaWJsZSBjb2xvcj1cInN1Y2Nlc3NcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW52aXNpYmxlIGNvbG9yPVwiYWN0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkZE5ld0Jsb2NrPXsoYmVmb3JlSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNsaXBib2FyZENvbnRlbnQoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYmxvY2submFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZGF0YS52aXNpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogZGF0YS5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEZpZWxkczogT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRhdGFbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhc3RlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlQmxvY2soYmxvY2tJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17ZGF0YS5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RlZENsaWNrPXsoc2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGRhdGEsIHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZEZuPXsoKSA9PiBibG9jay5pc1ZhbGlkKGRhdGEucHJvcHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtkYXRhLnNsaWRlSW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVCb3R0b21JbnNlcnRCZXR3ZWVuQnV0dG9uPXtibG9ja0luZGV4ID49IHN0YXRlLmJsb2Nrcy5sZW5ndGggLSAxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWVudUl0ZW1zPXsob25NZW51Q2xvc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPXtkYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHVwZGF0ZWRJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldmlvdXNTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3M6IHByZXZpb3VzU3RhdGUuYmxvY2tzLm1hcCgoYmxvY2spID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmtleSA9PT0gZGF0YS5rZXkgPyB1cGRhdGVkSXRlbSA6IGJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxDb250ZW50PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCA/IDxBZGRpdGlvbmFsSXRlbUNvbnRlbnQgaXRlbT17ZGF0YX0gLz4gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QuYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEljb249ezxBZGQgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiQWRkIHtpdGVtTmFtZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2Jsb2NrLmRpc3BsYXlOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGl0ZW1JZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RhdGUuYmxvY2tzLmZpbmQoKGMpID0+IGMua2V5ID09PSBpdGVtSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwibWFpblwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8YmxvY2suQWRtaW5Db21wb25lbnQgc3RhdGU9e21hdGNoLnByb3BzfSB1cGRhdGVTdGF0ZT17Y3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4oaXRlbUlkKX0gLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgIHtjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2d9XG4gICAgICAgICAgICAgICAgPC9TZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY3R4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5ub0Jsb2Nrc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8ge2l0ZW1zTmFtZX1cIiB2YWx1ZXM9e3sgaXRlbXNOYW1lIH19IC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPFByZXZpZXdDb250ZW50W10+KChwcmV2LCBuZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFByZXZpZXdDb250ZW50ID0gYmxvY2sucHJldmlld0NvbnRlbnQobmV4dC5wcm9wcywgY3R4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLm5leHRQcmV2aWV3Q29udGVudF07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmVEZXBlbmRlbmN5UGF0aDogKHN0YXRlLCBqc29uUGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEvXmJsb2Nrcy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxpc3RCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmJsb2Nrc1tudW1dO1xuXG4gICAgICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBibG9jay5yZXNvbHZlRGVwZW5kZW5jeVBhdGgoYmxvY2tJdGVtLnByb3BzLCBwYXRoQXJyLnNsaWNlKDMpLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtibG9ja0l0ZW0ua2V5fS9lZGl0LyR7Y2hpbGRQYXRofWA7XG4gICAgICAgIH0sXG4gICAgICAgIGV4dHJhY3RUZXh0Q29udGVudHM6IChzdGF0ZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPSBvcHRpb25zPy5pbmNsdWRlSW52aXNpYmxlQ29udGVudCA/PyBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8c3RyaW5nW10+KChjb250ZW50LCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGQudmlzaWJsZSAmJiAhaW5jbHVkZUludmlzaWJsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5jb250ZW50LCAuLi4oYmxvY2suZXh0cmFjdFRleHRDb250ZW50cz8uKGNoaWxkLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zbGF0ZUNvbnRlbnQ6IGFzeW5jIChzdGF0ZSwgdHJhbnNsYXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkQmxvY2tzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLm1hcChhc3luYyAoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRlZFByb3BzID0gYmxvY2sudHJhbnNsYXRlQ29udGVudCA/IGF3YWl0IGJsb2NrLnRyYW5zbGF0ZUNvbnRlbnQoY2hpbGQucHJvcHMsIHRyYW5zbGF0ZSkgOiBjaGlsZC5wcm9wcztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uY2hpbGQsIHByb3BzOiB0cmFuc2xhdGVkUHJvcHMgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYmxvY2tzOiB0cmFuc2xhdGVkQmxvY2tzIH07XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKEJsb2NrTGlzdEJsb2NrKTtcbiAgICB9XG4gICAgcmV0dXJuIEJsb2NrTGlzdEJsb2NrO1xufVxuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBwYWRkaW5nOiAxMnB4IDA7XG5gO1xuXG5jb25zdCBTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsID0gc3R5bGVkKEZvcm1Db250cm9sTGFiZWwpYFxuICAgIHBhZGRpbmc6IDE1cHggMTBweCAxNXB4IDdweDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uQ29udGVudCA9IHN0eWxlZChcInNwYW5cIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDA7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkljb24gPSBzdHlsZWQoQWRkKWBcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuYDtcbiJdfQ== */",
|
|
609
659
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
610
660
|
});
|
|
611
661
|
var LargeAddButtonContent = /*#__PURE__*/styled("span", process.env.NODE_ENV === "production" ? {
|
|
@@ -618,7 +668,7 @@ var LargeAddButtonContent = /*#__PURE__*/styled("span", process.env.NODE_ENV ===
|
|
|
618
668
|
styles: "display:flex;flex-direction:column;align-items:center;padding:4px 0"
|
|
619
669
|
} : {
|
|
620
670
|
name: "3g6o2",
|
|
621
|
-
styles: "display:flex;flex-direction:column;align-items:center;padding:4px 0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK2pCNEMiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB0eXBlIHsgRnVuY3Rpb25Db21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdHlwZSBNZXNzYWdlRGVzY3JpcHRvciB9IGZyb20gXCJyZWFjdC1pbnRsXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXIgfSBmcm9tIFwiLi4vY29tbW9uL0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyXCI7XG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja1ByZXZpZXdDb250ZW50IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1ByZXZpZXdDb250ZW50XCI7XG5pbXBvcnQgeyBCbG9ja1JvdyB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tSb3dcIjtcbmltcG9ydCB7IGNyZWF0ZUJsb2NrU2tlbGV0b24gfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVCbG9ja1NrZWxldG9uXCI7XG5pbXBvcnQgeyBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSG92ZXJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9Ib3ZlclByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7IFNlbGVjdFByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL1NlbGVjdFByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgQmxvY2tEZXBlbmRlbmN5LCBCbG9ja0ludGVyZmFjZSwgQmxvY2tTdGF0ZSwgUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IHBhcmFsbGVsQXN5bmNFdmVyeSB9IGZyb20gXCIuLi91dGlscy9wYXJhbGxlbEFzeW5jRXZlcnlcIjtcbmltcG9ydCB7IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50IH0gZnJvbSBcIi4vbGlzdEJsb2NrL2NyZWF0ZVVzZUFkbWluQ29tcG9uZW50XCI7XG5cbi8vIFVzaW5nIHt9IGluc3RlYWQgb2YgUmVjb3JkPHN0cmluZywgbmV2ZXI+IGJlY2F1c2UgbmV2ZXIgYW5kIHVua25vd24gYXJlIGluY29tcGF0aWJsZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbnR5cGUgRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzID0ge307XG5cbmV4cG9ydCB0eXBlIExpc3RCbG9ja0l0ZW08VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgcHJvcHM6IEJsb2NrU3RhdGU8VD47XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgc2xpZGVJbjogYm9vbGVhbjtcbn0gJiBBZGRpdGlvbmFsSXRlbUZpZWxkcztcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tTdGF0ZTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+IHtcbiAgICBibG9ja3M6IExpc3RCbG9ja0l0ZW08VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPFZhbHVlID0gdW5rbm93bj4ge1xuICAgIGRlZmF1bHRWYWx1ZTogVmFsdWU7XG59XG5cbmludGVyZmFjZSBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtc05hbWU/OiBSZWFjdE5vZGU7XG4gICAgYmxvY2s6IFQ7XG4gICAgbWluVmlzaWJsZUJsb2Nrcz86IG51bWJlcjtcbiAgICBtYXhWaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnk/OiBib29sZWFuO1xuICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzPzoge1xuICAgICAgICBbS2V5IGluIGtleW9mIEFkZGl0aW9uYWxJdGVtRmllbGRzXTogTGlzdEJsb2NrQWRkaXRpb25hbEl0ZW1GaWVsZDxBZGRpdGlvbmFsSXRlbUZpZWxkc1tLZXldPjtcbiAgICB9O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcz86IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgICAgICAgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz47XG4gICAgICAgIG9uQ2hhbmdlOiAoaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4pID0+IHZvaWQ7XG4gICAgICAgIG9uTWVudUNsb3NlOiAoKSA9PiB2b2lkO1xuICAgIH0+O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudD86IEZ1bmN0aW9uQ29tcG9uZW50PHsgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4gfT47XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+KFxuICAgIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYmxvY2ssXG4gICAgICAgIGRpc3BsYXlOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLm5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cIkxpc3RcIiAvPixcbiAgICAgICAgaXRlbU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2suaXRlbU5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2NrXCIgLz4sXG4gICAgICAgIGl0ZW1zTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtc05hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2Nrc1wiIC8+LFxuICAgICAgICBtaW5WaXNpYmxlQmxvY2tzLFxuICAgICAgICBtYXhWaXNpYmxlQmxvY2tzLFxuICAgICAgICBjcmVhdGVEZWZhdWx0TGlzdEVudHJ5LFxuICAgICAgICBhZGRpdGlvbmFsSXRlbUZpZWxkcyxcbiAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRlbnQsXG4gICAgICAgIHRhZ3MsXG4gICAgfTogQ3JlYXRlTGlzdEJsb2NrT3B0aW9uczxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgb3ZlcnJpZGU/OiAoXG4gICAgICAgIGJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICAgICAgPixcbiAgICApID0+IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+Pixcbik6IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+PiB7XG4gICAgY29uc3QgdXNlQWRtaW5Db21wb25lbnQgPSBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudCh7IGJsb2NrLCBtYXhWaXNpYmxlQmxvY2tzLCBhZGRpdGlvbmFsSXRlbUZpZWxkcyB9KTtcbiAgICBpZiAobWluVmlzaWJsZUJsb2NrcyAmJiBtYXhWaXNpYmxlQmxvY2tzICYmIG1pblZpc2libGVCbG9ja3MgPiBtYXhWaXNpYmxlQmxvY2tzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGdldERlZmF1bHRMaXN0RW50cnkgPSAoKSA9PiAoe1xuICAgICAgICBrZXk6IHV1aWQoKSxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgcHJvcHM6IGJsb2NrLmRlZmF1bHRWYWx1ZXMoKSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgIC4uLihPYmplY3QuZW50cmllcyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgKGZpZWxkcywgW2ZpZWxkLCB7IGRlZmF1bHRWYWx1ZSB9XSkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBkZWZhdWx0VmFsdWUgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBCbG9ja0xpc3RCbG9jazogQmxvY2tJbnRlcmZhY2U8XG4gICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+XG4gICAgPiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBibG9jay50YWdzLFxuXG4gICAgICAgIGRlZmF1bHRWYWx1ZXM6ICgpID0+ICh7XG4gICAgICAgICAgICBibG9ja3M6XG4gICAgICAgICAgICAgICAgbWluVmlzaWJsZUJsb2NrcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgID8gQXJyYXkuZnJvbSh7IGxlbmd0aDogbWluVmlzaWJsZUJsb2NrcyB9LCBnZXREZWZhdWx0TGlzdEVudHJ5KVxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZURlZmF1bHRMaXN0RW50cnlcbiAgICAgICAgICAgICAgICAgICAgICA/IFtnZXREZWZhdWx0TGlzdEVudHJ5KCldXG4gICAgICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgY2F0ZWdvcnk6IGJsb2NrLmNhdGVnb3J5LFxuXG4gICAgICAgIGlucHV0MlN0YXRlOiAoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgICAgICAgYmxvY2tzOiBpbnB1dC5ibG9ja3MubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suaW5wdXQyU3RhdGUoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZSgoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksIHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBzdGF0ZTJPdXRwdXQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suc3RhdGUyT3V0cHV0KGNoaWxkLnByb3BzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKE9iamVjdC5rZXlzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIG91dHB1dDJTdGF0ZTogYXN5bmMgKG91dHB1dCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IFtdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBhd2FpdCBibG9jay5vdXRwdXQyU3RhdGUoY2hpbGQucHJvcHMsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQcmV2aWV3U3RhdGU6IChzdGF0ZSwgcHJldmlld0N0eCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZCkgPT4gKHByZXZpZXdDdHguc2hvd1Zpc2libGVPbmx5ID8gY2hpbGQudmlzaWJsZSA6IHRydWUpKSAvLyBkZXBlbmRpbmcgb24gY29udGV4dCBzaG93IGFsbCBibG9ja3Mgb3Igb25seSB2aXNpYmxlIGJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0N0eC5wYXJlbnRVcmxTdWJSb3V0ZSA/PyBwcmV2aWV3Q3R4LnBhcmVudFVybH0vJHtjaGlsZC5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGJsb2NrLmNyZWF0ZVByZXZpZXdTdGF0ZShjaGlsZC5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2aWV3Q3R4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmxTdWJSb3V0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmw6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBibG9ja0FkbWluUm91dGUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0N0eC5wYXJlbnRVcmwgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGlzVmFsaWQ6IGFzeW5jIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tWYWxpZGl0eVJlc3VsdCA9IGF3YWl0IHBhcmFsbGVsQXN5bmNFdmVyeShzdGF0ZS5ibG9ja3MsIGFzeW5jIChjKSA9PiBibG9jay5pc1ZhbGlkKGMucHJvcHMpKTtcbiAgICAgICAgICAgIHJldHVybiBibG9ja1ZhbGlkaXR5UmVzdWx0ICYmIChtaW5WaXNpYmxlQmxvY2tzID8gbWluVmlzaWJsZUJsb2NrcyA8PSBzdGF0ZS5ibG9ja3MuZmlsdGVyKChibG9jaykgPT4gYmxvY2sudmlzaWJsZSkubGVuZ3RoIDogdHJ1ZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2hpbGRCbG9ja0NvdW50OiAoc3RhdGUpID0+IHN0YXRlLmJsb2Nrcy5sZW5ndGgsXG5cbiAgICAgICAgYW5jaG9yczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGFuY2hvcnMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oYmxvY2suYW5jaG9ycz8uKGNoaWxkLnByb3BzKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlcGVuZGVuY2llczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWREZXBlbmRlbmNpZXMgPSBzdGF0ZS5ibG9ja3MucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uZGVwZW5kZW5jaWVzLCAuLi4oYmxvY2suZGVwZW5kZW5jaWVzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHsgLi4ub3V0cHV0LCBibG9ja3M6IFtdIH07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygb3V0cHV0LmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIG5ld091dHB1dC5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2sucmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0KGNoaWxkLnByb3BzLCByZXBsYWNlbWVudHMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3T3V0cHV0O1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlZmluZXNPd25QYWRkaW5nOiB0cnVlLFxuXG4gICAgICAgIEFkbWluQ29tcG9uZW50OiAoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGNhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZyxcbiAgICAgICAgICAgICAgICBjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbixcbiAgICAgICAgICAgICAgICB0b3RhbFZpc2libGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICB0b2dnbGVWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyxcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1pc3NpbmcgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZ2VuZXJpYyBpbiBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudFxuICAgICAgICAgICAgfSA9IHVzZUFkbWluQ29tcG9uZW50KHsgc3RhdGUsIHVwZGF0ZVN0YXRlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxTZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2ggZGlzYWJsZUZvcmNlUHJvbXB0Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJ0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoc3RhY2tBcGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50UGFwZXIgZGlzYWJsZVBhZGRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkQ291bnQgPT09IHN0YXRlLmJsb2Nrcy5sZW5ndGggJiYgc2VsZWN0ZWRDb3VudCA+IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlPXtzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50ICE9PSBzdGF0ZS5ibG9ja3MubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5tYXAoKGRhdGEsIGJsb2NrSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNNaW5WaXNpYmxlQmxvY2tzTWV0ID0gISFtaW5WaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtaW5WaXNpYmxlQmxvY2tzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhbWF4VmlzaWJsZUJsb2NrcyAmJiB0b3RhbFZpc2libGVCbG9ja3MgPj0gbWF4VmlzaWJsZUJsb2NrcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5Ub2dnbGVWaXNpYmlsaXR5ID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCA/IGRhdGEudmlzaWJsZSA6IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvd01heEJsb2Nrc0FsbG93ZWRNZXNzYWdlID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCAmJiAhZGF0YS52aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghIW1pblZpc2libGVCbG9ja3MgJiYgIWlzTWluVmlzaWJsZUJsb2Nrc01ldCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW5WaXNpYmxlQmxvY2tzID09PSB0b3RhbFZpc2libGVCbG9ja3MgJiYgZGF0YS52aXNpYmxlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2RhdGEua2V5fSBjb21wb25lbnRTbHVnPXtgJHtkYXRhLmtleX0vZWRpdGB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17ZGF0YS5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tQcmV2aWV3Q29udGVudCBibG9jaz17YmxvY2t9IHN0YXRlPXtkYXRhLnByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17YmxvY2tJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZW50Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgZGF0YS5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MoW2RhdGEua2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gWy4uLnByZXZTdGF0ZS5ibG9ja3NdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVG9Nb3ZlID0gYmxvY2tzLnNwbGljZShmcm9tLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3Muc3BsaWNlKHRvLCAwLCBibG9ja1RvTW92ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucHJldlN0YXRlLCBibG9ja3MgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWF4VmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNYXguIHZpc2libGUgYmxvY2tzIGFsbG93ZWQ6IHttYXhWaXNpYmxlQmxvY2tzfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IG1heFZpc2libGVCbG9ja3MgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm1pblZpc2libGVCbG9ja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTWluLiB2aXNpYmxlIGJsb2NrcyByZXF1aXJlZDoge21pblZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWluVmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBjb21wb25lbnQ9XCJzcGFuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjYW5Ub2dnbGVWaXNpYmlsaXR5ICYmIHRvZ2dsZVZpc2libGUoZGF0YS5rZXkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshY2FuVG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RhdGEudmlzaWJsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VmlzaWJsZSBjb2xvcj1cInN1Y2Nlc3NcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW52aXNpYmxlIGNvbG9yPVwiYWN0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkZE5ld0Jsb2NrPXsoYmVmb3JlSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNsaXBib2FyZENvbnRlbnQoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYmxvY2submFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZGF0YS52aXNpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogZGF0YS5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEZpZWxkczogT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRhdGFbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhc3RlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlQmxvY2soYmxvY2tJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17ZGF0YS5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RlZENsaWNrPXsoc2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGRhdGEsIHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZEZuPXsoKSA9PiBibG9jay5pc1ZhbGlkKGRhdGEucHJvcHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtkYXRhLnNsaWRlSW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVCb3R0b21JbnNlcnRCZXR3ZWVuQnV0dG9uPXtibG9ja0luZGV4ID49IHN0YXRlLmJsb2Nrcy5sZW5ndGggLSAxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWVudUl0ZW1zPXsob25NZW51Q2xvc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPXtkYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHVwZGF0ZWRJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldmlvdXNTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3M6IHByZXZpb3VzU3RhdGUuYmxvY2tzLm1hcCgoYmxvY2spID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmtleSA9PT0gZGF0YS5rZXkgPyB1cGRhdGVkSXRlbSA6IGJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxDb250ZW50PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCA/IDxBZGRpdGlvbmFsSXRlbUNvbnRlbnQgaXRlbT17ZGF0YX0gLz4gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QuYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEljb249ezxBZGQgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiQWRkIHtpdGVtTmFtZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2Jsb2NrLmRpc3BsYXlOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGl0ZW1JZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RhdGUuYmxvY2tzLmZpbmQoKGMpID0+IGMua2V5ID09PSBpdGVtSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwibWFpblwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8YmxvY2suQWRtaW5Db21wb25lbnQgc3RhdGU9e21hdGNoLnByb3BzfSB1cGRhdGVTdGF0ZT17Y3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4oaXRlbUlkKX0gLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgIHtjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2d9XG4gICAgICAgICAgICAgICAgPC9TZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY3R4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5ub0Jsb2Nrc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8ge2l0ZW1zTmFtZX1cIiB2YWx1ZXM9e3sgaXRlbXNOYW1lIH19IC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPFByZXZpZXdDb250ZW50W10+KChwcmV2LCBuZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFByZXZpZXdDb250ZW50ID0gYmxvY2sucHJldmlld0NvbnRlbnQobmV4dC5wcm9wcywgY3R4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLm5leHRQcmV2aWV3Q29udGVudF07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmVEZXBlbmRlbmN5UGF0aDogKHN0YXRlLCBqc29uUGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEvXmJsb2Nrcy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxpc3RCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmJsb2Nrc1tudW1dO1xuXG4gICAgICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBibG9jay5yZXNvbHZlRGVwZW5kZW5jeVBhdGgoYmxvY2tJdGVtLnByb3BzLCBwYXRoQXJyLnNsaWNlKDMpLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtibG9ja0l0ZW0ua2V5fS9lZGl0LyR7Y2hpbGRQYXRofWA7XG4gICAgICAgIH0sXG4gICAgICAgIGV4dHJhY3RUZXh0Q29udGVudHM6IChzdGF0ZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPSBvcHRpb25zPy5pbmNsdWRlSW52aXNpYmxlQ29udGVudCA/PyBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8c3RyaW5nW10+KChjb250ZW50LCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGQudmlzaWJsZSAmJiAhaW5jbHVkZUludmlzaWJsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5jb250ZW50LCAuLi4oYmxvY2suZXh0cmFjdFRleHRDb250ZW50cz8uKGNoaWxkLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKEJsb2NrTGlzdEJsb2NrKTtcbiAgICB9XG4gICAgcmV0dXJuIEJsb2NrTGlzdEJsb2NrO1xufVxuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBwYWRkaW5nOiAxMnB4IDA7XG5gO1xuXG5jb25zdCBTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsID0gc3R5bGVkKEZvcm1Db250cm9sTGFiZWwpYFxuICAgIHBhZGRpbmc6IDE1cHggMTBweCAxNXB4IDdweDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uQ29udGVudCA9IHN0eWxlZChcInNwYW5cIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDA7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkljb24gPSBzdHlsZWQoQWRkKWBcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuYDtcbiJdfQ== */",
|
|
671
|
+
styles: "display:flex;flex-direction:column;align-items:center;padding:4px 0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd2tCNEMiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB0eXBlIHsgRnVuY3Rpb25Db21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdHlwZSBNZXNzYWdlRGVzY3JpcHRvciB9IGZyb20gXCJyZWFjdC1pbnRsXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXIgfSBmcm9tIFwiLi4vY29tbW9uL0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyXCI7XG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja1ByZXZpZXdDb250ZW50IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1ByZXZpZXdDb250ZW50XCI7XG5pbXBvcnQgeyBCbG9ja1JvdyB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tSb3dcIjtcbmltcG9ydCB7IGNyZWF0ZUJsb2NrU2tlbGV0b24gfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVCbG9ja1NrZWxldG9uXCI7XG5pbXBvcnQgeyBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSG92ZXJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9Ib3ZlclByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7IFNlbGVjdFByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL1NlbGVjdFByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgQmxvY2tEZXBlbmRlbmN5LCBCbG9ja0ludGVyZmFjZSwgQmxvY2tTdGF0ZSwgUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IHBhcmFsbGVsQXN5bmNFdmVyeSB9IGZyb20gXCIuLi91dGlscy9wYXJhbGxlbEFzeW5jRXZlcnlcIjtcbmltcG9ydCB7IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50IH0gZnJvbSBcIi4vbGlzdEJsb2NrL2NyZWF0ZVVzZUFkbWluQ29tcG9uZW50XCI7XG5cbi8vIFVzaW5nIHt9IGluc3RlYWQgb2YgUmVjb3JkPHN0cmluZywgbmV2ZXI+IGJlY2F1c2UgbmV2ZXIgYW5kIHVua25vd24gYXJlIGluY29tcGF0aWJsZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbnR5cGUgRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzID0ge307XG5cbmV4cG9ydCB0eXBlIExpc3RCbG9ja0l0ZW08VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgcHJvcHM6IEJsb2NrU3RhdGU8VD47XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgc2xpZGVJbjogYm9vbGVhbjtcbn0gJiBBZGRpdGlvbmFsSXRlbUZpZWxkcztcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tTdGF0ZTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+IHtcbiAgICBibG9ja3M6IExpc3RCbG9ja0l0ZW08VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPFZhbHVlID0gdW5rbm93bj4ge1xuICAgIGRlZmF1bHRWYWx1ZTogVmFsdWU7XG59XG5cbmludGVyZmFjZSBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtc05hbWU/OiBSZWFjdE5vZGU7XG4gICAgYmxvY2s6IFQ7XG4gICAgbWluVmlzaWJsZUJsb2Nrcz86IG51bWJlcjtcbiAgICBtYXhWaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnk/OiBib29sZWFuO1xuICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzPzoge1xuICAgICAgICBbS2V5IGluIGtleW9mIEFkZGl0aW9uYWxJdGVtRmllbGRzXTogTGlzdEJsb2NrQWRkaXRpb25hbEl0ZW1GaWVsZDxBZGRpdGlvbmFsSXRlbUZpZWxkc1tLZXldPjtcbiAgICB9O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcz86IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgICAgICAgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz47XG4gICAgICAgIG9uQ2hhbmdlOiAoaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4pID0+IHZvaWQ7XG4gICAgICAgIG9uTWVudUNsb3NlOiAoKSA9PiB2b2lkO1xuICAgIH0+O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudD86IEZ1bmN0aW9uQ29tcG9uZW50PHsgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4gfT47XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+KFxuICAgIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYmxvY2ssXG4gICAgICAgIGRpc3BsYXlOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLm5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cIkxpc3RcIiAvPixcbiAgICAgICAgaXRlbU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2suaXRlbU5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2NrXCIgLz4sXG4gICAgICAgIGl0ZW1zTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtc05hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2Nrc1wiIC8+LFxuICAgICAgICBtaW5WaXNpYmxlQmxvY2tzLFxuICAgICAgICBtYXhWaXNpYmxlQmxvY2tzLFxuICAgICAgICBjcmVhdGVEZWZhdWx0TGlzdEVudHJ5LFxuICAgICAgICBhZGRpdGlvbmFsSXRlbUZpZWxkcyxcbiAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRlbnQsXG4gICAgICAgIHRhZ3MsXG4gICAgfTogQ3JlYXRlTGlzdEJsb2NrT3B0aW9uczxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgb3ZlcnJpZGU/OiAoXG4gICAgICAgIGJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICAgICAgPixcbiAgICApID0+IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+Pixcbik6IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+PiB7XG4gICAgY29uc3QgdXNlQWRtaW5Db21wb25lbnQgPSBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudCh7IGJsb2NrLCBtYXhWaXNpYmxlQmxvY2tzLCBhZGRpdGlvbmFsSXRlbUZpZWxkcyB9KTtcbiAgICBpZiAobWluVmlzaWJsZUJsb2NrcyAmJiBtYXhWaXNpYmxlQmxvY2tzICYmIG1pblZpc2libGVCbG9ja3MgPiBtYXhWaXNpYmxlQmxvY2tzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGdldERlZmF1bHRMaXN0RW50cnkgPSAoKSA9PiAoe1xuICAgICAgICBrZXk6IHV1aWQoKSxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgcHJvcHM6IGJsb2NrLmRlZmF1bHRWYWx1ZXMoKSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgIC4uLihPYmplY3QuZW50cmllcyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgKGZpZWxkcywgW2ZpZWxkLCB7IGRlZmF1bHRWYWx1ZSB9XSkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBkZWZhdWx0VmFsdWUgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBCbG9ja0xpc3RCbG9jazogQmxvY2tJbnRlcmZhY2U8XG4gICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+XG4gICAgPiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBibG9jay50YWdzLFxuXG4gICAgICAgIGRlZmF1bHRWYWx1ZXM6ICgpID0+ICh7XG4gICAgICAgICAgICBibG9ja3M6XG4gICAgICAgICAgICAgICAgbWluVmlzaWJsZUJsb2NrcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgID8gQXJyYXkuZnJvbSh7IGxlbmd0aDogbWluVmlzaWJsZUJsb2NrcyB9LCBnZXREZWZhdWx0TGlzdEVudHJ5KVxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZURlZmF1bHRMaXN0RW50cnlcbiAgICAgICAgICAgICAgICAgICAgICA/IFtnZXREZWZhdWx0TGlzdEVudHJ5KCldXG4gICAgICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgY2F0ZWdvcnk6IGJsb2NrLmNhdGVnb3J5LFxuXG4gICAgICAgIGlucHV0MlN0YXRlOiAoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgICAgICAgYmxvY2tzOiBpbnB1dC5ibG9ja3MubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suaW5wdXQyU3RhdGUoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZSgoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksIHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBzdGF0ZTJPdXRwdXQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suc3RhdGUyT3V0cHV0KGNoaWxkLnByb3BzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKE9iamVjdC5rZXlzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIG91dHB1dDJTdGF0ZTogYXN5bmMgKG91dHB1dCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IFtdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBhd2FpdCBibG9jay5vdXRwdXQyU3RhdGUoY2hpbGQucHJvcHMsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQcmV2aWV3U3RhdGU6IChzdGF0ZSwgcHJldmlld0N0eCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZCkgPT4gKHByZXZpZXdDdHguc2hvd1Zpc2libGVPbmx5ID8gY2hpbGQudmlzaWJsZSA6IHRydWUpKSAvLyBkZXBlbmRpbmcgb24gY29udGV4dCBzaG93IGFsbCBibG9ja3Mgb3Igb25seSB2aXNpYmxlIGJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0N0eC5wYXJlbnRVcmxTdWJSb3V0ZSA/PyBwcmV2aWV3Q3R4LnBhcmVudFVybH0vJHtjaGlsZC5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGJsb2NrLmNyZWF0ZVByZXZpZXdTdGF0ZShjaGlsZC5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2aWV3Q3R4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmxTdWJSb3V0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmw6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBibG9ja0FkbWluUm91dGUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0N0eC5wYXJlbnRVcmwgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGlzVmFsaWQ6IGFzeW5jIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tWYWxpZGl0eVJlc3VsdCA9IGF3YWl0IHBhcmFsbGVsQXN5bmNFdmVyeShzdGF0ZS5ibG9ja3MsIGFzeW5jIChjKSA9PiBibG9jay5pc1ZhbGlkKGMucHJvcHMpKTtcbiAgICAgICAgICAgIHJldHVybiBibG9ja1ZhbGlkaXR5UmVzdWx0ICYmIChtaW5WaXNpYmxlQmxvY2tzID8gbWluVmlzaWJsZUJsb2NrcyA8PSBzdGF0ZS5ibG9ja3MuZmlsdGVyKChibG9jaykgPT4gYmxvY2sudmlzaWJsZSkubGVuZ3RoIDogdHJ1ZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2hpbGRCbG9ja0NvdW50OiAoc3RhdGUpID0+IHN0YXRlLmJsb2Nrcy5sZW5ndGgsXG5cbiAgICAgICAgYW5jaG9yczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGFuY2hvcnMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oYmxvY2suYW5jaG9ycz8uKGNoaWxkLnByb3BzKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlcGVuZGVuY2llczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWREZXBlbmRlbmNpZXMgPSBzdGF0ZS5ibG9ja3MucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uZGVwZW5kZW5jaWVzLCAuLi4oYmxvY2suZGVwZW5kZW5jaWVzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHsgLi4ub3V0cHV0LCBibG9ja3M6IFtdIH07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygb3V0cHV0LmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIG5ld091dHB1dC5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2sucmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0KGNoaWxkLnByb3BzLCByZXBsYWNlbWVudHMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3T3V0cHV0O1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlZmluZXNPd25QYWRkaW5nOiB0cnVlLFxuXG4gICAgICAgIEFkbWluQ29tcG9uZW50OiAoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGNhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZyxcbiAgICAgICAgICAgICAgICBjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbixcbiAgICAgICAgICAgICAgICB0b3RhbFZpc2libGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICB0b2dnbGVWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyxcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1pc3NpbmcgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZ2VuZXJpYyBpbiBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudFxuICAgICAgICAgICAgfSA9IHVzZUFkbWluQ29tcG9uZW50KHsgc3RhdGUsIHVwZGF0ZVN0YXRlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxTZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2ggZGlzYWJsZUZvcmNlUHJvbXB0Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJ0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoc3RhY2tBcGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50UGFwZXIgZGlzYWJsZVBhZGRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkQ291bnQgPT09IHN0YXRlLmJsb2Nrcy5sZW5ndGggJiYgc2VsZWN0ZWRDb3VudCA+IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlPXtzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50ICE9PSBzdGF0ZS5ibG9ja3MubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5tYXAoKGRhdGEsIGJsb2NrSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNNaW5WaXNpYmxlQmxvY2tzTWV0ID0gISFtaW5WaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtaW5WaXNpYmxlQmxvY2tzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhbWF4VmlzaWJsZUJsb2NrcyAmJiB0b3RhbFZpc2libGVCbG9ja3MgPj0gbWF4VmlzaWJsZUJsb2NrcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5Ub2dnbGVWaXNpYmlsaXR5ID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCA/IGRhdGEudmlzaWJsZSA6IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvd01heEJsb2Nrc0FsbG93ZWRNZXNzYWdlID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCAmJiAhZGF0YS52aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghIW1pblZpc2libGVCbG9ja3MgJiYgIWlzTWluVmlzaWJsZUJsb2Nrc01ldCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW5WaXNpYmxlQmxvY2tzID09PSB0b3RhbFZpc2libGVCbG9ja3MgJiYgZGF0YS52aXNpYmxlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2RhdGEua2V5fSBjb21wb25lbnRTbHVnPXtgJHtkYXRhLmtleX0vZWRpdGB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17ZGF0YS5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tQcmV2aWV3Q29udGVudCBibG9jaz17YmxvY2t9IHN0YXRlPXtkYXRhLnByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17YmxvY2tJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZW50Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgZGF0YS5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MoW2RhdGEua2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gWy4uLnByZXZTdGF0ZS5ibG9ja3NdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVG9Nb3ZlID0gYmxvY2tzLnNwbGljZShmcm9tLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3Muc3BsaWNlKHRvLCAwLCBibG9ja1RvTW92ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucHJldlN0YXRlLCBibG9ja3MgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWF4VmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNYXguIHZpc2libGUgYmxvY2tzIGFsbG93ZWQ6IHttYXhWaXNpYmxlQmxvY2tzfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IG1heFZpc2libGVCbG9ja3MgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm1pblZpc2libGVCbG9ja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTWluLiB2aXNpYmxlIGJsb2NrcyByZXF1aXJlZDoge21pblZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWluVmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBjb21wb25lbnQ9XCJzcGFuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjYW5Ub2dnbGVWaXNpYmlsaXR5ICYmIHRvZ2dsZVZpc2libGUoZGF0YS5rZXkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshY2FuVG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RhdGEudmlzaWJsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VmlzaWJsZSBjb2xvcj1cInN1Y2Nlc3NcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW52aXNpYmxlIGNvbG9yPVwiYWN0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkZE5ld0Jsb2NrPXsoYmVmb3JlSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNsaXBib2FyZENvbnRlbnQoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYmxvY2submFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZGF0YS52aXNpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogZGF0YS5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEZpZWxkczogT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRhdGFbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhc3RlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlQmxvY2soYmxvY2tJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17ZGF0YS5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RlZENsaWNrPXsoc2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGRhdGEsIHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZEZuPXsoKSA9PiBibG9jay5pc1ZhbGlkKGRhdGEucHJvcHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtkYXRhLnNsaWRlSW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVCb3R0b21JbnNlcnRCZXR3ZWVuQnV0dG9uPXtibG9ja0luZGV4ID49IHN0YXRlLmJsb2Nrcy5sZW5ndGggLSAxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWVudUl0ZW1zPXsob25NZW51Q2xvc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPXtkYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHVwZGF0ZWRJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldmlvdXNTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3M6IHByZXZpb3VzU3RhdGUuYmxvY2tzLm1hcCgoYmxvY2spID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmtleSA9PT0gZGF0YS5rZXkgPyB1cGRhdGVkSXRlbSA6IGJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxDb250ZW50PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCA/IDxBZGRpdGlvbmFsSXRlbUNvbnRlbnQgaXRlbT17ZGF0YX0gLz4gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QuYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEljb249ezxBZGQgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiQWRkIHtpdGVtTmFtZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2Jsb2NrLmRpc3BsYXlOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGl0ZW1JZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RhdGUuYmxvY2tzLmZpbmQoKGMpID0+IGMua2V5ID09PSBpdGVtSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwibWFpblwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8YmxvY2suQWRtaW5Db21wb25lbnQgc3RhdGU9e21hdGNoLnByb3BzfSB1cGRhdGVTdGF0ZT17Y3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4oaXRlbUlkKX0gLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgIHtjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2d9XG4gICAgICAgICAgICAgICAgPC9TZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY3R4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5ub0Jsb2Nrc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8ge2l0ZW1zTmFtZX1cIiB2YWx1ZXM9e3sgaXRlbXNOYW1lIH19IC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPFByZXZpZXdDb250ZW50W10+KChwcmV2LCBuZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFByZXZpZXdDb250ZW50ID0gYmxvY2sucHJldmlld0NvbnRlbnQobmV4dC5wcm9wcywgY3R4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLm5leHRQcmV2aWV3Q29udGVudF07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmVEZXBlbmRlbmN5UGF0aDogKHN0YXRlLCBqc29uUGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEvXmJsb2Nrcy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxpc3RCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmJsb2Nrc1tudW1dO1xuXG4gICAgICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBibG9jay5yZXNvbHZlRGVwZW5kZW5jeVBhdGgoYmxvY2tJdGVtLnByb3BzLCBwYXRoQXJyLnNsaWNlKDMpLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtibG9ja0l0ZW0ua2V5fS9lZGl0LyR7Y2hpbGRQYXRofWA7XG4gICAgICAgIH0sXG4gICAgICAgIGV4dHJhY3RUZXh0Q29udGVudHM6IChzdGF0ZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPSBvcHRpb25zPy5pbmNsdWRlSW52aXNpYmxlQ29udGVudCA/PyBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8c3RyaW5nW10+KChjb250ZW50LCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGQudmlzaWJsZSAmJiAhaW5jbHVkZUludmlzaWJsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5jb250ZW50LCAuLi4oYmxvY2suZXh0cmFjdFRleHRDb250ZW50cz8uKGNoaWxkLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zbGF0ZUNvbnRlbnQ6IGFzeW5jIChzdGF0ZSwgdHJhbnNsYXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkQmxvY2tzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLm1hcChhc3luYyAoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRlZFByb3BzID0gYmxvY2sudHJhbnNsYXRlQ29udGVudCA/IGF3YWl0IGJsb2NrLnRyYW5zbGF0ZUNvbnRlbnQoY2hpbGQucHJvcHMsIHRyYW5zbGF0ZSkgOiBjaGlsZC5wcm9wcztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uY2hpbGQsIHByb3BzOiB0cmFuc2xhdGVkUHJvcHMgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYmxvY2tzOiB0cmFuc2xhdGVkQmxvY2tzIH07XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKEJsb2NrTGlzdEJsb2NrKTtcbiAgICB9XG4gICAgcmV0dXJuIEJsb2NrTGlzdEJsb2NrO1xufVxuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBwYWRkaW5nOiAxMnB4IDA7XG5gO1xuXG5jb25zdCBTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsID0gc3R5bGVkKEZvcm1Db250cm9sTGFiZWwpYFxuICAgIHBhZGRpbmc6IDE1cHggMTBweCAxNXB4IDdweDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uQ29udGVudCA9IHN0eWxlZChcInNwYW5cIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDA7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkljb24gPSBzdHlsZWQoQWRkKWBcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuYDtcbiJdfQ== */",
|
|
622
672
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
623
673
|
});
|
|
624
674
|
var LargeAddButtonIcon = /*#__PURE__*/styled(Add, process.env.NODE_ENV === "production" ? {
|
|
@@ -631,6 +681,6 @@ var LargeAddButtonIcon = /*#__PURE__*/styled(Add, process.env.NODE_ENV === "prod
|
|
|
631
681
|
styles: "font-size:24px;margin-bottom:8px"
|
|
632
682
|
} : {
|
|
633
683
|
name: "1yvy7h3",
|
|
634
|
-
styles: "font-size:24px;margin-bottom:8px/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc2tCc0MiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB0eXBlIHsgRnVuY3Rpb25Db21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdHlwZSBNZXNzYWdlRGVzY3JpcHRvciB9IGZyb20gXCJyZWFjdC1pbnRsXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXIgfSBmcm9tIFwiLi4vY29tbW9uL0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyXCI7XG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja1ByZXZpZXdDb250ZW50IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1ByZXZpZXdDb250ZW50XCI7XG5pbXBvcnQgeyBCbG9ja1JvdyB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tSb3dcIjtcbmltcG9ydCB7IGNyZWF0ZUJsb2NrU2tlbGV0b24gfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVCbG9ja1NrZWxldG9uXCI7XG5pbXBvcnQgeyBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSG92ZXJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9Ib3ZlclByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7IFNlbGVjdFByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL1NlbGVjdFByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgQmxvY2tEZXBlbmRlbmN5LCBCbG9ja0ludGVyZmFjZSwgQmxvY2tTdGF0ZSwgUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IHBhcmFsbGVsQXN5bmNFdmVyeSB9IGZyb20gXCIuLi91dGlscy9wYXJhbGxlbEFzeW5jRXZlcnlcIjtcbmltcG9ydCB7IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50IH0gZnJvbSBcIi4vbGlzdEJsb2NrL2NyZWF0ZVVzZUFkbWluQ29tcG9uZW50XCI7XG5cbi8vIFVzaW5nIHt9IGluc3RlYWQgb2YgUmVjb3JkPHN0cmluZywgbmV2ZXI+IGJlY2F1c2UgbmV2ZXIgYW5kIHVua25vd24gYXJlIGluY29tcGF0aWJsZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbnR5cGUgRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzID0ge307XG5cbmV4cG9ydCB0eXBlIExpc3RCbG9ja0l0ZW08VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgcHJvcHM6IEJsb2NrU3RhdGU8VD47XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgc2xpZGVJbjogYm9vbGVhbjtcbn0gJiBBZGRpdGlvbmFsSXRlbUZpZWxkcztcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tTdGF0ZTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+IHtcbiAgICBibG9ja3M6IExpc3RCbG9ja0l0ZW08VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPFZhbHVlID0gdW5rbm93bj4ge1xuICAgIGRlZmF1bHRWYWx1ZTogVmFsdWU7XG59XG5cbmludGVyZmFjZSBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtc05hbWU/OiBSZWFjdE5vZGU7XG4gICAgYmxvY2s6IFQ7XG4gICAgbWluVmlzaWJsZUJsb2Nrcz86IG51bWJlcjtcbiAgICBtYXhWaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnk/OiBib29sZWFuO1xuICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzPzoge1xuICAgICAgICBbS2V5IGluIGtleW9mIEFkZGl0aW9uYWxJdGVtRmllbGRzXTogTGlzdEJsb2NrQWRkaXRpb25hbEl0ZW1GaWVsZDxBZGRpdGlvbmFsSXRlbUZpZWxkc1tLZXldPjtcbiAgICB9O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcz86IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgICAgICAgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz47XG4gICAgICAgIG9uQ2hhbmdlOiAoaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4pID0+IHZvaWQ7XG4gICAgICAgIG9uTWVudUNsb3NlOiAoKSA9PiB2b2lkO1xuICAgIH0+O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudD86IEZ1bmN0aW9uQ29tcG9uZW50PHsgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4gfT47XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+KFxuICAgIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYmxvY2ssXG4gICAgICAgIGRpc3BsYXlOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLm5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cIkxpc3RcIiAvPixcbiAgICAgICAgaXRlbU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2suaXRlbU5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2NrXCIgLz4sXG4gICAgICAgIGl0ZW1zTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtc05hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2Nrc1wiIC8+LFxuICAgICAgICBtaW5WaXNpYmxlQmxvY2tzLFxuICAgICAgICBtYXhWaXNpYmxlQmxvY2tzLFxuICAgICAgICBjcmVhdGVEZWZhdWx0TGlzdEVudHJ5LFxuICAgICAgICBhZGRpdGlvbmFsSXRlbUZpZWxkcyxcbiAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRlbnQsXG4gICAgICAgIHRhZ3MsXG4gICAgfTogQ3JlYXRlTGlzdEJsb2NrT3B0aW9uczxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgb3ZlcnJpZGU/OiAoXG4gICAgICAgIGJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICAgICAgPixcbiAgICApID0+IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+Pixcbik6IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+PiB7XG4gICAgY29uc3QgdXNlQWRtaW5Db21wb25lbnQgPSBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudCh7IGJsb2NrLCBtYXhWaXNpYmxlQmxvY2tzLCBhZGRpdGlvbmFsSXRlbUZpZWxkcyB9KTtcbiAgICBpZiAobWluVmlzaWJsZUJsb2NrcyAmJiBtYXhWaXNpYmxlQmxvY2tzICYmIG1pblZpc2libGVCbG9ja3MgPiBtYXhWaXNpYmxlQmxvY2tzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGdldERlZmF1bHRMaXN0RW50cnkgPSAoKSA9PiAoe1xuICAgICAgICBrZXk6IHV1aWQoKSxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgcHJvcHM6IGJsb2NrLmRlZmF1bHRWYWx1ZXMoKSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgIC4uLihPYmplY3QuZW50cmllcyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgKGZpZWxkcywgW2ZpZWxkLCB7IGRlZmF1bHRWYWx1ZSB9XSkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBkZWZhdWx0VmFsdWUgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBCbG9ja0xpc3RCbG9jazogQmxvY2tJbnRlcmZhY2U8XG4gICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+XG4gICAgPiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBibG9jay50YWdzLFxuXG4gICAgICAgIGRlZmF1bHRWYWx1ZXM6ICgpID0+ICh7XG4gICAgICAgICAgICBibG9ja3M6XG4gICAgICAgICAgICAgICAgbWluVmlzaWJsZUJsb2NrcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgID8gQXJyYXkuZnJvbSh7IGxlbmd0aDogbWluVmlzaWJsZUJsb2NrcyB9LCBnZXREZWZhdWx0TGlzdEVudHJ5KVxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZURlZmF1bHRMaXN0RW50cnlcbiAgICAgICAgICAgICAgICAgICAgICA/IFtnZXREZWZhdWx0TGlzdEVudHJ5KCldXG4gICAgICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgY2F0ZWdvcnk6IGJsb2NrLmNhdGVnb3J5LFxuXG4gICAgICAgIGlucHV0MlN0YXRlOiAoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgICAgICAgYmxvY2tzOiBpbnB1dC5ibG9ja3MubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suaW5wdXQyU3RhdGUoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZSgoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksIHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBzdGF0ZTJPdXRwdXQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suc3RhdGUyT3V0cHV0KGNoaWxkLnByb3BzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKE9iamVjdC5rZXlzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIG91dHB1dDJTdGF0ZTogYXN5bmMgKG91dHB1dCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IFtdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBhd2FpdCBibG9jay5vdXRwdXQyU3RhdGUoY2hpbGQucHJvcHMsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQcmV2aWV3U3RhdGU6IChzdGF0ZSwgcHJldmlld0N0eCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZCkgPT4gKHByZXZpZXdDdHguc2hvd1Zpc2libGVPbmx5ID8gY2hpbGQudmlzaWJsZSA6IHRydWUpKSAvLyBkZXBlbmRpbmcgb24gY29udGV4dCBzaG93IGFsbCBibG9ja3Mgb3Igb25seSB2aXNpYmxlIGJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0N0eC5wYXJlbnRVcmxTdWJSb3V0ZSA/PyBwcmV2aWV3Q3R4LnBhcmVudFVybH0vJHtjaGlsZC5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGJsb2NrLmNyZWF0ZVByZXZpZXdTdGF0ZShjaGlsZC5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2aWV3Q3R4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmxTdWJSb3V0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmw6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBibG9ja0FkbWluUm91dGUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0N0eC5wYXJlbnRVcmwgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGlzVmFsaWQ6IGFzeW5jIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tWYWxpZGl0eVJlc3VsdCA9IGF3YWl0IHBhcmFsbGVsQXN5bmNFdmVyeShzdGF0ZS5ibG9ja3MsIGFzeW5jIChjKSA9PiBibG9jay5pc1ZhbGlkKGMucHJvcHMpKTtcbiAgICAgICAgICAgIHJldHVybiBibG9ja1ZhbGlkaXR5UmVzdWx0ICYmIChtaW5WaXNpYmxlQmxvY2tzID8gbWluVmlzaWJsZUJsb2NrcyA8PSBzdGF0ZS5ibG9ja3MuZmlsdGVyKChibG9jaykgPT4gYmxvY2sudmlzaWJsZSkubGVuZ3RoIDogdHJ1ZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2hpbGRCbG9ja0NvdW50OiAoc3RhdGUpID0+IHN0YXRlLmJsb2Nrcy5sZW5ndGgsXG5cbiAgICAgICAgYW5jaG9yczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGFuY2hvcnMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oYmxvY2suYW5jaG9ycz8uKGNoaWxkLnByb3BzKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlcGVuZGVuY2llczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWREZXBlbmRlbmNpZXMgPSBzdGF0ZS5ibG9ja3MucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uZGVwZW5kZW5jaWVzLCAuLi4oYmxvY2suZGVwZW5kZW5jaWVzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHsgLi4ub3V0cHV0LCBibG9ja3M6IFtdIH07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygb3V0cHV0LmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIG5ld091dHB1dC5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2sucmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0KGNoaWxkLnByb3BzLCByZXBsYWNlbWVudHMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3T3V0cHV0O1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlZmluZXNPd25QYWRkaW5nOiB0cnVlLFxuXG4gICAgICAgIEFkbWluQ29tcG9uZW50OiAoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGNhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZyxcbiAgICAgICAgICAgICAgICBjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbixcbiAgICAgICAgICAgICAgICB0b3RhbFZpc2libGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICB0b2dnbGVWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyxcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1pc3NpbmcgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZ2VuZXJpYyBpbiBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudFxuICAgICAgICAgICAgfSA9IHVzZUFkbWluQ29tcG9uZW50KHsgc3RhdGUsIHVwZGF0ZVN0YXRlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxTZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2ggZGlzYWJsZUZvcmNlUHJvbXB0Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJ0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoc3RhY2tBcGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50UGFwZXIgZGlzYWJsZVBhZGRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkQ291bnQgPT09IHN0YXRlLmJsb2Nrcy5sZW5ndGggJiYgc2VsZWN0ZWRDb3VudCA+IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlPXtzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50ICE9PSBzdGF0ZS5ibG9ja3MubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5tYXAoKGRhdGEsIGJsb2NrSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNNaW5WaXNpYmxlQmxvY2tzTWV0ID0gISFtaW5WaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtaW5WaXNpYmxlQmxvY2tzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhbWF4VmlzaWJsZUJsb2NrcyAmJiB0b3RhbFZpc2libGVCbG9ja3MgPj0gbWF4VmlzaWJsZUJsb2NrcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5Ub2dnbGVWaXNpYmlsaXR5ID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCA/IGRhdGEudmlzaWJsZSA6IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvd01heEJsb2Nrc0FsbG93ZWRNZXNzYWdlID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCAmJiAhZGF0YS52aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghIW1pblZpc2libGVCbG9ja3MgJiYgIWlzTWluVmlzaWJsZUJsb2Nrc01ldCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW5WaXNpYmxlQmxvY2tzID09PSB0b3RhbFZpc2libGVCbG9ja3MgJiYgZGF0YS52aXNpYmxlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2RhdGEua2V5fSBjb21wb25lbnRTbHVnPXtgJHtkYXRhLmtleX0vZWRpdGB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17ZGF0YS5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tQcmV2aWV3Q29udGVudCBibG9jaz17YmxvY2t9IHN0YXRlPXtkYXRhLnByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17YmxvY2tJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZW50Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgZGF0YS5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MoW2RhdGEua2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gWy4uLnByZXZTdGF0ZS5ibG9ja3NdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVG9Nb3ZlID0gYmxvY2tzLnNwbGljZShmcm9tLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3Muc3BsaWNlKHRvLCAwLCBibG9ja1RvTW92ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucHJldlN0YXRlLCBibG9ja3MgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWF4VmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNYXguIHZpc2libGUgYmxvY2tzIGFsbG93ZWQ6IHttYXhWaXNpYmxlQmxvY2tzfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IG1heFZpc2libGVCbG9ja3MgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm1pblZpc2libGVCbG9ja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTWluLiB2aXNpYmxlIGJsb2NrcyByZXF1aXJlZDoge21pblZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWluVmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBjb21wb25lbnQ9XCJzcGFuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjYW5Ub2dnbGVWaXNpYmlsaXR5ICYmIHRvZ2dsZVZpc2libGUoZGF0YS5rZXkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshY2FuVG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RhdGEudmlzaWJsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VmlzaWJsZSBjb2xvcj1cInN1Y2Nlc3NcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW52aXNpYmxlIGNvbG9yPVwiYWN0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkZE5ld0Jsb2NrPXsoYmVmb3JlSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNsaXBib2FyZENvbnRlbnQoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYmxvY2submFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZGF0YS52aXNpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogZGF0YS5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEZpZWxkczogT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRhdGFbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhc3RlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlQmxvY2soYmxvY2tJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17ZGF0YS5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RlZENsaWNrPXsoc2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGRhdGEsIHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZEZuPXsoKSA9PiBibG9jay5pc1ZhbGlkKGRhdGEucHJvcHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtkYXRhLnNsaWRlSW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVCb3R0b21JbnNlcnRCZXR3ZWVuQnV0dG9uPXtibG9ja0luZGV4ID49IHN0YXRlLmJsb2Nrcy5sZW5ndGggLSAxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWVudUl0ZW1zPXsob25NZW51Q2xvc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPXtkYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHVwZGF0ZWRJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldmlvdXNTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3M6IHByZXZpb3VzU3RhdGUuYmxvY2tzLm1hcCgoYmxvY2spID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmtleSA9PT0gZGF0YS5rZXkgPyB1cGRhdGVkSXRlbSA6IGJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxDb250ZW50PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCA/IDxBZGRpdGlvbmFsSXRlbUNvbnRlbnQgaXRlbT17ZGF0YX0gLz4gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QuYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEljb249ezxBZGQgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiQWRkIHtpdGVtTmFtZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2Jsb2NrLmRpc3BsYXlOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGl0ZW1JZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RhdGUuYmxvY2tzLmZpbmQoKGMpID0+IGMua2V5ID09PSBpdGVtSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwibWFpblwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8YmxvY2suQWRtaW5Db21wb25lbnQgc3RhdGU9e21hdGNoLnByb3BzfSB1cGRhdGVTdGF0ZT17Y3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4oaXRlbUlkKX0gLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgIHtjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2d9XG4gICAgICAgICAgICAgICAgPC9TZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY3R4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5ub0Jsb2Nrc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8ge2l0ZW1zTmFtZX1cIiB2YWx1ZXM9e3sgaXRlbXNOYW1lIH19IC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPFByZXZpZXdDb250ZW50W10+KChwcmV2LCBuZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFByZXZpZXdDb250ZW50ID0gYmxvY2sucHJldmlld0NvbnRlbnQobmV4dC5wcm9wcywgY3R4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLm5leHRQcmV2aWV3Q29udGVudF07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmVEZXBlbmRlbmN5UGF0aDogKHN0YXRlLCBqc29uUGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEvXmJsb2Nrcy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxpc3RCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmJsb2Nrc1tudW1dO1xuXG4gICAgICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBibG9jay5yZXNvbHZlRGVwZW5kZW5jeVBhdGgoYmxvY2tJdGVtLnByb3BzLCBwYXRoQXJyLnNsaWNlKDMpLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtibG9ja0l0ZW0ua2V5fS9lZGl0LyR7Y2hpbGRQYXRofWA7XG4gICAgICAgIH0sXG4gICAgICAgIGV4dHJhY3RUZXh0Q29udGVudHM6IChzdGF0ZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPSBvcHRpb25zPy5pbmNsdWRlSW52aXNpYmxlQ29udGVudCA/PyBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8c3RyaW5nW10+KChjb250ZW50LCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGQudmlzaWJsZSAmJiAhaW5jbHVkZUludmlzaWJsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5jb250ZW50LCAuLi4oYmxvY2suZXh0cmFjdFRleHRDb250ZW50cz8uKGNoaWxkLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKEJsb2NrTGlzdEJsb2NrKTtcbiAgICB9XG4gICAgcmV0dXJuIEJsb2NrTGlzdEJsb2NrO1xufVxuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBwYWRkaW5nOiAxMnB4IDA7XG5gO1xuXG5jb25zdCBTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsID0gc3R5bGVkKEZvcm1Db250cm9sTGFiZWwpYFxuICAgIHBhZGRpbmc6IDE1cHggMTBweCAxNXB4IDdweDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uQ29udGVudCA9IHN0eWxlZChcInNwYW5cIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDA7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkljb24gPSBzdHlsZWQoQWRkKWBcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuYDtcbiJdfQ== */",
|
|
684
|
+
styles: "font-size:24px;margin-bottom:8px/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK2tCc0MiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB0eXBlIHsgRnVuY3Rpb25Db21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdHlwZSBNZXNzYWdlRGVzY3JpcHRvciB9IGZyb20gXCJyZWFjdC1pbnRsXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXIgfSBmcm9tIFwiLi4vY29tbW9uL0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyXCI7XG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja1ByZXZpZXdDb250ZW50IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1ByZXZpZXdDb250ZW50XCI7XG5pbXBvcnQgeyBCbG9ja1JvdyB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tSb3dcIjtcbmltcG9ydCB7IGNyZWF0ZUJsb2NrU2tlbGV0b24gfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVCbG9ja1NrZWxldG9uXCI7XG5pbXBvcnQgeyBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSG92ZXJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9Ib3ZlclByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7IFNlbGVjdFByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL1NlbGVjdFByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgQmxvY2tEZXBlbmRlbmN5LCBCbG9ja0ludGVyZmFjZSwgQmxvY2tTdGF0ZSwgUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IHBhcmFsbGVsQXN5bmNFdmVyeSB9IGZyb20gXCIuLi91dGlscy9wYXJhbGxlbEFzeW5jRXZlcnlcIjtcbmltcG9ydCB7IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50IH0gZnJvbSBcIi4vbGlzdEJsb2NrL2NyZWF0ZVVzZUFkbWluQ29tcG9uZW50XCI7XG5cbi8vIFVzaW5nIHt9IGluc3RlYWQgb2YgUmVjb3JkPHN0cmluZywgbmV2ZXI+IGJlY2F1c2UgbmV2ZXIgYW5kIHVua25vd24gYXJlIGluY29tcGF0aWJsZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbnR5cGUgRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzID0ge307XG5cbmV4cG9ydCB0eXBlIExpc3RCbG9ja0l0ZW08VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgcHJvcHM6IEJsb2NrU3RhdGU8VD47XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgc2xpZGVJbjogYm9vbGVhbjtcbn0gJiBBZGRpdGlvbmFsSXRlbUZpZWxkcztcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tTdGF0ZTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+IHtcbiAgICBibG9ja3M6IExpc3RCbG9ja0l0ZW08VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPFZhbHVlID0gdW5rbm93bj4ge1xuICAgIGRlZmF1bHRWYWx1ZTogVmFsdWU7XG59XG5cbmludGVyZmFjZSBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtc05hbWU/OiBSZWFjdE5vZGU7XG4gICAgYmxvY2s6IFQ7XG4gICAgbWluVmlzaWJsZUJsb2Nrcz86IG51bWJlcjtcbiAgICBtYXhWaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnk/OiBib29sZWFuO1xuICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzPzoge1xuICAgICAgICBbS2V5IGluIGtleW9mIEFkZGl0aW9uYWxJdGVtRmllbGRzXTogTGlzdEJsb2NrQWRkaXRpb25hbEl0ZW1GaWVsZDxBZGRpdGlvbmFsSXRlbUZpZWxkc1tLZXldPjtcbiAgICB9O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcz86IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgICAgICAgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz47XG4gICAgICAgIG9uQ2hhbmdlOiAoaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4pID0+IHZvaWQ7XG4gICAgICAgIG9uTWVudUNsb3NlOiAoKSA9PiB2b2lkO1xuICAgIH0+O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudD86IEZ1bmN0aW9uQ29tcG9uZW50PHsgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4gfT47XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+KFxuICAgIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYmxvY2ssXG4gICAgICAgIGRpc3BsYXlOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLm5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cIkxpc3RcIiAvPixcbiAgICAgICAgaXRlbU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2suaXRlbU5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2NrXCIgLz4sXG4gICAgICAgIGl0ZW1zTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtc05hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2Nrc1wiIC8+LFxuICAgICAgICBtaW5WaXNpYmxlQmxvY2tzLFxuICAgICAgICBtYXhWaXNpYmxlQmxvY2tzLFxuICAgICAgICBjcmVhdGVEZWZhdWx0TGlzdEVudHJ5LFxuICAgICAgICBhZGRpdGlvbmFsSXRlbUZpZWxkcyxcbiAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRlbnQsXG4gICAgICAgIHRhZ3MsXG4gICAgfTogQ3JlYXRlTGlzdEJsb2NrT3B0aW9uczxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgb3ZlcnJpZGU/OiAoXG4gICAgICAgIGJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICAgICAgPixcbiAgICApID0+IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+Pixcbik6IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+PiB7XG4gICAgY29uc3QgdXNlQWRtaW5Db21wb25lbnQgPSBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudCh7IGJsb2NrLCBtYXhWaXNpYmxlQmxvY2tzLCBhZGRpdGlvbmFsSXRlbUZpZWxkcyB9KTtcbiAgICBpZiAobWluVmlzaWJsZUJsb2NrcyAmJiBtYXhWaXNpYmxlQmxvY2tzICYmIG1pblZpc2libGVCbG9ja3MgPiBtYXhWaXNpYmxlQmxvY2tzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGdldERlZmF1bHRMaXN0RW50cnkgPSAoKSA9PiAoe1xuICAgICAgICBrZXk6IHV1aWQoKSxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgcHJvcHM6IGJsb2NrLmRlZmF1bHRWYWx1ZXMoKSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgIC4uLihPYmplY3QuZW50cmllcyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgKGZpZWxkcywgW2ZpZWxkLCB7IGRlZmF1bHRWYWx1ZSB9XSkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBkZWZhdWx0VmFsdWUgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBCbG9ja0xpc3RCbG9jazogQmxvY2tJbnRlcmZhY2U8XG4gICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+XG4gICAgPiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBibG9jay50YWdzLFxuXG4gICAgICAgIGRlZmF1bHRWYWx1ZXM6ICgpID0+ICh7XG4gICAgICAgICAgICBibG9ja3M6XG4gICAgICAgICAgICAgICAgbWluVmlzaWJsZUJsb2NrcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgID8gQXJyYXkuZnJvbSh7IGxlbmd0aDogbWluVmlzaWJsZUJsb2NrcyB9LCBnZXREZWZhdWx0TGlzdEVudHJ5KVxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZURlZmF1bHRMaXN0RW50cnlcbiAgICAgICAgICAgICAgICAgICAgICA/IFtnZXREZWZhdWx0TGlzdEVudHJ5KCldXG4gICAgICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgY2F0ZWdvcnk6IGJsb2NrLmNhdGVnb3J5LFxuXG4gICAgICAgIGlucHV0MlN0YXRlOiAoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgICAgICAgYmxvY2tzOiBpbnB1dC5ibG9ja3MubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suaW5wdXQyU3RhdGUoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZSgoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksIHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBzdGF0ZTJPdXRwdXQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suc3RhdGUyT3V0cHV0KGNoaWxkLnByb3BzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKE9iamVjdC5rZXlzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIG91dHB1dDJTdGF0ZTogYXN5bmMgKG91dHB1dCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IFtdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBhd2FpdCBibG9jay5vdXRwdXQyU3RhdGUoY2hpbGQucHJvcHMsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQcmV2aWV3U3RhdGU6IChzdGF0ZSwgcHJldmlld0N0eCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZCkgPT4gKHByZXZpZXdDdHguc2hvd1Zpc2libGVPbmx5ID8gY2hpbGQudmlzaWJsZSA6IHRydWUpKSAvLyBkZXBlbmRpbmcgb24gY29udGV4dCBzaG93IGFsbCBibG9ja3Mgb3Igb25seSB2aXNpYmxlIGJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0N0eC5wYXJlbnRVcmxTdWJSb3V0ZSA/PyBwcmV2aWV3Q3R4LnBhcmVudFVybH0vJHtjaGlsZC5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGJsb2NrLmNyZWF0ZVByZXZpZXdTdGF0ZShjaGlsZC5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2aWV3Q3R4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmxTdWJSb3V0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmw6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBibG9ja0FkbWluUm91dGUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0N0eC5wYXJlbnRVcmwgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGlzVmFsaWQ6IGFzeW5jIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tWYWxpZGl0eVJlc3VsdCA9IGF3YWl0IHBhcmFsbGVsQXN5bmNFdmVyeShzdGF0ZS5ibG9ja3MsIGFzeW5jIChjKSA9PiBibG9jay5pc1ZhbGlkKGMucHJvcHMpKTtcbiAgICAgICAgICAgIHJldHVybiBibG9ja1ZhbGlkaXR5UmVzdWx0ICYmIChtaW5WaXNpYmxlQmxvY2tzID8gbWluVmlzaWJsZUJsb2NrcyA8PSBzdGF0ZS5ibG9ja3MuZmlsdGVyKChibG9jaykgPT4gYmxvY2sudmlzaWJsZSkubGVuZ3RoIDogdHJ1ZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2hpbGRCbG9ja0NvdW50OiAoc3RhdGUpID0+IHN0YXRlLmJsb2Nrcy5sZW5ndGgsXG5cbiAgICAgICAgYW5jaG9yczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGFuY2hvcnMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oYmxvY2suYW5jaG9ycz8uKGNoaWxkLnByb3BzKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlcGVuZGVuY2llczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWREZXBlbmRlbmNpZXMgPSBzdGF0ZS5ibG9ja3MucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uZGVwZW5kZW5jaWVzLCAuLi4oYmxvY2suZGVwZW5kZW5jaWVzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHsgLi4ub3V0cHV0LCBibG9ja3M6IFtdIH07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygb3V0cHV0LmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIG5ld091dHB1dC5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2sucmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0KGNoaWxkLnByb3BzLCByZXBsYWNlbWVudHMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3T3V0cHV0O1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlZmluZXNPd25QYWRkaW5nOiB0cnVlLFxuXG4gICAgICAgIEFkbWluQ29tcG9uZW50OiAoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGNhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZyxcbiAgICAgICAgICAgICAgICBjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbixcbiAgICAgICAgICAgICAgICB0b3RhbFZpc2libGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICB0b2dnbGVWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyxcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1pc3NpbmcgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZ2VuZXJpYyBpbiBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudFxuICAgICAgICAgICAgfSA9IHVzZUFkbWluQ29tcG9uZW50KHsgc3RhdGUsIHVwZGF0ZVN0YXRlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxTZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2ggZGlzYWJsZUZvcmNlUHJvbXB0Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJ0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoc3RhY2tBcGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50UGFwZXIgZGlzYWJsZVBhZGRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkQ291bnQgPT09IHN0YXRlLmJsb2Nrcy5sZW5ndGggJiYgc2VsZWN0ZWRDb3VudCA+IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlPXtzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50ICE9PSBzdGF0ZS5ibG9ja3MubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5tYXAoKGRhdGEsIGJsb2NrSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNNaW5WaXNpYmxlQmxvY2tzTWV0ID0gISFtaW5WaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtaW5WaXNpYmxlQmxvY2tzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhbWF4VmlzaWJsZUJsb2NrcyAmJiB0b3RhbFZpc2libGVCbG9ja3MgPj0gbWF4VmlzaWJsZUJsb2NrcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5Ub2dnbGVWaXNpYmlsaXR5ID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCA/IGRhdGEudmlzaWJsZSA6IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvd01heEJsb2Nrc0FsbG93ZWRNZXNzYWdlID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCAmJiAhZGF0YS52aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghIW1pblZpc2libGVCbG9ja3MgJiYgIWlzTWluVmlzaWJsZUJsb2Nrc01ldCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW5WaXNpYmxlQmxvY2tzID09PSB0b3RhbFZpc2libGVCbG9ja3MgJiYgZGF0YS52aXNpYmxlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2RhdGEua2V5fSBjb21wb25lbnRTbHVnPXtgJHtkYXRhLmtleX0vZWRpdGB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17ZGF0YS5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tQcmV2aWV3Q29udGVudCBibG9jaz17YmxvY2t9IHN0YXRlPXtkYXRhLnByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17YmxvY2tJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZW50Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgZGF0YS5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MoW2RhdGEua2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gWy4uLnByZXZTdGF0ZS5ibG9ja3NdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVG9Nb3ZlID0gYmxvY2tzLnNwbGljZShmcm9tLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3Muc3BsaWNlKHRvLCAwLCBibG9ja1RvTW92ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucHJldlN0YXRlLCBibG9ja3MgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWF4VmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNYXguIHZpc2libGUgYmxvY2tzIGFsbG93ZWQ6IHttYXhWaXNpYmxlQmxvY2tzfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IG1heFZpc2libGVCbG9ja3MgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm1pblZpc2libGVCbG9ja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTWluLiB2aXNpYmxlIGJsb2NrcyByZXF1aXJlZDoge21pblZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWluVmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBjb21wb25lbnQ9XCJzcGFuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjYW5Ub2dnbGVWaXNpYmlsaXR5ICYmIHRvZ2dsZVZpc2libGUoZGF0YS5rZXkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshY2FuVG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RhdGEudmlzaWJsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VmlzaWJsZSBjb2xvcj1cInN1Y2Nlc3NcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW52aXNpYmxlIGNvbG9yPVwiYWN0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkZE5ld0Jsb2NrPXsoYmVmb3JlSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNsaXBib2FyZENvbnRlbnQoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYmxvY2submFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZGF0YS52aXNpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogZGF0YS5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEZpZWxkczogT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRhdGFbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhc3RlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlQmxvY2soYmxvY2tJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17ZGF0YS5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RlZENsaWNrPXsoc2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGRhdGEsIHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZEZuPXsoKSA9PiBibG9jay5pc1ZhbGlkKGRhdGEucHJvcHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtkYXRhLnNsaWRlSW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVCb3R0b21JbnNlcnRCZXR3ZWVuQnV0dG9uPXtibG9ja0luZGV4ID49IHN0YXRlLmJsb2Nrcy5sZW5ndGggLSAxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWVudUl0ZW1zPXsob25NZW51Q2xvc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPXtkYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHVwZGF0ZWRJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldmlvdXNTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3M6IHByZXZpb3VzU3RhdGUuYmxvY2tzLm1hcCgoYmxvY2spID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmtleSA9PT0gZGF0YS5rZXkgPyB1cGRhdGVkSXRlbSA6IGJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxDb250ZW50PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCA/IDxBZGRpdGlvbmFsSXRlbUNvbnRlbnQgaXRlbT17ZGF0YX0gLz4gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QuYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEljb249ezxBZGQgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiQWRkIHtpdGVtTmFtZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2Jsb2NrLmRpc3BsYXlOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGl0ZW1JZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RhdGUuYmxvY2tzLmZpbmQoKGMpID0+IGMua2V5ID09PSBpdGVtSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwibWFpblwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8YmxvY2suQWRtaW5Db21wb25lbnQgc3RhdGU9e21hdGNoLnByb3BzfSB1cGRhdGVTdGF0ZT17Y3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4oaXRlbUlkKX0gLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgIHtjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2d9XG4gICAgICAgICAgICAgICAgPC9TZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY3R4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5ub0Jsb2Nrc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8ge2l0ZW1zTmFtZX1cIiB2YWx1ZXM9e3sgaXRlbXNOYW1lIH19IC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPFByZXZpZXdDb250ZW50W10+KChwcmV2LCBuZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFByZXZpZXdDb250ZW50ID0gYmxvY2sucHJldmlld0NvbnRlbnQobmV4dC5wcm9wcywgY3R4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLm5leHRQcmV2aWV3Q29udGVudF07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmVEZXBlbmRlbmN5UGF0aDogKHN0YXRlLCBqc29uUGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEvXmJsb2Nrcy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxpc3RCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmJsb2Nrc1tudW1dO1xuXG4gICAgICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBibG9jay5yZXNvbHZlRGVwZW5kZW5jeVBhdGgoYmxvY2tJdGVtLnByb3BzLCBwYXRoQXJyLnNsaWNlKDMpLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtibG9ja0l0ZW0ua2V5fS9lZGl0LyR7Y2hpbGRQYXRofWA7XG4gICAgICAgIH0sXG4gICAgICAgIGV4dHJhY3RUZXh0Q29udGVudHM6IChzdGF0ZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPSBvcHRpb25zPy5pbmNsdWRlSW52aXNpYmxlQ29udGVudCA/PyBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8c3RyaW5nW10+KChjb250ZW50LCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGQudmlzaWJsZSAmJiAhaW5jbHVkZUludmlzaWJsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5jb250ZW50LCAuLi4oYmxvY2suZXh0cmFjdFRleHRDb250ZW50cz8uKGNoaWxkLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zbGF0ZUNvbnRlbnQ6IGFzeW5jIChzdGF0ZSwgdHJhbnNsYXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkQmxvY2tzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLm1hcChhc3luYyAoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRlZFByb3BzID0gYmxvY2sudHJhbnNsYXRlQ29udGVudCA/IGF3YWl0IGJsb2NrLnRyYW5zbGF0ZUNvbnRlbnQoY2hpbGQucHJvcHMsIHRyYW5zbGF0ZSkgOiBjaGlsZC5wcm9wcztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uY2hpbGQsIHByb3BzOiB0cmFuc2xhdGVkUHJvcHMgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYmxvY2tzOiB0cmFuc2xhdGVkQmxvY2tzIH07XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKEJsb2NrTGlzdEJsb2NrKTtcbiAgICB9XG4gICAgcmV0dXJuIEJsb2NrTGlzdEJsb2NrO1xufVxuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBwYWRkaW5nOiAxMnB4IDA7XG5gO1xuXG5jb25zdCBTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsID0gc3R5bGVkKEZvcm1Db250cm9sTGFiZWwpYFxuICAgIHBhZGRpbmc6IDE1cHggMTBweCAxNXB4IDdweDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uQ29udGVudCA9IHN0eWxlZChcInNwYW5cIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDA7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkljb24gPSBzdHlsZWQoQWRkKWBcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuYDtcbiJdfQ== */",
|
|
635
685
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
636
686
|
});
|